1 cananian 1.1.2.3 // BackwardDataFlowQuadVisitor.java, created Wed Mar 10 9:00:53 1999 by jwhaley 2 cananian 1.1.2.5 // Copyright (C) 1998 John Whaley <jwhaley@alum.mit.edu> 3 cananian 1.1.2.2 // Licensed under the terms of the GNU GPL; see COPYING for details. 4 jwhaley 1.1.2.1 package harpoon.Analysis.DataFlow; 5 jwhaley 1.1.2.1 6 jwhaley 1.1.2.1 import java.util.Enumeration; 7 jwhaley 1.1.2.1 import harpoon.Util.Worklist; 8 cananian 1.1.2.4 import harpoon.IR.Quads.Quad; 9 jwhaley 1.1.2.1 /** 10 jwhaley 1.1.2.1 * BackwardDataFlowQuadVisitor 11 jwhaley 1.1.2.1 * 12 cananian 1.1.2.5 * @author John Whaley <jwhaley@alum.mit.edu> 13 cananian 1.2 * @version $Id: BackwardDataFlowQuadVisitor.java,v 1.2 2002/02/25 20:56:36 cananian Exp $ 14 jwhaley 1.1.2.1 */ 15 jwhaley 1.1.2.1 16 jwhaley 1.1.2.1 public abstract class BackwardDataFlowQuadVisitor extends DataFlowQuadVisitor { 17 jwhaley 1.1.2.1 18 jwhaley 1.1.2.1 public void addSuccessors(Worklist W, Quad q) { 19 jwhaley 1.1.2.1 if (DEBUG) db("adding predecessors of "+q+" to worklist"); 20 jwhaley 1.1.2.1 for (int i=0, n=q.prevLength(); i<n; ++i) { 21 jwhaley 1.1.2.1 Quad qn = q.prev(i); 22 jwhaley 1.1.2.1 if (DEBUG) db("looking at "+qn+" -> "+q); 23 jwhaley 1.1.2.1 if (merge(q, qn)) { 24 jwhaley 1.1.2.1 if (DEBUG) db("added "+qn+" to the work queue because its out set changed"); 25 jwhaley 1.1.2.1 W.push(qn); // out set changed -- need to revisit target node 26 jwhaley 1.1.2.1 } 27 jwhaley 1.1.2.1 } 28 jwhaley 1.1.2.1 } 29 jwhaley 1.1.2.1 30 cananian 1.2 }