Mercurial > hg > truffle
changeset 22502:d2b4fe945c23
Add missing Truffle boundary
author | Christian Wimmer <christian.wimmer@oracle.com> |
---|---|
date | Wed, 16 Dec 2015 15:32:23 -0800 |
parents | a63bda98cfdb |
children | 828c67903db2 |
files | truffle/com.oracle.truffle.api.interop/src/com/oracle/truffle/api/interop/GenericObjectAccessNode.java truffle/com.oracle.truffle.api.vm/src/com/oracle/truffle/api/vm/SymbolInvokerImpl.java truffle/com.oracle.truffle.sl/src/com/oracle/truffle/sl/runtime/SLContext.java |
diffstat | 3 files changed, 12 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/truffle/com.oracle.truffle.api.interop/src/com/oracle/truffle/api/interop/GenericObjectAccessNode.java Wed Dec 16 16:38:13 2015 +0100 +++ b/truffle/com.oracle.truffle.api.interop/src/com/oracle/truffle/api/interop/GenericObjectAccessNode.java Wed Dec 16 15:32:23 2015 -0800 @@ -26,6 +26,7 @@ import com.oracle.truffle.api.CallTarget; import com.oracle.truffle.api.CompilerDirectives; +import com.oracle.truffle.api.CompilerDirectives.TruffleBoundary; import com.oracle.truffle.api.Truffle; import com.oracle.truffle.api.frame.VirtualFrame; import com.oracle.truffle.api.nodes.IndirectCallNode; @@ -47,12 +48,18 @@ @Override public Object executeWith(VirtualFrame frame, TruffleObject truffleObject, Object[] arguments) { + final CallTarget ct = findCallTarget(truffleObject); + return indirectCallNode.call(frame, ct, accessArguments.executeCreate(truffleObject, arguments)); + } + + @TruffleBoundary + protected CallTarget findCallTarget(TruffleObject truffleObject) { final ForeignAccess fa = truffleObject.getForeignAccess(); final CallTarget ct = fa.access(access); if (ct == null) { throw messageNotRecognizedException(fa); } - return indirectCallNode.call(frame, ct, accessArguments.executeCreate(truffleObject, arguments)); + return ct; } @CompilerDirectives.TruffleBoundary
--- a/truffle/com.oracle.truffle.api.vm/src/com/oracle/truffle/api/vm/SymbolInvokerImpl.java Wed Dec 16 16:38:13 2015 +0100 +++ b/truffle/com.oracle.truffle.api.vm/src/com/oracle/truffle/api/vm/SymbolInvokerImpl.java Wed Dec 16 15:32:23 2015 -0800 @@ -25,6 +25,7 @@ package com.oracle.truffle.api.vm; import com.oracle.truffle.api.CallTarget; +import com.oracle.truffle.api.CompilerDirectives; import com.oracle.truffle.api.Truffle; import com.oracle.truffle.api.TruffleLanguage; import com.oracle.truffle.api.frame.VirtualFrame; @@ -77,6 +78,7 @@ public Object execute(VirtualFrame frame) { final Object[] args = frame.getArguments(); if (args.length != argumentLength) { + CompilerDirectives.transferToInterpreterAndInvalidate(); throw new ArgumentsMishmashException(); } Object tmp = ForeignAccess.execute(foreignAccess, frame, function, args);
--- a/truffle/com.oracle.truffle.sl/src/com/oracle/truffle/sl/runtime/SLContext.java Wed Dec 16 16:38:13 2015 +0100 +++ b/truffle/com.oracle.truffle.sl/src/com/oracle/truffle/sl/runtime/SLContext.java Wed Dec 16 15:32:23 2015 -0800 @@ -41,6 +41,7 @@ package com.oracle.truffle.sl.runtime; import com.oracle.truffle.api.CallTarget; +import com.oracle.truffle.api.CompilerDirectives.TruffleBoundary; import com.oracle.truffle.api.ExecutionContext; import com.oracle.truffle.api.TruffleLanguage; import com.oracle.truffle.api.dsl.NodeFactory; @@ -258,6 +259,7 @@ * @param name the name of the symbol to search for * @return object representing the symbol or <code>null</code> */ + @TruffleBoundary public Object importSymbol(String name) { Object object = env.importSymbol(name); Object slValue = fromForeignValue(object);