Mercurial > hg > truffle
diff truffle/com.oracle.truffle.api/src/com/oracle/truffle/api/Truffle.java @ 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 | d5d416ced577 |
children | dc83cc1f94f2 |
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(); }