in src/sizes/retained_size_via_dominator_tree.cpp [94:110]
jint JNICALL firstTraversal(jvmtiHeapReferenceKind refKind, const jvmtiHeapReferenceInfo *refInfo, jlong classTag,
jlong referrerClassTag, jlong size, jlong *tagPtr,
jlong *referrerTagPtr, jint length, void *userData) {
auto *info = reinterpret_cast<SizesViaDominatorTreeHeapDumpInfo *>(userData);
if (refKind == JVMTI_HEAP_REFERENCE_JNI_LOCAL || refKind == JVMTI_HEAP_REFERENCE_JNI_GLOBAL) {
return 0;
} else if (*tagPtr == 0) {
*tagPtr = VISITED_TAG;
} else if (*tagPtr <= info->lastStartTag) {
if (*tagPtr > 0) {
info->visitStartVertex(*tagPtr);
}
return 0;
}
return JVMTI_VISIT_OBJECTS;
}