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