use of com.ibm.j9ddr.vm29.j9.gc.GCVMThreadSlotIterator in project openj9 by eclipse.
the class RootScanner method scanThreads.
protected void scanThreads() throws CorruptDataException {
setReachability(Reachability.STRONG);
GCVMThreadListIterator vmThreadListIterator = GCVMThreadListIterator.from();
while (vmThreadListIterator.hasNext()) {
J9VMThreadPointer walkThread = vmThreadListIterator.next();
/* "Inline" the behaviour of GC_VMThreadIterator to distinguish between the types of roots */
GCVMThreadSlotIterator threadSlotIterator = GCVMThreadSlotIterator.fromJ9VMThread(walkThread);
GCVMThreadSlotIterator threadSlotAddressIterator = GCVMThreadSlotIterator.fromJ9VMThread(walkThread);
while (threadSlotIterator.hasNext()) {
doVMThreadSlot(threadSlotIterator.next(), threadSlotAddressIterator.nextAddress());
}
GCVMThreadJNISlotIterator jniSlotIterator = GCVMThreadJNISlotIterator.fromJ9VMThread(walkThread);
GCVMThreadJNISlotIterator jniSlotAddressIterator = GCVMThreadJNISlotIterator.fromJ9VMThread(walkThread);
while (jniSlotIterator.hasNext()) {
doVMThreadJNISlot(jniSlotIterator.next(), jniSlotAddressIterator.nextAddress());
}
if (J9BuildFlags.interp_hotCodeReplacement) {
GCVMThreadMonitorRecordSlotIterator monitorRecordSlotIterator = GCVMThreadMonitorRecordSlotIterator.fromJ9VMThread(walkThread);
GCVMThreadMonitorRecordSlotIterator addressIterator = GCVMThreadMonitorRecordSlotIterator.fromJ9VMThread(walkThread);
while (monitorRecordSlotIterator.hasNext()) {
doVMThreadMonitorRecordSlot(monitorRecordSlotIterator.next(), addressIterator.nextAddress());
}
}
if (_scanStackSlots) {
GCVMThreadStackSlotIterator.scanSlots(walkThread, _stackWalkerCallbacks, _includeStackFrameClassReferences, _trackVisibleStackFrameDepth);
}
}
}
Aggregations