private boolean doesItRequireFrame(IRScope scope, boolean bindingHasEscaped) { boolean requireFrame = bindingHasEscaped || scope.usesEval(); for (IRFlags flag : scope.getFlags()) { switch (flag) { case BINDING_HAS_ESCAPED: case CAN_CAPTURE_CALLERS_BINDING: case REQUIRES_FRAME: case REQUIRES_VISIBILITY: case USES_BACKREF_OR_LASTLINE: case USES_EVAL: case USES_ZSUPER: requireFrame = true; } } return requireFrame; }