diff --git a/com.oracle.truffle.r.ffi.impl/src/com/oracle/truffle/r/ffi/impl/nodes/RfEvalNode.java b/com.oracle.truffle.r.ffi.impl/src/com/oracle/truffle/r/ffi/impl/nodes/RfEvalNode.java
index 87225b56dc2535805b35f51ed13a93aa69105fbb..cd6d41817b4d91f61a22c6ba51876a49930b52da 100644
--- a/com.oracle.truffle.r.ffi.impl/src/com/oracle/truffle/r/ffi/impl/nodes/RfEvalNode.java
+++ b/com.oracle.truffle.r.ffi.impl/src/com/oracle/truffle/r/ffi/impl/nodes/RfEvalNode.java
@@ -141,7 +141,11 @@ public abstract class RfEvalNode extends FFIUpCallNode.Arg2 {
         if (envIsNullProfile.profile(envArg == RNull.instance)) {
             return REnvironment.globalEnv(RContext.getInstance());
         } else if (envArg instanceof REnvironment) {
-            return (REnvironment) envArg;
+            REnvironment env = (REnvironment) envArg;
+            if (env == REnvironment.emptyEnv()) {
+                return RContext.getInstance().stateREnvironment.getEmptyDummy();
+            }
+            return env;
         }
         CompilerDirectives.transferToInterpreter();
         throw RError.error(RError.NO_CALLER, ARGUMENT_NOT_ENVIRONMENT);
diff --git a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/env/REnvironment.java b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/env/REnvironment.java
index 1253a0a8091e54e81e3e8f2c06ff270a0cab5b43..190728124225092bfda16e1990049e4a3ca6a66a 100644
--- a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/env/REnvironment.java
+++ b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/env/REnvironment.java
@@ -124,8 +124,12 @@ public abstract class REnvironment extends RAttributeStorage {
         @CompilationFinal private SearchPath searchPath;
         @CompilationFinal private MaterializedFrame parentGlobalFrame; // SHARED_PARENT_RW only
 
+        @CompilationFinal private REnvironment emptyDummy; // used when evaluating in emptyenv
+
         private ContextStateImpl(MaterializedFrame globalFrame) {
             this.globalFrame = globalFrame;
+            this.emptyDummy = RDataFactory.createNewEnv(null, false, 0);
+            RArguments.initializeEnclosingFrame(this.emptyDummy.getFrame(), null);
         }
 
         public REnvironment getGlobalEnv() {
@@ -144,6 +148,10 @@ public abstract class REnvironment extends RAttributeStorage {
             return baseEnv;
         }
 
+        public REnvironment getEmptyDummy() {
+            return emptyDummy;
+        }
+
         public REnvironment getBaseNamespace() {
             return baseEnv.getNamespace();
         }