< prev index next >

src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/memory/Universe.java

Print this page

        

*** 22,42 **** * */ package sun.jvm.hotspot.memory; ! import java.io.*; ! import java.util.*; ! import sun.jvm.hotspot.debugger.*; import sun.jvm.hotspot.gc.cms.CMSHeap; - import sun.jvm.hotspot.gc.serial.SerialHeap; - import sun.jvm.hotspot.gc.shared.*; import sun.jvm.hotspot.gc.g1.G1CollectedHeap; ! import sun.jvm.hotspot.gc.parallel.*; ! import sun.jvm.hotspot.oops.*; ! import sun.jvm.hotspot.types.*; ! import sun.jvm.hotspot.runtime.*; public class Universe { private static AddressField collectedHeapField; private static VirtualConstructor heapConstructor; --- 22,51 ---- * */ package sun.jvm.hotspot.memory; ! import java.io.PrintStream; ! import java.util.Observable; ! import java.util.Observer; ! ! import sun.jvm.hotspot.debugger.Address; ! import sun.jvm.hotspot.debugger.OopHandle; import sun.jvm.hotspot.gc.cms.CMSHeap; import sun.jvm.hotspot.gc.g1.G1CollectedHeap; ! import sun.jvm.hotspot.gc.parallel.ParallelScavengeHeap; ! import sun.jvm.hotspot.gc.serial.SerialHeap; ! import sun.jvm.hotspot.gc.shared.CollectedHeap; ! import sun.jvm.hotspot.gc.z.ZCollectedHeap; ! import sun.jvm.hotspot.oops.Oop; ! import sun.jvm.hotspot.runtime.BasicType; ! import sun.jvm.hotspot.runtime.VM; ! import sun.jvm.hotspot.runtime.VirtualConstructor; ! import sun.jvm.hotspot.types.AddressField; ! import sun.jvm.hotspot.types.CIntegerField; ! import sun.jvm.hotspot.types.Type; ! import sun.jvm.hotspot.types.TypeDataBase; public class Universe { private static AddressField collectedHeapField; private static VirtualConstructor heapConstructor;
*** 70,89 **** initialize(VM.getVM().getTypeDataBase()); } }); } private static synchronized void initialize(TypeDataBase db) { Type type = db.lookupType("Universe"); collectedHeapField = type.getAddressField("_collectedHeap"); heapConstructor = new VirtualConstructor(db); ! heapConstructor.addMapping("CMSHeap", CMSHeap.class); ! heapConstructor.addMapping("SerialHeap", SerialHeap.class); ! heapConstructor.addMapping("ParallelScavengeHeap", ParallelScavengeHeap.class); ! heapConstructor.addMapping("G1CollectedHeap", G1CollectedHeap.class); mainThreadGroupField = type.getOopField("_main_thread_group"); systemThreadGroupField = type.getOopField("_system_thread_group"); boolArrayKlassField = type.getAddressField("_boolArrayKlassObj"); --- 79,115 ---- initialize(VM.getVM().getTypeDataBase()); } }); } + private static boolean typeExists(TypeDataBase db, String type) { + try { + db.lookupType(type); + } catch (RuntimeException e) { + return false; + } + return true; + } + + private static void addHeapTypeIfInDB(TypeDataBase db, Class heapClass) { + String heapName = heapClass.getSimpleName(); + if (typeExists(db, heapName)) { + heapConstructor.addMapping(heapName, heapClass); + } + } + private static synchronized void initialize(TypeDataBase db) { Type type = db.lookupType("Universe"); collectedHeapField = type.getAddressField("_collectedHeap"); heapConstructor = new VirtualConstructor(db); ! addHeapTypeIfInDB(db, CMSHeap.class); ! addHeapTypeIfInDB(db, SerialHeap.class); ! addHeapTypeIfInDB(db, ParallelScavengeHeap.class); ! addHeapTypeIfInDB(db, G1CollectedHeap.class); ! addHeapTypeIfInDB(db, ZCollectedHeap.class); mainThreadGroupField = type.getOopField("_main_thread_group"); systemThreadGroupField = type.getOopField("_system_thread_group"); boolArrayKlassField = type.getAddressField("_boolArrayKlassObj");
< prev index next >