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