RFR: 8201274: Launch Single-File Source-Code Programs (original) (raw)

mandy chung mandy.chung at oracle.com
Fri Apr 13 05:20:14 UTC 2018


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.

Mandy



More information about the build-dev mailing list