RFR: 8266528: Optimize C2 VerifyIterativeGVN execution time

Hui Shi hshi at openjdk.java.net
Mon May 17 05:31:32 UTC 2021


Please help review this enhancement for VerifyIterativeGVN, reduce about 3x - 200x executime time when VerifyIterativeGVN is on.

In simple test "-Xcomp -XX:+VerifyIterativeGVN -XX:-TieredCompilation -version", time reduced from 8.67s to 2.4s.
In extreme case hotspot/test/jtreg/compiler/escapeAnalysis/Test6689060.java, time reduced from 20000s to 95s.

Test with "-Xbatch -XX:+VerifyIterativeGVN -XX:-TieredCompilation", tier1/2/3 with fastdebug and no regression.

1. Remove node_arena()->contains checking for verifing  nodes.  _verify_window  is reset before every PhaseIterGVN::optimize. Searching from root or nodes in _verify_window  will not met nodes whose _idx is not  unique (PhaseIterGVN::optimize will not rigger in the middle of PhaseRenumberLive ).  Adding an assertion in Node::verify, every node is in current node_arena() passes tier1/2/3 checks (with -Xbatch -XX:+VerifyIterativeGVN -XX:-TieredCompilation), no assertion failure happens.

2. Combine verification for nodes in _verify_window into one worklist and skipping redundant nodes in _verify_window.

3. Optimize duplicate checking for same input nodes, skipping if current input index is not its first occurence.

4. Optimize field access: Replace "n->in(j)" with "n->_in[j]", same with outcnt calucation for input node x.

-------------

Commit messages:
 - 8266528: Optimize C2 VerifyIterativeGVN execution time

Changes: https://git.openjdk.java.net/jdk/pull/4045/files
 Webrev: https://webrevs.openjdk.java.net/?repo=jdk&pr=4045&range=00
  Issue: https://bugs.openjdk.java.net/browse/JDK-8266528
  Stats: 44 lines in 4 files changed: 20 ins; 10 del; 14 mod
  Patch: https://git.openjdk.java.net/jdk/pull/4045.diff
  Fetch: git fetch https://git.openjdk.java.net/jdk pull/4045/head:pull/4045

PR: https://git.openjdk.java.net/jdk/pull/4045


More information about the hotspot-compiler-dev mailing list