On 4/13/18 4:15 AM, Jonathan Gibbons wrote:
Please review an initial implementation for the feature described in
JEP 330: Launch Single-File Source-Code Programs.

The work is described in the JEP and CSR, and falls into various parts:

 * The part to handle the new command-line options is in the native
   Java launcher code.
 * The part to invoke the compiler and subsequently execute the code
   found in the source file is in a new class in the jdk.compiler module.
 * There are some minor Makefile changes, to add support for a new
   resource file.

There are no changes to javac itself.

JEP: http://openjdk.java.net/jeps/330
JBS: https://bugs.openjdk.java.net/browse/JDK-8201274
CSR: https://bugs.openjdk.java.net/browse/JDK-8201275
Webrev: http://cr.openjdk.java.net/~jjg/8201274/webrev.00/

This looks quite good to me.  One small comment on the source launcher Main class:

 122         } catch (InvocationTargetException e) {
 123             // leave VM to handle the stacktrace, in the standard manner
 124             throw e.getTargetException();
 125         }

 387         } catch (InvocationTargetException e) {
 388             // remove stack frames for source launcher
 389             int invocationFrames = e.getStackTrace().length;
 390             Throwable target = e.getTargetException();
 391             StackTraceElement[] targetTrace = target.getStackTrace();
 392             target.setStackTrace(Arrays.copyOfRange(targetTrace, 0, 
targetTrace.length - invocationFrames));
 393             throw e;
 394         }

This could simply throw target instead of the InvocationTargetException
and then the main method can propagate the target, if thrown.


Reply via email to