< 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 >