Mercurial > hg > graal-compiler
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) && |