mirror of
https://github.com/openjdk/jdk.git
synced 2025-09-21 11:34:38 +02:00
6717457: Internal Error (src/share/vm/code/relocInfo.hpp:1089)
Reviewed-by: kvn
This commit is contained in:
parent
fcbf2d1245
commit
97c80b8c84
2 changed files with 12 additions and 4 deletions
|
@ -779,9 +779,9 @@ class StubGenerator: public StubCodeGenerator {
|
||||||
__ shrl(end, CardTableModRefBS::card_shift);
|
__ shrl(end, CardTableModRefBS::card_shift);
|
||||||
__ subl(end, start); // end --> count
|
__ subl(end, start); // end --> count
|
||||||
__ BIND(L_loop);
|
__ BIND(L_loop);
|
||||||
ExternalAddress base((address)ct->byte_map_base);
|
intptr_t disp = (intptr_t) ct->byte_map_base;
|
||||||
Address index(start, count, Address::times_1, 0);
|
Address cardtable(start, count, Address::times_1, disp);
|
||||||
__ movbyte(ArrayAddress(base, index), 0);
|
__ movb(cardtable, 0);
|
||||||
__ decrement(count);
|
__ decrement(count);
|
||||||
__ jcc(Assembler::greaterEqual, L_loop);
|
__ jcc(Assembler::greaterEqual, L_loop);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1222,8 +1222,16 @@ class StubGenerator: public StubCodeGenerator {
|
||||||
__ shrq(end, CardTableModRefBS::card_shift);
|
__ shrq(end, CardTableModRefBS::card_shift);
|
||||||
__ subq(end, start); // number of bytes to copy
|
__ 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
|
const Register count = end; // 'end' register contains bytes count now
|
||||||
__ lea(scratch, ExternalAddress((address)ct->byte_map_base));
|
|
||||||
__ addq(start, scratch);
|
__ addq(start, scratch);
|
||||||
__ BIND(L_loop);
|
__ BIND(L_loop);
|
||||||
__ movb(Address(start, count, Address::times_1), 0);
|
__ movb(Address(start, count, Address::times_1), 0);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue