use of com.ibm.j9ddr.vm29.j9.gc.GCJVMTIObjectTagTableListIterator in project openj9 by eclipse.
the class RootScanner method scanJVMTIObjectTagTables.
protected void scanJVMTIObjectTagTables() throws CorruptDataException {
if (!J9BuildFlags.opt_jvmti)
return;
setReachability(Reachability.WEAK);
J9JVMTIDataPointer jvmtiData = J9JVMTIDataPointer.cast(_vm.jvmtiData());
if (jvmtiData.notNull()) {
GCJVMTIObjectTagTableListIterator objectTagTableList = GCJVMTIObjectTagTableListIterator.fromJ9JVMTIData(jvmtiData);
while (objectTagTableList.hasNext()) {
J9JVMTIEnvPointer list = objectTagTableList.next();
GCJVMTIObjectTagTableIterator objectTagTableIterator = GCJVMTIObjectTagTableIterator.fromJ9JVMTIEnv(list);
GCJVMTIObjectTagTableIterator addressIterator = GCJVMTIObjectTagTableIterator.fromJ9JVMTIEnv(list);
while (objectTagTableIterator.hasNext()) {
doJVMTIObjectTagSlot(objectTagTableIterator.next(), addressIterator.nextAddress());
}
}
}
}
use of com.ibm.j9ddr.vm29.j9.gc.GCJVMTIObjectTagTableListIterator in project openj9 by eclipse.
the class CheckJVMTIObjectTagTables method check.
@Override
public void check() {
try {
J9JVMTIDataPointer jvmtiData = J9JVMTIDataPointer.cast(getJavaVM().jvmtiData());
if (jvmtiData.notNull()) {
GCJVMTIObjectTagTableListIterator objectTagTableList = GCJVMTIObjectTagTableListIterator.fromJ9JVMTIData(jvmtiData);
while (objectTagTableList.hasNext()) {
J9JVMTIEnvPointer list = objectTagTableList.next();
VoidPointer objectTagTable = VoidPointer.cast(list.objectTagTable());
GCJVMTIObjectTagTableIterator objectTagTableIterator = GCJVMTIObjectTagTableIterator.fromJ9JVMTIEnv(list);
while (objectTagTableIterator.hasNext()) {
PointerPointer slot = PointerPointer.cast(objectTagTableIterator.nextAddress());
if (slot.notNull()) {
if (_engine.checkSlotPool(slot, objectTagTable) != J9MODRON_SLOT_ITERATOR_OK) {
return;
}
}
}
}
}
} catch (CorruptDataException e) {
// TODO: handle exception
}
}
use of com.ibm.j9ddr.vm29.j9.gc.GCJVMTIObjectTagTableListIterator in project openj9 by eclipse.
the class CheckJVMTIObjectTagTables method print.
@Override
public void print() {
try {
J9JVMTIDataPointer jvmtiData = J9JVMTIDataPointer.cast(getJavaVM().jvmtiData());
if (jvmtiData.notNull()) {
ScanFormatter formatter = new ScanFormatter(this, "jvmtiObjectTagTables", jvmtiData);
GCJVMTIObjectTagTableListIterator objectTagTableList = GCJVMTIObjectTagTableListIterator.fromJ9JVMTIData(jvmtiData);
while (objectTagTableList.hasNext()) {
J9JVMTIEnvPointer list = objectTagTableList.next();
GCJVMTIObjectTagTableIterator objectTagTableIterator = GCJVMTIObjectTagTableIterator.fromJ9JVMTIEnv(list);
while (objectTagTableIterator.hasNext()) {
formatter.entry(objectTagTableIterator.next());
}
}
formatter.end("jvmtiObjectTagTables", jvmtiData);
}
} catch (CorruptDataException e) {
// TODO: handle exception
}
}
Aggregations