/* private class EdgeCounter : FieldTraverser { private int count = 0; public override void DoTraversal(Object field) { throw new ApplicationException("EdgePrinter should never traverse non Ptrs"); } public override void DoTraversal(Pointer ptr) { if(ptr == 0u) return; count ++; } public void reset(){count = 0;} public int edgeCount(){return count;} } */ public static void TraverseHeap(StateImpl state, FieldTraverser edge, FieldTraverser node) { heapQueue = new Queue(); seen = new Hashtable(); ReferenceTraverser et = new ReferenceTraverser(state, edge); state.TraverseGlobalReferences(et); for (int i = 0; i < state.NumProcesses; i++) { Process p = state.GetProcess(i); for (ZingMethod m = p.TopOfStack; m != null; m = m.Caller) { m.TraverseFields(et); } } while (heapQueue.Count > 0) { Pointer ptr = (Pointer)heapQueue.Dequeue(); if (node != null) node.DoTraversal(ptr); HeapEntry he = (HeapEntry)state.Heap[ptr]; he.heList.TraverseFields(et); } }
public override void TraverseFields(FieldTraverser ft) { ft.DoTraversal(this.TypeId); // For each non-static field: // Insert statement template "WriteSimpleField" or "WriteComplexField" }
public override void TraverseFields(FieldTraverser ft) { ft.DoTraversal(this.TypeId); ft.DoTraversal(this.Count); foreach (_ElementType x in this.ArrayList) x.TraverseFields(ft); //ft.DoTraversal(x); }
public void TraverseFields(FieldTraverser ft) { }
public override void TraverseFields(FieldTraverser ft) { ft.DoTraversal(typeId); ft.DoTraversal(nextBlock); ft.DoTraversal(privThis); // emit for each member of locals, inputs and outputs inputs.TraverseFields(ft); outputs.TraverseFields(ft); locals.TraverseFields(ft); }
public void TraverseFields(FieldTraverser ft) { // Emit a ft.DoTraversal() call for each member }
public override void TraverseFields(FieldTraverser ft) { ft.DoTraversal(this.TypeId); ft.DoTraversal(this.Count); foreach (_ElementType x in this.Queue) ft.DoTraversal(x); }
public HeapElementPrinter(StateImpl s) { state = s; nodeTrav = new NodePrinter(this); edgeTrav = new EdgePrinter(this); }
public ReferenceTraverser(StateImpl s, FieldTraverser e) { state = s; perEdgeTraverser = e; }
public abstract void TraverseFields(FieldTraverser ft);
public override void TraverseFields(FieldTraverser ft) { ft.DoTraversal(UnallocatedWrites); //ft.DoTraversal(member); }