use of com.ibm.j9ddr.vm29.pointer.generated.MM_SegregatedGCPointer in project openj9 by eclipse.
the class GCHeapMap method from.
public static GCHeapMap from() throws CorruptDataException {
MM_GCExtensionsPointer extensions = GCExtensions.getGCExtensionsPointer();
if (GCExtensions.isStandardGC()) {
if (!GCExtensions.isSegregatedHeap()) {
MM_ParallelGlobalGCPointer pgc = MM_ParallelGlobalGCPointer.cast(extensions._globalCollector());
MM_MarkMapPointer markMap = pgc._markingScheme()._markMap();
return new GCMarkMapStandard(markMap);
} else {
MM_SegregatedGCPointer sgc = MM_SegregatedGCPointer.cast(extensions._globalCollector());
MM_MarkMapPointer markMap = sgc._markingScheme()._markMap();
return new GCMarkMap(markMap);
}
} else if (GCExtensions.isVLHGC()) {
// probably needs a proper subclass
MM_IncrementalGenerationalGCPointer igc = MM_IncrementalGenerationalGCPointer.cast(extensions._globalCollector());
MM_MarkMapPointer markMap = igc._markMapManager()._previousMarkMap();
return new GCMarkMap(markMap);
} else if (GCExtensions.isMetronomeGC()) {
MM_MarkMapPointer markMap = extensions.realtimeGC()._markingScheme()._markMap();
return new GCMarkMap(markMap);
} else {
throw new UnsupportedOperationException("GC policy not supported");
}
}
Aggregations