[8] RFR: Save vector registers before LRB slowpath call

Aleksey Shipilev shade at redhat.com
Thu Oct 24 16:17:49 UTC 2019


jcstress caught a failure in sh/jdk8:

$ build/linux-x86_64-normal-server-fastdebug/images/j2sdk-image/bin/java -jar
jcstress-tests-all-20190811.jar --jvmArgs "-XX:+UnlockExperimentalVMOptions -XX:+UseShenandoahGC
-XX:TieredStopAtLevel=1 -XX:ShenandoahGCHeuristics=aggressive" -t
tearing.buffers.FloatBufferInterleaveTest

  1 matching test results.
  [FAILED] o.o.j.t.tearing.buffers.FloatBufferInterleaveTest
    (JVM args: [-XX:+UnlockExperimentalVMOptions, -XX:+UseShenandoahGC, -XX:TieredStopAtLevel=1,
-XX:ShenandoahGCHeuristics=aggressive])
  Observed state   Occurrences   Expectation  Interpretation

     0, 128, 128       883,871    ACCEPTABLE  Seeing all updates intact.

     0, 129, 127            42     FORBIDDEN  No default case provided, assume FORBIDDEN

     1, 127, 128           141     FORBIDDEN  No default case provided, assume FORBIDDEN

     1, 128, 127           144     FORBIDDEN  No default case provided, assume FORBIDDEN

     2, 127, 127            93     FORBIDDEN  No default case provided, assume FORBIDDEN


Roman suggested we are not caring enough about xmm registers around LRB slowpath call, and indeed we
are not. This is the fix:
  https://cr.openjdk.java.net/~shade/shenandoah/8u-lrb-xmm-save/webrev.01/

Testing: hotspot_gc_shenandoah; affected jcstress tests

-- 
Thanks,
-Aleksey



More information about the shenandoah-dev mailing list