jobjectArray RetainedSizeAndHeldObjectsAction::createResultObject()

in src/sizes/retained_size_and_held_objects.cpp [84:99]


jobjectArray RetainedSizeAndHeldObjectsAction::createResultObject(jlong retainedSize, jlong shallowSize, const std::vector<jobject> &heldObjects) {
    jint objectsCount = static_cast<jint>(heldObjects.size());
    jclass langObject = env->FindClass("java/lang/Object");
    jobjectArray resultObjects = env->NewObjectArray(objectsCount, langObject, nullptr);

    for (jsize i = 0; i < objectsCount; ++i) {
        env->SetObjectArrayElement(resultObjects, i, heldObjects[i]);
    }

    jobjectArray result = env->NewObjectArray(2, langObject, nullptr);
    std::vector<jlong> sizes{shallowSize, retainedSize};
    env->SetObjectArrayElement(result, 0, toJavaArray(env, sizes));
    env->SetObjectArrayElement(result, 1, resultObjects);

    return result;
}