jvmtiError RetainedSizeByObjectsAction::retagStartObjects()

in src/sizes/retained_size_by_objects.cpp [47:67]


jvmtiError RetainedSizeByObjectsAction::retagStartObjects(const std::vector<jobject> &objects) {
    std::vector<std::pair<jobject, size_t>> objectsWithNewInfo;
    for (size_t i = 0; i < objects.size(); i++) {
        jlong oldTag;
        jvmtiError err = jvmti->GetTag(objects[i], &oldTag);
        if (!isOk(err)) return err;
        if (shouldStopExecution()) return MEMORY_AGENT_INTERRUPTED_ERROR;

        if (isTagWithNewInfo(oldTag)) {
            objectsWithNewInfo.emplace_back(objects[i], i);
        }
    }

    for (auto objectToIndex : objectsWithNewInfo) {
        jvmtiError err = createTagForObject(objectToIndex.first, objectToIndex.second);
        if (!isOk(err)) return err;
        if (shouldStopExecution()) return MEMORY_AGENT_INTERRUPTED_ERROR;
    }

    return JVMTI_ERROR_NONE;
}