161 // we need to know that value. However in order to compute the address 162 // of the return address we need the real "raw" sp. Since sparc already 163 // uses sp() to mean "raw" sp and unextended_sp() to mean the caller's 164 // original sp we use that convention. 165 166 intptr_t* _unextended_sp; 167 void adjust_unextended_sp(); 168 169 intptr_t* ptr_at_addr(int offset) const { 170 return (intptr_t*) addr_at(offset); 171 } 172 173 #ifdef ASSERT 174 // Used in frame::sender_for_{interpreter,compiled}_frame 175 static void verify_deopt_original_pc(nmethod* nm, intptr_t* unextended_sp); 176 #endif 177 178 public: 179 // Constructors 180 181 frame(intptr_t* sp, intptr_t* fp, address pc); 182 183 frame(intptr_t* sp, intptr_t* unextended_sp, intptr_t* fp, address pc); 184 185 frame(intptr_t* sp, intptr_t* fp); 186 187 void init(intptr_t* sp, intptr_t* fp, address pc); 188 189 // accessors for the instance variables 190 // Note: not necessarily the real 'frame pointer' (see real_fp) 191 intptr_t* fp() const { return _fp; } 192 193 inline address* sender_pc_addr() const; 194 195 // return address of param, zero origin index. 196 inline address* native_param_addr(int idx) const; 197 198 // expression stack tos if we are nested in a java call 199 intptr_t* interpreter_frame_last_sp() const; 200 201 // helper to update a map with callee-saved RBP 202 static void update_map_with_saved_link(RegisterMap* map, intptr_t** link_addr); 203 204 #ifndef CC_INTERP 205 // deoptimization support 206 void interpreter_frame_set_last_sp(intptr_t* sp); 207 #endif // CC_INTERP | 161 // we need to know that value. However in order to compute the address 162 // of the return address we need the real "raw" sp. Since sparc already 163 // uses sp() to mean "raw" sp and unextended_sp() to mean the caller's 164 // original sp we use that convention. 165 166 intptr_t* _unextended_sp; 167 void adjust_unextended_sp(); 168 169 intptr_t* ptr_at_addr(int offset) const { 170 return (intptr_t*) addr_at(offset); 171 } 172 173 #ifdef ASSERT 174 // Used in frame::sender_for_{interpreter,compiled}_frame 175 static void verify_deopt_original_pc(nmethod* nm, intptr_t* unextended_sp); 176 #endif 177 178 public: 179 // Constructors 180 181 frame(Thread* thread, intptr_t* sp, intptr_t* fp, address pc); 182 183 frame(Thread* thread, intptr_t* sp, intptr_t* unextended_sp, intptr_t* fp, address pc); 184 185 frame(Thread* thread, intptr_t* sp, intptr_t* fp); 186 187 void init(Thread* thread, intptr_t* sp, intptr_t* fp, address pc); 188 189 // accessors for the instance variables 190 // Note: not necessarily the real 'frame pointer' (see real_fp) 191 intptr_t* fp() const { return _fp; } 192 193 inline address* sender_pc_addr() const; 194 195 // return address of param, zero origin index. 196 inline address* native_param_addr(int idx) const; 197 198 // expression stack tos if we are nested in a java call 199 intptr_t* interpreter_frame_last_sp() const; 200 201 // helper to update a map with callee-saved RBP 202 static void update_map_with_saved_link(RegisterMap* map, intptr_t** link_addr); 203 204 #ifndef CC_INTERP 205 // deoptimization support 206 void interpreter_frame_set_last_sp(intptr_t* sp); 207 #endif // CC_INTERP |