Example #1
0
 protected override void VisitStoreVar(StoreVar downNode, object o)
 {
     PointerValue ptr = new PointerToLocationValue(this.state.Pool[downNode.Var]);
     this.storeVar(downNode, ptr, o);
 }
Example #2
0
 protected override void VisitLift(Lift downNode, object o)
 {
     PointerToNode ptrUpNode = (o as Data).PointerToNode;
     LiftTask task = downNode.Task;
     if (task is StackLiftTask)
     {
         int depth = (task as StackLiftTask).Depth;
         ptrUpNode = new PointerToNode(ptrUpNode.Node = SpecializingVisitor.liftValue(this.state.Stack[depth]));
         this.state.Stack.RemoveAt(depth);
     }
     else
     {
         Variable var = (task as VariableLiftTask).Variable;
         ptrUpNode = new PointerToNode(ptrUpNode.Node = SpecializingVisitor.liftValue(this.state.Pool[var].Val));
         PointerValue ptr = new PointerToLocationValue(this.state.Pool[var]);
         ptrUpNode = new PointerToNode(ptrUpNode.Node = new StoreVar(this.varsHash[ptr]));
         ptr.SetZeroValue();
     }
     this.AddTask(downNode.Next, ptrUpNode);
 }