< prev index next >

src/hotspot/cpu/aarch64/frame_aarch64.hpp

Print this page

135   // of the return address we need the real "raw" sp. Since sparc already
136   // uses sp() to mean "raw" sp and unextended_sp() to mean the caller's
137   // original sp we use that convention.
138 
139   union {
140     intptr_t* _unextended_sp;
141     int _offset_unextended_sp; // for use in stack-chunk frames
142   };
143 
144   void adjust_unextended_sp() NOT_DEBUG_RETURN;
145 
146   // true means _sp value is correct and we can use it to get the sender's sp
147   // of the compiled frame, otherwise, _sp value may be invalid and we can use
148   // _fp to get the sender's sp if PreserveFramePointer is enabled.
149   bool _sp_is_trusted;
150 
151   intptr_t* ptr_at_addr(int offset) const {
152     return (intptr_t*) addr_at(offset);
153   }
154 



155 #ifdef ASSERT
156   // Used in frame::sender_for_{interpreter,compiled}_frame
157   static void verify_deopt_original_pc(nmethod* nm, intptr_t* unextended_sp);
158 #endif
159 
160  public:
161   // Constructors
162 
163   frame(intptr_t* sp, intptr_t* fp, address pc);
164 
165   frame(intptr_t* sp, intptr_t* unextended_sp, intptr_t* fp, address pc);
166 
167   frame(intptr_t* sp, intptr_t* unextended_sp, intptr_t* fp, address pc, CodeBlob* cb, bool allow_cb_null = false);
168   // used for fast frame construction by continuations
169   frame(intptr_t* sp, intptr_t* unextended_sp, intptr_t* fp, address pc, CodeBlob* cb, const ImmutableOopMap* oop_map, bool on_heap);
170 
171   frame(intptr_t* sp, intptr_t* fp);
172 
173   void init(intptr_t* sp, intptr_t* fp, address pc);
174   void setup(address pc);

135   // of the return address we need the real "raw" sp. Since sparc already
136   // uses sp() to mean "raw" sp and unextended_sp() to mean the caller's
137   // original sp we use that convention.
138 
139   union {
140     intptr_t* _unextended_sp;
141     int _offset_unextended_sp; // for use in stack-chunk frames
142   };
143 
144   void adjust_unextended_sp() NOT_DEBUG_RETURN;
145 
146   // true means _sp value is correct and we can use it to get the sender's sp
147   // of the compiled frame, otherwise, _sp value may be invalid and we can use
148   // _fp to get the sender's sp if PreserveFramePointer is enabled.
149   bool _sp_is_trusted;
150 
151   intptr_t* ptr_at_addr(int offset) const {
152     return (intptr_t*) addr_at(offset);
153   }
154 
155   // Support for scalarized inline type calling convention
156   intptr_t* repair_sender_sp(intptr_t* sender_sp, intptr_t** saved_fp_addr) const;
157 
158 #ifdef ASSERT
159   // Used in frame::sender_for_{interpreter,compiled}_frame
160   static void verify_deopt_original_pc(nmethod* nm, intptr_t* unextended_sp);
161 #endif
162 
163  public:
164   // Constructors
165 
166   frame(intptr_t* sp, intptr_t* fp, address pc);
167 
168   frame(intptr_t* sp, intptr_t* unextended_sp, intptr_t* fp, address pc);
169 
170   frame(intptr_t* sp, intptr_t* unextended_sp, intptr_t* fp, address pc, CodeBlob* cb, bool allow_cb_null = false);
171   // used for fast frame construction by continuations
172   frame(intptr_t* sp, intptr_t* unextended_sp, intptr_t* fp, address pc, CodeBlob* cb, const ImmutableOopMap* oop_map, bool on_heap);
173 
174   frame(intptr_t* sp, intptr_t* fp);
175 
176   void init(intptr_t* sp, intptr_t* fp, address pc);
177   void setup(address pc);
< prev index next >