This commit is contained in:
Jesper Wilhelmsson 2017-03-16 16:40:41 -07:00
commit 7e8d75378e
712 changed files with 22732 additions and 13609 deletions

View file

@ -56,6 +56,31 @@
#include "utilities/resourceHash.hpp"
void JNIHandleMark::push_jni_handle_block() {
JavaThread* thread = JavaThread::current();
if (thread != NULL) {
// Allocate a new block for JNI handles.
// Inlined code from jni_PushLocalFrame()
JNIHandleBlock* java_handles = ((JavaThread*)thread)->active_handles();
JNIHandleBlock* compile_handles = JNIHandleBlock::allocate_block(thread);
assert(compile_handles != NULL && java_handles != NULL, "should not be NULL");
compile_handles->set_pop_frame_link(java_handles);
thread->set_active_handles(compile_handles);
}
}
void JNIHandleMark::pop_jni_handle_block() {
JavaThread* thread = JavaThread::current();
if (thread != NULL) {
// Release our JNI handle block
JNIHandleBlock* compile_handles = thread->active_handles();
JNIHandleBlock* java_handles = compile_handles->pop_frame_link();
thread->set_active_handles(java_handles);
compile_handles->set_pop_frame_link(NULL);
JNIHandleBlock::release_block(compile_handles, thread); // may block
}
}
// Entry to native method implementation that transitions current thread to '_thread_in_vm'.
#define C2V_VMENTRY(result_type, name, signature) \
JNIEXPORT result_type JNICALL c2v_ ## name signature { \
@ -89,6 +114,7 @@ oop CompilerToVM::get_jvmci_type(Klass* klass, TRAPS) {
return NULL;
}
int CompilerToVM::Data::Klass_vtable_start_offset;
int CompilerToVM::Data::Klass_vtable_length_offset;
@ -987,6 +1013,8 @@ C2V_END
C2V_VMENTRY(jint, installCode, (JNIEnv *jniEnv, jobject, jobject target, jobject compiled_code, jobject installed_code, jobject speculation_log))
ResourceMark rm;
HandleMark hm;
JNIHandleMark jni_hm;
Handle target_handle(THREAD, JNIHandles::resolve(target));
Handle compiled_code_handle(THREAD, JNIHandles::resolve(compiled_code));
CodeBlob* cb = NULL;