--- old/src/share/vm/classfile/systemDictionary.cpp 2014-09-10 16:21:59.000000000 -0700 +++ new/src/share/vm/classfile/systemDictionary.cpp 2014-09-10 16:21:59.000000000 -0700 @@ -2274,7 +2274,11 @@ 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); + } // 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. { @@ -2288,7 +2292,7 @@ } assert(spe != NULL && spe->method() != NULL, ""); - assert(!UseCompiler || (spe->method()->has_compiled_code() && + assert(Arguments::is_interpreter_only() || (spe->method()->has_compiled_code() && spe->method()->code()->entry_point() == spe->method()->from_compiled_entry()), "MH intrinsic invariant"); return spe->method();