Idea how to implement VT/VO compatibility in JVM

Vitaly Davidovich vitalyd at gmail.com
Thu Jan 22 13:53:05 UTC 2015


Maurizio,

Have you seen this blog post before:
http://joeduffyblog.com/2011/10/23/on-generics-and-some-of-the-associated-overheads/

This is from .NET perspective but I imagine java would be similar.

sent from my phone
On Jan 22, 2015 8:42 AM, "Maurizio Cimadamore" <
maurizio.cimadamore at oracle.com> wrote:

>
> On 22/01/15 13:36, Stéphane Épardaud wrote:
>
>> On 01/22/2015 02:21 PM, Maurizio Cimadamore wrote:
>>
>>> Object o = new ArrayList<Point>();
>>>
>>> where Point is a value class.
>>>
>>> Now,
>>>
>>> o instanceof ArrayList<Point> //?
>>>
>>> Or, as translated by our current prototype:
>>>
>>> o instanceof ArrayList${0=QPoint;} //yes!
>>>
>> And that's good!
>>
>>> But how about:
>>>
>>> o instanceof ArrayList<?> //?
>>>
>> Yes, because it would be also an `instanceof ArrayList<Object>` with my
>> proposal. I know at runtime we end up with two separate classes for
>> `ArrayList<Object>` and `ArrayList<Point>`, but if `ArrayList<Point>` has
>> all the bridge methods to satisfy `ArrayList<Object>` we can make
>> `instanceof ArrayList<?>` return true for any instance of `ArrayList`
>> regardless of value type arguments. So yeah, I agree it's not entirely
>> limited to compiler support and we need some support from the VM, but
>> that's already the case since we expect specialisation to be handled by the
>> VM to generate pseudo-classes.
>>
> That's mostly where I was trying to get at - bridges are a part of your
> approach - but it seems like some other part is missing in order to make
> the approach consistent.
>
>>
>> BTW, aren't you afraid of the proliferation of specialised classes at
>> runtime for the VM? I know PermGen moved away, but still, classes are
>> expensive to load…
>>
> As you might know, I did some work on reification in my early days [1] -
> among the things I found when implementing a JVM with support for
> reification was that in real-world cases, the number of different
> instantiation of the same generic class tends to be quite low. Of course
> this is another area where we need more evidence.
>
> [1] - https://apice.unibo.it/xwiki/bin/view/Theses/MaurizioCimadamorePhd
>
> Maurizio
>
>


More information about the valhalla-dev mailing list