src/cpu/aarch64/vm/frame_aarch64.inline.hpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File 8074457 Sdiff src/cpu/aarch64/vm

src/cpu/aarch64/vm/frame_aarch64.inline.hpp

Print this page




 140 // Return true if the frame is younger (more recent activation) than the frame represented by id
 141 inline bool frame::is_younger(intptr_t* id) const { assert(this->id() != NULL && id != NULL, "NULL frame id");
 142                                                     return this->id() < id ; }
 143 
 144 // Return true if the frame is older (less recent activation) than the frame represented by id
 145 inline bool frame::is_older(intptr_t* id) const   { assert(this->id() != NULL && id != NULL, "NULL frame id");
 146                                                     return this->id() > id ; }
 147 
 148 
 149 
 150 inline intptr_t* frame::link() const              { return (intptr_t*) *(intptr_t **)addr_at(link_offset); }
 151 
 152 
 153 inline intptr_t* frame::unextended_sp() const     { return _unextended_sp; }
 154 
 155 // Return address:
 156 
 157 inline address* frame::sender_pc_addr()      const { return (address*) addr_at( return_addr_offset); }
 158 inline address  frame::sender_pc()           const { return *sender_pc_addr(); }
 159 
 160 #ifdef CC_INTERP
 161 
 162 inline interpreterState frame::get_interpreterState() const {
 163   return ((interpreterState)addr_at( -((int)sizeof(BytecodeInterpreter))/wordSize ));
 164 }
 165 
 166 inline intptr_t*    frame::sender_sp()        const {
 167   // Hmm this seems awfully expensive QQQ, is this really called with interpreted frames?
 168   if (is_interpreted_frame()) {
 169     assert(false, "should never happen");
 170     return get_interpreterState()->sender_sp();
 171   } else {
 172     return            addr_at(sender_sp_offset);
 173   }
 174 }
 175 
 176 inline intptr_t** frame::interpreter_frame_locals_addr() const {
 177   assert(is_interpreted_frame(), "must be interpreted");
 178   return &(get_interpreterState()->_locals);
 179 }
 180 
 181 inline intptr_t* frame::interpreter_frame_bcx_addr() const {
 182   assert(is_interpreted_frame(), "must be interpreted");
 183   return (intptr_t*) &(get_interpreterState()->_bcp);
 184 }
 185 
 186 
 187 // Constant pool cache
 188 
 189 inline constantPoolCacheOop* frame::interpreter_frame_cache_addr() const {
 190   assert(is_interpreted_frame(), "must be interpreted");
 191   return &(get_interpreterState()->_constants);
 192 }
 193 
 194 // Method
 195 
 196 inline methodOop* frame::interpreter_frame_method_addr() const {
 197   assert(is_interpreted_frame(), "must be interpreted");
 198   return &(get_interpreterState()->_method);
 199 }
 200 
 201 inline intptr_t* frame::interpreter_frame_mdx_addr() const {
 202   assert(is_interpreted_frame(), "must be interpreted");
 203   return (intptr_t*) &(get_interpreterState()->_mdx);
 204 }
 205 
 206 // top of expression stack
 207 inline intptr_t* frame::interpreter_frame_tos_address() const {
 208   assert(is_interpreted_frame(), "wrong frame type");
 209   return get_interpreterState()->_stack + 1;
 210 }
 211 
 212 #else /* asm interpreter */
 213 inline intptr_t*    frame::sender_sp()        const { return            addr_at(   sender_sp_offset); }
 214 
 215 inline intptr_t** frame::interpreter_frame_locals_addr() const {
 216   return (intptr_t**)addr_at(interpreter_frame_locals_offset);
 217 }
 218 
 219 inline intptr_t* frame::interpreter_frame_last_sp() const {
 220   return *(intptr_t**)addr_at(interpreter_frame_last_sp_offset);
 221 }
 222 
 223 inline intptr_t* frame::interpreter_frame_bcp_addr() const {
 224   return (intptr_t*)addr_at(interpreter_frame_bcp_offset);
 225 }
 226 
 227 inline intptr_t* frame::interpreter_frame_mdp_addr() const {
 228   return (intptr_t*)addr_at(interpreter_frame_mdp_offset);
 229 }
 230 
 231 
 232 // Constant pool cache


 241   return (Method**)addr_at(interpreter_frame_method_offset);
 242 }
 243 
 244 // top of expression stack
 245 inline intptr_t* frame::interpreter_frame_tos_address() const {
 246   intptr_t* last_sp = interpreter_frame_last_sp();
 247   if (last_sp == NULL) {
 248     return sp();
 249   } else {
 250     // sp() may have been extended or shrunk by an adapter.  At least
 251     // check that we don't fall behind the legal region.
 252     // For top deoptimized frame last_sp == interpreter_frame_monitor_end.
 253     assert(last_sp <= (intptr_t*) interpreter_frame_monitor_end(), "bad tos");
 254     return last_sp;
 255   }
 256 }
 257 
 258 inline oop* frame::interpreter_frame_temp_oop_addr() const {
 259   return (oop *)(fp() + interpreter_frame_oop_temp_offset);
 260 }
 261 
 262 #endif /* CC_INTERP */
 263 
 264 inline int frame::pd_oop_map_offset_adjustment() const {
 265   return 0;
 266 }
 267 
 268 inline int frame::interpreter_frame_monitor_size() {
 269   return BasicObjectLock::size();
 270 }
 271 
 272 
 273 // expression stack
 274 // (the max_stack arguments are used by the GC; see class FrameClosure)
 275 
 276 inline intptr_t* frame::interpreter_frame_expression_stack() const {
 277   intptr_t* monitor_end = (intptr_t*) interpreter_frame_monitor_end();
 278   return monitor_end-1;
 279 }
 280 
 281 
 282 inline jint frame::interpreter_frame_expression_stack_direction() { return -1; }




 140 // Return true if the frame is younger (more recent activation) than the frame represented by id
 141 inline bool frame::is_younger(intptr_t* id) const { assert(this->id() != NULL && id != NULL, "NULL frame id");
 142                                                     return this->id() < id ; }
 143 
 144 // Return true if the frame is older (less recent activation) than the frame represented by id
 145 inline bool frame::is_older(intptr_t* id) const   { assert(this->id() != NULL && id != NULL, "NULL frame id");
 146                                                     return this->id() > id ; }
 147 
 148 
 149 
 150 inline intptr_t* frame::link() const              { return (intptr_t*) *(intptr_t **)addr_at(link_offset); }
 151 
 152 
 153 inline intptr_t* frame::unextended_sp() const     { return _unextended_sp; }
 154 
 155 // Return address:
 156 
 157 inline address* frame::sender_pc_addr()      const { return (address*) addr_at( return_addr_offset); }
 158 inline address  frame::sender_pc()           const { return *sender_pc_addr(); }
 159 





















































 160 inline intptr_t*    frame::sender_sp()        const { return            addr_at(   sender_sp_offset); }
 161 
 162 inline intptr_t** frame::interpreter_frame_locals_addr() const {
 163   return (intptr_t**)addr_at(interpreter_frame_locals_offset);
 164 }
 165 
 166 inline intptr_t* frame::interpreter_frame_last_sp() const {
 167   return *(intptr_t**)addr_at(interpreter_frame_last_sp_offset);
 168 }
 169 
 170 inline intptr_t* frame::interpreter_frame_bcp_addr() const {
 171   return (intptr_t*)addr_at(interpreter_frame_bcp_offset);
 172 }
 173 
 174 inline intptr_t* frame::interpreter_frame_mdp_addr() const {
 175   return (intptr_t*)addr_at(interpreter_frame_mdp_offset);
 176 }
 177 
 178 
 179 // Constant pool cache


 188   return (Method**)addr_at(interpreter_frame_method_offset);
 189 }
 190 
 191 // top of expression stack
 192 inline intptr_t* frame::interpreter_frame_tos_address() const {
 193   intptr_t* last_sp = interpreter_frame_last_sp();
 194   if (last_sp == NULL) {
 195     return sp();
 196   } else {
 197     // sp() may have been extended or shrunk by an adapter.  At least
 198     // check that we don't fall behind the legal region.
 199     // For top deoptimized frame last_sp == interpreter_frame_monitor_end.
 200     assert(last_sp <= (intptr_t*) interpreter_frame_monitor_end(), "bad tos");
 201     return last_sp;
 202   }
 203 }
 204 
 205 inline oop* frame::interpreter_frame_temp_oop_addr() const {
 206   return (oop *)(fp() + interpreter_frame_oop_temp_offset);
 207 }


 208 
 209 inline int frame::pd_oop_map_offset_adjustment() const {
 210   return 0;
 211 }
 212 
 213 inline int frame::interpreter_frame_monitor_size() {
 214   return BasicObjectLock::size();
 215 }
 216 
 217 
 218 // expression stack
 219 // (the max_stack arguments are used by the GC; see class FrameClosure)
 220 
 221 inline intptr_t* frame::interpreter_frame_expression_stack() const {
 222   intptr_t* monitor_end = (intptr_t*) interpreter_frame_monitor_end();
 223   return monitor_end-1;
 224 }
 225 
 226 
 227 inline jint frame::interpreter_frame_expression_stack_direction() { return -1; }


src/cpu/aarch64/vm/frame_aarch64.inline.hpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File