Integrated: 8266528: Optimize C2 VerifyIterativeGVN execution time
Hui Shi
hshi at openjdk.java.net
Sat May 22 11:55:03 UTC 2021
On Mon, 17 May 2021 05:23:12 GMT, Hui Shi <hshi at openjdk.org> wrote:
> 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 meet nodes whose _idx is not unique (PhaseIterGVN::optimize is not triggered in the middle of PhaseRenumberLive ). Assertion every node is in current node_arena() in Node::verify, 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.
This pull request has now been integrated.
Changeset: 4023646e
Author: Hui Shi <hshi at openjdk.org>
Committer: Jie Fu <jiefu at openjdk.org>
URL: https://git.openjdk.java.net/jdk/commit/4023646ed1bcb821b1d18f7e5104f04995e8171d
Stats: 45 lines in 4 files changed: 21 ins; 10 del; 14 mod
8266528: Optimize C2 VerifyIterativeGVN execution time
Reviewed-by: kvn, thartmann
-------------
PR: https://git.openjdk.java.net/jdk/pull/4045
More information about the hotspot-compiler-dev
mailing list