use of org.graalvm.jniutils.JNI.JObject in project graal by oracle.
the class HotSpotCalls method callJObject.
/**
* Performs a JNI call of a method returning {@link Object}.
*/
@HotSpotCall
@SuppressWarnings("unchecked")
public <R extends JObject> R callJObject(JNIEnv env, JObject object, JNIMethod method, JNI.JValue args) {
traceCall(env, object, method);
JNI.JObject res = env.getFunctions().getCallObjectMethodA().call(env, object, method.getJMethodID(), args);
wrapAndThrowPendingJNIException(env, exceptionHandler);
return (R) res;
}
use of org.graalvm.jniutils.JNI.JObject in project graal by oracle.
the class HotSpotCalls method callNewObject.
/**
* Creates a new object instance using a given constructor.
*/
@HotSpotCall
@SuppressWarnings("unchecked")
public <R extends JObject> R callNewObject(JNIEnv env, JClass clazz, JNIMethod constructor, JNI.JValue args) {
traceCall(env, clazz, constructor);
JNI.JObject res = env.getFunctions().getNewObjectA().call(env, clazz, constructor.getJMethodID(), args);
wrapAndThrowPendingJNIException(env, exceptionHandler);
return (R) res;
}
use of org.graalvm.jniutils.JNI.JObject in project graal by oracle.
the class HSCompilableTruffleAST method onCompilationFailed.
@TruffleFromLibGraal(CreateStringSupplier)
@TruffleFromLibGraal(OnCompilationFailed)
@Override
public void onCompilationFailed(Supplier<String> serializedException, boolean silent, boolean bailout, boolean permanentBailout, boolean graphTooBig) {
long serializedExceptionHandle = LibGraalObjectHandles.create(serializedException);
boolean success = false;
JNIEnv env = env();
try {
JObject instance = callCreateStringSupplier(env, serializedExceptionHandle);
callOnCompilationFailed(env, getHandle(), instance, silent, bailout, permanentBailout, graphTooBig);
success = true;
} finally {
if (!success) {
LibGraalObjectHandles.remove(serializedExceptionHandle);
}
}
}
use of org.graalvm.jniutils.JNI.JObject in project graal by oracle.
the class HSCompilableTruffleAST method getCallNodes.
@TruffleFromLibGraal(GetCallNodes)
@Override
public TruffleCallNode[] getCallNodes() {
JNIMethodScope scope = scope();
JNIEnv env = scope.getEnv();
JObjectArray peerArr = callGetCallNodes(env, getHandle());
int len = JNIUtil.GetArrayLength(env, peerArr);
TruffleCallNode[] res = new TruffleCallNode[len];
for (int i = 0; i < len; i++) {
JObject peerTruffleCallNode = JNIUtil.GetObjectArrayElement(env, peerArr, i);
res[i] = new HSTruffleCallNode(scope, peerTruffleCallNode);
}
return res;
}
use of org.graalvm.jniutils.JNI.JObject in project graal by oracle.
the class HSTruffleCompilerRuntime method isSuppressedFailure.
@TruffleFromLibGraal(CreateStringSupplier)
@TruffleFromLibGraal(IsSuppressedFailure)
@Override
public boolean isSuppressedFailure(CompilableTruffleAST compilable, Supplier<String> serializedException) {
long serializedExceptionHandle = LibGraalObjectHandles.create(serializedException);
boolean success = false;
JNIEnv env = env();
try {
JObject instance = callCreateStringSupplier(env, serializedExceptionHandle);
boolean res = callIsSuppressedFailure(env, getHandle(), ((HSCompilableTruffleAST) compilable).getHandle(), instance);
success = true;
return res;
} finally {
if (!success) {
LibGraalObjectHandles.remove(serializedExceptionHandle);
}
}
}
Aggregations