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() {