< prev index next >

src/hotspot/cpu/x86/frame_x86.hpp

Print this page

        

*** 114,124 **** // we need to know that value. However in order to compute the address // of the return address we need the real "raw" sp. Since sparc already // uses sp() to mean "raw" sp and unextended_sp() to mean the caller's // original sp we use that convention. ! intptr_t* _unextended_sp; void adjust_unextended_sp() NOT_DEBUG_RETURN; intptr_t* ptr_at_addr(int offset) const { return (intptr_t*) addr_at(offset); } --- 114,124 ---- // we need to know that value. However in order to compute the address // of the return address we need the real "raw" sp. Since sparc already // uses sp() to mean "raw" sp and unextended_sp() to mean the caller's // original sp we use that convention. ! intptr_t* _unextended_sp; void adjust_unextended_sp() NOT_DEBUG_RETURN; intptr_t* ptr_at_addr(int offset) const { return (intptr_t*) addr_at(offset); }
*** 126,157 **** #ifdef ASSERT // Used in frame::sender_for_{interpreter,compiled}_frame static void verify_deopt_original_pc(CompiledMethod* nm, intptr_t* unextended_sp); #endif public: // Constructors frame(intptr_t* sp, intptr_t* fp, address pc); frame(intptr_t* sp, intptr_t* unextended_sp, intptr_t* fp, address pc); frame(intptr_t* sp, intptr_t* fp); void init(intptr_t* sp, intptr_t* fp, address pc); // accessors for the instance variables // Note: not necessarily the real 'frame pointer' (see real_fp) intptr_t* fp() const { return _fp; } inline address* sender_pc_addr() const; // expression stack tos if we are nested in a java call intptr_t* interpreter_frame_last_sp() const; // helper to update a map with callee-saved RBP ! static void update_map_with_saved_link(RegisterMap* map, intptr_t** link_addr); // deoptimization support void interpreter_frame_set_last_sp(intptr_t* sp); static jint interpreter_frame_expression_stack_direction() { return -1; } --- 126,173 ---- #ifdef ASSERT // Used in frame::sender_for_{interpreter,compiled}_frame static void verify_deopt_original_pc(CompiledMethod* nm, intptr_t* unextended_sp); #endif + const ImmutableOopMap* get_oop_map() const; + public: // Constructors frame(intptr_t* sp, intptr_t* fp, address pc); frame(intptr_t* sp, intptr_t* unextended_sp, intptr_t* fp, address pc); + frame(intptr_t* sp, intptr_t* unextended_sp, intptr_t* fp, address pc, CodeBlob* cb); + + frame(intptr_t* sp, intptr_t* unextended_sp, intptr_t* fp, address pc, CodeBlob* cb, const ImmutableOopMap* oop_map); + + frame(intptr_t* sp, intptr_t* unextended_sp, intptr_t* fp, address pc, CodeBlob* cb, const ImmutableOopMap* oop_map, bool dummy); // used for fast frame construction by continuations + + frame(int sp, int ref_sp, intptr_t fp, address pc, CodeBlob* cb, bool deopt); // for continuation frames + frame(intptr_t* sp, intptr_t* fp); void init(intptr_t* sp, intptr_t* fp, address pc); + void setup(address pc); // accessors for the instance variables // Note: not necessarily the real 'frame pointer' (see real_fp) intptr_t* fp() const { return _fp; } + intptr_t** fp_addr() { return &_fp; } // for use in continuations freezing / thawing + void set_fp(intptr_t* newfp) { _fp = newfp; } inline address* sender_pc_addr() const; // expression stack tos if we are nested in a java call intptr_t* interpreter_frame_last_sp() const; // helper to update a map with callee-saved RBP ! template <typename RegisterMapT> ! static void update_map_with_saved_link(RegisterMapT* map, intptr_t** link_addr); ! template <typename RegisterMapT> ! static intptr_t** saved_link_address(const RegisterMapT* map); // deoptimization support void interpreter_frame_set_last_sp(intptr_t* sp); static jint interpreter_frame_expression_stack_direction() { return -1; }
< prev index next >