001    /*
002     *  This file is part of the Jikes RVM project (http://jikesrvm.org).
003     *
004     *  This file is licensed to You under the Eclipse Public License (EPL);
005     *  You may not use this file except in compliance with the License. You
006     *  may obtain a copy of the License at
007     *
008     *      http://www.opensource.org/licenses/eclipse-1.0.php
009     *
010     *  See the COPYRIGHT.txt file distributed with this work for information
011     *  regarding copyright ownership.
012     */
013    package org.jikesrvm.compilers.opt.dfsolver;
014    
015    import java.util.Iterator;
016    
017    import org.jikesrvm.compilers.opt.util.GraphNode;
018    
019    /**
020     * Represents a single lattice cell in a dataflow equation system.
021     */
022    public interface DF_LatticeCell extends GraphNode {
023    
024      /**
025       * Returns an enumeration of the equations in which this
026       * lattice cell is used.
027       * @return an enumeration of the equations in which this
028       * lattice cell is used
029       */
030      Iterator<DF_Equation> getUses();
031    
032      /**
033       * Returns an enumeration of the equations in which this
034       * lattice cell is defined.
035       * @return an enumeration of the equations in which this
036       * lattice cell is defined
037       */
038      Iterator<DF_Equation> getDefs();
039    
040      /**
041       * Return a string representation of the cell
042       * @return a string representation of the cell
043       */
044      @Override
045      String toString();
046    
047      /**
048       * Note that this variable appears on the RHS of an equation
049       *
050       * @param eq the equation
051       */
052      void addUse(DF_Equation eq);
053    
054      /**
055       * Note that this variable appears on the LHS of an equation
056       *
057       * @param eq the equation
058       */
059      void addDef(DF_Equation eq);
060    }
061    
062    
063