RFR: 8256858: C2: Devirtualize PhaseIterGVN-specific methods [v2]

Claes Redestad redestad at openjdk.java.net
Tue Nov 24 10:11:14 UTC 2020


> PhaseValues define the virtual method is_IterGVN, which is trivially returning 0(!) for all types except those derived from PhaseIterGVN. Similarly there's igvn_rehash_node_delayed which is virtual and a no-op in base types, but implemented to call rehash_node_delayed in PhaseIterGVN.
> 
> By devirtualizing we allow for more aggressive inlining and slightly better code generation in a few places. 
> 
> This increases sizeof(PhaseValues) from 2480 to 2488 on x64. Since we only go through a limited number of phases per compilation this seems acceptable.

Claes Redestad has updated the pull request incrementally with one additional commit since the last revision:

  Some cleanups

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

Changes:
  - all: https://git.openjdk.java.net/jdk/pull/1385/files
  - new: https://git.openjdk.java.net/jdk/pull/1385/files/ffae8ad9..eaf81828

Webrevs:
 - full: https://webrevs.openjdk.java.net/?repo=jdk&pr=1385&range=01
 - incr: https://webrevs.openjdk.java.net/?repo=jdk&pr=1385&range=00-01

  Stats: 12 lines in 2 files changed: 2 ins; 0 del; 10 mod
  Patch: https://git.openjdk.java.net/jdk/pull/1385.diff
  Fetch: git fetch https://git.openjdk.java.net/jdk pull/1385/head:pull/1385

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


More information about the hotspot-compiler-dev mailing list