RFR: Fast matrix math & inlining
Roman Kennke
rkennke at redhat.com
Fri Mar 17 17:06:36 UTC 2017
This implements the same fast matrix math that Aleksey did in C2, but
for the runtime C++ version. Shenandoah::set_connected() is called from
the hot path in partial GC, so this should be benefitial. It also
changes the signature of set_connected() to accept pointers instead of
region indices, which simplifies calling code too. For debug builds,
there is a little verification which checks that the matrix address
calculated by that fast version and the old slow version match.
SPECjvm compiler.compiler shows a slight improvement:
baseline:
108,901 ±(99.9%) 42,594 ops/min [Average]
Partial GC = 88,05 s (a = 144819 us) (n = 608)
(lvls, us = 5977, 97656, 128906, 175781, 347946)
patched:
119,307 ±(99.9%) 44,978 ops/min [Average]
Partial GC = 81,14 s (a = 131076 us) (n = 619)
(lvls, us = 4648, 93164, 119141, 160156, 283260)
Tested with specjvm and gc-bench (arrayfragger)
http://cr.openjdk.java.net/~rkennke/matrixmath/webrev.00/
<http://cr.openjdk.java.net/%7Erkennke/matrixmath/webrev.00/>
Roman
More information about the shenandoah-dev
mailing list