RFR(XS): 8193518: C2: Vector registers sometimes corrupted at safepoint

Roland Westrelin rwestrel at redhat.com
Thu Dec 14 16:00:10 UTC 2017


http://cr.openjdk.java.net/~roland/8193518/webrev.00/

If a method has several vectorized loops, the logic that keep tracks of
Compile::_max_vector_size sets it to the max vector size of the last
loop (and not to the max vector size of all
loops). Compile::_max_vector_size is then used to mark nmethods that
need vector registers to be saved on a safepoint. If the last loop uses
small vectors but other loops in the method use large vectors, registers
are not saved correctly at a safepoint in one of the other loops and can
be corrupted.

The test case only fails with Serial GC AFAICT but I saw that failure
with G1 running some other applications.

Roland.


More information about the hotspot-compiler-dev mailing list