< prev index next >

src/hotspot/cpu/riscv/frame_riscv.hpp

Print this page

165     intptr_t*  _fp; // frame pointer
166     int _offset_fp; // relative frame pointer for use in stack-chunk frames
167   };
168   // The interpreter and adapters will extend the frame of the caller.
169   // Since oopMaps are based on the sp of the caller before extension
170   // we need to know that value. However in order to compute the address
171   // of the return address we need the real "raw" sp. Since sparc already
172   // uses sp() to mean "raw" sp and unextended_sp() to mean the caller's
173   // original sp we use that convention.
174 
175   union {
176     intptr_t* _unextended_sp;
177     int _offset_unextended_sp; // for use in stack-chunk frames
178   };
179 
180   intptr_t* ptr_at_addr(int offset) const {
181     return (intptr_t*) addr_at(offset);
182   }
183 
184  public:




185   // Constructors
186 
187   frame(intptr_t* ptr_sp, intptr_t* ptr_fp, address pc);
188 
189   frame(intptr_t* ptr_sp, intptr_t* unextended_sp, intptr_t* ptr_fp, address pc);
190 
191   frame(intptr_t* sp, intptr_t* unextended_sp, intptr_t* fp, address pc, CodeBlob* cb);
192   // used for fast frame construction by continuations
193   frame(intptr_t* sp, intptr_t* unextended_sp, intptr_t* fp, address pc, CodeBlob* cb, const ImmutableOopMap* oop_map, bool on_heap);
194 
195   frame(intptr_t* ptr_sp, intptr_t* ptr_fp);
196 
197   void init(intptr_t* ptr_sp, intptr_t* ptr_fp, address pc);
198   void setup(address pc);
199 
200   // accessors for the instance variables
201   // Note: not necessarily the real 'frame pointer' (see real_fp)
202 
203   intptr_t* fp() const          { assert_absolute(); return _fp; }
204   void set_fp(intptr_t* newfp)  { _fp = newfp; }

165     intptr_t*  _fp; // frame pointer
166     int _offset_fp; // relative frame pointer for use in stack-chunk frames
167   };
168   // The interpreter and adapters will extend the frame of the caller.
169   // Since oopMaps are based on the sp of the caller before extension
170   // we need to know that value. However in order to compute the address
171   // of the return address we need the real "raw" sp. Since sparc already
172   // uses sp() to mean "raw" sp and unextended_sp() to mean the caller's
173   // original sp we use that convention.
174 
175   union {
176     intptr_t* _unextended_sp;
177     int _offset_unextended_sp; // for use in stack-chunk frames
178   };
179 
180   intptr_t* ptr_at_addr(int offset) const {
181     return (intptr_t*) addr_at(offset);
182   }
183 
184  public:
185   // Support for scalarized inline type calling convention
186   static intptr_t* repair_sender_sp(nmethod* nm, intptr_t* sp, intptr_t** saved_fp_addr);
187   bool was_augmented_on_entry(int& real_size) const;
188 
189   // Constructors
190 
191   frame(intptr_t* ptr_sp, intptr_t* ptr_fp, address pc);
192 
193   frame(intptr_t* ptr_sp, intptr_t* unextended_sp, intptr_t* ptr_fp, address pc);
194 
195   frame(intptr_t* sp, intptr_t* unextended_sp, intptr_t* fp, address pc, CodeBlob* cb);
196   // used for fast frame construction by continuations
197   frame(intptr_t* sp, intptr_t* unextended_sp, intptr_t* fp, address pc, CodeBlob* cb, const ImmutableOopMap* oop_map, bool on_heap);
198 
199   frame(intptr_t* ptr_sp, intptr_t* ptr_fp);
200 
201   void init(intptr_t* ptr_sp, intptr_t* ptr_fp, address pc);
202   void setup(address pc);
203 
204   // accessors for the instance variables
205   // Note: not necessarily the real 'frame pointer' (see real_fp)
206 
207   intptr_t* fp() const          { assert_absolute(); return _fp; }
208   void set_fp(intptr_t* newfp)  { _fp = newfp; }
< prev index next >