jobjectArray RetainedSizesViaDominatorTreeAction::constructResultObject()

in src/sizes/retained_size_via_dominator_tree.cpp [184:204]


jobjectArray RetainedSizesViaDominatorTreeAction::constructResultObject(jobjectArray objects,
                                                                        const std::vector<jlong> &retainedSizes,
                                                                        const SizesViaDominatorTreeHeapDumpInfo &info) {
    jsize size = env->GetArrayLength(objects);
    std::vector<jlong> shallowSizes;
    std::vector<jlong> resultingRetainedSizes;
    resultingRetainedSizes.reserve(size);
    shallowSizes.reserve(size);
    for (jsize i = 0; i < size; i++) {
        jobject object = env->GetObjectArrayElement(objects, i);
        jlong tag;
        jvmti->GetTag(object, &tag);
        resultingRetainedSizes.push_back(retainedSizes[tag]);
        shallowSizes.push_back(info.sizes[tag]);
    }
    jobjectArray result = getObjectArrayOfSize(env, 2);
    env->SetObjectArrayElement(result, 0, toJavaArray(env, shallowSizes));
    env->SetObjectArrayElement(result, 1, toJavaArray(env, resultingRetainedSizes));

    return result;
}