"Model 2" prototype implementation
brian.goetz at oracle.com
Sat Aug 8 17:24:28 UTC 2015
Yes, we definitely need some way of expressing that. There's the
obvious autoboxing conversions for concrete primitives / values, but it
needs to be lifted to a general mechanism for conversion between any-T
and Object (for reference types, this is a the identity conversion.)
(IIRC Peter Levart posted a really hacky way to do this a few months
back, which is probably good enough to play with while we're working out
the real story?)
On 8/8/2015 1:15 PM, Vlad Ureche wrote:
> Brian, thanks the explanation!
> I’m very excited that the translation maps 1-to-1 to the Scala
> (in the slide, the function R: Type -> Class is the right side, I called
> it Reference).
> There’s one thing I’d still like to have, if it doesn’t interact badly
> with other features.
> It’s in the same vein as |T.default|, only working inside
> classes/methods with anyfied type parameters:
> |Object T#box(T t) T T#unbox(Object t)v throws InvalidArgumentException |
> The boxing and unboxing operations could be patched in during the
> load-time class specialization (they could be wired to identity in the
> erased class).
> Would you be able to fit this in?
> Thanks a lot and looking forward to the full write-up!
> PS: Normally I’d pick up the prototype and play around instead of asking
> questions, but I’m writing my thesis, interviewing and preparing for
> welcoming a baby, so I’ve got quite a few balls in the air right now.
> On Fri, Aug 7, 2015 at 11:12 PM, Brian Goetz <brian.goetz at oracle.com
> <mailto:brian.goetz at oracle.com>> wrote:
> Yep, that's because we haven't told the whole translation story in
> its full gory detail yet. Stay tuned for the writeup. (Spoiler: it
> has to do with types with multiple avars where some are wildcarded
> and others are not, like Map<int, any>.)
> On 8/7/2015 5:03 PM, Guillaume Martres wrote:
> On Friday 07 August 2015 16:09:14 Brian Goetz wrote:
> Most dispatch on Foo<any> receivers can proceed without
> indy; the
> prototype happens to use it for dispatching all calls on
> receivers, but this is neither necessary nor optimal.
> Can you provide an example where it is necessary? I played a bit
> with the
> prototype but couldn't think of an example where it would.
More information about the valhalla-dev