# HG changeset patch # User Christian Wimmer # Date 1440625151 25200 # Node ID 8b72dfac5cc794805cf2a70274a554de7863f990 # Parent 3b2ae36a942ff2f61da7f377c8fc0e48dfa5babd Allow selecting the TruffleRuntime using a system property diff -r 3b2ae36a942f -r 8b72dfac5cc7 truffle/com.oracle.truffle.api/src/com/oracle/truffle/api/Truffle.java --- 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() { 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(); } diff -r 3b2ae36a942f -r 8b72dfac5cc7 truffle/com.oracle.truffle.api/src/com/oracle/truffle/api/TruffleOptions.java --- 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. - *

- * 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. *

* Can be set with {@code -Dtruffle.TraceRewrites=true}.