88 // Offset of given address to the global TOC.
89 inline static int offset_to_global_toc(const address addr);
90
91 // Address of TOC of the current method.
92 inline address method_toc();
93 // Offset of given address to TOC of the current method.
94 inline int offset_to_method_toc(const address addr);
95
96 // Global TOC.
97 void calculate_address_from_global_toc(Register dst, address addr,
98 bool hi16 = true, bool lo16 = true,
99 bool add_relocation = true, bool emit_dummy_addr = false);
100 inline void calculate_address_from_global_toc_hi16only(Register dst, address addr) {
101 calculate_address_from_global_toc(dst, addr, true, false);
102 };
103 inline void calculate_address_from_global_toc_lo16only(Register dst, address addr) {
104 calculate_address_from_global_toc(dst, addr, false, true);
105 };
106
107 inline static bool is_calculate_address_from_global_toc_at(address a, address bound);
108 static int patch_calculate_address_from_global_toc_at(address a, address addr, address bound);
109 static address get_address_of_calculate_address_from_global_toc_at(address a, address addr);
110
111 #ifdef _LP64
112 // Patch narrow oop constant.
113 inline static bool is_set_narrow_oop(address a, address bound);
114 static int patch_set_narrow_oop(address a, address bound, narrowOop data);
115 static narrowOop get_narrow_oop(address a, address bound);
116 #endif
117
118 inline static bool is_load_const_at(address a);
119
120 // Emits an oop const to the constant pool, loads the constant, and
121 // sets a relocation info with address current_pc.
122 // Returns true if successful.
123 bool load_const_from_method_toc(Register dst, AddressLiteral& a, Register toc, bool fixed_size = false);
124
125 static bool is_load_const_from_method_toc_at(address a);
126 static int get_offset_of_load_const_from_method_toc_at(address a);
127
128 // Get the 64 bit constant from a `load_const' sequence.
|
88 // Offset of given address to the global TOC.
89 inline static int offset_to_global_toc(const address addr);
90
91 // Address of TOC of the current method.
92 inline address method_toc();
93 // Offset of given address to TOC of the current method.
94 inline int offset_to_method_toc(const address addr);
95
96 // Global TOC.
97 void calculate_address_from_global_toc(Register dst, address addr,
98 bool hi16 = true, bool lo16 = true,
99 bool add_relocation = true, bool emit_dummy_addr = false);
100 inline void calculate_address_from_global_toc_hi16only(Register dst, address addr) {
101 calculate_address_from_global_toc(dst, addr, true, false);
102 };
103 inline void calculate_address_from_global_toc_lo16only(Register dst, address addr) {
104 calculate_address_from_global_toc(dst, addr, false, true);
105 };
106
107 inline static bool is_calculate_address_from_global_toc_at(address a, address bound);
108 static int patch_calculate_address_from_global_toc_at(address a, address bound, address addr);
109 static address get_address_of_calculate_address_from_global_toc_at(address a, address addr);
110
111 #ifdef _LP64
112 // Patch narrow oop constant.
113 inline static bool is_set_narrow_oop(address a, address bound);
114 static int patch_set_narrow_oop(address a, address bound, narrowOop data);
115 static narrowOop get_narrow_oop(address a, address bound);
116 #endif
117
118 inline static bool is_load_const_at(address a);
119
120 // Emits an oop const to the constant pool, loads the constant, and
121 // sets a relocation info with address current_pc.
122 // Returns true if successful.
123 bool load_const_from_method_toc(Register dst, AddressLiteral& a, Register toc, bool fixed_size = false);
124
125 static bool is_load_const_from_method_toc_at(address a);
126 static int get_offset_of_load_const_from_method_toc_at(address a);
127
128 // Get the 64 bit constant from a `load_const' sequence.
|