Prototype of "Minimal Value Types" (MVT)
David Simms
david.simms at oracle.com
Thu Dec 1 14:11:17 UTC 2016
Recently pushed into the Valhalla repository with the comment "MVT 1.0
prototype": This is an initial prototype of "Minimal Value Types"
document [1] (MVT), proposed by Brian Goetz and John Rose back in
August. The document describes a possible means of delivering an
experimental test vehicle for "Value Type" [2] features, without
committing to language or VM specification changes.
There are a number of differences in implementation compared to the
"Minimal Value Types" document:
Annotating a "Value Capable Class" (VCC) with
"jvm.internal.value.DeriveValueType":
The VM does not modify the VCC in anyway
The value type derived from the VCC is not a an inner class of
VCC, but merely provides the same instance fields
"jdk.experimental.value.ValueType" API is by no means final, or
even complete with regards to the MVT document
Caveats, use of "DeriveValueType" annotation and the "ValueType" method
handle API:
Limited to x86_64 platform
JIT support is missing, must use "-Xint"
Verifier support is missing, must use "-noverify"
MethodHandles dealing with value types are implemented using
bytecodes that are libel to change.
Much of the underlying implementation is nowhere near production
quality. Quite the opposite, we are still prototyping new ideas and wish
to maintain some flexibility. Performance improvements will be in most
cases using Value Types, completely out of the question at this point.
Example usage: test/valhalla/mvt/MVTTest.java
[1] http://cr.openjdk.java.net/~jrose/values/shady-values.html
[2] http://cr.openjdk.java.net/~jrose/values/values.html
More information about the valhalla-dev
mailing list