diff -r 57ad70bcf06c -r 15936b142f86 src/hotspot/share/oops/method.cpp --- a/src/hotspot/share/oops/method.cpp Wed Nov 13 11:27:50 2019 +0000 +++ b/src/hotspot/share/oops/method.cpp Wed Nov 13 08:23:23 2019 -0500 @@ -546,7 +546,7 @@ return NULL; } - methodHandle mh(m); + methodHandle mh(THREAD, m); MethodCounters* counters = MethodCounters::allocate(mh, THREAD); if (HAS_PENDING_EXCEPTION) { CompileBroker::log_metaspace_failure(); @@ -628,7 +628,7 @@ bool Method::compute_has_loops_flag() { - BytecodeStream bcs(this); + BytecodeStream bcs(methodHandle(Thread::current(), this)); Bytecodes::Code bc; while ((bc = bcs.next()) >= 0) { @@ -986,7 +986,7 @@ set_not_c2_compilable(); } CompilationPolicy::policy()->disable_compilation(this); - assert(!CompilationPolicy::can_be_compiled(this, comp_level), "sanity check"); + assert(!CompilationPolicy::can_be_compiled(methodHandle(Thread::current(), this), comp_level), "sanity check"); } bool Method::is_not_osr_compilable(int comp_level) const { @@ -1013,7 +1013,7 @@ set_not_c2_osr_compilable(); } CompilationPolicy::policy()->disable_compilation(this); - assert(!CompilationPolicy::can_be_osr_compiled(this, comp_level), "sanity check"); + assert(!CompilationPolicy::can_be_osr_compiled(methodHandle(Thread::current(), this), comp_level), "sanity check"); } // Revert to using the interpreter and clear out the nmethod @@ -1058,7 +1058,7 @@ Arguments::assert_is_dumping_archive(); // Set the values to what they should be at run time. Note that // this Method can no longer be executed during dump time. - _i2i_entry = Interpreter::entry_for_cds_method(this); + _i2i_entry = Interpreter::entry_for_cds_method(methodHandle(Thread::current(), this)); _from_interpreted_entry = _i2i_entry; if (DynamicDumpSharedSpaces) { @@ -1570,14 +1570,14 @@ if (m->has_stackmap_table()) { int code_attribute_length = m->stackmap_data()->length(); Array* stackmap_data = - MetadataFactory::new_array(loader_data, code_attribute_length, 0, CHECK_NULL); + MetadataFactory::new_array(loader_data, code_attribute_length, 0, CHECK_(methodHandle())); memcpy((void*)stackmap_data->adr_at(0), (void*)m->stackmap_data()->adr_at(0), code_attribute_length); newm->set_stackmap_data(stackmap_data); } // copy annotations over to new method - newcm->copy_annotations_from(loader_data, cm, CHECK_NULL); + newcm->copy_annotations_from(loader_data, cm, CHECK_(methodHandle())); return newm; } @@ -2218,6 +2218,11 @@ } } +jmethodID Method::jmethod_id() { + methodHandle mh(Thread::current(), this); + return method_holder()->get_jmethod_id(mh); +} + // Mark a jmethodID as free. This is called when there is a data race in // InstanceKlass while creating the jmethodID cache. void Method::destroy_jmethod_id(ClassLoaderData* loader_data, jmethodID m) {