124 // Helpers for runtime call arguments/results 125 void get_const(Register reg) { ldr(reg, Address(Rmethod, Method::const_offset())); } 126 void get_constant_pool(Register reg) { get_const(reg); ldr(reg, Address(reg, ConstMethod::constants_offset())); } 127 void get_constant_pool_cache(Register reg) { get_constant_pool(reg); ldr(reg, Address(reg, ConstantPool::cache_offset_in_bytes())); } 128 void get_cpool_and_tags(Register cpool, Register tags) { get_constant_pool(cpool); ldr(tags, Address(cpool, ConstantPool::tags_offset_in_bytes())); } 129 130 // Sets reg. Blows Rtemp. 131 void get_unsigned_2_byte_index_at_bcp(Register reg, int bcp_offset); 132 133 // Sets index. Blows reg_tmp. 134 void get_index_at_bcp(Register index, int bcp_offset, Register reg_tmp, size_t index_size = sizeof(u2)); 135 // Sets cache, index. 136 void get_cache_and_index_at_bcp(Register cache, Register index, int bcp_offset, size_t index_size = sizeof(u2)); 137 void get_cache_and_index_and_bytecode_at_bcp(Register cache, Register index, Register bytecode, int byte_no, int bcp_offset, size_t index_size = sizeof(u2)); 138 // Sets cache. Blows reg_tmp. 139 void get_cache_entry_pointer_at_bcp(Register cache, Register reg_tmp, int bcp_offset, size_t index_size = sizeof(u2)); 140 141 // Load object from cpool->resolved_references(*bcp+1) 142 void load_resolved_reference_at_index(Register result, Register tmp); 143 144 void store_check_part1(Register card_table_base); // Sets card_table_base register. 145 void store_check_part2(Register obj, Register card_table_base, Register tmp); 146 147 void set_card(Register card_table_base, Address card_table_addr, Register tmp); 148 149 void pop_ptr(Register r); 150 void pop_i(Register r = R0_tos); 151 #ifdef AARCH64 152 void pop_l(Register r = R0_tos); 153 #else 154 void pop_l(Register lo = R0_tos_lo, Register hi = R1_tos_hi); 155 #endif 156 void pop_f(FloatRegister fd); 157 void pop_d(FloatRegister fd); 158 159 void push_ptr(Register r); 160 void push_i(Register r = R0_tos); 161 #ifdef AARCH64 162 void push_l(Register r = R0_tos); 163 #else | 124 // Helpers for runtime call arguments/results 125 void get_const(Register reg) { ldr(reg, Address(Rmethod, Method::const_offset())); } 126 void get_constant_pool(Register reg) { get_const(reg); ldr(reg, Address(reg, ConstMethod::constants_offset())); } 127 void get_constant_pool_cache(Register reg) { get_constant_pool(reg); ldr(reg, Address(reg, ConstantPool::cache_offset_in_bytes())); } 128 void get_cpool_and_tags(Register cpool, Register tags) { get_constant_pool(cpool); ldr(tags, Address(cpool, ConstantPool::tags_offset_in_bytes())); } 129 130 // Sets reg. Blows Rtemp. 131 void get_unsigned_2_byte_index_at_bcp(Register reg, int bcp_offset); 132 133 // Sets index. Blows reg_tmp. 134 void get_index_at_bcp(Register index, int bcp_offset, Register reg_tmp, size_t index_size = sizeof(u2)); 135 // Sets cache, index. 136 void get_cache_and_index_at_bcp(Register cache, Register index, int bcp_offset, size_t index_size = sizeof(u2)); 137 void get_cache_and_index_and_bytecode_at_bcp(Register cache, Register index, Register bytecode, int byte_no, int bcp_offset, size_t index_size = sizeof(u2)); 138 // Sets cache. Blows reg_tmp. 139 void get_cache_entry_pointer_at_bcp(Register cache, Register reg_tmp, int bcp_offset, size_t index_size = sizeof(u2)); 140 141 // Load object from cpool->resolved_references(*bcp+1) 142 void load_resolved_reference_at_index(Register result, Register tmp); 143 144 // load cpool->resolved_klass_at(index); Rtemp is corrupted upon return 145 void load_resolved_klass_at_offset(Register Rcpool, Register Rindex, Register Rklass); 146 147 void store_check_part1(Register card_table_base); // Sets card_table_base register. 148 void store_check_part2(Register obj, Register card_table_base, Register tmp); 149 150 void set_card(Register card_table_base, Address card_table_addr, Register tmp); 151 152 void pop_ptr(Register r); 153 void pop_i(Register r = R0_tos); 154 #ifdef AARCH64 155 void pop_l(Register r = R0_tos); 156 #else 157 void pop_l(Register lo = R0_tos_lo, Register hi = R1_tos_hi); 158 #endif 159 void pop_f(FloatRegister fd); 160 void pop_d(FloatRegister fd); 161 162 void push_ptr(Register r); 163 void push_i(Register r = R0_tos); 164 #ifdef AARCH64 165 void push_l(Register r = R0_tos); 166 #else |