jint JNICALL firstTraversal()

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;
    }