From c0ea4520678ce353e9bf27988f636a92d65d0459 Mon Sep 17 00:00:00 2001 From: Florian Angerer <florian.angerer@oracle.com> Date: Wed, 22 Nov 2017 12:52:48 +0100 Subject: [PATCH] Disable browser for children contexts. --- .../truffle/r/nodes/builtin/base/BrowserFunctions.java | 6 +++--- .../src/com/oracle/truffle/r/runtime/context/RContext.java | 2 ++ 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/BrowserFunctions.java b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/BrowserFunctions.java index e7ed553b70..2e89f81f2c 100644 --- a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/BrowserFunctions.java +++ b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/BrowserFunctions.java @@ -79,12 +79,12 @@ public class BrowserFunctions { @Specialization protected RNull browser(VirtualFrame frame, Object text, RNull condition, boolean expr, int skipCalls) { if (expr) { - RContext instance = RContext.getInstance(); - if (instance.getKind() == ContextKind.SHARE_NOTHING) { + RContext curContext = RContext.getInstance(); + if (!curContext.isInitial() && curContext.getKind() == ContextKind.SHARE_ALL && curContext.getParent().getKind() == ContextKind.SHARE_NOTHING) { return RNull.instance; } - BrowserState browserState = instance.stateInstrumentation.getBrowserState(); + BrowserState browserState = curContext.stateInstrumentation.getBrowserState(); try { browserState.push(new HelperState(text, condition)); MaterializedFrame mFrame = frame.materialize(); diff --git a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/context/RContext.java b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/context/RContext.java index e5878a1aa3..ae9ee8956e 100644 --- a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/context/RContext.java +++ b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/context/RContext.java @@ -598,6 +598,8 @@ public final class RContext implements RTruffleObject { } state = EnumSet.of(State.DISPOSED); + assert !initial || EvalThread.threadCnt.get() == 0 : "Did not close all children contexts"; + this.allocationReporter.removePropertyChangeListener(ALLOCATION_ACTIVATION_LISTENER); } } -- GitLab