diff --git a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/env/frame/FrameSlotChangeMonitor.java b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/env/frame/FrameSlotChangeMonitor.java index a4c446d704934f2d6bb8b4254d852457b6220824..47d82e72ec4d51d22f415a1e825236a9454ed16c 100644 --- a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/env/frame/FrameSlotChangeMonitor.java +++ b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/env/frame/FrameSlotChangeMonitor.java @@ -374,14 +374,15 @@ public final class FrameSlotChangeMonitor { invalidateAllNames(target); FrameDescriptor oldEnclosingDescriptor = target.getEnclosingFrameDescriptor(); - assert (oldEnclosingDescriptor == null) == (oldEnclosingFrame == null) : "mismatch " + oldEnclosingDescriptor + " / " + oldEnclosingFrame; + FrameDescriptor newEnclosingDescriptor = handleBaseNamespaceEnv(newEnclosingFrame); + assert newEnclosingDescriptor == oldEnclosingDescriptor || (oldEnclosingDescriptor == null) == (oldEnclosingFrame == null) : "mismatch " + oldEnclosingDescriptor + " / " + oldEnclosingFrame; if (oldEnclosingDescriptor != null) { - assert oldEnclosingDescriptor == oldEnclosingFrame.getFrameDescriptor() : "mismatch " + oldEnclosingDescriptor + " / " + oldEnclosingFrame.getFrameDescriptor(); + assert newEnclosingDescriptor == oldEnclosingDescriptor || oldEnclosingDescriptor == oldEnclosingFrame.getFrameDescriptor() : "mismatch " + oldEnclosingDescriptor + " / " + + oldEnclosingFrame.getFrameDescriptor(); FrameDescriptorMetaData oldEnclosing = getMetaData(oldEnclosingDescriptor); oldEnclosing.subDescriptors.remove(descriptor); } - FrameDescriptor newEnclosingDescriptor = handleBaseNamespaceEnv(newEnclosingFrame); target.updateEnclosingFrameDescriptor(newEnclosingDescriptor); if (newEnclosingDescriptor != null) {