On Fri, 29 May 2026 09:13:16 GMT, Maurizio Cimadamore <[email protected]> 
wrote:

>> This PR cleans the handling of unset strict fields which is needed for 
>> stackmap generation.
>> In the current impl, this is done with UnsetFieldsInfo which is prepared by 
>> Flow, and then propagated to Gen/Code.
>> The problem with this approach is that we introduce unnecessary coupling, as 
>> we need to keep track where, at the AST level, an assignment to a strict 
>> uninit variable takes place.
>> This leads to issues as the AST-oriented view is too high-level for the kind 
>> of manipulation that Code needs.
>> By modelling unset fields as a bitset in Code.State (same as what we do to 
>> keep track of local variable ranges), state merges are dealt with more 
>> naturally and succinctly.
>> 
>> ---------
>> - [x] I confirm that I make this contribution in accordance with the 
>> [OpenJDK Interim AI Policy](https://openjdk.org/legal/ai).
>
> src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/Code.java line 1849:
> 
>> 1847:         State join(State other) {
>> 1848:             defined.andSet(other.defined);
>> 1849:             unsetStrict.orSet(other.unsetStrict);
> 
> This is important: unset field in a merged frame is obtaining by OR-ing the 
> unset state of the parent frames.

nice

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

PR Review Comment: 
https://git.openjdk.org/valhalla/pull/2487#discussion_r3325686519

Reply via email to