2885 bind(ret_addr); |
2885 bind(ret_addr); |
2886 } |
2886 } |
2887 return offset(); |
2887 return offset(); |
2888 } |
2888 } |
2889 |
2889 |
|
2890 // ((OopHandle)result).resolve(); |
|
2891 void MacroAssembler::resolve_oop_handle(Register result) { |
|
2892 // OopHandle::resolve is an indirection. |
|
2893 ldr(result, Address(result, 0)); |
|
2894 } |
2890 |
2895 |
2891 void MacroAssembler::load_mirror(Register mirror, Register method, Register tmp) { |
2896 void MacroAssembler::load_mirror(Register mirror, Register method, Register tmp) { |
2892 const int mirror_offset = in_bytes(Klass::java_mirror_offset()); |
2897 const int mirror_offset = in_bytes(Klass::java_mirror_offset()); |
2893 ldr(tmp, Address(method, Method::const_offset())); |
2898 ldr(tmp, Address(method, Method::const_offset())); |
2894 ldr(tmp, Address(tmp, ConstMethod::constants_offset())); |
2899 ldr(tmp, Address(tmp, ConstMethod::constants_offset())); |
2895 ldr(tmp, Address(tmp, ConstantPool::pool_holder_offset_in_bytes())); |
2900 ldr(tmp, Address(tmp, ConstantPool::pool_holder_offset_in_bytes())); |
2896 ldr(mirror, Address(tmp, mirror_offset)); |
2901 ldr(mirror, Address(tmp, mirror_offset)); |
2897 } |
2902 } |
|
2903 |
2898 |
2904 |
2899 /////////////////////////////////////////////////////////////////////////////// |
2905 /////////////////////////////////////////////////////////////////////////////// |
2900 |
2906 |
2901 // Compressed pointers |
2907 // Compressed pointers |
2902 |
2908 |