< 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 >