Mercurial > hg > truffle
changeset 22111:8b72dfac5cc7
Allow selecting the TruffleRuntime using a system property
author | Christian Wimmer <christian.wimmer@oracle.com> |
---|---|
date | Wed, 26 Aug 2015 14:39:11 -0700 |
parents | 3b2ae36a942f |
children | 6203830a4f9a |
files | truffle/com.oracle.truffle.api/src/com/oracle/truffle/api/Truffle.java truffle/com.oracle.truffle.api/src/com/oracle/truffle/api/TruffleOptions.java |
diffstat | 2 files changed, 13 insertions(+), 15 deletions(-) [+] |
line wrap: on
line diff
--- a/truffle/com.oracle.truffle.api/src/com/oracle/truffle/api/Truffle.java Tue Aug 25 09:38:50 2015 +0200 +++ b/truffle/com.oracle.truffle.api/src/com/oracle/truffle/api/Truffle.java Wed Aug 26 14:39:11 2015 -0700 @@ -44,16 +44,20 @@ } private static TruffleRuntime initRuntime() { - if (TruffleOptions.ForceInterpreter) { - /* - * Force Truffle to run in interpreter mode even if we have a specialized implementation - * of TruffleRuntime available. - */ - return new DefaultTruffleRuntime(); - } - return AccessController.doPrivileged(new PrivilegedAction<TruffleRuntime>() { public TruffleRuntime run() { + String runtimeClassName = System.getProperty("truffle.TruffleRuntime"); + if (runtimeClassName != null) { + try { + ClassLoader cl = Thread.currentThread().getContextClassLoader(); + Class<?> runtimeClass = Class.forName(runtimeClassName, false, cl); + return (TruffleRuntime) runtimeClass.newInstance(); + } catch (Throwable e) { + // Fail fast for other errors + throw (InternalError) new InternalError().initCause(e); + } + } + TruffleRuntimeAccess access = null; Class<?> servicesClass = null; try { @@ -77,6 +81,7 @@ } } // TODO: try standard ServiceLoader? + if (access != null) { return access.getRuntime(); }
--- a/truffle/com.oracle.truffle.api/src/com/oracle/truffle/api/TruffleOptions.java Tue Aug 25 09:38:50 2015 +0200 +++ b/truffle/com.oracle.truffle.api/src/com/oracle/truffle/api/TruffleOptions.java Wed Aug 26 14:39:11 2015 -0700 @@ -36,13 +36,6 @@ } /** - * Force truffle to run in interpreter mode. - * <p> - * Can be set with {@code -Dtruffle.ForceInterpreter=true}. - */ - public static final boolean ForceInterpreter = Boolean.getBoolean("truffle.ForceInterpreter"); - - /** * Enables/disables the rewriting of traces in the Truffle runtime to stdout. * <p> * Can be set with {@code -Dtruffle.TraceRewrites=true}.