From 361642edb8982ea4576000c3b3add8e0081c444b Mon Sep 17 00:00:00 2001 From: Lukas Stadler <lukas.stadler@oracle.com> Date: Wed, 7 Feb 2018 17:14:00 +0100 Subject: [PATCH] correct result for environmentName --- .../r/nodes/builtin/base/EnvFunctions.java | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/EnvFunctions.java b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/EnvFunctions.java index 3883d7ba95..1fe793922b 100644 --- a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/EnvFunctions.java +++ b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/EnvFunctions.java @@ -69,6 +69,7 @@ import com.oracle.truffle.r.runtime.RInternalError; import com.oracle.truffle.r.runtime.RRuntime; import com.oracle.truffle.r.runtime.VirtualEvalFrame; import com.oracle.truffle.r.runtime.builtins.RBuiltin; +import com.oracle.truffle.r.runtime.context.RContext; import com.oracle.truffle.r.runtime.data.RAttributable; import com.oracle.truffle.r.runtime.data.RAttributesLayout; import com.oracle.truffle.r.runtime.data.RDataFactory; @@ -88,6 +89,7 @@ import com.oracle.truffle.r.runtime.data.model.RAbstractIntVector; import com.oracle.truffle.r.runtime.data.model.RAbstractStringVector; import com.oracle.truffle.r.runtime.data.model.RAbstractVector; import com.oracle.truffle.r.runtime.env.REnvironment; +import com.oracle.truffle.r.runtime.env.REnvironment.ContextStateImpl; import com.oracle.truffle.r.runtime.env.frame.ActiveBinding; import com.oracle.truffle.r.runtime.env.frame.FrameSlotChangeMonitor; @@ -484,7 +486,20 @@ public class EnvFunctions { } @Specialization + @TruffleBoundary protected String environmentName(REnvironment env) { + ContextStateImpl state = RContext.getInstance().stateREnvironment; + if (env == state.getGlobalEnv()) { + return "R_GlobalEnv"; + } else if (env == state.getBaseEnv()) { + return "base"; + } else if (env == REnvironment.emptyEnv()) { + return "R_EmptyEnv"; + } else if (env.isPackageEnv() != null) { + return env.isPackageEnv(); + } else if (env.isNamespaceEnv()) { + return env.getNamespaceSpec().getDataAt(0); + } return env.getName(); } -- GitLab