提交 90505801 编写于 作者: N never

6717457: Internal Error (src/share/vm/code/relocInfo.hpp:1089)

Reviewed-by: kvn
上级 b1646afd
......@@ -779,9 +779,9 @@ class StubGenerator: public StubCodeGenerator {
__ shrl(end, CardTableModRefBS::card_shift);
__ subl(end, start); // end --> count
__ BIND(L_loop);
ExternalAddress base((address)ct->byte_map_base);
Address index(start, count, Address::times_1, 0);
__ movbyte(ArrayAddress(base, index), 0);
intptr_t disp = (intptr_t) ct->byte_map_base;
Address cardtable(start, count, Address::times_1, disp);
__ movb(cardtable, 0);
__ decrement(count);
__ jcc(Assembler::greaterEqual, L_loop);
}
......
......@@ -1222,8 +1222,16 @@ class StubGenerator: public StubCodeGenerator {
__ shrq(end, CardTableModRefBS::card_shift);
__ subq(end, start); // number of bytes to copy
intptr_t disp = (intptr_t) ct->byte_map_base;
if (__ is_simm32(disp)) {
Address cardtable(noreg, noreg, Address::no_scale, disp);
__ lea(scratch, cardtable);
} else {
ExternalAddress cardtable((address)disp);
__ lea(scratch, cardtable);
}
const Register count = end; // 'end' register contains bytes count now
__ lea(scratch, ExternalAddress((address)ct->byte_map_base));
__ addq(start, scratch);
__ BIND(L_loop);
__ movb(Address(start, count, Address::times_1), 0);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册