On Fri, 29 May 2026 12:32:31 GMT, Maurizio Cimadamore <[email protected]> 
wrote:

> This PR removes some unnecessary coupling between Lower, Gen and 
> LocalProxyVarsGen.
> 
> It does so by making LocalProxyVarsGen no longer a standalone pass but, 
> rather, a helper for Gen::normalizeMethod.
> 
> The main idea is that we can make things more regular, by having Gen always 
> inserting variable initializer in the correct place.
> Then, LocalProxyVarGen will create a blank proxy, and use its visitor to 
> inspect the rest of the constructor body.
> Since the visitor _already_ rewires assignments to real fields as assignments 
> to proxies, this new arrangement has the desired effect of generating the 
> same code as before, but w/o too much coupling.
> 
> Some massaging to `Gen::normalizeMethod` was needed because now we need to 
> make sure it calls the proxy step for all constructors, not just in case 
> there's some pending var initializers.
> 
> Finally, when cleaning up `Lower` I noticed a likely bug: `freevardefs` was 
> no longer preserving the `LOCAL_CAPTURE_FIELD` -- sometimes it was replacing 
> it with `STRICT`. But `LOCAL_CAPTURE_FIELD` is used by LambdaToMethod, so 
> changing this probably results in bad downstream lowering.
> I've fixed this by adding both `STRICT` _and_ `LOCAL_CAPTURE_FIELD` to the 
> captured sym.
> 
> ---------
> - [x] I confirm that I make this contribution in accordance with the [OpenJDK 
> Interim AI Policy](https://openjdk.org/legal/ai).

This pull request has now been integrated.

Changeset: 5f1405f5
Author:    Maurizio Cimadamore <[email protected]>
URL:       
https://git.openjdk.org/valhalla/commit/5f1405f53b7d1122decb8d7986e9e5e2b9c4897f
Stats:     313 lines in 9 files changed: 129 ins; 116 del; 68 mod

8385634: [lworld] Remove unnecessary coupling between Lower, Gen and 
LocalProxyVarsGen

Reviewed-by: vromero

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

PR: https://git.openjdk.org/valhalla/pull/2488

Reply via email to