src/cpu/x86/vm/stubGenerator_x86_64.cpp

changeset 684
910a4cb98e9e
parent 631
d1605aabd0a1
child 739
dc7f315e41f7
child 791
1ee8caae33af
     1.1 --- a/src/cpu/x86/vm/stubGenerator_x86_64.cpp	Mon Jul 21 13:37:05 2008 -0700
     1.2 +++ b/src/cpu/x86/vm/stubGenerator_x86_64.cpp	Fri Jul 25 09:07:29 2008 -0700
     1.3 @@ -1222,8 +1222,16 @@
     1.4             __ shrq(end, CardTableModRefBS::card_shift);
     1.5             __ subq(end, start); // number of bytes to copy
     1.6  
     1.7 +          intptr_t disp = (intptr_t) ct->byte_map_base;
     1.8 +          if (__ is_simm32(disp)) {
     1.9 +            Address cardtable(noreg, noreg, Address::no_scale, disp);
    1.10 +            __ lea(scratch, cardtable);
    1.11 +          } else {
    1.12 +            ExternalAddress cardtable((address)disp);
    1.13 +            __ lea(scratch, cardtable);
    1.14 +          }
    1.15 +
    1.16            const Register count = end; // 'end' register contains bytes count now
    1.17 -          __ lea(scratch, ExternalAddress((address)ct->byte_map_base));
    1.18            __ addq(start, scratch);
    1.19          __ BIND(L_loop);
    1.20            __ movb(Address(start, count, Address::times_1), 0);

mercurial