< prev index next >

src/share/vm/code/compiledMethod.hpp

Print this page
rev 13183 : 8183299: Improve inlining of CompiledMethod methods into frame::sender
Reviewed-by: TBD

*** 24,33 **** --- 24,34 ---- #ifndef SHARE_VM_CODE_COMPILEDMETHOD_HPP #define SHARE_VM_CODE_COMPILEDMETHOD_HPP #include "code/codeBlob.hpp" + #include "code/nativeInst.hpp" #include "code/pcDesc.hpp" #include "oops/metadata.hpp" class Dependencies; class ExceptionHandlerTable;
*** 303,313 **** virtual address get_original_pc(const frame* fr) = 0; // Deopt // Return true is the PC is one would expect if the frame is being deopted. bool is_deopt_pc (address pc) { return is_deopt_entry(pc) || is_deopt_mh_entry(pc); } bool is_deopt_mh_entry(address pc) { return pc == deopt_mh_handler_begin(); } ! bool is_deopt_entry(address pc); virtual bool can_convert_to_zombie() = 0; virtual const char* compile_kind() const = 0; virtual int get_state() const = 0; --- 304,321 ---- virtual address get_original_pc(const frame* fr) = 0; // Deopt // Return true is the PC is one would expect if the frame is being deopted. bool is_deopt_pc (address pc) { return is_deopt_entry(pc) || is_deopt_mh_entry(pc); } bool is_deopt_mh_entry(address pc) { return pc == deopt_mh_handler_begin(); } ! bool is_deopt_entry(address pc) { ! return pc == deopt_handler_begin() ! #if INCLUDE_JVMCI ! // When using JVMCI the address might be off by the size of a call instruction. ! || (is_compiled_by_jvmci() && pc == (deopt_handler_begin() + NativeCall::instruction_size)) ! #endif ! ; ! } virtual bool can_convert_to_zombie() = 0; virtual const char* compile_kind() const = 0; virtual int get_state() const = 0;
*** 322,332 **** void preserve_callee_argument_oops(frame fr, const RegisterMap *reg_map, OopClosure* f); // implicit exceptions support virtual address continuation_for_implicit_exception(address pc) { return NULL; } ! static address get_deopt_original_pc(const frame* fr); // Inline cache support void cleanup_inline_caches(bool clean_all = false); virtual void clear_inline_caches(); void clear_ic_stubs(); --- 330,348 ---- void preserve_callee_argument_oops(frame fr, const RegisterMap *reg_map, OopClosure* f); // implicit exceptions support virtual address continuation_for_implicit_exception(address pc) { return NULL; } ! static address get_deopt_original_pc(const frame* fr) { ! if (fr->cb() == NULL) return NULL; ! ! CompiledMethod* cm = fr->cb()->as_compiled_method_or_null(); ! if (cm != NULL && cm->is_deopt_pc(fr->pc())) ! return cm->get_original_pc(fr); ! ! return NULL; ! } // Inline cache support void cleanup_inline_caches(bool clean_all = false); virtual void clear_inline_caches(); void clear_ic_stubs();
< prev index next >