jvmtiError initAndSetTagsForObjects()

in src/sizes/retained_size_via_dominator_tree.cpp [18:44]


    jvmtiError initAndSetTagsForObjects(JNIEnv *env, jvmtiEnv *jvmti, jobjectArray objects) {
        jvmtiError err = JVMTI_ERROR_NONE;
        jsize size = env->GetArrayLength(objects);
        for (jsize i = 0; i < size; i++) {
            jobject object = env->GetObjectArrayElement(objects, i);
            jlong objectTag;
            err = jvmti->GetTag(object, &objectTag);
            if (!isOk(err)) return err;
            if (objectTag != 0 && objectTag != OBJECT_OF_CLASS_TAG)
                continue;

            jlong tag = currentTag++;
            err = jvmti->SetTag(object, tag);
            if (!isOk(err)) return err;

            jlong objectSize;
            err = jvmti->GetObjectSize(object, &objectSize);
            if (!isOk(err)) return err;

            graph.emplace_back();
            sizes.push_back(objectSize);
        }
        lastStartTag = currentTag - 1;
        wasVisitedDuringFirstTraversal.resize(currentTag);

        return err;
    }