< prev index next >

src/hotspot/cpu/aarch64/frame_aarch64.hpp

Print this page

116   intptr_t*   _fp; // frame pointer
117   // The interpreter and adapters will extend the frame of the caller.
118   // Since oopMaps are based on the sp of the caller before extension
119   // we need to know that value. However in order to compute the address
120   // of the return address we need the real "raw" sp. Since sparc already
121   // uses sp() to mean "raw" sp and unextended_sp() to mean the caller's
122   // original sp we use that convention.
123 
124   intptr_t*     _unextended_sp;
125   void adjust_unextended_sp();
126 
127   intptr_t* ptr_at_addr(int offset) const {
128     return (intptr_t*) addr_at(offset);
129   }
130 
131 #ifdef ASSERT
132   // Used in frame::sender_for_{interpreter,compiled}_frame
133   static void verify_deopt_original_pc(   CompiledMethod* nm, intptr_t* unextended_sp);
134 #endif
135 


136  public:
137   // Constructors
138 
139   frame(intptr_t* sp, intptr_t* fp, address pc);
140 
141   frame(intptr_t* sp, intptr_t* unextended_sp, intptr_t* fp, address pc);
142 






143   frame(intptr_t* sp, intptr_t* fp);
144 
145   void init(intptr_t* sp, intptr_t* fp, address pc);

146 
147   // accessors for the instance variables
148   // Note: not necessarily the real 'frame pointer' (see real_fp)
149   intptr_t*   fp() const { return _fp; }



150 
151   inline address* sender_pc_addr() const;
152   inline address  sender_pc_maybe_signed() const;
153 
154   // expression stack tos if we are nested in a java call

155   intptr_t* interpreter_frame_last_sp() const;
156 
157   // helper to update a map with callee-saved RBP
158   static void update_map_with_saved_link(RegisterMap* map, intptr_t** link_addr);



159 
160   // deoptimization support
161   void interpreter_frame_set_last_sp(intptr_t* sp);
162 
163   static jint interpreter_frame_expression_stack_direction() { return -1; }
164 
165   // returns the sending frame, without applying any barriers
166   frame sender_raw(RegisterMap* map) const;
167 
168 #endif // CPU_AARCH64_FRAME_AARCH64_HPP

116   intptr_t*   _fp; // frame pointer
117   // The interpreter and adapters will extend the frame of the caller.
118   // Since oopMaps are based on the sp of the caller before extension
119   // we need to know that value. However in order to compute the address
120   // of the return address we need the real "raw" sp. Since sparc already
121   // uses sp() to mean "raw" sp and unextended_sp() to mean the caller's
122   // original sp we use that convention.
123 
124   intptr_t*     _unextended_sp;
125   void adjust_unextended_sp();
126 
127   intptr_t* ptr_at_addr(int offset) const {
128     return (intptr_t*) addr_at(offset);
129   }
130 
131 #ifdef ASSERT
132   // Used in frame::sender_for_{interpreter,compiled}_frame
133   static void verify_deopt_original_pc(   CompiledMethod* nm, intptr_t* unextended_sp);
134 #endif
135 
136   const ImmutableOopMap* get_oop_map() const;
137 
138  public:
139   // Constructors
140 
141   frame(intptr_t* sp, intptr_t* fp, address pc);
142 
143   frame(intptr_t* sp, intptr_t* unextended_sp, intptr_t* fp, address pc);
144 
145   frame(intptr_t* sp, intptr_t* unextended_sp, intptr_t* fp, address pc, CodeBlob* cb);
146 
147   frame(intptr_t* sp, intptr_t* unextended_sp, intptr_t* fp, address pc, CodeBlob* cb, const ImmutableOopMap* oop_map);
148 
149   frame(intptr_t* sp, intptr_t* unextended_sp, intptr_t* fp, address pc, CodeBlob* cb, const ImmutableOopMap* oop_map, bool dummy); // used for fast frame construction by continuations
150 
151   frame(intptr_t* sp, intptr_t* fp);
152 
153   void init(intptr_t* sp, intptr_t* fp, address pc);
154   void setup(address pc);
155 
156   // accessors for the instance variables
157   // Note: not necessarily the real 'frame pointer' (see real_fp)
158   intptr_t*   fp() const { return _fp; }
159   void set_fp(intptr_t* newfp) { _fp = newfp; }
160   int offset_fp() const { return (int)(intptr_t)_fp; }
161   void set_offset_fp(int value) { _fp = (intptr_t*)(intptr_t)value; }
162 
163   inline address* sender_pc_addr() const;
164   inline address  sender_pc_maybe_signed() const;
165 
166   // expression stack tos if we are nested in a java call
167   template <bool relative = false>
168   intptr_t* interpreter_frame_last_sp() const;
169 
170   // helper to update a map with callee-saved RBP
171   template <typename RegisterMapT>
172   static void update_map_with_saved_link(RegisterMapT* map, intptr_t** link_addr);
173   template <typename RegisterMapT>
174   static intptr_t** saved_link_address(const RegisterMapT* map);
175 
176   // deoptimization support
177   void interpreter_frame_set_last_sp(intptr_t* sp);
178 
179   static jint interpreter_frame_expression_stack_direction() { return -1; }
180 
181   // returns the sending frame, without applying any barriers
182   inline frame sender_raw(RegisterMap* map) const;
183 
184 #endif // CPU_AARCH64_FRAME_AARCH64_HPP
< prev index next >