in src/sizes/retained_size_action.cpp [79:95]
jint JNICALL spreadInfo(jvmtiHeapReferenceKind refKind, const jvmtiHeapReferenceInfo *refInfo, jlong classTag,
jlong referrerClassTag, jlong size, jlong *tagPtr,
jlong *referrerTagPtr, jint length, void *userData) {
if (refKind != JVMTI_HEAP_REFERENCE_JNI_LOCAL && refKind != JVMTI_HEAP_REFERENCE_JNI_GLOBAL &&
*tagPtr != 0 && *referrerTagPtr != 0) {
auto it = tagsWithNewInfo.find(*tagPtr);
if (it != tagsWithNewInfo.end()) {
tagsWithNewInfo.erase(it);
}
if (*referrerTagPtr != *tagPtr && shouldMerge(*tagPtr, *referrerTagPtr)) {
*tagPtr = pointerToTag(merge(*tagPtr, *referrerTagPtr));
}
}
return JVMTI_VISIT_OBJECTS;
}