Mercurial > hg > truffle
diff truffle/com.oracle.truffle.sl/src/com/oracle/truffle/sl/runtime/SLFunctionForeignAccess.java @ 22118:31eb066d75ac
Usage of CompilerDirectives in ForeignAccess is wrong, as calls to ForeignAccess can only happen on slow path as shown by 7646278cca8a
author | Jaroslav Tulach <jaroslav.tulach@oracle.com> |
---|---|
date | Mon, 31 Aug 2015 09:01:36 +0200 |
parents | ce5495c70de4 |
children | e70b20f4bb00 |
line wrap: on
line diff
--- a/truffle/com.oracle.truffle.sl/src/com/oracle/truffle/sl/runtime/SLFunctionForeignAccess.java Sat Aug 29 01:34:41 2015 +0200 +++ b/truffle/com.oracle.truffle.sl/src/com/oracle/truffle/sl/runtime/SLFunctionForeignAccess.java Mon Aug 31 09:01:36 2015 +0200 @@ -41,16 +41,14 @@ package com.oracle.truffle.sl.runtime; import com.oracle.truffle.api.*; -import com.oracle.truffle.api.CompilerDirectives.*; import com.oracle.truffle.api.frame.VirtualFrame; -import com.oracle.truffle.api.nodes.RootNode; -import com.oracle.truffle.api.interop.TruffleObject; import com.oracle.truffle.api.interop.ForeignAccess; import com.oracle.truffle.api.interop.Message; +import com.oracle.truffle.api.interop.TruffleObject; +import com.oracle.truffle.api.nodes.RootNode; import com.oracle.truffle.sl.SLLanguage; import com.oracle.truffle.sl.nodes.call.SLDispatchNode; import com.oracle.truffle.sl.nodes.call.SLDispatchNodeGen; - import java.math.BigInteger; import java.util.List; @@ -58,14 +56,8 @@ * Implementation of foreign access for {@link SLFunction}. */ final class SLFunctionForeignAccess implements ForeignAccess.Factory { - @CompilationFinal private static ForeignAccess singleton; - - public static ForeignAccess getSingleton() { - if (singleton == null) { - CompilerDirectives.transferToInterpreterAndInvalidate(); - singleton = ForeignAccess.create(new SLFunctionForeignAccess()); - } - return singleton; + public static ForeignAccess create() { + return ForeignAccess.create(new SLFunctionForeignAccess()); } private SLFunctionForeignAccess() {