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);