On Thu, 6 Aug 2026 20:08:07 GMT, Chen Liang <[email protected]> wrote:
>> [JDK-8376522](https://bugs.openjdk.org/browse/JDK-8376522) indicates that >> the thisUninit should be applied even when uninitializedThis is on the >> stack. Previous implementations failed to do this, so this patch properly >> enforces this spec change. >> >> Now that both the stack and locals must be considered when applying >> flagThisUninit, the origin of the flag needs to be preserved, so the >> StackMapReader now tracks if the flag originated from locals or the stack. >> Since the stack is cleared between frames, only an uninitializedThis from >> locals is preserved. >> >> In addition to VM changes, the ClassFile API had to be updated as it only >> considered stack frame locals. The test case offered by @liach in the JBS >> issue has been adapted to a JASM test to verify the change. Verified with >> tier 1-5 tests. >> >> --------- >> - [x] I confirm that I make this contribution in accordance with the >> [OpenJDK Interim AI Policy](https://openjdk.org/legal/ai). > > src/hotspot/share/classfile/stackMapTable.cpp line 356: > >> 354: u2 stack_size = 1; >> 355: u1 flags = _prev_frame->flags(); >> 356: stack[0] = parse_verification_type(&flags, CHECK_VERIFY_(_verifier, >> nullptr)); > > Thsi is not correct - all stack map frames clear all previous stacks. So if a > previous frame has `flagThisUninit` due to an `uninitializedThis` on the > stack only, this logic is wrong if the new stack has no `uninitializedThis` Thanks for the quick response, Chen but this is still in the draft phase, as of now I haven't finished testing. Either way, thanks for pointing this out! ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/32242#discussion_r3731766892
