jobjectArray MemoryAgentAction::run()

in src/memory_agent_action.hpp [30:47]


jobjectArray MemoryAgentAction<RESULT_TYPE, ARGS_TYPES...>::run(ARGS_TYPES... args) {
    ThreadSuspender suspender(jvmti);
    progressManager.updateProgress(0, "Operation starting...");
    RESULT_TYPE result = executeOperation(args...);
    progressManager.updateProgress(99, "Cleaning heap...");
    jvmtiError err = cleanHeap();
    progressManager.updateProgress(100, "Finished!");
    if (err != JVMTI_ERROR_NONE) {
        handleError(jvmti, err, "Couldn't clean heap");
    }

    jclass langObject = env->FindClass("java/lang/Object");
    jobjectArray returnValue = env->NewObjectArray(2, langObject, nullptr);
    env->SetObjectArrayElement(returnValue, 0, toJavaArray(env, static_cast<jint>(getErrorCode())));
    env->SetObjectArrayElement(returnValue, 1, result);
    std::remove(cancellationFileName.c_str());
    return returnValue;
}