[lworld] RFR: 8340409: [lworld] Simple serialization and deserialization of core migrated classes

Roger Riggs rriggs at openjdk.org
Fri Sep 20 19:55:29 UTC 2024


Serialization and deerialization of value classes. 
For java.base value classes migrated from identity classes:
  - Must be annotated with jdk.internal.MigratedValueClass (in tests too)
  - Must have a constructor or static factory method:
    - annotated with jdk.internal.value.DeserializeConstrucctor
    - constructor parameters must match order and types of serializable fields of the class
  - Value class must not have superclass with fields; only Object or abstract w/o fields
  - Uses same technique as for Records to extract and concat values from stream to invoke constructor
  - Migrated value classes are serialized using the same format/fields as the identity class

Non-migrated value classes throw InvalidClassException

Along the way, refactored code to break out different modes of deserialization: full custom deserialization with custom data, default deserialization only, externalizable, no local class, record, and then added mode to deserialize a value class.

Updates to value class tests and added a combo test to check many combinations of value and identity classes with different parameters.

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

Commit messages:
 - 8340409: [lworld] Simple serialization and deserialization of core migrated classes

Changes: https://git.openjdk.org/valhalla/pull/1248/files
  Webrev: https://webrevs.openjdk.org/?repo=valhalla&pr=1248&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8340409
  Stats: 3163 lines in 21 files changed: 2584 ins; 420 del; 159 mod
  Patch: https://git.openjdk.org/valhalla/pull/1248.diff
  Fetch: git fetch https://git.openjdk.org/valhalla.git pull/1248/head:pull/1248

PR: https://git.openjdk.org/valhalla/pull/1248


More information about the valhalla-dev mailing list