Mercurial > hg > truffle
view agent/src/share/classes/sun/jvm/hotspot/jdi/ThreadGroupReferenceImpl.java @ 4670:41034914e2ee
add MethodContents assumption to fix debbugging issue
author | Lukas Stadler <lukas.stadler@jku.at> |
---|---|
date | Wed, 22 Feb 2012 17:04:27 +0100 |
parents | c18cbe5936b8 |
children |
line wrap: on
line source
/* * Copyright (c) 2002, 2003, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * version 2 for more details (a copy is included in the LICENSE file that * accompanied this code). * * You should have received a copy of the GNU General Public License version * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA * or visit www.oracle.com if you need additional information or have any * questions. * */ package sun.jvm.hotspot.jdi; import sun.jvm.hotspot.oops.Oop; import sun.jvm.hotspot.oops.Instance; import sun.jvm.hotspot.oops.OopUtilities; import sun.jvm.hotspot.runtime.JavaThread; import com.sun.jdi.*; import java.util.*; public class ThreadGroupReferenceImpl extends ObjectReferenceImpl implements ThreadGroupReference { ThreadGroupReferenceImpl(VirtualMachine aVm, sun.jvm.hotspot.oops.Oop oRef) { super(aVm, oRef); } protected String description() { return "ThreadGroupReference " + uniqueID(); } public String name() { return OopUtilities.threadGroupOopGetName(ref()); } public ThreadGroupReference parent() { return (ThreadGroupReferenceImpl)vm.threadGroupMirror( (Instance)OopUtilities.threadGroupOopGetParent(ref())); } public void suspend() { vm.throwNotReadOnlyException("ThreadGroupReference.suspend()"); } public void resume() { vm.throwNotReadOnlyException("ThreadGroupReference.resume()"); } public List threads() { // Each element of this array is the Oop for a thread; // NOTE it is not the JavaThread that we need to create // a ThreadReferenceImpl. Oop[] myThreads = OopUtilities.threadGroupOopGetThreads(ref()); ArrayList myList = new ArrayList(myThreads.length); for (int ii = 0; ii < myThreads.length; ii++) { JavaThread jt = OopUtilities.threadOopGetJavaThread(myThreads[ii]); if (jt != null) { ThreadReferenceImpl xx = (ThreadReferenceImpl)vm.threadMirror(jt); myList.add(xx); } } return myList; } public List threadGroups() { Oop[] myGroups = OopUtilities.threadGroupOopGetGroups(ref()); ArrayList myList = new ArrayList(myGroups.length); for (int ii = 0; ii < myGroups.length; ii++) { ThreadGroupReferenceImpl xx = (ThreadGroupReferenceImpl)vm.threadGroupMirror( (Instance)myGroups[ii]); myList.add(xx); } return myList; } public String toString() { return "instance of " + referenceType().name() + "(name='" + name() + "', " + "id=" + uniqueID() + ")"; } }