< prev index next >

src/hotspot/cpu/x86/frame_x86.hpp

Print this page

127     int _offset_fp; // relative frame pointer for use in stack-chunk frames
128   };
129   // The interpreter and adapters will extend the frame of the caller.
130   // Since oopMaps are based on the sp of the caller before extension
131   // we need to know that value. However in order to compute the address
132   // of the return address we need the real "raw" sp. By convention we
133   // use sp() to mean "raw" sp and unextended_sp() to mean the caller's
134   // original sp.
135 
136   union {
137     intptr_t* _unextended_sp;
138     int _offset_unextended_sp; // for use in stack-chunk frames
139   };
140 
141   void adjust_unextended_sp() NOT_DEBUG_RETURN;
142 
143   intptr_t* ptr_at_addr(int offset) const {
144     return (intptr_t*) addr_at(offset);
145   }
146 







147 #ifdef ASSERT
148   // Used in frame::sender_for_{interpreter,compiled}_frame
149   static void verify_deopt_original_pc(nmethod* nm, intptr_t* unextended_sp);
150 #endif
151 
152  public:
153   // Constructors
154 
155   frame(intptr_t* sp, intptr_t* fp, address pc);
156 
157   frame(intptr_t* sp, intptr_t* unextended_sp, intptr_t* fp, address pc);
158 
159   frame(intptr_t* sp, intptr_t* unextended_sp, intptr_t* fp, address pc, CodeBlob* cb);
160   // used for heap frame construction by continuations
161   frame(intptr_t* sp, intptr_t* unextended_sp, intptr_t* fp, address pc, CodeBlob* cb, const ImmutableOopMap* oop_map, bool relative);
162 
163   frame(intptr_t* sp, intptr_t* fp);
164 
165   void init(intptr_t* sp, intptr_t* fp, address pc);
166   void setup(address pc);

127     int _offset_fp; // relative frame pointer for use in stack-chunk frames
128   };
129   // The interpreter and adapters will extend the frame of the caller.
130   // Since oopMaps are based on the sp of the caller before extension
131   // we need to know that value. However in order to compute the address
132   // of the return address we need the real "raw" sp. By convention we
133   // use sp() to mean "raw" sp and unextended_sp() to mean the caller's
134   // original sp.
135 
136   union {
137     intptr_t* _unextended_sp;
138     int _offset_unextended_sp; // for use in stack-chunk frames
139   };
140 
141   void adjust_unextended_sp() NOT_DEBUG_RETURN;
142 
143   intptr_t* ptr_at_addr(int offset) const {
144     return (intptr_t*) addr_at(offset);
145   }
146 
147  public:
148   // Support for scalarized inline type calling convention
149   intptr_t* repair_sender_sp(intptr_t* sender_sp, intptr_t** saved_fp_addr) const;
150   static intptr_t* repair_sender_sp(nmethod* nm, intptr_t* sp, intptr_t** saved_fp_addr);
151   bool was_augmented_on_entry(int& real_size) const;
152 
153  private:
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);
167   // used for heap 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 relative);
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);
< prev index next >