RFR (S): C2: Matrix update barrier math improvements

Aleksey Shipilev shade at redhat.com
Fri Mar 10 11:36:24 UTC 2017


Hi,

Turns out, we can do a few math transformations for computing matrix index, that
benefits performance. See here:
  http://cr.openjdk.java.net/~shade/shenandoah/matrix-math/webrev.01/

I think it only deserves to be in C2. Fighting C1 codegen to arrive to the same
code is a waste of time, IMO. It seems to cut the matrix barrier costs almost in
half:

Benchmark                                Mode  Cnt   Score    Error  Units

# Baseline (no barriers)
Plain.test_Object                        avgt   15   4.683 ±  0.031  ns/op
Plain.test_Object:cycles                 avgt    3  18.627 ±  1.466   #/op
Plain.test_Object:instructions           avgt    3  29.023 ±  0.059   #/op

# Baseline (-XX:+ShenandoahMatrix)
Plain.test_Object                        avgt   15   6.629 ±  0.054  ns/op
Plain.test_Object:cycles                 avgt    3  26.392 ±  2.251   #/op
Plain.test_Object:instructions           avgt    3  45.047 ±  0.769   #/op

# Patched (-XX:+ShenandoahMatrix)
Plain.test_Object                        avgt   15   5.873 ±  0.038  ns/op
Plain.test_Object:cycles                 avgt    3  23.373 ±  0.339   #/op
Plain.test_Object:instructions           avgt    3  41.096 ±  0.333   #/op

Generated code before/after:
 http://cr.openjdk.java.net/~shade/shenandoah/matrix-math/baseline.perfasm
 http://cr.openjdk.java.net/~shade/shenandoah/matrix-math/optimized.perfasm

Testing: hotspot_gc_shenandoah, jcstress -m quick (matrix update) is running

Thanks,
-Aleksey



More information about the shenandoah-dev mailing list