src/hotspot/cpu/x86/interp_masm_x86.cpp
changeset 49816 a3e79f97e86b
parent 49748 6a880e576856
child 50106 24151f48582b
--- 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);
 }