--- a/src/hotspot/cpu/x86/interp_masm_x86.cpp Wed Apr 18 15:57:19 2018 +0200
+++ b/src/hotspot/cpu/x86/interp_masm_x86.cpp Wed Apr 18 10:39:40 2018 -0400
@@ -502,20 +502,19 @@
// Load object from cpool->resolved_references(index)
void InterpreterMacroAssembler::load_resolved_reference_at_index(
- Register result, Register index) {
+ Register result, Register index, Register tmp) {
assert_different_registers(result, index);
// convert from field index to resolved_references() index and from
// word index to byte offset. Since this is a java object, it can be compressed
- Register tmp = index; // reuse
- shll(tmp, LogBytesPerHeapOop);
+ shll(index, LogBytesPerHeapOop);
get_constant_pool(result);
// load pointer for resolved_references[] objArray
movptr(result, Address(result, ConstantPool::cache_offset_in_bytes()));
movptr(result, Address(result, ConstantPoolCache::resolved_references_offset_in_bytes()));
- resolve_oop_handle(result);
+ resolve_oop_handle(result, tmp);
// Add in the index
- addptr(result, tmp);
+ addptr(result, index);
load_heap_oop(result, Address(result, arrayOopDesc::base_offset_in_bytes(T_OBJECT)), tmp);
}