116 intptr_t* _fp; // frame pointer
117 // The interpreter and adapters will extend the frame of the caller.
118 // Since oopMaps are based on the sp of the caller before extension
119 // we need to know that value. However in order to compute the address
120 // of the return address we need the real "raw" sp. Since sparc already
121 // uses sp() to mean "raw" sp and unextended_sp() to mean the caller's
122 // original sp we use that convention.
123
124 intptr_t* _unextended_sp;
125 void adjust_unextended_sp();
126
127 // true means _sp value is correct and we can use it to get the sender's sp
128 // of the compiled frame, otherwise, _sp value may be invalid and we can use
129 // _fp to get the sender's sp if PreserveFramePointer is enabled.
130 bool _sp_is_trusted;
131
132 intptr_t* ptr_at_addr(int offset) const {
133 return (intptr_t*) addr_at(offset);
134 }
135
136 #ifdef ASSERT
137 // Used in frame::sender_for_{interpreter,compiled}_frame
138 static void verify_deopt_original_pc( CompiledMethod* nm, intptr_t* unextended_sp);
139 #endif
140
141 public:
142 // Constructors
143
144 frame(intptr_t* sp, intptr_t* fp, address pc);
145
146 frame(intptr_t* sp, intptr_t* unextended_sp, intptr_t* fp, address pc);
147
148 frame(intptr_t* sp, intptr_t* fp);
149
150 void init(intptr_t* sp, intptr_t* fp, address pc);
151
152 // accessors for the instance variables
153 // Note: not necessarily the real 'frame pointer' (see real_fp)
154 intptr_t* fp() const { return _fp; }
155
|
116 intptr_t* _fp; // frame pointer
117 // The interpreter and adapters will extend the frame of the caller.
118 // Since oopMaps are based on the sp of the caller before extension
119 // we need to know that value. However in order to compute the address
120 // of the return address we need the real "raw" sp. Since sparc already
121 // uses sp() to mean "raw" sp and unextended_sp() to mean the caller's
122 // original sp we use that convention.
123
124 intptr_t* _unextended_sp;
125 void adjust_unextended_sp();
126
127 // true means _sp value is correct and we can use it to get the sender's sp
128 // of the compiled frame, otherwise, _sp value may be invalid and we can use
129 // _fp to get the sender's sp if PreserveFramePointer is enabled.
130 bool _sp_is_trusted;
131
132 intptr_t* ptr_at_addr(int offset) const {
133 return (intptr_t*) addr_at(offset);
134 }
135
136 // Support for scalarized inline type calling convention
137 intptr_t* repair_sender_sp(intptr_t* sender_sp, intptr_t** saved_fp_addr) const;
138
139 #ifdef ASSERT
140 // Used in frame::sender_for_{interpreter,compiled}_frame
141 static void verify_deopt_original_pc( CompiledMethod* nm, intptr_t* unextended_sp);
142 #endif
143
144 public:
145 // Constructors
146
147 frame(intptr_t* sp, intptr_t* fp, address pc);
148
149 frame(intptr_t* sp, intptr_t* unextended_sp, intptr_t* fp, address pc);
150
151 frame(intptr_t* sp, intptr_t* fp);
152
153 void init(intptr_t* sp, intptr_t* fp, address pc);
154
155 // accessors for the instance variables
156 // Note: not necessarily the real 'frame pointer' (see real_fp)
157 intptr_t* fp() const { return _fp; }
158
|