> 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).

Maurizio Cimadamore has updated the pull request with a new target base due to 
a merge or a rebase. The pull request now contains six commits:

 - Merge branch 'lworld' into min_proxy_gen
 - Merge branch 'lworld' into min_proxy_gen
 - Fix issues with LambdaToMethod touching `this` too early
 - Tighten code
 - Deal with references to lowered fields from early field initializers
 - Initial push

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

Changes: https://git.openjdk.org/valhalla/pull/2488/files
  Webrev: https://webrevs.openjdk.org/?repo=valhalla&pr=2488&range=05
  Stats: 313 lines in 9 files changed: 129 ins; 116 del; 68 mod
  Patch: https://git.openjdk.org/valhalla/pull/2488.diff
  Fetch: git fetch https://git.openjdk.org/valhalla.git pull/2488/head:pull/2488

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

Reply via email to