RFR: 8341293: Split field loads through Nested Phis [v7]

Dhamoder Nalla dhanalla at openjdk.org
Fri Jan 24 19:13:13 UTC 2025


> As an extension of the work done as part of https://github.com/openjdk/jdk/pull/12897, split the field loads (AddP -> Load*) with nested phi parent nodes to enable more scalar replacements, thereby reducing memory allocation.
> 
> 
> Here are the sequence of Ideal graph transformations for Nested phi:
> 
>  
> ![image](https://github.com/user-attachments/assets/c18e5ca0-c554-475c-814a-7cb288d96569)
> 
> ![image](https://github.com/user-attachments/assets/b279b5f2-9ec6-4d9b-a627-506451f1cf81)
> 
> ![image](https://github.com/user-attachments/assets/f506b918-2dd0-4dbe-a440-ff253afa3961)
> 
> JMH results:
> with disabled RAM
> 
> Benchmark Mode Cnt Score Error Units
> NestedPhiAndRematerialize.NopRAM.testBailOut_runner avgt 15 13.969 ± 0.248 ms/op
> NestedPhiAndRematerialize.NopRAM.testFieldEscapeWithMerge_runner avgt 15 80.300 ± 4.306 ms/op
> NestedPhiAndRematerialize.NopRAM.testMerge_TryCatchFinally_runner avgt 15 72.182 ± 1.781 ms/op
> NestedPhiAndRematerialize.NopRAM.testMultiParentPhi_runner avgt 15 2.983 ± 0.001 ms/op
> NestedPhiAndRematerialize.NopRAM.testNestedPhiPolymorphic_runner avgt 15 18.342 ± 0.731 ms/op
> NestedPhiAndRematerialize.NopRAM.testNestedPhiProcessOrder_runner avgt 15 14.315 ± 0.443 ms/op
> NestedPhiAndRematerialize.NopRAM.testNestedPhiWithLambda_runner avgt 15 18.511 ± 1.212 ms/op
> NestedPhiAndRematerialize.NopRAM.testNestedPhiWithTrap_runner avgt 15 66.277 ± 1.478 ms/op
> NestedPhiAndRematerialize.NopRAM.testNestedPhi_FieldLoad_runner avgt 15 17.968 ± 0.306 ms/op
> NestedPhiAndRematerialize.NopRAM.testNestedPhi_TryCatch_runner avgt 15 14.186 ± 0.247 ms/op
> NestedPhiAndRematerialize.NopRAM.testRematerialize_MultiObj_runner avgt 15 88.435 ± 4.869 ms/op
> NestedPhiAndRematerialize.NopRAM.testRematerialize_SingleObj_runner avgt 15 29560.130 ± 48.797 ms/op
> NestedPhiAndRematerialize.NopRAM.testRematerialize_TryCatch_runner avgt 15 49.150 ± 2.307 ms/op
> NestedPhiAndRematerialize.NopRAM.testThreeLevelNestedPhi_runner avgt 15 18.236 ± 0.308 ms/op
> 
> with enabled RAM
> Benchmark Mode Cnt Score Error Units
> NestedPhiAndRematerialize.YesRAM.testBailOut_runner avgt 15 3.257 ± 0.423 ms/op
> NestedPhiAndRematerialize.YesRAM.testFieldEscapeWithMerge_runner avgt 15 79.916 ± 3.477 ms/op
> NestedPhiAndRematerialize.YesRAM.testMerge_TryCatchFinally_runner avgt 15 72.053 ± 1.916 ms/op
> NestedPhiAndRematerialize.YesRAM.testMultiParentPhi_runner avgt 15 2.984 ± 0.001 ms/op
> NestedPhiAndRematerialize.YesRAM.testNestedPhiPolymorphic_runner avgt 15 18.309 ± 0.706 ms/op
> NestedPhiAndRematerialize.YesRAM.testNestedPhiProces...

Dhamoder Nalla has updated the pull request incrementally with one additional commit since the last revision:

  Modify IR rules

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

Changes:
  - all: https://git.openjdk.org/jdk/pull/21270/files
  - new: https://git.openjdk.org/jdk/pull/21270/files/b10673a8..9d97d534

Webrevs:
 - full: https://webrevs.openjdk.org/?repo=jdk&pr=21270&range=06
 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=21270&range=05-06

  Stats: 7 lines in 1 file changed: 3 ins; 1 del; 3 mod
  Patch: https://git.openjdk.org/jdk/pull/21270.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/21270/head:pull/21270

PR: https://git.openjdk.org/jdk/pull/21270


More information about the hotspot-compiler-dev mailing list