Valhalla EG 20200311
David Simms
david.simms at oracle.com
Thu Mar 12 14:00:34 UTC 2020
Attendees: Brian, Simms, Fred, John, DanH, Tobi
- Simms: atomics on EG list...
- John: ...yeah can stay on list
- Brian: so we have solved so many problems, that we need to think
about how to prioritize get the project into spec and implementation...
- Some library experiments, e.g. comparing Collections experiments
from model 3 with lworld...we have solved
- DanH: is this prototype or whiteboard
- Brian: yeah whiteboard, but we we are confident
- DanH: conditional methods is this still part of the story ?
- Brian: may not want them in the same form...right now all the
reasons we want CM for...aren't there
- Owe a write up: is we think throwing user visible reif under the
bus, and letting the VM optimize, give a much more homogeneous
model...still not a concrete answer...
- ...but we are up to what do we really need
- Brian: even if we aggressively specialization, "Erasure pollution"*
always pops up...
- Legacy class files
- Legacy serialized streams
- Generic methods (compiler doesn't know what to infer)
- John: so the short is: there is an erased version and specialized
versions, erased is always permitted (see above)
- Brian: yeah, but the VM doesn't have to specialized, it is not
surfaced in the language
- John: is there in-determinism there
- Brian, there is room for failing with runtime exception...list of
erased to concrete method (just as we have today)
- John, so there is more or less runtime checking depending on the
information available
- DanH: at an allocation site what data are we passing then ?
- Brian: previous there was a desc for species, what changes here is
that javac puts bytecode with "new List(TypeParam[int])" but the only
expects "List" (erased) back
- DanH: is that type passed through CP or arg...
- Brian: CP
- DanH: so new CP types still there
- Brian: yeah from previous template class discussion, but
- "Like running with java `-Xerased`"
- DanH: so reflection for the species gives ?
- Brian: erased
- DanH: so a new reif API for reflection
- Brian: so it fail in some places...so there is question there...
- DanH: surprised if not gauranteed
- Brian (those cases with erased above) we can't gaurantee
- John: That raw types are always a super type
- There may be an optimization, but be available might not (to user)
- Brian: if we give tools to make the observation that sharp types are
available, affects the VM implementation
- John: maybe, depends on how we pass around this in implementation
- John: so sort amounts to not having to write "`Foo<**any** T>`"
- Brian: yeah, with casts / and runtime checks for null etc (lworld
current)
- Brian: start warning on primitive wrapping sync...
- Needs to go in JDK15
- John: atomic value types might have some common code
- Let me come up with a webrev with a week
- John: `java.lang.NonTearable`
- All: yeah
- John: so can we dynamically add `IdentityObject` in the VM ?
- Simms: still a mess, only solves one class of problem
- John: needs more thought...
More information about the valhalla-spec-experts
mailing list