< prev index next >

src/hotspot/share/code/nmethod.cpp

Print this page




2731     }
2732 #endif
2733     _call->set_destination_mt_safe(dest);
2734   }
2735 
2736   virtual void set_to_interpreted(const methodHandle& method, CompiledICInfo& info) {
2737     CompiledDirectStaticCall* csc = CompiledDirectStaticCall::at(instruction_address());
2738 #if INCLUDE_AOT
2739     if (info.to_aot()) {
2740       csc->set_to_far(method, info.entry());
2741     } else
2742 #endif
2743     {
2744       csc->set_to_interpreted(method, info.entry());
2745     }
2746   }
2747 
2748   virtual void verify() const {
2749     // make sure code pattern is actually a call imm32 instruction
2750     _call->verify();
2751     if (os::is_MP()) {
2752       _call->verify_alignment();
2753     }
2754   }
2755 
2756   virtual void verify_resolve_call(address dest) const {
2757     CodeBlob* db = CodeCache::find_blob_unsafe(dest);
2758     assert(db != NULL && !db->is_adapter_blob(), "must use stub!");
2759   }
2760 
2761   virtual bool is_call_to_interpreted(address dest) const {
2762     CodeBlob* cb = CodeCache::find_blob(_call->instruction_address());
2763     return cb->contains(dest);
2764   }
2765 
2766   virtual bool is_safe_for_patching() const { return false; }
2767 
2768   virtual NativeInstruction* get_load_instruction(virtual_call_Relocation* r) const {
2769     return nativeMovConstReg_at(r->cached_value());
2770   }
2771 
2772   virtual void *get_data(NativeInstruction* instruction) const {
2773     return (void*)((NativeMovConstReg*) instruction)->data();




2731     }
2732 #endif
2733     _call->set_destination_mt_safe(dest);
2734   }
2735 
2736   virtual void set_to_interpreted(const methodHandle& method, CompiledICInfo& info) {
2737     CompiledDirectStaticCall* csc = CompiledDirectStaticCall::at(instruction_address());
2738 #if INCLUDE_AOT
2739     if (info.to_aot()) {
2740       csc->set_to_far(method, info.entry());
2741     } else
2742 #endif
2743     {
2744       csc->set_to_interpreted(method, info.entry());
2745     }
2746   }
2747 
2748   virtual void verify() const {
2749     // make sure code pattern is actually a call imm32 instruction
2750     _call->verify();

2751     _call->verify_alignment();

2752   }
2753 
2754   virtual void verify_resolve_call(address dest) const {
2755     CodeBlob* db = CodeCache::find_blob_unsafe(dest);
2756     assert(db != NULL && !db->is_adapter_blob(), "must use stub!");
2757   }
2758 
2759   virtual bool is_call_to_interpreted(address dest) const {
2760     CodeBlob* cb = CodeCache::find_blob(_call->instruction_address());
2761     return cb->contains(dest);
2762   }
2763 
2764   virtual bool is_safe_for_patching() const { return false; }
2765 
2766   virtual NativeInstruction* get_load_instruction(virtual_call_Relocation* r) const {
2767     return nativeMovConstReg_at(r->cached_value());
2768   }
2769 
2770   virtual void *get_data(NativeInstruction* instruction) const {
2771     return (void*)((NativeMovConstReg*) instruction)->data();


< prev index next >