comparison src/share/vm/oops/method.cpp @ 14957:4062efea018b

Remove compiled method call intrinsic.
author Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
date Thu, 03 Apr 2014 17:47:29 +0200
parents 9161ed8ce796
children 36e1a11a72b3
comparison
equal deleted inserted replaced
14953:5a87cbdd8a09 14957:4062efea018b
740 } 740 }
741 } 741 }
742 742
743 bool Method::is_always_compilable() const { 743 bool Method::is_always_compilable() const {
744 // Generated adapters must be compiled 744 // Generated adapters must be compiled
745 if (is_method_handle_intrinsic()) { 745 if (is_method_handle_intrinsic() && is_synthetic()) {
746 bool is_executeCompiled = intrinsic_id() == vmIntrinsics::_CompilerToVMImpl_executeCompiledMethod; 746 assert(!is_not_c1_compilable(), "sanity check");
747 if (is_synthetic() || is_executeCompiled) { 747 assert(!is_not_c2_compilable(), "sanity check");
748 assert(!is_not_c1_compilable() || is_executeCompiled, "sanity check"); 748 return true;
749 assert(!is_not_c2_compilable() || is_executeCompiled, "sanity check");
750 return true;
751 }
752 } 749 }
753 750
754 return false; 751 return false;
755 } 752 }
756 753
890 // problem we'll make these lazily later. 887 // problem we'll make these lazily later.
891 (void) make_adapters(h_method, CHECK); 888 (void) make_adapters(h_method, CHECK);
892 889
893 // ONLY USE the h_method now as make_adapter may have blocked 890 // ONLY USE the h_method now as make_adapter may have blocked
894 891
895 #ifdef GRAAL
896 // Check for special intrinsic that executes a compiled method.
897 if (h_method->intrinsic_id() == vmIntrinsics::_CompilerToVMImpl_executeCompiledMethod) {
898 // Actively install the stub for calling the intrinsic from compiled code.
899 CompileBroker::compile_method(h_method, InvocationEntryBci, CompLevel_highest_tier,
900 methodHandle(), CompileThreshold, "executeCompiledMethod", CHECK);
901 }
902 #endif
903 } 892 }
904 893
905 address Method::make_adapters(methodHandle mh, TRAPS) { 894 address Method::make_adapters(methodHandle mh, TRAPS) {
906 // Adapters for compiled code are made eagerly here. They are fairly 895 // Adapters for compiled code are made eagerly here. They are fairly
907 // small (generally < 100 bytes) and quick to make (and cached and shared) 896 // small (generally < 100 bytes) and quick to make (and cached and shared)
1051 1040
1052 // Test if this method is an internal MH primitive method. 1041 // Test if this method is an internal MH primitive method.
1053 bool Method::is_method_handle_intrinsic() const { 1042 bool Method::is_method_handle_intrinsic() const {
1054 vmIntrinsics::ID iid = intrinsic_id(); 1043 vmIntrinsics::ID iid = intrinsic_id();
1055 return (MethodHandles::is_signature_polymorphic(iid) && 1044 return (MethodHandles::is_signature_polymorphic(iid) &&
1056 MethodHandles::is_signature_polymorphic_intrinsic(iid)) || iid == vmIntrinsics::_CompilerToVMImpl_executeCompiledMethod; 1045 MethodHandles::is_signature_polymorphic_intrinsic(iid));
1057 } 1046 }
1058 1047
1059 bool Method::has_member_arg() const { 1048 bool Method::has_member_arg() const {
1060 vmIntrinsics::ID iid = intrinsic_id(); 1049 vmIntrinsics::ID iid = intrinsic_id();
1061 return (MethodHandles::is_signature_polymorphic(iid) && 1050 return (MethodHandles::is_signature_polymorphic(iid) &&