Current layout names reflect the evolution of value types since the beginning of project Valhalla, but can be hard to understand for people new to the project. In particular, value types were null-free by default in previous models, and layout names like "NON_ATOMIC_FLAT" and "ATOMIC_FLAT" don't express this null-freeness because it was implicit in Valhalla discussions.
The proposal is to make all layout names self-explanatory:
enum class LayoutKind : uint32_t {
REFERENCE = 0, // indirection to a heap allocated instance
BUFFERED = 1, // layout used in heap allocated standalone instances
NULL_FREE_NON_ATOMIC_FLAT = 2, // flat, no guarantee of atomic updates, no null marker
NULL_FREE_ATOMIC_FLAT = 3, // flat, size compatible with atomic updates, alignment requirement is equal to the size
NULLABLE_ATOMIC_FLAT = 4, // flat, include a null marker, plus same properties as ATOMIC layout
UNKNOWN = 5 // used for uninitialized fields of type LayoutKind
};
Then, normalize all mentions of these layout names in logging messages and tests to improve readability.
The proposal is to make all layout names self-explanatory:
enum class LayoutKind : uint32_t {
REFERENCE = 0, // indirection to a heap allocated instance
BUFFERED = 1, // layout used in heap allocated standalone instances
NULL_FREE_NON_ATOMIC_FLAT = 2, // flat, no guarantee of atomic updates, no null marker
NULL_FREE_ATOMIC_FLAT = 3, // flat, size compatible with atomic updates, alignment requirement is equal to the size
NULLABLE_ATOMIC_FLAT = 4, // flat, include a null marker, plus same properties as ATOMIC layout
UNKNOWN = 5 // used for uninitialized fields of type LayoutKind
};
Then, normalize all mentions of these layout names in logging messages and tests to improve readability.
- links to
-
Commit(lworld)
openjdk/valhalla/b0ac1629
-
Review(lworld)
openjdk/valhalla/1801