Valhalla notes Jul05 2017

Karen Kinnear karen.kinnear at
Tue Jul 18 22:23:49 UTC 2017

Valhalla EG July 05, 2017
attendees: John, Vlad, Dan S, Dan H, Fred, Karen, Remi


All: review MVT JVMS
All: review makeSecondaryClass:
(for post-EA)

All: review ConstantDynamic JVMS

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

Review comments requested.
Karen's notes:
1. - 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.
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:

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

  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

  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

    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,

More information about the valhalla-spec-observers mailing list