# HG changeset patch # User Thomas Wuerthinger # Date 1396540049 -7200 # Node ID 4062efea018b687f24637cd9f2016644cf44774e # Parent 5a87cbdd8a09e6d6a72377f8acc361acedd7dff3 Remove compiled method call intrinsic. diff -r 5a87cbdd8a09 -r 4062efea018b graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/bridge/CompilerToVMImpl.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/bridge/CompilerToVMImpl.java Wed Apr 02 15:40:59 2014 -0700 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/bridge/CompilerToVMImpl.java Thu Apr 03 17:47:29 2014 +0200 @@ -151,7 +151,7 @@ @Override public Object executeCompiledMethod(Object arg1, Object arg2, Object arg3, HotSpotInstalledCode hotspotInstalledCode) throws InvalidInstalledCodeException { - return executeCompiledMethodIntrinsic(arg1, arg2, arg3, hotspotInstalledCode); + return executeCompiledMethodVarargs(new Object[]{arg1, arg2, arg3}, hotspotInstalledCode); } public synchronized native void notifyCompilationStatistics(int id, HotSpotResolvedJavaMethod method, boolean osr, int processedBytecodes, long time, long timeUnitsPerSecond, @@ -161,15 +161,6 @@ public native void resetCompilationStatistics(); - /** - * Direct call to the given nmethod with three object arguments and an object return value. This - * method does not have an implementation on the C++ side, but its entry points (from - * interpreter and from compiled code) are directly pointing to a manually generated assembly - * stub that does the necessary argument shuffling and a tail call via an indirect jump to the - * verified entry point of the given native method. - */ - public static native Object executeCompiledMethodIntrinsic(Object arg1, Object arg2, Object arg3, HotSpotInstalledCode hotspotInstalledCode) throws InvalidInstalledCodeException; - public native long[] collectCounters(); public native boolean isMature(long method); diff -r 5a87cbdd8a09 -r 4062efea018b graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotNmethod.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotNmethod.java Wed Apr 02 15:40:59 2014 -0700 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotNmethod.java Thu Apr 03 17:47:29 2014 +0200 @@ -95,7 +95,7 @@ @Override public Object execute(Object arg1, Object arg2, Object arg3) throws InvalidInstalledCodeException { assert checkThreeObjectArgs(); - return CompilerToVMImpl.executeCompiledMethodIntrinsic(arg1, arg2, arg3, this); + return runtime().getCompilerToVM().executeCompiledMethod(arg1, arg2, arg3, this); } protected boolean checkThreeObjectArgs() { diff -r 5a87cbdd8a09 -r 4062efea018b src/cpu/sparc/vm/interpreterGenerator_sparc.hpp --- a/src/cpu/sparc/vm/interpreterGenerator_sparc.hpp Wed Apr 02 15:40:59 2014 -0700 +++ b/src/cpu/sparc/vm/interpreterGenerator_sparc.hpp Thu Apr 03 17:47:29 2014 +0200 @@ -33,9 +33,6 @@ address generate_normal_entry(bool synchronized); address generate_native_entry(bool synchronized); -#ifdef GRAAL - address generate_execute_compiled_method_entry(); -#endif address generate_abstract_entry(void); address generate_math_entry(AbstractInterpreter::MethodKind kind); address generate_empty_entry(void); diff -r 5a87cbdd8a09 -r 4062efea018b src/cpu/sparc/vm/interpreter_sparc.cpp --- a/src/cpu/sparc/vm/interpreter_sparc.cpp Wed Apr 02 15:40:59 2014 -0700 +++ b/src/cpu/sparc/vm/interpreter_sparc.cpp Thu Apr 03 17:47:29 2014 +0200 @@ -381,9 +381,6 @@ case Interpreter::zerolocals_synchronized: synchronized = true; break; case Interpreter::native : entry_point = ((InterpreterGenerator*)this)->generate_native_entry(false); break; case Interpreter::native_synchronized : entry_point = ((InterpreterGenerator*)this)->generate_native_entry(true); break; -#ifdef GRAAL - case Interpreter::execute_compiled_method: entry_point = ((InterpreterGenerator*)this)->generate_execute_compiled_method_entry(); break; -#endif case Interpreter::empty : entry_point = ((InterpreterGenerator*)this)->generate_empty_entry(); break; case Interpreter::accessor : entry_point = ((InterpreterGenerator*)this)->generate_accessor_entry(); break; case Interpreter::abstract : entry_point = ((InterpreterGenerator*)this)->generate_abstract_entry(); break; diff -r 5a87cbdd8a09 -r 4062efea018b src/cpu/sparc/vm/sharedRuntime_sparc.cpp --- a/src/cpu/sparc/vm/sharedRuntime_sparc.cpp Wed Apr 02 15:40:59 2014 -0700 +++ b/src/cpu/sparc/vm/sharedRuntime_sparc.cpp Thu Apr 03 17:47:29 2014 +0200 @@ -1821,31 +1821,6 @@ verify_oop_args(masm, method, sig_bt, regs); vmIntrinsics::ID iid = method->intrinsic_id(); -#ifdef GRAAL - if (iid == vmIntrinsics::_CompilerToVMImpl_executeCompiledMethod) { - // We are called from compiled code here. The three object arguments - // are already in the correct registers (j_rarg0, jrarg1, jrarg2). The - // fourth argument (j_rarg3) is a pointer to the HotSpotInstalledCode object. - - // Load the nmethod pointer from the HotSpotInstalledCode object -// __ movq(j_rarg3, Address(j_rarg3, sizeof(oopDesc))); - - // Check whether the nmethod was invalidated -// __ testq(j_rarg3, j_rarg3); -// Label invalid_nmethod; -// __ jcc(Assembler::zero, invalid_nmethod); - - // Perform a tail call to the verified entry point of the nmethod. -// __ jmp(Address(j_rarg3, nmethod::verified_entry_point_offset())); - -// __ bind(invalid_nmethod); - -// __ jump(RuntimeAddress(StubRoutines::throw_InvalidInstalledCodeException_entry())); - __ stop("_CompilerToVMImpl_executeCompiledMethod not implemented"); - return; - } -#endif - // Now write the args into the outgoing interpreter space bool has_receiver = false; Register receiver_reg = noreg; diff -r 5a87cbdd8a09 -r 4062efea018b src/cpu/sparc/vm/stubGenerator_sparc.cpp --- a/src/cpu/sparc/vm/stubGenerator_sparc.cpp Wed Apr 02 15:40:59 2014 -0700 +++ b/src/cpu/sparc/vm/stubGenerator_sparc.cpp Thu Apr 03 17:47:29 2014 +0200 @@ -3347,7 +3347,6 @@ // These entry points require SharedInfo::stack0 to be set up in non-core builds StubRoutines::_throw_AbstractMethodError_entry = generate_throw_exception("AbstractMethodError throw_exception", CAST_FROM_FN_PTR(address, SharedRuntime::throw_AbstractMethodError)); StubRoutines::_throw_IncompatibleClassChangeError_entry= generate_throw_exception("IncompatibleClassChangeError throw_exception", CAST_FROM_FN_PTR(address, SharedRuntime::throw_IncompatibleClassChangeError)); - StubRoutines::_throw_InvalidInstalledCodeException_entry= generate_throw_exception("InvalidInstalledCodeException throw_exception", CAST_FROM_FN_PTR(address, SharedRuntime::throw_InvalidInstalledCodeException)); StubRoutines::_throw_NullPointerException_at_call_entry= generate_throw_exception("NullPointerException at call throw_exception", CAST_FROM_FN_PTR(address, SharedRuntime::throw_NullPointerException_at_call)); StubRoutines::_handler_for_unsafe_access_entry = diff -r 5a87cbdd8a09 -r 4062efea018b src/cpu/sparc/vm/templateInterpreter_sparc.cpp --- a/src/cpu/sparc/vm/templateInterpreter_sparc.cpp Wed Apr 02 15:40:59 2014 -0700 +++ b/src/cpu/sparc/vm/templateInterpreter_sparc.cpp Thu Apr 03 17:47:29 2014 +0200 @@ -804,18 +804,6 @@ return generate_accessor_entry(); } -#ifdef GRAAL - -// Interpreter stub for calling a compiled method with 3 object arguments -address InterpreterGenerator::generate_execute_compiled_method_entry() { - address entry_point = __ pc(); - - __ stop("graal-sparc unimp"); - - return entry_point; -} - -#endif // // Interpreter stub for calling a native method. (asm interpreter) diff -r 5a87cbdd8a09 -r 4062efea018b src/cpu/x86/vm/interpreterGenerator_x86.hpp --- a/src/cpu/x86/vm/interpreterGenerator_x86.hpp Wed Apr 02 15:40:59 2014 -0700 +++ b/src/cpu/x86/vm/interpreterGenerator_x86.hpp Thu Apr 03 17:47:29 2014 +0200 @@ -36,9 +36,6 @@ address generate_normal_entry(bool synchronized); address generate_native_entry(bool synchronized); -#ifdef GRAAL - address generate_execute_compiled_method_entry(); -#endif address generate_abstract_entry(void); address generate_math_entry(AbstractInterpreter::MethodKind kind); address generate_empty_entry(void); diff -r 5a87cbdd8a09 -r 4062efea018b src/cpu/x86/vm/sharedRuntime_x86_64.cpp --- a/src/cpu/x86/vm/sharedRuntime_x86_64.cpp Wed Apr 02 15:40:59 2014 -0700 +++ b/src/cpu/x86/vm/sharedRuntime_x86_64.cpp Thu Apr 03 17:47:29 2014 +0200 @@ -1677,30 +1677,6 @@ verify_oop_args(masm, method, sig_bt, regs); vmIntrinsics::ID iid = method->intrinsic_id(); -#ifdef GRAAL - if (iid == vmIntrinsics::_CompilerToVMImpl_executeCompiledMethod) { - // We are called from compiled code here. The three object arguments - // are already in the correct registers (j_rarg0, jrarg1, jrarg2). The - // fourth argument (j_rarg3) is a pointer to the HotSpotInstalledCode object. - - // Load the nmethod pointer from the HotSpotInstalledCode object - __ movq(j_rarg4, Address(j_rarg3, sizeof(oopDesc))); - - // Check whether the nmethod was invalidated - __ testq(j_rarg4, j_rarg4); - Label invalid_nmethod; - __ jcc(Assembler::zero, invalid_nmethod); - - // Perform a tail call to the verified entry point of the nmethod. - __ jmp(Address(j_rarg4, nmethod::verified_entry_point_offset())); - - __ bind(invalid_nmethod); - - __ jump(RuntimeAddress(StubRoutines::throw_InvalidInstalledCodeException_entry())); - return; - } -#endif - // Now write the args into the outgoing interpreter space bool has_receiver = false; Register receiver_reg = noreg; diff -r 5a87cbdd8a09 -r 4062efea018b src/cpu/x86/vm/stubGenerator_x86_32.cpp --- a/src/cpu/x86/vm/stubGenerator_x86_32.cpp Wed Apr 02 15:40:59 2014 -0700 +++ b/src/cpu/x86/vm/stubGenerator_x86_32.cpp Thu Apr 03 17:47:29 2014 +0200 @@ -2988,7 +2988,6 @@ // and need to be relocatable, so they each fabricate a RuntimeStub internally. StubRoutines::_throw_AbstractMethodError_entry = generate_throw_exception("AbstractMethodError throw_exception", CAST_FROM_FN_PTR(address, SharedRuntime::throw_AbstractMethodError)); StubRoutines::_throw_IncompatibleClassChangeError_entry= generate_throw_exception("IncompatibleClassChangeError throw_exception", CAST_FROM_FN_PTR(address, SharedRuntime::throw_IncompatibleClassChangeError)); - StubRoutines::_throw_InvalidInstalledCodeException_entry = generate_throw_exception("InvalidInstalledCodeException throw_exception", CAST_FROM_FN_PTR(address, SharedRuntime::throw_InvalidInstalledCodeException)); StubRoutines::_throw_NullPointerException_at_call_entry= generate_throw_exception("NullPointerException at call throw_exception", CAST_FROM_FN_PTR(address, SharedRuntime::throw_NullPointerException_at_call)); //------------------------------------------------------------------------------------------------------------------------ diff -r 5a87cbdd8a09 -r 4062efea018b src/cpu/x86/vm/stubGenerator_x86_64.cpp --- a/src/cpu/x86/vm/stubGenerator_x86_64.cpp Wed Apr 02 15:40:59 2014 -0700 +++ b/src/cpu/x86/vm/stubGenerator_x86_64.cpp Thu Apr 03 17:47:29 2014 +0200 @@ -3860,12 +3860,6 @@ SharedRuntime:: throw_IncompatibleClassChangeError)); - StubRoutines::_throw_InvalidInstalledCodeException_entry = - generate_throw_exception("InvalidInstalledCodeException throw_exception", - CAST_FROM_FN_PTR(address, - SharedRuntime:: - throw_InvalidInstalledCodeException)); - StubRoutines::_throw_NullPointerException_at_call_entry = generate_throw_exception("NullPointerException at call throw_exception", CAST_FROM_FN_PTR(address, diff -r 5a87cbdd8a09 -r 4062efea018b src/cpu/x86/vm/templateInterpreter_x86_64.cpp --- a/src/cpu/x86/vm/templateInterpreter_x86_64.cpp Wed Apr 02 15:40:59 2014 -0700 +++ b/src/cpu/x86/vm/templateInterpreter_x86_64.cpp Thu Apr 03 17:47:29 2014 +0200 @@ -45,9 +45,6 @@ #include "runtime/vframeArray.hpp" #include "utilities/debug.hpp" #include "utilities/macros.hpp" -#ifdef GRAAL -#include "graal/graalJavaAccess.hpp" -#endif #define __ _masm-> @@ -852,65 +849,6 @@ return generate_accessor_entry(); } -#ifdef GRAAL - -// Interpreter stub for calling a compiled method with 3 object arguments -address InterpreterGenerator::generate_execute_compiled_method_entry() { - address entry_point = __ pc(); - - // Pick up the return address - __ movptr(rax, Address(rsp, 0)); - - // Must preserve original SP for loading incoming arguments because - // we need to align the outgoing SP for compiled code. - __ movptr(r11, rsp); - - // Move first object argument from interpreter calling convention to compiled - // code calling convention. - __ movq(j_rarg0, Address(r11, Interpreter::stackElementSize*4)); - - // Move second object argument. - __ movq(j_rarg1, Address(r11, Interpreter::stackElementSize*3)); - - // Move third object argument. - __ movq(j_rarg2, Address(r11, Interpreter::stackElementSize*2)); - - // Load the raw pointer to the HotSpotInstalledCode object. - __ movq(j_rarg3, Address(r11, Interpreter::stackElementSize)); - - // Load the nmethod pointer from the HotSpotInstalledCode object - __ movq(j_rarg3, Address(j_rarg3, sizeof(oopDesc))); - - // Check whether the nmethod was invalidated - __ testq(j_rarg3, j_rarg3); - Label invalid_nmethod; - __ jcc(Assembler::zero, invalid_nmethod); - - // Ensure compiled code always sees stack at proper alignment - __ andptr(rsp, -16); - - // push the return address and misalign the stack that youngest frame always sees - // as far as the placement of the call instruction - __ push(rax); - - // Perform a tail call to the verified entry point of the nmethod. - __ jmp(Address(j_rarg3, nmethod::verified_entry_point_offset())); - - __ bind(invalid_nmethod); - - // pop return address, reset last_sp to NULL - __ empty_expression_stack(); - __ restore_bcp(); // rsi must be correct for exception handler (was destroyed) - __ restore_locals(); // make sure locals pointer is correct as well (was destroyed) - __ call_VM(noreg, CAST_FROM_FN_PTR(address, InterpreterRuntime::throw_InvalidInstalledCodeException)); - // the call_VM checks for exception, so we should never return here. - __ should_not_reach_here(); - - return entry_point; -} - -#endif - /** * Method entry for static native methods: * int java.util.zip.CRC32.update(int crc, int b) @@ -1702,9 +1640,6 @@ switch (kind) { case Interpreter::zerolocals : break; case Interpreter::zerolocals_synchronized: synchronized = true; break; -#ifdef GRAAL - case Interpreter::execute_compiled_method: entry_point = ig_this->generate_execute_compiled_method_entry(); break; -#endif case Interpreter::native : entry_point = ig_this->generate_native_entry(false); break; case Interpreter::native_synchronized : entry_point = ig_this->generate_native_entry(true); break; case Interpreter::empty : entry_point = ig_this->generate_empty_entry(); break; diff -r 5a87cbdd8a09 -r 4062efea018b src/share/vm/classfile/vmSymbols.hpp --- a/src/share/vm/classfile/vmSymbols.hpp Wed Apr 02 15:40:59 2014 -0700 +++ b/src/share/vm/classfile/vmSymbols.hpp Thu Apr 03 17:47:29 2014 +0200 @@ -1154,9 +1154,6 @@ do_intrinsic(_Double_valueOf, java_lang_Double, valueOf_name, Double_valueOf_signature, F_S) \ do_name( Double_valueOf_signature, "(D)Ljava/lang/Double;") \ \ - do_intrinsic(_CompilerToVMImpl_executeCompiledMethod, com_oracle_graal_hotspot_bridge_CompilerToVMImpl, executeCompiledMethod_name, CompilerToVMImpl_executeCompiledMethod_signature, F_SN)\ - do_name( CompilerToVMImpl_executeCompiledMethod_signature, "(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Lcom/oracle/graal/hotspot/meta/HotSpotInstalledCode;)Ljava/lang/Object;") \ - do_name( executeCompiledMethod_name, "executeCompiledMethodIntrinsic") \ /*end*/ diff -r 5a87cbdd8a09 -r 4062efea018b src/share/vm/compiler/compileBroker.cpp --- a/src/share/vm/compiler/compileBroker.cpp Wed Apr 02 15:40:59 2014 -0700 +++ b/src/share/vm/compiler/compileBroker.cpp Thu Apr 03 17:47:29 2014 +0200 @@ -1255,7 +1255,7 @@ assert(method->method_holder()->oop_is_instance(), "not an instance method"); assert(osr_bci == InvocationEntryBci || (0 <= osr_bci && osr_bci < method->code_size()), "bci out of range"); assert(!method->is_abstract() && (osr_bci == InvocationEntryBci || !method->is_native()), "cannot compile abstract/native methods"); - assert(!method->method_holder()->is_not_initialized() || method->intrinsic_id() == vmIntrinsics::_CompilerToVMImpl_executeCompiledMethod, "method holder must be initialized"); + assert(!method->method_holder()->is_not_initialized(), "method holder must be initialized"); // allow any levels for WhiteBox assert(WhiteBoxAPI || TieredCompilation || comp_level == CompLevel_highest_tier, "only CompLevel_highest_tier must be used in non-tiered"); // return quickly if possible diff -r 5a87cbdd8a09 -r 4062efea018b src/share/vm/interpreter/abstractInterpreter.hpp --- a/src/share/vm/interpreter/abstractInterpreter.hpp Wed Apr 02 15:40:59 2014 -0700 +++ b/src/share/vm/interpreter/abstractInterpreter.hpp Thu Apr 03 17:47:29 2014 +0200 @@ -82,9 +82,6 @@ zerolocals_synchronized, // method needs locals initialization & is synchronized native, // native method native_synchronized, // native method & is synchronized -#ifdef GRAAL - execute_compiled_method, // direct call to compiled method address -#endif empty, // empty method (code: _return) accessor, // accessor method (code: _aload_0, _getfield, _(a|i)return) abstract, // abstract method (throws an AbstractMethodException) diff -r 5a87cbdd8a09 -r 4062efea018b src/share/vm/interpreter/interpreter.cpp --- a/src/share/vm/interpreter/interpreter.cpp Wed Apr 02 15:40:59 2014 -0700 +++ b/src/share/vm/interpreter/interpreter.cpp Thu Apr 03 17:47:29 2014 +0200 @@ -188,13 +188,6 @@ // Method handle primitive? if (m->is_method_handle_intrinsic()) { vmIntrinsics::ID id = m->intrinsic_id(); -#ifdef GRAAL - if (id == vmIntrinsics::_CompilerToVMImpl_executeCompiledMethod) { - // Special method kind for directly executing the verified entry point - // of a given nmethod. - return AbstractInterpreter::execute_compiled_method; - } -#endif assert(MethodHandles::is_signature_polymorphic(id), "must match an intrinsic"); MethodKind kind = (MethodKind)( method_handle_invoke_FIRST + ((int)id - vmIntrinsics::FIRST_MH_SIG_POLY) ); @@ -305,9 +298,6 @@ case zerolocals_synchronized: tty->print("zerolocals_synchronized"); break; case native : tty->print("native" ); break; case native_synchronized : tty->print("native_synchronized" ); break; -#ifdef GRAAL - case execute_compiled_method: tty->print("execute_compiled_method"); break; -#endif case empty : tty->print("empty" ); break; case accessor : tty->print("accessor" ); break; case abstract : tty->print("abstract" ); break; diff -r 5a87cbdd8a09 -r 4062efea018b src/share/vm/interpreter/interpreterRuntime.cpp --- a/src/share/vm/interpreter/interpreterRuntime.cpp Wed Apr 02 15:40:59 2014 -0700 +++ b/src/share/vm/interpreter/interpreterRuntime.cpp Thu Apr 03 17:47:29 2014 +0200 @@ -500,11 +500,6 @@ THROW(vmSymbols::java_lang_IncompatibleClassChangeError()); IRT_END - -IRT_ENTRY(void, InterpreterRuntime::throw_InvalidInstalledCodeException(JavaThread* thread)) - THROW(vmSymbols::com_oracle_graal_api_code_InvalidInstalledCodeException()); -IRT_END - //------------------------------------------------------------------------------------------------------------------------ // Fields // diff -r 5a87cbdd8a09 -r 4062efea018b src/share/vm/interpreter/interpreterRuntime.hpp --- a/src/share/vm/interpreter/interpreterRuntime.hpp Wed Apr 02 15:40:59 2014 -0700 +++ b/src/share/vm/interpreter/interpreterRuntime.hpp Thu Apr 03 17:47:29 2014 +0200 @@ -89,7 +89,6 @@ // Exceptions thrown by the interpreter static void throw_AbstractMethodError(JavaThread* thread); static void throw_IncompatibleClassChangeError(JavaThread* thread); - static void throw_InvalidInstalledCodeException(JavaThread* thread); static void throw_StackOverflowError(JavaThread* thread); static void throw_ArrayIndexOutOfBoundsException(JavaThread* thread, char* name, jint index); static void throw_ClassCastException(JavaThread* thread, oopDesc* obj); diff -r 5a87cbdd8a09 -r 4062efea018b src/share/vm/interpreter/templateInterpreter.cpp --- a/src/share/vm/interpreter/templateInterpreter.cpp Wed Apr 02 15:40:59 2014 -0700 +++ b/src/share/vm/interpreter/templateInterpreter.cpp Thu Apr 03 17:47:29 2014 +0200 @@ -369,9 +369,6 @@ method_entry(zerolocals) method_entry(zerolocals_synchronized) method_entry(empty) -#ifdef GRAAL - method_entry(execute_compiled_method) -#endif method_entry(accessor) method_entry(abstract) method_entry(java_lang_math_sin ) diff -r 5a87cbdd8a09 -r 4062efea018b src/share/vm/oops/method.cpp --- a/src/share/vm/oops/method.cpp Wed Apr 02 15:40:59 2014 -0700 +++ b/src/share/vm/oops/method.cpp Thu Apr 03 17:47:29 2014 +0200 @@ -742,13 +742,10 @@ bool Method::is_always_compilable() const { // Generated adapters must be compiled - if (is_method_handle_intrinsic()) { - bool is_executeCompiled = intrinsic_id() == vmIntrinsics::_CompilerToVMImpl_executeCompiledMethod; - if (is_synthetic() || is_executeCompiled) { - assert(!is_not_c1_compilable() || is_executeCompiled, "sanity check"); - assert(!is_not_c2_compilable() || is_executeCompiled, "sanity check"); - return true; - } + if (is_method_handle_intrinsic() && is_synthetic()) { + assert(!is_not_c1_compilable(), "sanity check"); + assert(!is_not_c2_compilable(), "sanity check"); + return true; } return false; @@ -892,14 +889,6 @@ // ONLY USE the h_method now as make_adapter may have blocked -#ifdef GRAAL - // Check for special intrinsic that executes a compiled method. - if (h_method->intrinsic_id() == vmIntrinsics::_CompilerToVMImpl_executeCompiledMethod) { - // Actively install the stub for calling the intrinsic from compiled code. - CompileBroker::compile_method(h_method, InvocationEntryBci, CompLevel_highest_tier, - methodHandle(), CompileThreshold, "executeCompiledMethod", CHECK); - } -#endif } address Method::make_adapters(methodHandle mh, TRAPS) { @@ -1053,7 +1042,7 @@ bool Method::is_method_handle_intrinsic() const { vmIntrinsics::ID iid = intrinsic_id(); return (MethodHandles::is_signature_polymorphic(iid) && - MethodHandles::is_signature_polymorphic_intrinsic(iid)) || iid == vmIntrinsics::_CompilerToVMImpl_executeCompiledMethod; + MethodHandles::is_signature_polymorphic_intrinsic(iid)); } bool Method::has_member_arg() const { diff -r 5a87cbdd8a09 -r 4062efea018b src/share/vm/runtime/mutexLocker.cpp --- a/src/share/vm/runtime/mutexLocker.cpp Wed Apr 02 15:40:59 2014 -0700 +++ b/src/share/vm/runtime/mutexLocker.cpp Thu Apr 03 17:47:29 2014 +0200 @@ -280,6 +280,7 @@ def(JfrStream_lock , Mutex, nonleaf+2, true); def(JfrStacktrace_lock , Mutex, special, true ); #endif + } GCMutexLocker::GCMutexLocker(Monitor * mutex) { diff -r 5a87cbdd8a09 -r 4062efea018b src/share/vm/runtime/sharedRuntime.cpp --- a/src/share/vm/runtime/sharedRuntime.cpp Wed Apr 02 15:40:59 2014 -0700 +++ b/src/share/vm/runtime/sharedRuntime.cpp Thu Apr 03 17:47:29 2014 +0200 @@ -752,11 +752,6 @@ throw_and_post_jvmti_exception(thread, vmSymbols::java_lang_IncompatibleClassChangeError(), "vtable stub"); JRT_END -JRT_ENTRY(void, SharedRuntime::throw_InvalidInstalledCodeException(JavaThread* thread)) - // These errors occur only at call sites - throw_and_post_jvmti_exception(thread, vmSymbols::com_oracle_graal_api_code_InvalidInstalledCodeException()); -JRT_END - JRT_ENTRY(void, SharedRuntime::throw_ArithmeticException(JavaThread* thread)) throw_and_post_jvmti_exception(thread, vmSymbols::java_lang_ArithmeticException(), "/ by zero"); JRT_END diff -r 5a87cbdd8a09 -r 4062efea018b src/share/vm/runtime/sharedRuntime.hpp --- a/src/share/vm/runtime/sharedRuntime.hpp Wed Apr 02 15:40:59 2014 -0700 +++ b/src/share/vm/runtime/sharedRuntime.hpp Thu Apr 03 17:47:29 2014 +0200 @@ -186,7 +186,6 @@ }; static void throw_AbstractMethodError(JavaThread* thread); static void throw_IncompatibleClassChangeError(JavaThread* thread); - static void throw_InvalidInstalledCodeException(JavaThread* thread); static void throw_ArithmeticException(JavaThread* thread); static void throw_NullPointerException(JavaThread* thread); static void throw_NullPointerException_at_call(JavaThread* thread); diff -r 5a87cbdd8a09 -r 4062efea018b src/share/vm/runtime/stubRoutines.cpp --- a/src/share/vm/runtime/stubRoutines.cpp Wed Apr 02 15:40:59 2014 -0700 +++ b/src/share/vm/runtime/stubRoutines.cpp Thu Apr 03 17:47:29 2014 +0200 @@ -51,7 +51,6 @@ address StubRoutines::_forward_exception_entry = NULL; address StubRoutines::_throw_AbstractMethodError_entry = NULL; address StubRoutines::_throw_IncompatibleClassChangeError_entry = NULL; -address StubRoutines::_throw_InvalidInstalledCodeException_entry = NULL; address StubRoutines::_throw_NullPointerException_at_call_entry = NULL; address StubRoutines::_throw_StackOverflowError_entry = NULL; address StubRoutines::_handler_for_unsafe_access_entry = NULL; diff -r 5a87cbdd8a09 -r 4062efea018b src/share/vm/runtime/stubRoutines.hpp --- a/src/share/vm/runtime/stubRoutines.hpp Wed Apr 02 15:40:59 2014 -0700 +++ b/src/share/vm/runtime/stubRoutines.hpp Thu Apr 03 17:47:29 2014 +0200 @@ -128,7 +128,6 @@ static address _catch_exception_entry; static address _throw_AbstractMethodError_entry; static address _throw_IncompatibleClassChangeError_entry; - static address _throw_InvalidInstalledCodeException_entry; static address _throw_NullPointerException_at_call_entry; static address _throw_StackOverflowError_entry; static address _handler_for_unsafe_access_entry; @@ -273,7 +272,6 @@ // Implicit exceptions static address throw_AbstractMethodError_entry() { return _throw_AbstractMethodError_entry; } static address throw_IncompatibleClassChangeError_entry(){ return _throw_IncompatibleClassChangeError_entry; } - static address throw_InvalidInstalledCodeException_entry(){ return _throw_InvalidInstalledCodeException_entry; } static address throw_NullPointerException_at_call_entry(){ return _throw_NullPointerException_at_call_entry; } static address throw_StackOverflowError_entry() { return _throw_StackOverflowError_entry; }