comparison src/cpu/x86/vm/stubGenerator_x86_64.cpp @ 249:910a4cb98e9e

6717457: Internal Error (src/share/vm/code/relocInfo.hpp:1089) Reviewed-by: kvn
author never
date Fri, 25 Jul 2008 09:07:29 -0700
parents d1605aabd0a1
children dc7f315e41f7 1ee8caae33af
comparison
equal deleted inserted replaced
248:18aab3cdd513 249:910a4cb98e9e
1220 1220
1221 __ shrq(start, CardTableModRefBS::card_shift); 1221 __ shrq(start, CardTableModRefBS::card_shift);
1222 __ shrq(end, CardTableModRefBS::card_shift); 1222 __ shrq(end, CardTableModRefBS::card_shift);
1223 __ subq(end, start); // number of bytes to copy 1223 __ subq(end, start); // number of bytes to copy
1224 1224
1225 intptr_t disp = (intptr_t) ct->byte_map_base;
1226 if (__ is_simm32(disp)) {
1227 Address cardtable(noreg, noreg, Address::no_scale, disp);
1228 __ lea(scratch, cardtable);
1229 } else {
1230 ExternalAddress cardtable((address)disp);
1231 __ lea(scratch, cardtable);
1232 }
1233
1225 const Register count = end; // 'end' register contains bytes count now 1234 const Register count = end; // 'end' register contains bytes count now
1226 __ lea(scratch, ExternalAddress((address)ct->byte_map_base));
1227 __ addq(start, scratch); 1235 __ addq(start, scratch);
1228 __ BIND(L_loop); 1236 __ BIND(L_loop);
1229 __ movb(Address(start, count, Address::times_1), 0); 1237 __ movb(Address(start, count, Address::times_1), 0);
1230 __ decrementq(count); 1238 __ decrementq(count);
1231 __ jcc(Assembler::greaterEqual, L_loop); 1239 __ jcc(Assembler::greaterEqual, L_loop);