changeset 14957:4062efea018b

Remove compiled method call intrinsic.
author Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
date Thu, 03 Apr 2014 17:47:29 +0200
parents 5a87cbdd8a09
children 809870c0203e
files graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/bridge/CompilerToVMImpl.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotNmethod.java src/cpu/sparc/vm/interpreterGenerator_sparc.hpp src/cpu/sparc/vm/interpreter_sparc.cpp src/cpu/sparc/vm/sharedRuntime_sparc.cpp src/cpu/sparc/vm/stubGenerator_sparc.cpp src/cpu/sparc/vm/templateInterpreter_sparc.cpp src/cpu/x86/vm/interpreterGenerator_x86.hpp src/cpu/x86/vm/sharedRuntime_x86_64.cpp src/cpu/x86/vm/stubGenerator_x86_32.cpp src/cpu/x86/vm/stubGenerator_x86_64.cpp src/cpu/x86/vm/templateInterpreter_x86_64.cpp src/share/vm/classfile/vmSymbols.hpp src/share/vm/compiler/compileBroker.cpp src/share/vm/interpreter/abstractInterpreter.hpp src/share/vm/interpreter/interpreter.cpp src/share/vm/interpreter/interpreterRuntime.cpp src/share/vm/interpreter/interpreterRuntime.hpp src/share/vm/interpreter/templateInterpreter.cpp src/share/vm/oops/method.cpp src/share/vm/runtime/mutexLocker.cpp src/share/vm/runtime/sharedRuntime.cpp src/share/vm/runtime/sharedRuntime.hpp src/share/vm/runtime/stubRoutines.cpp src/share/vm/runtime/stubRoutines.hpp
diffstat 25 files changed, 9 insertions(+), 205 deletions(-) [+]
line wrap: on
line diff
--- 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);
--- 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() {
--- 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);
--- 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;
--- 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;
--- 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 =
--- 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)
--- 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);
--- 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;
--- 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));
 
     //------------------------------------------------------------------------------------------------------------------------
--- 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,
--- 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;
--- 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*/
 
 
--- 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
--- 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)
--- 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;
--- 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
 //
--- 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);
--- 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  )
--- 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 {
--- 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) {
--- 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
--- 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);
--- 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;
--- 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; }