src/cpu/x86/vm/stubGenerator_x86_32.cpp

changeset 454
a73cc31728fe
parent 451
f8236e79048a
child 684
910a4cb98e9e
child 777
37f87013dfd8
     1.1 --- a/src/cpu/x86/vm/stubGenerator_x86_32.cpp	Wed Dec 05 09:02:00 2007 -0800
     1.2 +++ b/src/cpu/x86/vm/stubGenerator_x86_32.cpp	Wed Dec 05 09:03:00 2007 -0800
     1.3 @@ -1416,8 +1416,8 @@
     1.4      // ======== end loop ========
     1.5  
     1.6      // It was a real error; we must depend on the caller to finish the job.
     1.7 -    // Register rdx = -1 * number of *remaining* oops, r14 = *total* oops.
     1.8 -    // Emit GC store barriers for the oops we have copied (r14 + rdx),
     1.9 +    // Register "count" = -1 * number of *remaining* oops, length_arg = *total* oops.
    1.10 +    // Emit GC store barriers for the oops we have copied (length_arg + count),
    1.11      // and report their number to the caller.
    1.12      __ addl(count, length_arg);         // transfers = (length - remaining)
    1.13      __ movl(rax, count);                // save the value
    1.14 @@ -1430,6 +1430,7 @@
    1.15      // Come here on success only.
    1.16      __ BIND(L_do_card_marks);
    1.17      __ movl(count, length_arg);
    1.18 +    __ movl(to, to_arg);                // reload
    1.19      gen_write_ref_array_post_barrier(to, count);
    1.20      __ xorl(rax, rax);                  // return 0 on success
    1.21  

mercurial