src/cpu/x86/vm/c1_LIRAssembler_x86.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File
*** old/src/cpu/x86/vm/c1_LIRAssembler_x86.cpp	Tue Dec  7 17:33:22 2010
--- new/src/cpu/x86/vm/c1_LIRAssembler_x86.cpp	Tue Dec  7 17:33:21 2010

*** 1991,2009 **** --- 1991,2008 ---- assert(newval != addr, "new value and addr must be in different registers"); if ( op->code() == lir_cas_obj) { #ifdef _LP64 if (UseCompressedOops) { __ mov(rscratch1, cmpval); __ encode_heap_oop(cmpval); ! __ mov(rscratch2, newval); ! __ encode_heap_oop(rscratch2); ! __ mov(rscratch1, newval); ! __ encode_heap_oop(rscratch1); if (os::is_MP()) { __ lock(); } __ cmpxchgl(rscratch2, Address(addr, 0)); ! __ mov(cmpval, rscratch1); + // cmpval (rax) is implicitly used by this instruction ! __ cmpxchgl(rscratch1, Address(addr, 0)); } else #endif { if (os::is_MP()) { __ lock();

src/cpu/x86/vm/c1_LIRAssembler_x86.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File