Valhalla notes Jul05 2017
Karen Kinnear
karen.kinnear at oracle.com
Tue Jul 18 22:23:49 UTC 2017
Valhalla EG July 05, 2017
attendees: John, Vlad, Dan S, Dan H, Fred, Karen, Remi
AIs:
All: review MVT JVMS
http://cr.openjdk.java.net/~dlsmith/values.html
All: review makeSecondaryClass:
http://mail.openjdk.java.net/pipermail/valhalla-spec-experts/2017-June/000286.html
(for post-EA)
All: review ConstantDynamic JVMS
http://cr.openjdk.java.net/~jrose/jvm/condy-jvms-2017-0620.html
MVT use case:
Vlad: try to emulate Panama Vector superlongs as DVT to see box elimination
- not yet ported any of Panama
- next step: port Vector Intrinsics
MVT JVMS:
Review comments requested.
Karen's notes:
1. 4.10.1.8 - I owe review that this is a cleanup of protected handling, with
not behavior changes
2. 4.9.1, 4.9.2
There are a couple of areas we need to clarify ClassFileFormatError vs.
VerifyError
3. question about just listing a subset of VCC rules?
Dan S: just the enforcable subset
4. 5.3. eager vs. lazy derivation
- are we allowed to do either?
Dan Smith already sent far better notes/thoughts on this one:
http://mail.openjdk.java.net/pipermail/valhalla-spec-experts/2017-July/000324.html
5. One of the suggested changes was to move from
using a classfile attribute to using a RuntimeVisibleAnnotation
Maurizio reminded us later:
hotspot implementation today already uses a RuntimeVisibleAnnotation:
jvm.internal.value.DeriveValueType annotation
so ask Dan Smith to modify the JVMS to match the annotation name?
====
ConstantDynamic JVMS:
Review comments requested.
Dan H: will send feedback during the next couple of weeks:
Karen: we also owe feedback
John:
JVMS format experiment
programatically - make more things like int.class
not known to systemdictionary
new class mirror - like a primitive mirror, not correspond to a class
could make a shim over $Value real class with a different name
note: java.lang.Class today needs a distinct class file
perhaps use this for species "crass"
(Karen request - need a new name - hard to hear the distinction between
"class" and "crass")
===
Vector API experiments with MVT
Vlad:
Vector API - has boxing issues, JIT box elimination challenges
initially tried heisenboxes
now experimenting with MVT
typed vectors ass VCC, use MethodHandles for operations - MH chains
step 1:
superlong primitives > 64 bit as VCC -> see what optimizations we can
provide
downside:
API must as MH as well
note: Ian Graves working on expression language for convenience to allow
MH chains
Toby should talk to Vlad
Dan H: experiments with machine code snippets and intrinsics
===
Timing of MVT EA:
after JVMLS - (sigh) - need to sync up on dates
===
Remi joined :-)
MVT issues:
1) representation of __Value
root type of all value types
should it be boxed?
Fred: No - can NOT box - there is no VCC associated with it
Remi: how do we get from __Value to actual type?
Today - there is no way to do this
This is very temporary - longer term expect a new "mode" of Object, "QObject"
Can't use for fields
may need an unsafe hook to load a value from an instance
My notes say that __Value allows reflection on it.
(ed. note - is that accurate? Do you mean ValueType reflection or older
reflection? We are planning to disallow older reflection for MVT for value
ASM patch progress:
1) openjdk w/ASM re-align with module opcodes
2) do next patch
-- almost ready to submit first patch (!)
corrections welcome,
Karen
More information about the valhalla-spec-observers
mailing list