package com.oracle.svm.diagnosticsagent;
import static com.oracle.svm.jni.JNIObjectHandles.nullHandle;
import org.graalvm.word.WordFactory;
import com.oracle.svm.jni.nativeapi.JNIEnvironment;
import com.oracle.svm.jni.nativeapi.JNIMethodId;
import com.oracle.svm.jni.nativeapi.JNIObjectHandle;
import com.oracle.svm.jvmtiagentbase.JNIHandleSet;
public class NativeImageDiagnosticsAgentJNIHandleSet extends JNIHandleSet {
private JNIObjectHandle classInitializationTracking = nullHandle();
private JNIMethodId reportClassInitialized = WordFactory.nullPointer();
private JNIMethodId reportObjectInstantiated = WordFactory.nullPointer();
final JNIObjectHandle javaLangStackTraceElement;
final JNIMethodId javaLangStackTraceElementCtor4;
public NativeImageDiagnosticsAgentJNIHandleSet(JNIEnvironment env) {
super(env);
javaLangStackTraceElement = newClassGlobalRef(env, "java/lang/StackTraceElement");
javaLangStackTraceElementCtor4 = getMethodId(env, javaLangStackTraceElement, "<init>", "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)V", false);
}
public void initializeTrackingSupportHandles(JNIEnvironment env) {
assert classInitializationTracking.equal(nullHandle()) && reportClassInitialized.isNull() && reportObjectInstantiated.isNull() : "Attempt to reinitialize tracking support handles.";
classInitializationTracking = newClassGlobalRef(env, "org/graalvm/nativeimage/impl/clinit/ClassInitializationTracking");
reportClassInitialized = getMethodId(env, classInitializationTracking, "reportClassInitialized", "(Ljava/lang/Class;[Ljava/lang/StackTraceElement;)V", true);
reportObjectInstantiated = getMethodId(env, classInitializationTracking, "reportObjectInstantiated", "(Ljava/lang/Object;[Ljava/lang/StackTraceElement;)V", true);
}
public JNIObjectHandle getClassInitializationTrackingClassHandle() {
assert classInitializationTracking.notEqual(nullHandle()) : "Attempt to access uninitialized class handle.";
return classInitializationTracking;
}
public JNIMethodId getReportClassInitializedMethodId() {
assert reportClassInitialized.isNonNull() : "Attempt to access an uninitialized method handle.";
return reportClassInitialized;
}
public JNIMethodId getReportObjectInstantiatedMethodId() {
assert reportObjectInstantiated.isNonNull() : "Attempt to access an uninitialized method handle.";
return reportObjectInstantiated;
}
}