src/cpu/x86/vm/assembler_x86.cpp

changeset 1280
df6caf649ff7
parent 1210
93c14e5562c4
child 1333
60fea60a6db5
     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);

mercurial