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

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

Commit messages:
 - Reverted classfile API changes
 - Reverted classfile API changes
 - Preserve uninitializedThis through separate field
 - Use updated flags when creating new frames
 - 8389840: Verifier is not setting flagThisUninit when uninitializedThis is on 
the stack

Changes: https://git.openjdk.org/jdk/pull/32242/files
  Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=32242&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8389840
  Stats: 114 lines in 5 files changed: 101 ins; 0 del; 13 mod
  Patch: https://git.openjdk.org/jdk/pull/32242.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/32242/head:pull/32242

PR: https://git.openjdk.org/jdk/pull/32242

Reply via email to