src/share/vm/code/nmethod.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File hotspot Sdiff src/share/vm/code

src/share/vm/code/nmethod.cpp

Print this page
rev 29185 : Review changes


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 {


src/share/vm/code/nmethod.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File