< prev index next >

src/hotspot/share/code/relocInfo.hpp

Print this page
*** 449,10 ***
--- 449,12 ---
      // of any relocation record.
      // Extended format is length prefix, data words, and tag/offset suffix.
      length_limit       = 1 + 1 + (3*BytesPerWord/BytesPerShort) + 1,
      have_format        = format_width > 0
    };
+ 
+   static const char* type_name(relocInfo::relocType t);
  };
  
  #define FORWARD_DECLARE_EACH_CLASS(name)              \
  class name##_Relocation;
  APPLY_TO_RELOCATIONS(FORWARD_DECLARE_EACH_CLASS)

*** 636,15 ***
    int          datalen()      const { return _datalen; }
    bool     has_current()      const { return _datalen >= 0; }
    bool   addr_in_const()      const;
  
    address section_start(int n) const {
!     assert(_section_start[n], "must be initialized");
      return _section_start[n];
    }
    address section_end(int n) const {
!     assert(_section_end[n], "must be initialized");
      return _section_end[n];
    }
  
    // The address points to the affected displacement part of the instruction.
    // For RISC, this is just the whole instruction.
--- 638,15 ---
    int          datalen()      const { return _datalen; }
    bool     has_current()      const { return _datalen >= 0; }
    bool   addr_in_const()      const;
  
    address section_start(int n) const {
!     assert(_section_start[n], "section %d must be initialized", n);
      return _section_start[n];
    }
    address section_end(int n) const {
!     assert(_section_end[n], "section %d must be initialized", n);
      return _section_end[n];
    }
  
    // The address points to the affected displacement part of the instruction.
    // For RISC, this is just the whole instruction.

*** 656,24 ***
    APPLY_TO_RELOCATIONS(EACH_TYPE)
    #undef EACH_TYPE
    // generic relocation accessor; switches on type to call the above
    Relocation* reloc();
  
- #ifndef PRODUCT
   public:
!   void print();
!   void print_current();
- #endif
  };
  
  
  // A Relocation is a flyweight object allocated within a RelocationHolder.
  // It represents the relocation data of relocation record.
  // So, the RelocIterator unpacks relocInfos into Relocations.
  
  class Relocation {
    friend class RelocIterator;
  
   private:
    // When a relocation has been created by a RelocIterator,
    // this field is non-null.  It allows the relocation to know
    // its context, such as the address to which it applies.
--- 658,23 ---
    APPLY_TO_RELOCATIONS(EACH_TYPE)
    #undef EACH_TYPE
    // generic relocation accessor; switches on type to call the above
    Relocation* reloc();
  
   public:
!   void print_on(outputStream* st);
!   void print_current_on(outputStream* st);
  };
  
  
  // A Relocation is a flyweight object allocated within a RelocationHolder.
  // It represents the relocation data of relocation record.
  // So, the RelocIterator unpacks relocInfos into Relocations.
  
  class Relocation {
    friend class RelocIterator;
+   friend class SCCReader;
  
   private:
    // When a relocation has been created by a RelocIterator,
    // this field is non-null.  It allows the relocation to know
    // its context, such as the address to which it applies.

*** 1285,10 ***
--- 1286,29 ---
    // Return the address of the NativeCall that owns the trampoline.
    address owner() { return _owner; }
  
    void pack_data_to(CodeSection * dest) override;
    void unpack_data() override;
+ #if defined(AARCH64)
+   address    pd_destination     ();
+   void       pd_set_destination (address x);
+ #endif
+   address  destination() {
+ #if defined(AARCH64)
+     return pd_destination();
+ #else
+     fatal("trampoline_stub_Relocation::destination() unimplemented");
+     return (address)-1;
+ #endif
+   }
+   void     set_destination(address x) {
+ #if defined(AARCH64)
+     pd_set_destination(x);
+ #else
+     fatal("trampoline_stub_Relocation::set_destination() unimplemented");
+ #endif
+   }
  
    // Find the trampoline stub for a call.
    static address get_trampoline_for(address call, nmethod* code);
  };
  
< prev index next >