JDK-8217782 : Spill detection broken after JDK-8217716
  • Type: Bug
  • Component: hotspot
  • Sub-Component: compiler
  • Affected Version: 13
  • Priority: P1
  • Status: Resolved
  • Resolution: Fixed
  • OS: generic
  • CPU: generic
  • Submitted: 2019-01-25
  • Updated: 2019-08-15
  • Resolved: 2019-01-25
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
JDK 13
13 b06Fixed
Related Reports
Blocks :  
Relates :  
Description
For easy reproducer, run "richards" from Octane. You'd need the nashorn.jar from 8u.

jdk/jdk @ 97cf88608d76 (8217264: HttpClient: Blocking operations in mapper function do not work as documented)

~/trunks/jdk-jdk/test/nashorn $ ~/trunks/jdk-jdk/build/linux-x86_64-server-release/images/jdk/bin/java -jar ~/Install/jdk8u191-rh/jre/lib/ext/nashorn.jar -scripting --log=time script/basic/run-octane.js -- --iterations 5 richards --verbose
Warning: The jjs tool is planned to be removed from a future JDK release
[richards] loading 'richards' [richards.js]... /home/shade/trunks/jdk-jdk/test/nashorn/script/basic/../external/octane/richards.js
[richards] running 'richards' for 5 iterations of no less than 5 seconds
[richards] warmup finished 181008 ops/minute
[richards] iteration 1 finished 230652 ops/minute
[richards] iteration 2 finished 230448 ops/minute
[richards] iteration 3 finished 226632 ops/minute

jdk/jdk @ d927fc999582 (8217716: Remove dead code in PhaseChaitin)

~/trunks/jdk-jdk/test/nashorn $ ~/trunks/jdk-jdk/build/linux-x86_64-server-release/images/jdk/bin/java -jar ~/Install/jdk8u191-rh/jre/lib/ext/nashorn.jar -scripting --log=time script/basic/run-octane.js -- --iterations 5 richards --verbose
Warning: The jjs tool is planned to be removed from a future JDK release
[richards] loading 'richards' [richards.js]... /home/shade/trunks/jdk-jdk/test/nashorn/script/basic/../external/octane/richards.js
[richards] running 'richards' for 5 iterations of no less than 5 seconds
[richards] warmup finished 3561 ops/minute
[richards] iteration 1 finished 4773 ops/minute
[richards] iteration 2 finished 12264 ops/minute
[richards] iteration 3 finished 12302 ops/minute
[richards] iteration 4 finished 12614 ops/minute
[richards] iteration 5 finished 12583 ops/minute

There is ~19x performance hit on richards, and there are similar hits on other Octane benchmarks. It looks to me the change was not very innocuous.

Richards seems to revert back to original performance when Chaitin cleanup is partially reverted with:
 http://cr.openjdk.java.net/~shade/8217782/partial-revert.patch

jdk/jdk @ b743968ad646 (8217733: Minor RunTest fixes):

~/trunks/jdk-jdk/test/nashorn $ ~/trunks/jdk-jdk/build/linux-x86_64-server-release/images/jdk/bin/java -jar ~/Install/jdk8u191-rh/jre/lib/ext/nashorn.jar -scripting --log=time script/basic/run-octane.js -- --iterations 5 richards --verbose
Warning: The jjs tool is planned to be removed from a future JDK release
[richards] loading 'richards' [richards.js]... /home/shade/trunks/jdk-jdk/test/nashorn/script/basic/../external/octane/richards.js
[richards] running 'richards' for 5 iterations of no less than 5 seconds
[richards] warmup finished 3681 ops/minute
[richards] iteration 1 finished 5276 ops/minute
[richards] iteration 2 finished 12504 ops/minute
[richards] iteration 3 finished 12535 ops/minute
[richards] iteration 4 finished 12727 ops/minute
[richards] iteration 5 finished 12792 ops/minute

jdk/jdk @ b743968ad646 (8217733: Minor RunTest fixes) + partial-revert.patch

~/trunks/jdk-jdk/test/nashorn $ ~/trunks/jdk-jdk/build/linux-x86_64-server-release/images/jdk/bin/java -jar ~/Install/jdk8u191-rh/jre/lib/ext/nashorn.jar -scripting --log=time script/basic/run-octane.js -- --iterations 5 richards --verbose
Warning: The jjs tool is planned to be removed from a future JDK release
[richards] loading 'richards' [richards.js]... /home/shade/trunks/jdk-jdk/test/nashorn/script/basic/../external/octane/richards.js
[richards] running 'richards' for 5 iterations of no less than 5 seconds
[richards] warmup finished 182856 ops/minute
[richards] iteration 1 finished 234636 ops/minute
[richards] iteration 2 finished 232332 ops/minute
[richards] iteration 3 finished 230616 ops/minute
[richards] iteration 4 finished 232644 ops/minute
[richards] iteration 5 finished 233316 ops/minute
Comments
Right, seems I missed a few cases where _was_spilled1 was used and thus removed some code that actually wasn't dead - missed this in sanity testing since quick micros often don't spill.
25-01-2019

This blocks performance evaluation for JDK-8059241.
25-01-2019