849 // |
849 // |
850 // Tests if this method is an internal adapter frame from the |
850 // Tests if this method is an internal adapter frame from the |
851 // MethodHandleCompiler. |
851 // MethodHandleCompiler. |
852 // Must be consistent with MethodHandleCompiler::get_method_oop(). |
852 // Must be consistent with MethodHandleCompiler::get_method_oop(). |
853 bool methodOopDesc::is_method_handle_adapter() const { |
853 bool methodOopDesc::is_method_handle_adapter() const { |
854 return (is_method_handle_invoke_name(name()) && |
854 if (is_synthetic() && |
855 is_synthetic() && |
855 !is_native() && // has code from MethodHandleCompiler |
856 MethodHandleCompiler::klass_is_method_handle_adapter_holder(method_holder())); |
856 is_method_handle_invoke_name(name()) && |
|
857 MethodHandleCompiler::klass_is_method_handle_adapter_holder(method_holder())) { |
|
858 assert(!is_method_handle_invoke(), "disjoint"); |
|
859 return true; |
|
860 } else { |
|
861 return false; |
|
862 } |
857 } |
863 } |
858 |
864 |
859 methodHandle methodOopDesc::make_invoke_method(KlassHandle holder, |
865 methodHandle methodOopDesc::make_invoke_method(KlassHandle holder, |
860 symbolHandle name, |
866 symbolHandle name, |
861 symbolHandle signature, |
867 symbolHandle signature, |