1.1 --- a/src/cpu/x86/vm/assembler_x86.cpp Fri Jul 10 16:01:20 2009 -0700 1.2 +++ b/src/cpu/x86/vm/assembler_x86.cpp Tue Jul 14 15:40:39 2009 -0700 1.3 @@ -6805,14 +6805,18 @@ 1.4 jcc(Assembler::equal, done); 1.5 1.6 // if (x.f == NULL) goto done; 1.7 - cmpptr(Address(obj, 0), NULL_WORD); 1.8 +#ifdef _LP64 1.9 + load_heap_oop(tmp2, Address(obj, 0)); 1.10 +#else 1.11 + movptr(tmp2, Address(obj, 0)); 1.12 +#endif 1.13 + cmpptr(tmp2, (int32_t) NULL_WORD); 1.14 jcc(Assembler::equal, done); 1.15 1.16 // Can we store original value in the thread's buffer? 1.17 1.18 - LP64_ONLY(movslq(tmp, index);) 1.19 - movptr(tmp2, Address(obj, 0)); 1.20 #ifdef _LP64 1.21 + movslq(tmp, index); 1.22 cmpq(tmp, 0); 1.23 #else 1.24 cmpl(index, 0); 1.25 @@ -6834,8 +6838,7 @@ 1.26 if(tosca_live) push(rax); 1.27 push(obj); 1.28 #ifdef _LP64 1.29 - movq(c_rarg0, Address(obj, 0)); 1.30 - call_VM_leaf(CAST_FROM_FN_PTR(address, SharedRuntime::g1_wb_pre), c_rarg0, r15_thread); 1.31 + call_VM_leaf(CAST_FROM_FN_PTR(address, SharedRuntime::g1_wb_pre), tmp2, r15_thread); 1.32 #else 1.33 push(thread); 1.34 call_VM_leaf(CAST_FROM_FN_PTR(address, SharedRuntime::g1_wb_pre), tmp2, thread);