< prev index next >
agent/src/share/classes/sun/jvm/hotspot/memory/GenCollectedHeap.java
Print this page
rev 7974 : imported patch genspecs
@@ -35,11 +35,13 @@
public class GenCollectedHeap extends SharedHeap {
private static CIntegerField nGensField;
private static AddressField youngGenField;
private static AddressField oldGenField;
- private static AddressField genSpecsField;
+
+ private static AddressField youngGenSpecField;
+ private static AddressField oldGenSpecField;
private static GenerationFactory genFactory;
static {
VM.registerVMInitializedObserver(new Observer() {
@@ -53,13 +55,16 @@
Type type = db.lookupType("GenCollectedHeap");
nGensField = type.getCIntegerField("_n_gens");
youngGenField = type.getAddressField("_young_gen");
oldGenField = type.getAddressField("_old_gen");
- genSpecsField = type.getAddressField("_gen_specs");
genFactory = new GenerationFactory();
+
+ Type collectorPolicyType = db.lookupType("GenCollectorPolicy");
+ youngGenSpecField = collectorPolicyType.getAddressField("_young_gen_spec");
+ oldGenSpecField = collectorPolicyType.getAddressField("_old_gen_spec");
}
public GenCollectedHeap(Address addr) {
super(addr);
}
@@ -121,17 +126,19 @@
if ((level < 0) || (level >= nGens())) {
return null;
}
- Address ptrList = genSpecsField.getValue(addr);
- if (ptrList == null) {
- return null;
- }
+ if (level == 0) {
return (GenerationSpec)
VMObjectFactory.newObject(GenerationSpec.class,
- ptrList.getAddressAt(level * VM.getVM().getAddressSize()));
+ youngGenSpecField.getAddress());
+ } else {
+ return (GenerationSpec)
+ VMObjectFactory.newObject(GenerationSpec.class,
+ oldGenSpecField.getAddress());
+ }
}
public CollectedHeapName kind() {
return CollectedHeapName.GEN_COLLECTED_HEAP;
}
< prev index next >