Mercurial > hg > truffle
changeset 22113:0aad723479e8
Merge
author | Christian Wimmer <christian.wimmer@oracle.com> |
---|---|
date | Wed, 26 Aug 2015 14:49:11 -0700 |
parents | c2cb9f1c8688 (current diff) 6203830a4f9a (diff) |
children | 2482183730b8 |
files | |
diffstat | 3 files changed, 14 insertions(+), 16 deletions(-) [+] |
line wrap: on
line diff
--- a/truffle/com.oracle.truffle.api.interop/src/com/oracle/truffle/api/interop/ObjectAccessNode.java Wed Aug 26 15:22:31 2015 +0200 +++ b/truffle/com.oracle.truffle.api.interop/src/com/oracle/truffle/api/interop/ObjectAccessNode.java Wed Aug 26 14:49:11 2015 -0700 @@ -46,8 +46,8 @@ ForeignObjectAccessHeadNode nthParent = (ForeignObjectAccessHeadNode) NodeUtil.getNthParent(this, cacheLength); ObjectAccessNode first = nthParent.getFirst(); if (cacheLength < CACHE_SIZE) { + CachedObjectAccessNode createCachedAccess = createCachedAccess(receiver, nthParent.getAccessTree(), first); cacheLength++; - CachedObjectAccessNode createCachedAccess = createCachedAccess(receiver, nthParent.getAccessTree(), first); return first.replace(createCachedAccess).executeWith(frame, receiver, arguments); } else { return first.replace(createGenericAccess(nthParent.getAccessTree())).executeWith(frame, receiver, arguments);
--- a/truffle/com.oracle.truffle.api/src/com/oracle/truffle/api/Truffle.java Wed Aug 26 15:22:31 2015 +0200 +++ b/truffle/com.oracle.truffle.api/src/com/oracle/truffle/api/Truffle.java Wed Aug 26 14:49: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 Wed Aug 26 15:22:31 2015 +0200 +++ b/truffle/com.oracle.truffle.api/src/com/oracle/truffle/api/TruffleOptions.java Wed Aug 26 14:49: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}.