--- a/hotspot/src/cpu/x86/vm/c1_CodeStubs_x86.cpp Fri Mar 18 15:52:42 2011 -0700
+++ b/hotspot/src/cpu/x86/vm/c1_CodeStubs_x86.cpp Fri Mar 18 16:00:34 2011 -0700
@@ -313,10 +313,13 @@
}
assert(_obj != noreg, "must be a valid register");
Register tmp = rax;
- if (_obj == tmp) tmp = rbx;
+ Register tmp2 = rbx;
__ push(tmp);
+ __ push(tmp2);
+ __ movptr(tmp2, Address(_obj, java_lang_Class::klass_offset_in_bytes()));
__ get_thread(tmp);
- __ cmpptr(tmp, Address(_obj, instanceKlass::init_thread_offset_in_bytes() + sizeof(klassOopDesc)));
+ __ cmpptr(tmp, Address(tmp2, instanceKlass::init_thread_offset_in_bytes() + sizeof(klassOopDesc)));
+ __ pop(tmp2);
__ pop(tmp);
__ jcc(Assembler::notEqual, call_patch);