public void Visit(ASTNode_SetVar node) { if (node.address is GlobalAddress) { JITInterpreter_DS.Instance().BeginEmitPopGlobal(mILGenerator, (GlobalAddress)node.address); mTailCallFlags.Push(false); node.rightNode.AcceptVisitor(this); mTailCallFlags.Pop(); JITInterpreter_DS.Instance().EndEmitPopGlobal(mILGenerator, (GlobalAddress)node.address); } else if (node.address is LocalAddress) { BeginEmitPopLocal((LocalAddress)node.address); mTailCallFlags.Push(false); node.rightNode.AcceptVisitor(this); mTailCallFlags.Pop(); EndEmitPopLocal((LocalAddress)node.address); } else { var context = BeginEmitPopFree((FreeAddress)node.address); mTailCallFlags.Push(false); node.rightNode.AcceptVisitor(this); mTailCallFlags.Pop(); EndEmitPopFree((FreeAddress)node.address, context); } mILGenerator.Emit(OpCodes.Ldnull); }
public void Visit(ASTNode_SetVar node) { if (node.address is FreeAddress) { BodyFreeAddresses.Add((FreeAddress)node.address); } node.rightNode.AcceptVisitor(this); }
public void Visit(ASTNode_SetVar node) { node.rightNode.AcceptVisitor(this); Env.SetVar(mEnv, node.address, Value); Value = null; }
public void Visit(ASTNode_SetVar node) { if (node.address is GlobalAddress) { JITInterpreter_DS2.Instance().BeginEmitPopGlobal(mILGenerator, (GlobalAddress)node.address); mTaillCallFlags.Push(false); node.rightNode.AcceptVisitor(this); mTaillCallFlags.Pop(); JITInterpreter_DS2.Instance().EndEmitPopGlobal(mILGenerator, (GlobalAddress)node.address); } else if (node.address is LocalAddress) { BeginEmitPopLocal((LocalAddress)node.address); mTaillCallFlags.Push(false); node.rightNode.AcceptVisitor(this); mTaillCallFlags.Pop(); EndEmitPopLocal((LocalAddress)node.address); } else { BeginEmitPopFree((FreeAddress)node.address); mTaillCallFlags.Push(false); node.rightNode.AcceptVisitor(this); mTaillCallFlags.Pop(); EndEmitPopFree((FreeAddress)node.address); } mILGenerator.Emit(OpCodes.Ldnull); }