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). ------------- Commit messages: - Initial push Changes: https://git.openjdk.org/valhalla/pull/2488/files Webrev: https://webrevs.openjdk.org/?repo=valhalla&pr=2488&range=00 Issue: https://bugs.openjdk.org/browse/JDK-8385634 Stats: 184 lines in 6 files changed: 11 ins; 131 del; 42 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
