Create a wrapper class which represents the payload of an InlineKlass object.
The current convention is to use a `void*` representing where the payload
starts, the `InlineKlass*` (as we do not always have a header when flattened)
and a `LayoutKind` (describing the payloads layout).
I suggest we introduce something like a `ValuePayload` which encapsulate these
properties. As well as a hierarchy built upon these, with the proper interfaces
implemented.
* ValuePayload (Any payload)
* RawValuePayload (Payload with holder erased)
* BufferedValuePayload (Payload of normal heap object)
* FlatValuePayload (Payload of flattened value)
* FlatFieldPayload (Payload of flattened field)
* FlatArrayPayload (Payload of flattened array element)
The goal is to both make interfaces clearer, and easier to understand. As well
as consolidating the implementation in one place rather than spread across
different subsystems.
Each type (except RawValuePayload) also allows for the creation of a Handle,
(thread local, or in an OopStorage) for keeping the payload as a thread or
global root.
The ValuePayload class is also the interface for interacting with the Access
API for InlineKlass objects.
* Testing
* Running tier 1-4 with preview enabled
* Running app tests with preview enabled
* Running normal tier 1-5
#### _Extra Notes:_
* The `OopHandle` type is there so that we can migrate the JVMTI payload
abstraction implementation to using this instead. (Future RFE)
* Some interfaces got cleaned up. Some are unused. Like the `null_payload`
which was superseded by the `Access::value_store_null`. C1 still uses the
`.null_reset` but if that dependency is removed we should be able to remove
that weird object all together.
* Simply adding the Java to VM transition deep inside the payload code created
a circular include dependency here. So rather than fixing that, I implemented
the relevant bytecodes in the BytecodeInterpreter.
-------------
Commit messages:
- stefank some comments inlineKlassPayload.inline.hpp
- Rename the get_ prefixed accessors
- stefank inlineKlassPayload.hpp comments
- stefank comment jvm.cpp
- stefank comment jni.cpp
- stefank comments oopsHierarchy.hpp
- stefank comments inlineKlass*
- stefank comments flatArrayKlass.cpp
- stefank comments access.inline.hpp
- stefank comments interpreterRuntime.cpp
- ... and 31 more: https://git.openjdk.org/valhalla/compare/b3616f9a...b4bc49fd
Changes: https://git.openjdk.org/valhalla/pull/2068/files
Webrev: https://webrevs.openjdk.org/?repo=valhalla&pr=2068&range=00
Issue: https://bugs.openjdk.org/browse/JDK-8377451
Stats: 2033 lines in 38 files changed: 1641 ins; 235 del; 157 mod
Patch: https://git.openjdk.org/valhalla/pull/2068.diff
Fetch: git fetch https://git.openjdk.org/valhalla.git pull/2068/head:pull/2068
PR: https://git.openjdk.org/valhalla/pull/2068