< prev index next >

src/hotspot/cpu/aarch64/frame_aarch64.hpp

Print this page

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



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

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