RFR(s): 8013171: G1: C1 x86_64 barriers use 32-bit accesses to 64-bit PtrQueue::_index
Roland Westrelin
roland.westrelin at oracle.com
Thu Apr 23 11:43:40 UTC 2015
> Webrev: http://cr.openjdk.java.net/~pliden/8013171/webrev.0/
movptr is movq/movl, cmpptr is cmpq/cmpl and subptr is subq/subl on 32bits/64bits so you could replace:
1654 #ifdef _LP64
1655 __ movq(tmp, queue_index);
1656 __ cmpq(tmp, 0);
1657 #else
1658 __ movl(tmp, queue_index);
1659 __ cmpl(tmp, 0);
1660 #endif
1661 __ jcc(Assembler::equal, runtime);
1662 #ifdef _LP64
1663 __ subq(tmp, wordSize);
1664 __ movq(queue_index, tmp);
1665 #else
1666 __ subl(tmp, wordSize);
1667 __ movl(queue_index, tmp);
1668 #endif
with:
__ movptr(tmp, queue_index);
__ cmpptr(tmp, 0);
__ jcc(Assembler::equal, runtime);
__ subptr(tmp, wordSize);
__ movptr(queue_index, tmp);
even if the quantities that are manipulated are not actual pointers, unless I miss something.
Roland.
More information about the hotspot-dev
mailing list