John,

Thanks for review!

Updated webrev:
http://cr.openjdk.java.net/~vlivanov/8027827/final/webrev.02/

See my comments inline.

Also, integrated some pending cleanups (e.g. improved selectAlternative 
detection).

Best regards,
Vladimir Ivanov

On 2/24/14 9:46 PM, John Rose wrote:
> On Feb 20, 2014, at 9:57 AM, Vladimir Ivanov
> <vladimir.x.iva...@oracle.com <mailto:vladimir.x.iva...@oracle.com>> wrote:
>
>> Updated webrev:
>> http://cr.openjdk.java.net/~vlivanov/8027827/final/webrev.01/
>>
>> I finally figured out how to make caching work. This webrev contains
>> these changes.
>>
>> I changed LF representation a bit and added 2 auxiliary method handles
>> - argument boxing and wrapping into Object[] and result unboxing.
>> These operations depend on actual type and can't be shared among
>> arbitrary combinators with the same basic type. They are used only
>> during LF interpretation and are completely ignored in compiled LFs.
>
> This is a good step forward, thanks!
>
> Some comments:
>
> I prefer the bounds check expression pos+3 < lambdaForm.names.length.
>   (One integer constant, limit to right.)
Fixed.

> The predicate isGuardWithCatch must test all three subforms.  Or else
> there must be assertions to ensure that names[pos+2] is of the expected
> form.  The problem is that LF's can sometimes be edited (e.g., by
> binding operations) and there is no insurance that your pattern of three
> expressions will be preserved in all cases.
Fixed.

> I see you are trying to do unboxing elimination here; this is not a safe
> or effective way to do it, IMO.  Put in a "FIXME" comment and file a bug
> to deal better with unboxing ops in LFs.  I have some WIP code toward
> this end which we can talk about.  You've probably seen of that
> business, about internally LF marking expressions as intrinsics to guide
> bytecode generation.
Added a comment. Will file a bug once this change is in.

> Why is the logic about cachedLambdaForm commented out?  It looks
> correct, but is there a bug?
I think you looked at a stale version. Latest webrev have caching enabled.
I had some problems with sharing before because boxing/unboxing is 
specific for different types and couldn't be shared among combinators 
with the same basic type.

> Consider replacing GUARD_WITH_CATCH with Lazy.NF_guardWithCatch, and
> using the NF instead of MH for the intrinsic.
Done. Also updated other similar places in MethodHandleInfo.

>
> — John
_______________________________________________
mlvm-dev mailing list
mlvm-dev@openjdk.java.net
http://mail.openjdk.java.net/mailman/listinfo/mlvm-dev

Reply via email to