RFR: 8356761: IGV: dump escape analysis information [v6]

Anton Seoane Ampudia aseoane at openjdk.org
Thu Nov 13 12:28:58 UTC 2025


On Thu, 13 Nov 2025 12:21:12 GMT, Anton Seoane Ampudia <aseoane at openjdk.org> wrote:

>> This PR introduces new IGV dumps, property fields and filters related to escape analysis information.
>> 
>> The C2 escape analysis algorithm is carried out in six primary steps, of which many have interesting sub-steps (e.g. `split_unique_types`) or present an iterative nature where access to intermediate results can aid debugging and analysis. Additionally, escape analysis relies on an "intermediate structure" called the _connection graph_, which is also particularly valuable for deeper investigations.
>> 
>> With this changeset, escape analysis information is now dumped at key points throughout the algorithm, with a degree of granularity (from only the basic steps to in-detail iterative dumping). The dumps include several property fields, such as:
>> 
>> - Node escape “level”.
>> - Scalar replaceability.
>> - Node type within the connection graph (per [C2 Escape Analysis connection graph](https://wiki.openjdk.org/display/HotSpot/EscapeAnalysis)).
>> 
>> This is achieved by passing the `ConnectionGraph` in use to the `IdealGraphPrinter` during escape analysis, so that these properties can be dumped. After escape analysis, remaining interesting information that is left until macro elimination (and consequent elimination of non-escaping, replaceable allocations) is also dumped.
>> 
>> Additionally, two filters are provided: one for displaying the connection node type in the IGV node box, and another one for color-scaling nodes based on their escaping/scalar status.
>> 
>> **Testing:** passes tiers 1-3, manual testing in IGV
>
> Anton Seoane Ampudia has updated the pull request incrementally with two additional commits since the last revision:
> 
>  - Merge branch 'JDK-8356761' of github.com:anton-seoane/jdk into JDK-8356761
>  - Review comments: rename `verify` to more explicit `print_method`

@dlunde took a quick look and "offline reviewed" the changes, suggesting that I change the `if (C->igv_printer() != nullptr)` checks to use `should_print_igv()`. This will make things more consistent with similar cases such as [JDK-8370569](https://bugs.openjdk.org/browse/JDK-8370569). Just wanted to give a heads-up as I will be adding some extra changes now

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

PR Comment: https://git.openjdk.org/jdk/pull/28060#issuecomment-3527575625


More information about the hotspot-compiler-dev mailing list