jdk7 b58, VM doesn't smell good
John Rose
John.Rose at Sun.COM
Tue May 12 17:07:54 PDT 2009
On May 12, 2009, at 4:55 PM, Rémi Forax wrote:
> Ok, that why I haven't found that bug before b58 because
> my old tests was also on the boot class path.
Yep, I'm in the same boat; I've been living out of incremental builds
and -Xbcp options for a long time. It has been a scramble for me in
M3 (b58 and b59) to recover from the unforeseen effects of "hatching"
out of the BCP and into a real class loader.
> So this is a another workaround, put all your app on the boot class
> path.
Yep, for now it is.
>> I don't see that there's a cleanup to be done at this point in the
>> API.\
>
> The VM doesn't differentiate a Java anonymous class from a standard
> class,
> so it seems there is no way to improve the API.
Yes, unless there's a way to express the programmer's intention about
the class. That's the main reason why MHs.bind is there.
Or, I keep thinking there's room for a feature in the API which takes
a class (maybe a concrete anonymous class) and walks up the supertype
lattice looking for a supertype which is accessible to the guy doing
the lookup.
>
>> ... it would be a long stretch to call these conversions subtype
>> relations.
>>
>
> The downside of that is that the only way to implement Neal's closure
> type system with the current spec is to erase all Method handle type
> (with convert) just after the creation of a method handle.
Yes, but he was expecting to do that anyway. I've had some
interesting 1-1 conversations with Neal lately about MHs and closures;
the semantic gap is not as bad as I thought it might be.
> About the slow down effect, It can be removed by allowing the two way
> (John's one and Fredrik's one) to call a method handle:
> MethodHandle.invoke() that performs a single pointer check and
> MethodHandle.apply() that performs a less restrictive/more expensive
> check.
Well, that's what MHs.invoke is for! See the latest javadoc, which I
just posted:
http://cr.openjdk.java.net/~jrose/pres/indy-javadoc-b59/
(And, I've taken some pains to make it reasonably fast.)
-- John
More information about the mlvm-dev
mailing list