> On 17 Oct 2016, at 16:36, John Rose <john.r.r...@oracle.com> wrote:
> 
> On Oct 17, 2016, at 3:38 PM, Paul Sandoz <paul.san...@oracle.com> wrote:
>> 
>> 
>>> On 17 Oct 2016, at 15:01, Stuart Marks <stuart.ma...@oracle.com> wrote:
>>> 
>>> Hi Paul,
>>> 
>>> I took a look at the jdk changes. They look good to me.
>>> 
>>> One section of code gave me pause, which is the throw of ClassCastException 
>>> at 339 of CallSite.java, and the throw of the exception returned from 
>>> wrongTargetType() at 344 of CallSite.java. This appears odd given the 
>>> "rethrow any Error and wrap anything else in BSME" rule. But these throws 
>>> are caught by the catch of Throwable below, which does the wrap and throw 
>>> of BSME.
>>> 
>>> This arrangement was already present in the code.
>>> 
>>> Usually I wrinkle my nose at a throw that's caught by a catch clause later 
>>> on, but in this case it's not obvious what would be better. Maybe a comment 
>>> is warranted?
>> 
>> In addition to the
>> 
>> // See the "Linking Exceptions" section for the invokedynamic
>> // instruction in JVMS 6.5.
>> 
>> I can add something like:
>> 
>> // Throws a runtime exception defining the cause that is then later wrapped 
>> in BootstrapMethodError
> 
> I agree.  Maybe s/later/in the "catch (Throwable ex)" a few lines below"/, to 
> be more specific.
> 

Thanks, updated in place.


> I think the throw-to-catch is good here, unusually, because it funnels all 
> BSME-wrapped
> exceptions through one point.  That may make somebody's day easier when 
> placing breakpoints.
> 

> The upgraded BootstrapMethodErrorTest.java is really, really good.
> 
> Overall, I am *delighted* to see this little mess cleaned up.  It makes indy 
> linkage approximately as
> transparent to errors as the other invocation instructions, making it a 
> better replacement for them.
> 

Another patch will follow soon for the MH/VH linking (and general j.l.invoke 
code) unduly wrapping Errors.

Thanks,
Paul.

> Thanks a million!  Reviewed.
> 
> — John

Reply via email to