2745 }
2746 return SharedRuntime::get_resolve_virtual_call_stub();
2747 }
2748
2749 virtual void set_destination_mt_safe(address dest) {
2750 #if INCLUDE_AOT
2751 if (UseAOT) {
2752 CodeBlob* callee = CodeCache::find_blob(dest);
2753 CompiledMethod* cm = callee->as_compiled_method_or_null();
2754 if (cm != NULL && cm->is_far_code()) {
2755 // Temporary fix, see JDK-8143106
2756 CompiledDirectStaticCall* csc = CompiledDirectStaticCall::at(instruction_address());
2757 csc->set_to_far(methodHandle(cm->method()), dest);
2758 return;
2759 }
2760 }
2761 #endif
2762 _call->set_destination_mt_safe(dest);
2763 }
2764
2765 virtual void set_to_interpreted(methodHandle method, CompiledICInfo& info) {
2766 CompiledDirectStaticCall* csc = CompiledDirectStaticCall::at(instruction_address());
2767 #if INCLUDE_AOT
2768 if (info.to_aot()) {
2769 csc->set_to_far(method, info.entry());
2770 } else
2771 #endif
2772 {
2773 csc->set_to_interpreted(method, info.entry());
2774 }
2775 }
2776
2777 virtual void verify() const {
2778 // make sure code pattern is actually a call imm32 instruction
2779 _call->verify();
2780 if (os::is_MP()) {
2781 _call->verify_alignment();
2782 }
2783 }
2784
2785 virtual void verify_resolve_call(address dest) const {
|
2745 }
2746 return SharedRuntime::get_resolve_virtual_call_stub();
2747 }
2748
2749 virtual void set_destination_mt_safe(address dest) {
2750 #if INCLUDE_AOT
2751 if (UseAOT) {
2752 CodeBlob* callee = CodeCache::find_blob(dest);
2753 CompiledMethod* cm = callee->as_compiled_method_or_null();
2754 if (cm != NULL && cm->is_far_code()) {
2755 // Temporary fix, see JDK-8143106
2756 CompiledDirectStaticCall* csc = CompiledDirectStaticCall::at(instruction_address());
2757 csc->set_to_far(methodHandle(cm->method()), dest);
2758 return;
2759 }
2760 }
2761 #endif
2762 _call->set_destination_mt_safe(dest);
2763 }
2764
2765 virtual void set_to_interpreted(const methodHandle& method, CompiledICInfo& info) {
2766 CompiledDirectStaticCall* csc = CompiledDirectStaticCall::at(instruction_address());
2767 #if INCLUDE_AOT
2768 if (info.to_aot()) {
2769 csc->set_to_far(method, info.entry());
2770 } else
2771 #endif
2772 {
2773 csc->set_to_interpreted(method, info.entry());
2774 }
2775 }
2776
2777 virtual void verify() const {
2778 // make sure code pattern is actually a call imm32 instruction
2779 _call->verify();
2780 if (os::is_MP()) {
2781 _call->verify_alignment();
2782 }
2783 }
2784
2785 virtual void verify_resolve_call(address dest) const {
|