8229961: Assert failure in compiler/graalunit/HotspotTest.java

Reviewed-by: kvn
This commit is contained in:
Tom Rodriguez 2019-12-11 09:47:41 -08:00
parent d3f7666418
commit bca86d6492
26 changed files with 150 additions and 60 deletions

View file

@ -980,7 +980,8 @@ C2V_VMENTRY_NULL(jobject, disassembleCodeBlob, (JNIEnv* env, jobject, jobject in
}
JVMCIObject installedCodeObject = JVMCIENV->wrap(installedCode);
CodeBlob* cb = JVMCIENV->asCodeBlob(installedCodeObject);
nmethodLocker locker;
CodeBlob* cb = JVMCIENV->get_code_blob(installedCodeObject, locker);
if (cb == NULL) {
return NULL;
}
@ -1025,7 +1026,8 @@ C2V_VMENTRY_NULL(jobject, executeHotSpotNmethod, (JNIEnv* env, jobject, jobject
HandleMark hm;
JVMCIObject nmethod_mirror = JVMCIENV->wrap(hs_nmethod);
nmethod* nm = JVMCIENV->asNmethod(nmethod_mirror);
nmethodLocker locker;
nmethod* nm = JVMCIENV->get_nmethod(nmethod_mirror, locker);
if (nm == NULL) {
JVMCI_THROW_NULL(InvalidInstalledCodeException);
}
@ -2447,7 +2449,8 @@ C2V_VMENTRY_0(jlong, translate, (JNIEnv* env, jobject, jobject obj_handle))
Handle constant = thisEnv->asConstant(obj, JVMCI_CHECK_0);
result = peerEnv->get_object_constant(constant());
} else if (thisEnv->isa_HotSpotNmethod(obj)) {
nmethod* nm = thisEnv->asNmethod(obj);
nmethodLocker locker;
nmethod* nm = JVMCIENV->get_nmethod(obj, locker);
if (nm != NULL) {
JVMCINMethodData* data = nm->jvmci_nmethod_data();
if (data != NULL) {
@ -2512,12 +2515,14 @@ C2V_VMENTRY_NULL(jobject, unhand, (JNIEnv* env, jobject, jlong obj_handle))
C2V_VMENTRY(void, updateHotSpotNmethod, (JNIEnv* env, jobject, jobject code_handle))
JVMCIObject code = JVMCIENV->wrap(code_handle);
// Execute this operation for the side effect of updating the InstalledCode state
JVMCIENV->asNmethod(code);
nmethodLocker locker;
JVMCIENV->get_nmethod(code, locker);
}
C2V_VMENTRY_NULL(jbyteArray, getCode, (JNIEnv* env, jobject, jobject code_handle))
JVMCIObject code = JVMCIENV->wrap(code_handle);
CodeBlob* cb = JVMCIENV->asCodeBlob(code);
nmethodLocker locker;
CodeBlob* cb = JVMCIENV->get_code_blob(code, locker);
if (cb == NULL) {
return NULL;
}