On Sep 19, 2013, at 9:57 AM, David Chase <david.r.ch...@oracle.com> wrote:

> Recommended changes made:
> 
> http://cr.openjdk.java.net/~drchase/8022701/webrev.04/

Good; reviewed.

Consider adding this tweak, which would close the loop on alternation between 
the fooError and fooException versions:

+    static private void initCauseFrom(Error err, Exception ex) {
+        Throwable th = ex.getCause();
++      if (err.getClass().isInstance(th))  throw (Error) th;
+        err.initCause(th == null ? ex : th);
+    }

E.g., if the reason for linkage failure was originally NoSuchMethodError, but 
was mapped to NoSuchMethodException (which can happen in 
MemberName.makeAccessException) then the original NoSuchMethodError is 
extracted and thrown, rather than a new NoSuchMethodError which wraps the 
original NoSuchMethodError.

> Test with jtreg (for pass and for induced failure) on MacOS,
> not sure what additional other testing is desired since it is entirely in the 
> libraries.

Your test case is enough.

> I included code to handle the case of a broken field-referencing methodhandle,
> but did not test it because there's no syntax for these in Java, nor is their 
> creation
> well-documented.

That's fine.  Ship it, preferably with the tweak above.

— John

Reply via email to