Value Object has been introduced since JDK 28 (as a preview feature), however 
it cannot be handled in SA.


public value class Test{

  public static value record Rec(byte recA, byte recB){};

  byte a;

  byte b;

  Rec rec;

  byte c;
}


`rec` as `Test$Rec` can be inlined into the instance of `Test`, but it would be 
shown as "Bad OOP" in "inspect" on SA. SA should show valid values in `rec`.

Note that his change would expand flattened object in below in `inspect` CLHSDB 
command:


hsdb> inspect 0xc22419e8
instance of Oop for LingeredAppWithValueObject$ValueObj @ 0x00000000c22419e8 
(size = 16)
_mark: 73201086130815105
a: 1
b: 2
rec:
  recA: 10
  recB: 20
c: 3


---------
- [x] I confirm that I make this contribution in accordance with the [OpenJDK 
Interim AI Policy](https://openjdk.org/legal/ai).

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

Commit messages:
 - 8390106: SA: Inline object support is incomplete

Changes: https://git.openjdk.org/jdk/pull/32310/files
  Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=32310&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8390106
  Stats: 361 lines in 13 files changed: 348 ins; 4 del; 9 mod
  Patch: https://git.openjdk.org/jdk/pull/32310.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/32310/head:pull/32310

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

Reply via email to