protected boolean doVisit(CAstNode n, WalkContext cntxt, CAstVisitor<WalkContext> visitor) { WalkContext context = (WalkContext) cntxt; switch (n.getKind()) { case CAstNode.TYPE_OF: { int result = context.currentScope().allocateTempValue(); this.visit(n.getChild(0), context, this); int ref = context.getValue(n.getChild(0)); context .cfg() .addInstruction(((JSInstructionFactory) insts).TypeOfInstruction(result, ref)); context.setValue(n, result); return true; } case JavaScriptCAstNode.ENTER_WITH: case JavaScriptCAstNode.EXIT_WITH: { this.visit(n.getChild(0), context, this); int ref = context.getValue(n.getChild(0)); context .cfg() .addInstruction( ((JSInstructionFactory) insts) .WithRegion(ref, n.getKind() == JavaScriptCAstNode.ENTER_WITH)); return true; } default: { return false; } } }
protected boolean visitInstanceOf(CAstNode n, WalkContext c, CAstVisitor<WalkContext> visitor) { WalkContext context = (WalkContext) c; int result = context.currentScope().allocateTempValue(); context.setValue(n, result); return false; }