RFR: 8266528: Optimize C2 VerifyIterativeGVN execution time [v3]

Tobias Hartmann thartmann at openjdk.java.net
Fri May 21 08:05:48 UTC 2021


On Wed, 19 May 2021 01:42:07 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.
>
> Hui Shi has updated the pull request incrementally with one additional commit since the last revision:
> 
>   Add comments for duplicated input processing in Node::Verify

Looks good to me too.

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

Marked as reviewed by thartmann (Reviewer).

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


More information about the hotspot-compiler-dev mailing list