From 1429e611ddbb26d100850041dbb41d90809c22a8 Mon Sep 17 00:00:00 2001 From: iveresov Date: Fri, 26 Sep 2014 20:09:02 -0700 Subject: [PATCH] 8058536: java/lang/instrument/NativeMethodPrefixAgent.java fails due to VirtualMachineError: out of space in CodeCache for method handle intrinsic Summary: Make sure MH intrinsics can be created before compiler instances Reviewed-by: kvn --- src/share/vm/classfile/systemDictionary.cpp | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/share/vm/classfile/systemDictionary.cpp b/src/share/vm/classfile/systemDictionary.cpp index c58f1388e..7034b9097 100644 --- a/src/share/vm/classfile/systemDictionary.cpp +++ b/src/share/vm/classfile/systemDictionary.cpp @@ -2276,12 +2276,14 @@ methodHandle SystemDictionary::find_method_handle_intrinsic(vmIntrinsics::ID iid spe = NULL; // Must create lots of stuff here, but outside of the SystemDictionary lock. m = Method::make_method_handle_intrinsic(iid, signature, CHECK_(empty)); - CompileBroker::compile_method(m, InvocationEntryBci, CompLevel_highest_tier, - methodHandle(), CompileThreshold, "MH", CHECK_(empty)); - // Check if we need to have compiled code but we don't. - if (!Arguments::is_interpreter_only() && !m->has_compiled_code()) { - THROW_MSG_(vmSymbols::java_lang_VirtualMachineError(), - "out of space in CodeCache for method handle intrinsic", empty); + if (!Arguments::is_interpreter_only()) { + // Generate a compiled form of the MH intrinsic. + AdapterHandlerLibrary::create_native_wrapper(m); + // Check if have the compiled code. + if (!m->has_compiled_code()) { + THROW_MSG_(vmSymbols::java_lang_VirtualMachineError(), + "out of space in CodeCache for method handle intrinsic", empty); + } } // Now grab the lock. We might have to throw away the new method, // if a racing thread has managed to install one at the same time. -- GitLab