Valhalla EG minutes 6/21/17

Remi Forax forax at
Thu Jul 6 20:12:30 UTC 2017

----- Mail original -----
> De: "Paul Sandoz" <paul.sandoz at>
> À: "John Rose" <john.r.rose at>
> Cc: valhalla-spec-experts at
> Envoyé: Jeudi 6 Juillet 2017 22:02:39
> Objet: Re: Valhalla EG minutes 6/21/17

> In terms of what we have today we could easily do:
>  // lookup must have private access to the lookup class, which becomes the “host”
>  class
>  Class<?> defineAnonymousClass(byte[] data)
> is that ending gaining too much?
> That still leaves the possibility of another method in the future say:
>  Class<?> defineClass(boolean isAnon, byte[] data, Object constant)
> That’s a little fuzzy since it’s not clear to me how the generated class locates
> the constant (synthetic static final field of known name? substitute the last
> entry in the CP if appropriately defined in the class bytes as substitutable?).

Lookup.getConstant() with a private Lookup ?

> Paul.


>> On 5 Jul 2017, at 11:43, John Rose <john.r.rose at> wrote:
>> On Jul 5, 2017, at 11:39 AM, Paul Sandoz <paul.sandoz at> wrote:
>>> I was unsure if we require a new method L.defineAnonClass or could leverage the
>>> existing L.defineClass. IIUC for expediency the current hooks in the VM lean
>>> towards anon classes, since there is already code to defer to the host class,
>>> whereas the general defineClass case will likely require more work, although i
>>> can potentially see some short cuts if we focus on VCC/DVT.
>> Good point.  Yes, that part isn't designed yet.  It may manifest as an extra
>> argument or two to the L.dC.
>> At least two degrees of freedom apply there:  1. suppressing the name (no system
>> dictionary update),
>> 2. providing some sort of "user data" to bind to the class (can be a single
>> ref.,  replaces CP patching).
>> For MVT we can just generate a throwaway name, like DVT.getName()+":29348".
> > — John

More information about the valhalla-spec-observers mailing list