106 *ptr_at_addr(offset) = value;
107 }
108
109 private:
110 // an additional field beyond _sp and _pc:
111 intptr_t* _fp; // frame pointer
112 // The interpreter and adapters will extend the frame of the caller.
113 // Since oopMaps are based on the sp of the caller before extension
114 // we need to know that value. However in order to compute the address
115 // of the return address we need the real "raw" sp. By convention we
116 // use sp() to mean "raw" sp and unextended_sp() to mean the caller's
117 // original sp.
118
119 intptr_t* _unextended_sp;
120 void adjust_unextended_sp() NOT_DEBUG_RETURN;
121
122 intptr_t* ptr_at_addr(int offset) const {
123 return (intptr_t*) addr_at(offset);
124 }
125
126 #ifdef ASSERT
127 // Used in frame::sender_for_{interpreter,compiled}_frame
128 static void verify_deopt_original_pc(CompiledMethod* nm, intptr_t* unextended_sp);
129 #endif
130
131 public:
132 // Constructors
133
134 frame(intptr_t* sp, intptr_t* fp, address pc);
135
136 frame(intptr_t* sp, intptr_t* unextended_sp, intptr_t* fp, address pc);
137
138 frame(intptr_t* sp, intptr_t* fp);
139
140 void init(intptr_t* sp, intptr_t* fp, address pc);
141
142 // accessors for the instance variables
143 // Note: not necessarily the real 'frame pointer' (see real_fp)
144 intptr_t* fp() const { return _fp; }
145
|
106 *ptr_at_addr(offset) = value;
107 }
108
109 private:
110 // an additional field beyond _sp and _pc:
111 intptr_t* _fp; // frame pointer
112 // The interpreter and adapters will extend the frame of the caller.
113 // Since oopMaps are based on the sp of the caller before extension
114 // we need to know that value. However in order to compute the address
115 // of the return address we need the real "raw" sp. By convention we
116 // use sp() to mean "raw" sp and unextended_sp() to mean the caller's
117 // original sp.
118
119 intptr_t* _unextended_sp;
120 void adjust_unextended_sp() NOT_DEBUG_RETURN;
121
122 intptr_t* ptr_at_addr(int offset) const {
123 return (intptr_t*) addr_at(offset);
124 }
125
126 // Support for scalarized inline type calling convention
127 intptr_t* repair_sender_sp(intptr_t* sender_sp, intptr_t** saved_fp_addr) const;
128
129 #ifdef ASSERT
130 // Used in frame::sender_for_{interpreter,compiled}_frame
131 static void verify_deopt_original_pc(CompiledMethod* nm, intptr_t* unextended_sp);
132 #endif
133
134 public:
135 // Constructors
136
137 frame(intptr_t* sp, intptr_t* fp, address pc);
138
139 frame(intptr_t* sp, intptr_t* unextended_sp, intptr_t* fp, address pc);
140
141 frame(intptr_t* sp, intptr_t* fp);
142
143 void init(intptr_t* sp, intptr_t* fp, address pc);
144
145 // accessors for the instance variables
146 // Note: not necessarily the real 'frame pointer' (see real_fp)
147 intptr_t* fp() const { return _fp; }
148
|