< prev index next >

src/hotspot/cpu/arm/frame_arm.hpp

Print this page

 73   // we need to know that value. However in order to compute the address
 74   // of the return address we need the real "raw" sp. By convention we
 75   // use sp() to mean "raw" sp and unextended_sp() to mean the caller's
 76   // original sp.
 77 
 78   intptr_t* _unextended_sp;
 79   void adjust_unextended_sp();
 80 
 81   intptr_t* ptr_at_addr(int offset) const {
 82     return (intptr_t*) addr_at(offset);
 83   }
 84 
 85 #ifdef ASSERT
 86   // Used in frame::sender_for_{interpreter,compiled}_frame
 87   static void verify_deopt_original_pc(   CompiledMethod* nm, intptr_t* unextended_sp, bool is_method_handle_return = false);
 88   static void verify_deopt_mh_original_pc(CompiledMethod* nm, intptr_t* unextended_sp) {
 89     verify_deopt_original_pc(nm, unextended_sp, true);
 90   }
 91 #endif
 92 


 93  public:
 94   // Constructors
 95 
 96   frame(intptr_t* sp, intptr_t* fp, address pc);
 97 
 98   frame(intptr_t* sp, intptr_t* unextended_sp, intptr_t* fp, address pc);
 99 
100   frame(intptr_t* sp, intptr_t* fp);
101 
102   void init(intptr_t* sp, intptr_t* fp, address pc);
103 
104   // accessors for the instance variables
105   // Note: not necessarily the real 'frame pointer' (see real_fp)
106   intptr_t* fp() const { return _fp; }
107 
108   inline address* sender_pc_addr() const;
109 
110   // expression stack tos if we are nested in a java call
111   intptr_t* interpreter_frame_last_sp() const;
112 



113   // deoptimization support
114   void interpreter_frame_set_last_sp(intptr_t* sp);
115 
116   // helper to update a map with callee-saved FP
117   static void update_map_with_saved_link(RegisterMap* map, intptr_t** link_addr);
118 
119   static jint interpreter_frame_expression_stack_direction() { return -1; }
120 



121 #endif // CPU_ARM_FRAME_ARM_HPP

 73   // we need to know that value. However in order to compute the address
 74   // of the return address we need the real "raw" sp. By convention we
 75   // use sp() to mean "raw" sp and unextended_sp() to mean the caller's
 76   // original sp.
 77 
 78   intptr_t* _unextended_sp;
 79   void adjust_unextended_sp();
 80 
 81   intptr_t* ptr_at_addr(int offset) const {
 82     return (intptr_t*) addr_at(offset);
 83   }
 84 
 85 #ifdef ASSERT
 86   // Used in frame::sender_for_{interpreter,compiled}_frame
 87   static void verify_deopt_original_pc(   CompiledMethod* nm, intptr_t* unextended_sp, bool is_method_handle_return = false);
 88   static void verify_deopt_mh_original_pc(CompiledMethod* nm, intptr_t* unextended_sp) {
 89     verify_deopt_original_pc(nm, unextended_sp, true);
 90   }
 91 #endif
 92 
 93   const ImmutableOopMap* get_oop_map() const;
 94 
 95  public:
 96   // Constructors
 97 
 98   frame(intptr_t* sp, intptr_t* fp, address pc);
 99 
100   frame(intptr_t* sp, intptr_t* unextended_sp, intptr_t* fp, address pc);
101 
102   frame(intptr_t* sp, intptr_t* fp);
103 
104   void init(intptr_t* sp, intptr_t* fp, address pc);
105 
106   // accessors for the instance variables
107   // Note: not necessarily the real 'frame pointer' (see real_fp)
108   intptr_t* fp() const { return _fp; }
109 
110   inline address* sender_pc_addr() const;
111 
112   // expression stack tos if we are nested in a java call
113   intptr_t* interpreter_frame_last_sp() const;
114 
115   template <typename RegisterMapT>
116   static void update_map_with_saved_link(RegisterMapT* map, intptr_t** link_addr);
117 
118   // deoptimization support
119   void interpreter_frame_set_last_sp(intptr_t* sp);
120 
121   // helper to update a map with callee-saved FP
122   static void update_map_with_saved_link(RegisterMap* map, intptr_t** link_addr);
123 
124   static jint interpreter_frame_expression_stack_direction() { return -1; }
125 
126   template <bool relative = false>
127   inline intptr_t* interpreter_frame_last_sp() const;
128 
129 #endif // CPU_ARM_FRAME_ARM_HPP
< prev index next >