< prev index next >

src/hotspot/cpu/aarch64/frame_aarch64.hpp

Print this page
*** 131,38 ***
  #ifdef ASSERT
    // Used in frame::sender_for_{interpreter,compiled}_frame
    static void verify_deopt_original_pc(   CompiledMethod* nm, intptr_t* unextended_sp);
  #endif
  
   public:
    // Constructors
  
    frame(intptr_t* sp, intptr_t* fp, address pc);
  
    frame(intptr_t* sp, intptr_t* unextended_sp, intptr_t* fp, address pc);
  
    frame(intptr_t* sp, intptr_t* fp);
  
    void init(intptr_t* sp, intptr_t* fp, address pc);
  
    // accessors for the instance variables
    // Note: not necessarily the real 'frame pointer' (see real_fp)
    intptr_t*   fp() const { return _fp; }
  
    inline address* sender_pc_addr() const;
    inline address  sender_pc_maybe_signed() const;
  
    // expression stack tos if we are nested in a java call
    intptr_t* interpreter_frame_last_sp() const;
  
    // helper to update a map with callee-saved RBP
!   static void update_map_with_saved_link(RegisterMap* map, intptr_t** link_addr);
  
    // deoptimization support
    void interpreter_frame_set_last_sp(intptr_t* sp);
  
    static jint interpreter_frame_expression_stack_direction() { return -1; }
  
    // returns the sending frame, without applying any barriers
!   frame sender_raw(RegisterMap* map) const;
  
  #endif // CPU_AARCH64_FRAME_AARCH64_HPP
--- 131,54 ---
  #ifdef ASSERT
    // Used in frame::sender_for_{interpreter,compiled}_frame
    static void verify_deopt_original_pc(   CompiledMethod* nm, intptr_t* unextended_sp);
  #endif
  
+   const ImmutableOopMap* get_oop_map() const;
+ 
   public:
    // Constructors
  
    frame(intptr_t* sp, intptr_t* fp, address pc);
  
    frame(intptr_t* sp, intptr_t* unextended_sp, intptr_t* fp, address pc);
  
+   frame(intptr_t* sp, intptr_t* unextended_sp, intptr_t* fp, address pc, CodeBlob* cb);
+ 
+   frame(intptr_t* sp, intptr_t* unextended_sp, intptr_t* fp, address pc, CodeBlob* cb, const ImmutableOopMap* oop_map);
+ 
+   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
+ 
    frame(intptr_t* sp, intptr_t* fp);
  
    void init(intptr_t* sp, intptr_t* fp, address pc);
+   void setup(address pc);
  
    // accessors for the instance variables
    // Note: not necessarily the real 'frame pointer' (see real_fp)
    intptr_t*   fp() const { return _fp; }
+   void set_fp(intptr_t* newfp) { _fp = newfp; }
+   int offset_fp() const { return (int)(intptr_t)_fp; }
+   void set_offset_fp(int value) { _fp = (intptr_t*)(intptr_t)value; }
  
    inline address* sender_pc_addr() const;
    inline address  sender_pc_maybe_signed() const;
  
    // expression stack tos if we are nested in a java call
+   template <bool relative = false>
    intptr_t* interpreter_frame_last_sp() const;
  
    // helper to update a map with callee-saved RBP
!   template <typename RegisterMapT>
+   static void update_map_with_saved_link(RegisterMapT* map, intptr_t** link_addr);
+   template <typename RegisterMapT>
+   static intptr_t** saved_link_address(const RegisterMapT* map);
  
    // deoptimization support
    void interpreter_frame_set_last_sp(intptr_t* sp);
  
    static jint interpreter_frame_expression_stack_direction() { return -1; }
  
    // returns the sending frame, without applying any barriers
!   inline frame sender_raw(RegisterMap* map) const;
  
  #endif // CPU_AARCH64_FRAME_AARCH64_HPP
< prev index next >