[MINOR] Cleanup hop visit status and its usage, remove hop print

The hop visit status - used for memoization on dag traversal - was
originally multi-valued but later reduced to binary states. This patch
replaces the visit status with a simple boolean variable which
simplifies its usage. Furthermore, this patch also removes the hop
printme debug output as it's superseded by the hop explain.


Project: http://git-wip-us.apache.org/repos/asf/incubator-systemml/repo
Commit: 
http://git-wip-us.apache.org/repos/asf/incubator-systemml/commit/8936e4f8
Tree: http://git-wip-us.apache.org/repos/asf/incubator-systemml/tree/8936e4f8
Diff: http://git-wip-us.apache.org/repos/asf/incubator-systemml/diff/8936e4f8

Branch: refs/heads/master
Commit: 8936e4f8a2c58261bc685b2921cf19c9cfc90bdd
Parents: e449cae
Author: Matthias Boehm <[email protected]>
Authored: Sat Mar 4 21:28:57 2017 -0800
Committer: Matthias Boehm <[email protected]>
Committed: Sat Mar 4 21:28:57 2017 -0800

----------------------------------------------------------------------
 .../java/org/apache/sysml/api/DMLScript.java    |  23 ----
 .../java/org/apache/sysml/hops/AggBinaryOp.java |  17 ---
 .../java/org/apache/sysml/hops/AggUnaryOp.java  |  14 ---
 .../java/org/apache/sysml/hops/BinaryOp.java    |  14 ---
 .../org/apache/sysml/hops/ConvolutionOp.java    |  16 ---
 .../java/org/apache/sysml/hops/DataGenOp.java   |  13 --
 src/main/java/org/apache/sysml/hops/DataOp.java |  17 ---
 src/main/java/org/apache/sysml/hops/Hop.java    |  66 +++-------
 .../java/org/apache/sysml/hops/IndexingOp.java  |  10 --
 .../org/apache/sysml/hops/LeftIndexingOp.java   |  11 --
 .../java/org/apache/sysml/hops/LiteralOp.java   |  31 -----
 .../java/org/apache/sysml/hops/MemoTable.java   |   5 +-
 .../java/org/apache/sysml/hops/MultipleOp.java  |  13 --
 .../sysml/hops/ParameterizedBuiltinOp.java      |  13 --
 .../org/apache/sysml/hops/QuaternaryOp.java     |  13 --
 .../java/org/apache/sysml/hops/ReorgOp.java     |  16 ---
 .../java/org/apache/sysml/hops/TernaryOp.java   |  13 --
 .../java/org/apache/sysml/hops/UnaryOp.java     |  13 --
 .../sysml/hops/globalopt/GDFEnumOptimizer.java  |   3 +-
 .../sysml/hops/ipa/InterProceduralAnalysis.java |  21 ++--
 .../hops/recompile/LiteralReplacement.java      |   5 +-
 .../apache/sysml/hops/recompile/Recompiler.java |  21 ++--
 .../sysml/hops/rewrite/HopDagValidator.java     |   4 +-
 .../sysml/hops/rewrite/HopRewriteUtils.java     |   9 +-
 .../RewriteAlgebraicSimplificationDynamic.java  |   4 +-
 .../RewriteAlgebraicSimplificationStatic.java   |   4 +-
 .../rewrite/RewriteBlockSizeAndReblock.java     |   4 +-
 .../RewriteCommonSubexpressionElimination.java  |   8 +-
 .../hops/rewrite/RewriteCompressedReblock.java  |   4 +-
 .../hops/rewrite/RewriteConstantFolding.java    |   5 +-
 .../rewrite/RewriteIndexingVectorization.java   |   4 +-
 .../RewriteInjectSparkPReadCheckpointing.java   |   4 +-
 .../RewriteMatrixMultChainOptimization.java     |  12 +-
 .../RewriteRemovePersistentReadWrite.java       |   5 +-
 .../rewrite/RewriteRemoveReadAfterWrite.java    |   4 +-
 .../rewrite/RewriteRemoveUnnecessaryCasts.java  |   5 +-
 .../RewriteSplitDagDataDependentOperators.java  |  29 +++--
 .../rewrite/RewriteSplitDagUnknownCSVRead.java  |   5 +-
 .../org/apache/sysml/parser/DMLTranslator.java  | 102 ---------------
 .../parfor/opt/OptTreeConverter.java            |   5 +-
 .../parfor/opt/OptTreePlanChecker.java          |   5 +-
 .../parfor/opt/OptimizerRuleBased.java          | 124 +++++++++----------
 .../parfor/opt/ProgramRecompiler.java           |   9 +-
 .../java/org/apache/sysml/utils/Explain.java    |   8 +-
 .../sysml/yarn/ropt/GridEnumerationMemory.java  |   4 +-
 .../sysml/yarn/ropt/ResourceOptimizer.java      |   6 +-
 46 files changed, 167 insertions(+), 574 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/8936e4f8/src/main/java/org/apache/sysml/api/DMLScript.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/api/DMLScript.java 
b/src/main/java/org/apache/sysml/api/DMLScript.java
index 25c03ea..97597e0 100644
--- a/src/main/java/org/apache/sysml/api/DMLScript.java
+++ b/src/main/java/org/apache/sysml/api/DMLScript.java
@@ -587,28 +587,11 @@ public class DMLScript
                dmlt.validateParseTree(prog);
                dmlt.constructHops(prog);
                
-               if (LOG.isDebugEnabled()) {
-                       LOG.debug("\n********************** HOPS DAG (Before 
Rewrite) *******************");
-                       dmlt.printHops(prog);
-                       DMLTranslator.resetHopsDAGVisitStatus(prog);
-               }
-               
                //init working directories (before usage by following 
compilation steps)
                initHadoopExecution( dmlconf );
        
                //Step 5: rewrite HOP DAGs (incl IPA and memory estimates)
                dmlt.rewriteHopsDAG(prog);
-               
-               if (LOG.isDebugEnabled()) {
-                       LOG.debug("\n********************** HOPS DAG (After 
Rewrite) *******************");
-                       dmlt.printHops(prog);
-                       DMLTranslator.resetHopsDAGVisitStatus(prog);
-               
-                       LOG.debug("\n********************** OPTIMIZER 
*******************\n" + 
-                                 "Level = " + OptimizerUtils.getOptLevel() + 
"\n"
-                                        +"Available Memory = " + 
((double)InfrastructureAnalyzer.getLocalMaxMemory()/1024/1024) + " MB" + "\n"
-                                        +"Memory Budget = " + 
((double)OptimizerUtils.getLocalMemBudget()/1024/1024) + " MB" + "\n");
-               }
 
                //Step 5.1: Generate code for the rewrited Hop dags 
                if( dmlconf.getBooleanValue(DMLConfig.CODEGEN) ){
@@ -616,12 +599,6 @@ public class DMLScript
                        SpoofCompiler.ALWAYS_COMPILE_LITERALS = 
(dmlconf.getIntValue(DMLConfig.CODEGEN_LITERALS)==2);
                        
                        dmlt.codgenHopsDAG(prog);
-                       
-                       if (LOG.isDebugEnabled()) {
-                               LOG.debug("\n********************** HOPS DAG 
(After Codegen) *******************");
-                               dmlt.printHops(prog);
-                               
-                       }
                }
                
                //Step 6: construct lops (incl exec type and op selection)

http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/8936e4f8/src/main/java/org/apache/sysml/hops/AggBinaryOp.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/hops/AggBinaryOp.java 
b/src/main/java/org/apache/sysml/hops/AggBinaryOp.java
index dd9182d..ac17ef2 100644
--- a/src/main/java/org/apache/sysml/hops/AggBinaryOp.java
+++ b/src/main/java/org/apache/sysml/hops/AggBinaryOp.java
@@ -282,23 +282,6 @@ public class AggBinaryOp extends Hop implements 
MultiThreadedHop
                                HopsOpOp2String.get(innerOp)+")";
                return s;
        }
-
-       public void printMe() throws HopsException {
-               if (LOG.isDebugEnabled()){
-                       if (getVisited() != VisitStatus.DONE) {
-                               super.printMe();
-                               LOG.debug("  InnerOperation: " + innerOp);
-                               LOG.debug("  OuterOperation: " + outerOp);
-                               for (Hop h : getInput()) {
-                                       h.printMe();
-                               }
-                               ;
-                       }
-                       setVisited(VisitStatus.DONE);
-               }
-       }
-
-       
        
        @Override
        public void computeMemEstimate(MemoTable memo) 

http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/8936e4f8/src/main/java/org/apache/sysml/hops/AggUnaryOp.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/hops/AggUnaryOp.java 
b/src/main/java/org/apache/sysml/hops/AggUnaryOp.java
index fce424c..70a71bc 100644
--- a/src/main/java/org/apache/sysml/hops/AggUnaryOp.java
+++ b/src/main/java/org/apache/sysml/hops/AggUnaryOp.java
@@ -313,20 +313,6 @@ public class AggUnaryOp extends Hop implements 
MultiThreadedHop
                                HopsDirection2String.get(_direction) + ")";
                return s;
        }
-
-       public void printMe() throws HopsException {
-               if (LOG.isDebugEnabled()){
-                       if (getVisited() != VisitStatus.DONE) {
-                               super.printMe();
-                               LOG.debug("  Operation: " + _op);
-                               LOG.debug("  Direction: " + _direction);
-                               for (Hop h : getInput()) {
-                                       h.printMe();
-                               }
-                       }
-                       setVisited(VisitStatus.DONE);
-               }
-       }
        
        @Override
        public boolean allowsAllExecTypes()

http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/8936e4f8/src/main/java/org/apache/sysml/hops/BinaryOp.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/hops/BinaryOp.java 
b/src/main/java/org/apache/sysml/hops/BinaryOp.java
index f1e6aaf..7ddc656 100644
--- a/src/main/java/org/apache/sysml/hops/BinaryOp.java
+++ b/src/main/java/org/apache/sysml/hops/BinaryOp.java
@@ -756,20 +756,6 @@ public class BinaryOp extends Hop
                return s;
        }
 
-       public void printMe() throws HopsException {
-               if (LOG.isDebugEnabled()){
-                       if (getVisited() != VisitStatus.DONE) {
-                               super.printMe();
-                               LOG.debug("  Operation: " + op );
-                               for (Hop h : getInput()) {
-                                       h.printMe();
-                               }
-                               ;
-                       }
-                       setVisited(VisitStatus.DONE);
-               }
-       }
-
        @Override
        protected double computeOutputMemEstimate( long dim1, long dim2, long 
nnz )
        {               

http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/8936e4f8/src/main/java/org/apache/sysml/hops/ConvolutionOp.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/hops/ConvolutionOp.java 
b/src/main/java/org/apache/sysml/hops/ConvolutionOp.java
index 7751999..a13de52 100644
--- a/src/main/java/org/apache/sysml/hops/ConvolutionOp.java
+++ b/src/main/java/org/apache/sysml/hops/ConvolutionOp.java
@@ -505,22 +505,6 @@ public class ConvolutionOp extends Hop  implements 
MultiThreadedHop
                
                return ret;
        }
-       
-       
-       @Override
-       public void printMe() throws HopsException 
-       {
-               if (LOG.isDebugEnabled()){
-                       if (getVisited() != VisitStatus.DONE) {
-                               super.printMe();
-                               LOG.debug("  Operation: " + op);
-                               for (Hop h : getInput()) {
-                                       h.printMe();
-                               }
-                       }
-                       setVisited(VisitStatus.DONE);
-               }
-       }
 
        @Override
        public void setMaxNumThreads( int k ) {

http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/8936e4f8/src/main/java/org/apache/sysml/hops/DataGenOp.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/hops/DataGenOp.java 
b/src/main/java/org/apache/sysml/hops/DataGenOp.java
index c9eecb7..64948c9 100644
--- a/src/main/java/org/apache/sysml/hops/DataGenOp.java
+++ b/src/main/java/org/apache/sysml/hops/DataGenOp.java
@@ -176,19 +176,6 @@ public class DataGenOp extends Hop implements 
MultiThreadedHop
                
                return getLops();
        }
-       
-       @Override
-       public void printMe() throws HopsException
-       {       
-               if (LOG.isDebugEnabled()){
-                       if(getVisited() != VisitStatus.DONE)
-                       {
-                               super.printMe();
-                       }
-
-                       setVisited(VisitStatus.DONE);
-               }
-       }
 
        @Override
        public boolean allowsAllExecTypes()

http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/8936e4f8/src/main/java/org/apache/sysml/hops/DataOp.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/hops/DataOp.java 
b/src/main/java/org/apache/sysml/hops/DataOp.java
index 85d1692..36e72f3 100644
--- a/src/main/java/org/apache/sysml/hops/DataOp.java
+++ b/src/main/java/org/apache/sysml/hops/DataOp.java
@@ -334,23 +334,6 @@ public class DataOp extends Hop
                return s;
        }
 
-       public void printMe() throws HopsException {
-               if (LOG.isDebugEnabled()){
-                       if (getVisited() != VisitStatus.DONE) {
-                               super.printMe();
-                               LOG.debug("  DataOp: " + _dataop);
-                               if (_fileName != null) {
-                                       LOG.debug(" file: " + _fileName);
-                               }
-                               LOG.debug(" format: " + getInputFormatType());
-                               for (Hop h : getInput()) {
-                                       h.printMe();
-                               }
-                       }
-                       setVisited(VisitStatus.DONE);
-               }
-       }
-
        @Override
        public boolean allowsAllExecTypes()
        {

http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/8936e4f8/src/main/java/org/apache/sysml/hops/Hop.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/hops/Hop.java 
b/src/main/java/org/apache/sysml/hops/Hop.java
index 4021a1a..75b24de 100644
--- a/src/main/java/org/apache/sysml/hops/Hop.java
+++ b/src/main/java/org/apache/sysml/hops/Hop.java
@@ -55,11 +55,6 @@ public abstract class Hop
        
        public static final long CPThreshold = 2000;
 
-       public enum VisitStatus {
-               DONE,
-               NOTVISITED
-       }
-       
        /**
         * Optional hop interface, to be implemented by multi-threaded hops.
         */
@@ -75,7 +70,7 @@ public abstract class Hop
        protected String _name;
        protected DataType _dataType;
        protected ValueType _valueType;
-       protected VisitStatus _visited = VisitStatus.NOTVISITED;
+       protected boolean _visited = false;
        protected long _dim1 = -1;
        protected long _dim2 = -1;
        protected long _rows_in_block = -1;
@@ -731,12 +726,12 @@ public abstract class Hop
         * @param memo memory table
         */
        public void refreshMemEstimates( MemoTable memo ) {
-               if (getVisited() == VisitStatus.DONE)
+               if( isVisited() )
                        return;
-               for (Hop h : this.getInput())
+               for( Hop h : this.getInput() )
                        h.refreshMemEstimates( memo );
-               this.computeMemEstimate( memo );
-               this.setVisited(VisitStatus.DONE);
+               computeMemEstimate( memo );
+               setVisited();
        }
 
        /**
@@ -861,22 +856,18 @@ public abstract class Hop
                                && (_dim1 > 0 || _dim2 > 0)) );
        }
        
-       public static void resetVisitStatus( ArrayList<Hop> hops )
-       {
+       public static void resetVisitStatus( ArrayList<Hop> hops ) {
                if( hops != null )
                        for( Hop hopRoot : hops )
                                hopRoot.resetVisitStatus();
        }
        
-       public void resetVisitStatus() 
-       {
-               if ( getVisited() == Hop.VisitStatus.NOTVISITED )
+       public void resetVisitStatus()  {
+               if( !isVisited() )
                        return;
-               
-               for (Hop h : this.getInput())
-                       h.resetVisitStatus();
-               
-               setVisited(Hop.VisitStatus.NOTVISITED);
+               for( Hop h : this.getInput() )
+                       h.resetVisitStatus();           
+               setVisited(false);
        }
 
        public static void resetRecompilationFlag( ArrayList<Hop> hops, 
ExecType et )
@@ -894,7 +885,7 @@ public abstract class Hop
        
        private void resetRecompilationFlag( ExecType et ) 
        {
-               if( getVisited() == VisitStatus.DONE )
+               if( isVisited() )
                        return;
                
                //process child hops
@@ -905,28 +896,7 @@ public abstract class Hop
                if( et == null || getExecType() == et || getExecType()==null )
                        _requiresRecompile = false;
                
-               this.setVisited(VisitStatus.DONE);
-       }
-
-       public void printMe() throws HopsException {
-               if (LOG.isDebugEnabled()) {
-                       StringBuilder s = new StringBuilder(""); 
-                       s.append(getClass().getSimpleName() + " " + getHopID() 
+ "\n");
-                       s.append("  Label: " + getName() + "; DataType: " + 
_dataType + "; ValueType: " + _valueType + "\n");
-                       s.append("  Parent: ");
-                       for (Hop h : getParent()) {
-                               s.append(h.hashCode() + "; ");
-                       }
-                       ;
-                       s.append("\n  Input: ");
-                       for (Hop h : getInput()) {
-                               s.append(h.getHopID() + "; ");
-                       }
-                       
-                       s.append("\n  dims [" + _dim1 + "," + _dim2 + "] blk [" 
+ _rows_in_block + "," + _cols_in_block + "] nnz: " + _nnz + " UpdateInPlace: " 
+ _updateType);
-                       s.append("  MemEstimate = Out " + 
(_outputMemEstimate/1024/1024) + " MB, In&Out " + (_memEstimate/1024/1024) + " 
MB" );
-                       LOG.debug(s.toString());
-               }
+               setVisited();
        }
 
        public long getDim1() {
@@ -960,7 +930,7 @@ public abstract class Hop
                _lops = lops;
        }
 
-       public VisitStatus getVisited() {
+       public boolean isVisited() {
                return _visited;
        }
 
@@ -972,8 +942,12 @@ public abstract class Hop
                _dataType = dt;
        }
 
-       public void setVisited(VisitStatus visited) {
-               _visited = visited;
+       public void setVisited() {
+               setVisited(true);
+       }
+       
+       public void setVisited(boolean flag) {
+               _visited = flag;
        }
 
        public void setName(String _name) {

http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/8936e4f8/src/main/java/org/apache/sysml/hops/IndexingOp.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/hops/IndexingOp.java 
b/src/main/java/org/apache/sysml/hops/IndexingOp.java
index 9437cef..7edbbea 100644
--- a/src/main/java/org/apache/sysml/hops/IndexingOp.java
+++ b/src/main/java/org/apache/sysml/hops/IndexingOp.java
@@ -193,16 +193,6 @@ public class IndexingOp extends Hop
                s += OPSTRING;
                return s;
        }
-
-       public void printMe() throws HopsException {
-               if (getVisited() != VisitStatus.DONE) {
-                       super.printMe();
-                       for (Hop h : getInput()) {
-                               h.printMe();
-                       }
-               }
-               setVisited(VisitStatus.DONE);
-       }
        
        @Override
        public boolean allowsAllExecTypes()

http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/8936e4f8/src/main/java/org/apache/sysml/hops/LeftIndexingOp.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/hops/LeftIndexingOp.java 
b/src/main/java/org/apache/sysml/hops/LeftIndexingOp.java
index c82d63a..89c025b 100644
--- a/src/main/java/org/apache/sysml/hops/LeftIndexingOp.java
+++ b/src/main/java/org/apache/sysml/hops/LeftIndexingOp.java
@@ -257,17 +257,6 @@ public class LeftIndexingOp  extends Hop
                return s;
        }
 
-       public void printMe() throws HopsException {
-               if (getVisited() != VisitStatus.DONE) {
-                       super.printMe();
-                       for (Hop h : getInput()) {
-                               h.printMe();
-                       }
-                       ;
-               }
-               setVisited(VisitStatus.DONE);
-       }
-
        @Override
        public boolean allowsAllExecTypes()
        {

http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/8936e4f8/src/main/java/org/apache/sysml/hops/LiteralOp.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/hops/LiteralOp.java 
b/src/main/java/org/apache/sysml/hops/LiteralOp.java
index 107bf28..835b7ab 100644
--- a/src/main/java/org/apache/sysml/hops/LiteralOp.java
+++ b/src/main/java/org/apache/sysml/hops/LiteralOp.java
@@ -107,37 +107,6 @@ public class LiteralOp extends Hop
                return getLops();
        }
 
-       public void printMe() throws HopsException {
-               if (LOG.isDebugEnabled()){
-                       if (getVisited() != VisitStatus.DONE) {
-                               super.printMe();
-                               switch (getValueType()) {
-                               case DOUBLE:
-                                       LOG.debug("  Value: " + value_double);
-                                       break;
-                               case BOOLEAN:
-                                       LOG.debug("  Value: " + value_boolean);
-                                       break;
-                               case STRING:
-                                       LOG.debug("  Value: " + value_string);
-                                       break;
-                               case INT:
-                                       LOG.debug("  Value: " + value_long);
-                                       break;
-                               default:
-                                       throw new 
HopsException(this.printErrorLocation() +
-                                                       "unexpected value type 
printing LiteralOp.\n");
-                               }
-
-                               for (Hop h : getInput()) {
-                                       h.printMe();
-                               }
-
-                       }
-                       setVisited(VisitStatus.DONE);
-               }
-       }
-
        @Override
        public String getOpString() {
                String val = null;

http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/8936e4f8/src/main/java/org/apache/sysml/hops/MemoTable.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/hops/MemoTable.java 
b/src/main/java/org/apache/sysml/hops/MemoTable.java
index 83a29d3..94368ee 100644
--- a/src/main/java/org/apache/sysml/hops/MemoTable.java
+++ b/src/main/java/org/apache/sysml/hops/MemoTable.java
@@ -23,7 +23,6 @@ import java.util.ArrayList;
 import java.util.HashMap;
 
 import org.apache.sysml.hops.Hop.DataOpTypes;
-import org.apache.sysml.hops.Hop.VisitStatus;
 import org.apache.sysml.hops.recompile.RecompileStatus;
 import org.apache.sysml.parser.Expression.DataType;
 import org.apache.sysml.runtime.matrix.MatrixCharacteristics;
@@ -186,7 +185,7 @@ public class MemoTable
 
        private void rinit(Hop hop, RecompileStatus status) 
        {
-               if( hop.getVisited() == VisitStatus.DONE )
+               if( hop.isVisited() )
                        return;
                
                //probe status of previous twrites
@@ -203,7 +202,7 @@ public class MemoTable
                        for( Hop c : hop.getInput() )
                                rinit( c, status );
                        
-               hop.setVisited(VisitStatus.DONE);
+               hop.setVisited();
        }       
        
 }

http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/8936e4f8/src/main/java/org/apache/sysml/hops/MultipleOp.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/hops/MultipleOp.java 
b/src/main/java/org/apache/sysml/hops/MultipleOp.java
index d850b8a..07e1bd1 100644
--- a/src/main/java/org/apache/sysml/hops/MultipleOp.java
+++ b/src/main/java/org/apache/sysml/hops/MultipleOp.java
@@ -75,19 +75,6 @@ public class MultipleOp extends Hop {
                return multipleOperandOperation;
        }
 
-       public void printMe() throws HopsException {
-               if (LOG.isDebugEnabled()) {
-                       if (getVisited() != VisitStatus.DONE) {
-                               super.printMe();
-                               LOG.debug("  Operation: " + 
multipleOperandOperation);
-                               for (Hop h : getInput()) {
-                                       h.printMe();
-                               }
-                       }
-                       setVisited(VisitStatus.DONE);
-               }
-       }
-
        @Override
        public String getOpString() {
                return "m(" + multipleOperandOperation.toString().toLowerCase() 
+ ")";

http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/8936e4f8/src/main/java/org/apache/sysml/hops/ParameterizedBuiltinOp.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/hops/ParameterizedBuiltinOp.java 
b/src/main/java/org/apache/sysml/hops/ParameterizedBuiltinOp.java
index 72e9115..fa51948 100644
--- a/src/main/java/org/apache/sysml/hops/ParameterizedBuiltinOp.java
+++ b/src/main/java/org/apache/sysml/hops/ParameterizedBuiltinOp.java
@@ -802,19 +802,6 @@ public class ParameterizedBuiltinOp extends Hop implements 
MultiThreadedHop
                        setLops(finalagg);
                }
        }
-       
-       
-       @Override
-       public void printMe() throws HopsException {
-               if (LOG.isDebugEnabled()){
-                       if (getVisited() != VisitStatus.DONE) {
-                               super.printMe();
-                               LOG.debug(" " + _op);
-                       }
-
-                       setVisited(VisitStatus.DONE);
-               }
-       }
 
        @Override
        protected double computeOutputMemEstimate( long dim1, long dim2, long 
nnz )

http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/8936e4f8/src/main/java/org/apache/sysml/hops/QuaternaryOp.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/hops/QuaternaryOp.java 
b/src/main/java/org/apache/sysml/hops/QuaternaryOp.java
index 888cff9..2549526 100644
--- a/src/main/java/org/apache/sysml/hops/QuaternaryOp.java
+++ b/src/main/java/org/apache/sysml/hops/QuaternaryOp.java
@@ -286,19 +286,6 @@ public class QuaternaryOp extends Hop implements 
MultiThreadedHop
                return s;
        }
 
-       public void printMe() throws HopsException {
-               if (LOG.isDebugEnabled()){
-                       if (getVisited() != VisitStatus.DONE) {
-                               super.printMe();
-                               LOG.debug("  Operation: " + _op);
-                               for (Hop h : getInput()) {
-                                       h.printMe();
-                               }
-                       }
-                       setVisited(VisitStatus.DONE);
-               }
-       }
-
        @Override
        public boolean allowsAllExecTypes()
        {

http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/8936e4f8/src/main/java/org/apache/sysml/hops/ReorgOp.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/hops/ReorgOp.java 
b/src/main/java/org/apache/sysml/hops/ReorgOp.java
index 8d0b4b4..1ca2463 100644
--- a/src/main/java/org/apache/sysml/hops/ReorgOp.java
+++ b/src/main/java/org/apache/sysml/hops/ReorgOp.java
@@ -647,22 +647,6 @@ public class ReorgOp extends Hop implements 
MultiThreadedHop
                
                return ret;
        }
-       
-       
-       @Override
-       public void printMe() throws HopsException 
-       {
-               if (LOG.isDebugEnabled()){
-                       if (getVisited() != VisitStatus.DONE) {
-                               super.printMe();
-                               LOG.debug("  Operation: " + op);
-                               for (Hop h : getInput()) {
-                                       h.printMe();
-                               }
-                       }
-                       setVisited(VisitStatus.DONE);
-               }
-       }
 
        /**
         * This will check if there is sufficient memory locally (twice the 
size of second matrix, for original and sort data), and remotely (size of 
second matrix (sorted data)).  

http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/8936e4f8/src/main/java/org/apache/sysml/hops/TernaryOp.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/hops/TernaryOp.java 
b/src/main/java/org/apache/sysml/hops/TernaryOp.java
index b8be594..ec863c4 100644
--- a/src/main/java/org/apache/sysml/hops/TernaryOp.java
+++ b/src/main/java/org/apache/sysml/hops/TernaryOp.java
@@ -687,19 +687,6 @@ public class TernaryOp extends Hop
                return s;
        }
 
-       public void printMe() throws HopsException {
-               if (LOG.isDebugEnabled()){
-                       if (getVisited() != VisitStatus.DONE) {
-                               super.printMe();
-                               LOG.debug("  Operation: " + _op);
-                               for (Hop h : getInput()) {
-                                       h.printMe();
-                               }
-                       }
-                       setVisited(VisitStatus.DONE);
-               }
-       }
-
        @Override
        public boolean allowsAllExecTypes()
        {

http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/8936e4f8/src/main/java/org/apache/sysml/hops/UnaryOp.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/hops/UnaryOp.java 
b/src/main/java/org/apache/sysml/hops/UnaryOp.java
index dd2a634..ac306b3 100644
--- a/src/main/java/org/apache/sysml/hops/UnaryOp.java
+++ b/src/main/java/org/apache/sysml/hops/UnaryOp.java
@@ -78,19 +78,6 @@ public class UnaryOp extends Hop implements MultiThreadedHop
        public OpOp1 getOp() {
                return _op;
        }
-       
-       public void printMe() throws HopsException {
-               if (LOG.isDebugEnabled()){
-                       if (getVisited() != VisitStatus.DONE) {
-                               super.printMe();
-                               LOG.debug("  Operation: " + _op);
-                               for (Hop h : getInput()) {
-                                       h.printMe();
-                               }
-                       }
-                       setVisited(VisitStatus.DONE);
-               }
-       }
 
        @Override
        public String getOpString() {

http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/8936e4f8/src/main/java/org/apache/sysml/hops/globalopt/GDFEnumOptimizer.java
----------------------------------------------------------------------
diff --git 
a/src/main/java/org/apache/sysml/hops/globalopt/GDFEnumOptimizer.java 
b/src/main/java/org/apache/sysml/hops/globalopt/GDFEnumOptimizer.java
index f0e5cdb..82a3376 100644
--- a/src/main/java/org/apache/sysml/hops/globalopt/GDFEnumOptimizer.java
+++ b/src/main/java/org/apache/sysml/hops/globalopt/GDFEnumOptimizer.java
@@ -28,7 +28,6 @@ import org.apache.sysml.conf.ConfigurationManager;
 import org.apache.sysml.hops.DataOp;
 import org.apache.sysml.hops.Hop;
 import org.apache.sysml.hops.Hop.DataOpTypes;
-import org.apache.sysml.hops.Hop.VisitStatus;
 import org.apache.sysml.hops.HopsException;
 import org.apache.sysml.hops.Hop.FileFormatTypes;
 import org.apache.sysml.hops.OptimizerUtils;
@@ -451,7 +450,7 @@ public class GDFEnumOptimizer extends GlobalOptimizer
                                if( !(currentHop instanceof DataOp && 
((DataOp)currentHop).isWrite()) ){
                                        ArrayList<Hop> newRoots = new 
ArrayList<Hop>();
                                        tmpHop = new DataOp("_tmp", 
currentHop.getDataType(), currentHop.getValueType(), currentHop, 
DataOpTypes.TRANSIENTWRITE, "tmp");
-                                       tmpHop.setVisited(VisitStatus.DONE); 
//ensure recursive visitstatus reset on recompile
+                                       tmpHop.setVisited(); //ensure recursive 
visitstatus reset on recompile
                                        newRoots.add(tmpHop);
                                        
pb.getStatementBlock().set_hops(newRoots);
                                }

http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/8936e4f8/src/main/java/org/apache/sysml/hops/ipa/InterProceduralAnalysis.java
----------------------------------------------------------------------
diff --git 
a/src/main/java/org/apache/sysml/hops/ipa/InterProceduralAnalysis.java 
b/src/main/java/org/apache/sysml/hops/ipa/InterProceduralAnalysis.java
index acfd6d2..4cea2e2 100644
--- a/src/main/java/org/apache/sysml/hops/ipa/InterProceduralAnalysis.java
+++ b/src/main/java/org/apache/sysml/hops/ipa/InterProceduralAnalysis.java
@@ -47,7 +47,6 @@ import org.apache.sysml.hops.Hop.OpOp1;
 import org.apache.sysml.hops.Hop.OpOp2;
 import org.apache.sysml.hops.HopsException;
 import org.apache.sysml.hops.OptimizerUtils;
-import org.apache.sysml.hops.Hop.VisitStatus;
 import org.apache.sysml.hops.LiteralOp;
 import org.apache.sysml.hops.UnaryOp;
 import org.apache.sysml.hops.rewrite.HopRewriteUtils;
@@ -299,7 +298,7 @@ public class InterProceduralAnalysis
        private void getFunctionCandidatesForStatisticPropagation(DMLProgram 
prog, Hop hop, Map<String, Integer> fcandCounts, Map<String, FunctionOp> 
fcandHops ) 
                throws HopsException, ParseException
        {
-               if( hop.getVisited() == VisitStatus.DONE )
+               if( hop.isVisited() )
                        return;
                
                if( hop instanceof FunctionOp && 
!((FunctionOp)hop).getFunctionNamespace().equals(DMLProgram.INTERNAL_NAMESPACE) 
)
@@ -355,7 +354,7 @@ public class InterProceduralAnalysis
                for( Hop c : hop.getInput() )
                        getFunctionCandidatesForStatisticPropagation(prog, c, 
fcandCounts, fcandHops);
                
-               hop.setVisited(VisitStatus.DONE);
+               hop.setVisited();
        }
        
        private void pruneFunctionCandidatesForStatisticPropagation(Map<String, 
Integer> fcandCounts, Map<String, FunctionOp> fcandHops)
@@ -607,7 +606,7 @@ public class InterProceduralAnalysis
        private void propagateStatisticsIntoFunctions(DMLProgram prog, Hop hop, 
Map<String, Integer> fcand, LocalVariableMap callVars, Map<String, Set<Long>> 
fcandSafeNNZ, Set<String> unaryFcands, Set<String> fnStack ) 
                throws HopsException, ParseException
        {
-               if( hop.getVisited() == VisitStatus.DONE )
+               if( hop.isVisited() )
                        return;
                
                for( Hop c : hop.getInput() )
@@ -664,7 +663,7 @@ public class InterProceduralAnalysis
                        }
                }
                
-               hop.setVisited(VisitStatus.DONE);
+               hop.setVisited();
        }
        
        private void populateLocalVariableMapForFunctionCall( FunctionStatement 
fstmt, FunctionOp fop, LocalVariableMap callvars, LocalVariableMap vars, 
Set<Long> inputSafeNNZ, Integer numCalls ) 
@@ -1155,7 +1154,7 @@ public class InterProceduralAnalysis
        
        private void rCollectCheckpoints(Hop hop, ArrayList<Hop> checkpoints)
        {
-               if( hop.getVisited()==VisitStatus.DONE )
+               if( hop.isVisited() )
                        return;
 
                //handle leaf node for variable (checkpoint directly bound
@@ -1171,12 +1170,12 @@ public class InterProceduralAnalysis
                for( Hop c : hop.getInput() )
                        rCollectCheckpoints(c, checkpoints);
        
-               hop.setVisited(Hop.VisitStatus.DONE);
+               hop.setVisited();
        }
        
        public static void rRemoveCheckpointReadWrite(Hop hop)
        {
-               if( hop.getVisited()==VisitStatus.DONE )
+               if( hop.isVisited() )
                        return;
 
                //remove checkpoint on pread if only consumed by pwrite or uagg
@@ -1206,7 +1205,7 @@ public class InterProceduralAnalysis
                for( Hop c : hop.getInput() )
                        rRemoveCheckpointReadWrite(c);
                
-               hop.setVisited(Hop.VisitStatus.DONE);
+               hop.setVisited();
        }
        
        /////////////////////////////
@@ -1294,7 +1293,7 @@ public class InterProceduralAnalysis
        
        private void rRemoveConstantBinaryOp(Hop hop, HashMap<String,Hop> mOnes)
        {
-               if( hop.getVisited()==VisitStatus.DONE )
+               if( hop.isVisited() )
                        return;
 
                if( hop instanceof BinaryOp && 
((BinaryOp)hop).getOp()==OpOp2.MULT
@@ -1314,6 +1313,6 @@ public class InterProceduralAnalysis
                for( Hop c : hop.getInput() )
                        rRemoveConstantBinaryOp(c, mOnes);
        
-               hop.setVisited(Hop.VisitStatus.DONE);           
+               hop.setVisited();               
        }
 }

http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/8936e4f8/src/main/java/org/apache/sysml/hops/recompile/LiteralReplacement.java
----------------------------------------------------------------------
diff --git 
a/src/main/java/org/apache/sysml/hops/recompile/LiteralReplacement.java 
b/src/main/java/org/apache/sysml/hops/recompile/LiteralReplacement.java
index 0785bcc..f539abc 100644
--- a/src/main/java/org/apache/sysml/hops/recompile/LiteralReplacement.java
+++ b/src/main/java/org/apache/sysml/hops/recompile/LiteralReplacement.java
@@ -33,7 +33,6 @@ import org.apache.sysml.hops.Hop.AggOp;
 import org.apache.sysml.hops.Hop.DataOpTypes;
 import org.apache.sysml.hops.Hop.Direction;
 import org.apache.sysml.hops.Hop.OpOp1;
-import org.apache.sysml.hops.Hop.VisitStatus;
 import org.apache.sysml.hops.rewrite.HopRewriteUtils;
 import org.apache.sysml.parser.Expression.DataType;
 import org.apache.sysml.runtime.DMLRuntimeException;
@@ -54,7 +53,7 @@ public class LiteralReplacement
        protected static void rReplaceLiterals( Hop hop, LocalVariableMap vars 
) 
                throws DMLRuntimeException
        {
-               if( hop.getVisited() == VisitStatus.DONE )
+               if( hop.isVisited() )
                        return;
 
                if( hop.getInput() != null )
@@ -101,7 +100,7 @@ public class LiteralReplacement
                        }
                }
                
-               hop.setVisited(VisitStatus.DONE);
+               hop.setVisited();
        }
        
 

http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/8936e4f8/src/main/java/org/apache/sysml/hops/recompile/Recompiler.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/hops/recompile/Recompiler.java 
b/src/main/java/org/apache/sysml/hops/recompile/Recompiler.java
index f8b2a62..5533686 100644
--- a/src/main/java/org/apache/sysml/hops/recompile/Recompiler.java
+++ b/src/main/java/org/apache/sysml/hops/recompile/Recompiler.java
@@ -45,7 +45,6 @@ import org.apache.sysml.hops.Hop.DataGenMethod;
 import org.apache.sysml.hops.Hop.DataOpTypes;
 import org.apache.sysml.hops.Hop.FileFormatTypes;
 import org.apache.sysml.hops.Hop.OpOp1;
-import org.apache.sysml.hops.Hop.VisitStatus;
 import org.apache.sysml.hops.HopsException;
 import org.apache.sysml.hops.IndexingOp;
 import org.apache.sysml.hops.LiteralOp;
@@ -750,7 +749,7 @@ public class Recompiler
        
        public static void rUpdateFunctionNames( Hop hop, long pid )
        {
-               if( hop.getVisited() == VisitStatus.DONE )
+               if( hop.isVisited() )
                        return;
                
                //update function names
@@ -764,7 +763,7 @@ public class Recompiler
                        for( Hop c : hop.getInput() )
                                rUpdateFunctionNames(c, pid);
                
-               hop.setVisited(VisitStatus.DONE);
+               hop.setVisited();
        }
        
        
@@ -1413,7 +1412,7 @@ public class Recompiler
        private static boolean rRequiresRecompile( Hop hop )
        {       
                boolean ret = hop.requiresRecompile();
-               if( hop.getVisited() == VisitStatus.DONE )
+               if( hop.isVisited() )
                        return ret;
                
                if( hop.getInput() != null )
@@ -1423,7 +1422,7 @@ public class Recompiler
                                if( ret ) break; // early abort
                        }
                
-               hop.setVisited(VisitStatus.DONE);
+               hop.setVisited();
                
                return ret;
        }
@@ -1441,7 +1440,7 @@ public class Recompiler
         */
        public static void rClearLops( Hop hop )
        {
-               if( hop.getVisited() == VisitStatus.DONE )
+               if( hop.isVisited() )
                        return;
                
                //clear all relevant lops to allow for recompilation
@@ -1460,13 +1459,13 @@ public class Recompiler
                                        rClearLops(c);
                }
                
-               hop.setVisited(VisitStatus.DONE);
+               hop.setVisited();
        }
        
        public static void rUpdateStatistics( Hop hop, LocalVariableMap vars ) 
                throws DMLRuntimeException
        {
-               if( hop.getVisited() == VisitStatus.DONE )
+               if( hop.isVisited() )
                        return;
 
                //recursively process children
@@ -1587,7 +1586,7 @@ public class Recompiler
                        hop.refreshSizeInformation();
                }
                
-               hop.setVisited(VisitStatus.DONE);
+               hop.setVisited();
        }
 
        /**
@@ -1606,7 +1605,7 @@ public class Recompiler
        
        public static void rSetExecType( Hop hop, ExecType etype )
        {
-               if( hop.getVisited() == VisitStatus.DONE )
+               if( hop.isVisited() )
                        return;
                
                //update function names
@@ -1616,7 +1615,7 @@ public class Recompiler
                        for( Hop c : hop.getInput() )
                                rSetExecType(c, etype);
                
-               hop.setVisited(VisitStatus.DONE);
+               hop.setVisited();
        }
        
 

http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/8936e4f8/src/main/java/org/apache/sysml/hops/rewrite/HopDagValidator.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/hops/rewrite/HopDagValidator.java 
b/src/main/java/org/apache/sysml/hops/rewrite/HopDagValidator.java
index eec8413..83069ad 100644
--- a/src/main/java/org/apache/sysml/hops/rewrite/HopDagValidator.java
+++ b/src/main/java/org/apache/sysml/hops/rewrite/HopDagValidator.java
@@ -85,7 +85,7 @@ public class HopDagValidator
        private static void rValidateHop( Hop hop ) 
                throws HopsException
        {
-               if(hop.getVisited() == Hop.VisitStatus.DONE)
+               if(hop.isVisited())
                        return;
                
                //check parent linking
@@ -107,6 +107,6 @@ public class HopDagValidator
                for( Hop child : hop.getInput() )
                        rValidateHop(child);
                
-               hop.setVisited(Hop.VisitStatus.DONE);
+               hop.setVisited();
        }
 }

http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/8936e4f8/src/main/java/org/apache/sysml/hops/rewrite/HopRewriteUtils.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/hops/rewrite/HopRewriteUtils.java 
b/src/main/java/org/apache/sysml/hops/rewrite/HopRewriteUtils.java
index c21e9e3..d6ad037 100644
--- a/src/main/java/org/apache/sysml/hops/rewrite/HopRewriteUtils.java
+++ b/src/main/java/org/apache/sysml/hops/rewrite/HopRewriteUtils.java
@@ -40,7 +40,6 @@ import org.apache.sysml.hops.Hop.OpOp2;
 import org.apache.sysml.hops.Hop.OpOp3;
 import org.apache.sysml.hops.Hop.ParamBuiltinOp;
 import org.apache.sysml.hops.Hop.ReOrgOp;
-import org.apache.sysml.hops.Hop.VisitStatus;
 import org.apache.sysml.hops.HopsException;
 import org.apache.sysml.hops.LeftIndexingOp;
 import org.apache.sysml.hops.LiteralOp;
@@ -919,7 +918,7 @@ public class HopRewriteUtils
        
        public static boolean rHasSimpleReadChain(Hop root, String var)
        {
-               if( root.getVisited()==VisitStatus.DONE )
+               if( root.isVisited() )
                        return false;
 
                boolean ret = false;
@@ -939,13 +938,13 @@ public class HopRewriteUtils
                                ret |= root.getParent().size()<=1;
                }
                
-               root.setVisited(Hop.VisitStatus.DONE);
+               root.setVisited();
                return ret;
        }
        
        public static boolean rContainsRead(Hop root, String var, boolean 
includeMetaOp)
        {
-               if( root.getVisited()==VisitStatus.DONE )
+               if( root.isVisited() )
                        return false;
 
                boolean ret = false;
@@ -971,7 +970,7 @@ public class HopRewriteUtils
                for( Hop c : root.getInput() )
                        ret |= rContainsRead(c, var, includeMetaOp);
                
-               root.setVisited(Hop.VisitStatus.DONE);
+               root.setVisited();
                return ret;
        }
        

http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/8936e4f8/src/main/java/org/apache/sysml/hops/rewrite/RewriteAlgebraicSimplificationDynamic.java
----------------------------------------------------------------------
diff --git 
a/src/main/java/org/apache/sysml/hops/rewrite/RewriteAlgebraicSimplificationDynamic.java
 
b/src/main/java/org/apache/sysml/hops/rewrite/RewriteAlgebraicSimplificationDynamic.java
index 20c1eeb..0c2f337 100644
--- 
a/src/main/java/org/apache/sysml/hops/rewrite/RewriteAlgebraicSimplificationDynamic.java
+++ 
b/src/main/java/org/apache/sysml/hops/rewrite/RewriteAlgebraicSimplificationDynamic.java
@@ -133,7 +133,7 @@ public class RewriteAlgebraicSimplificationDynamic extends 
HopRewriteRule
        private void rule_AlgebraicSimplification(Hop hop, boolean 
descendFirst) 
                throws HopsException 
        {
-               if(hop.getVisited() == Hop.VisitStatus.DONE)
+               if(hop.isVisited())
                        return;
                
                //recursively process children
@@ -195,7 +195,7 @@ public class RewriteAlgebraicSimplificationDynamic extends 
HopRewriteRule
                                rule_AlgebraicSimplification(hi, descendFirst);
                }
 
-               hop.setVisited(Hop.VisitStatus.DONE);
+               hop.setVisited();
        }
        
        private Hop removeEmptyRightIndexing(Hop parent, Hop hi, int pos) 

http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/8936e4f8/src/main/java/org/apache/sysml/hops/rewrite/RewriteAlgebraicSimplificationStatic.java
----------------------------------------------------------------------
diff --git 
a/src/main/java/org/apache/sysml/hops/rewrite/RewriteAlgebraicSimplificationStatic.java
 
b/src/main/java/org/apache/sysml/hops/rewrite/RewriteAlgebraicSimplificationStatic.java
index 5e97829..5af850f 100644
--- 
a/src/main/java/org/apache/sysml/hops/rewrite/RewriteAlgebraicSimplificationStatic.java
+++ 
b/src/main/java/org/apache/sysml/hops/rewrite/RewriteAlgebraicSimplificationStatic.java
@@ -123,7 +123,7 @@ public class RewriteAlgebraicSimplificationStatic extends 
HopRewriteRule
        private void rule_AlgebraicSimplification(Hop hop, boolean 
descendFirst) 
                throws HopsException 
        {
-               if(hop.getVisited() == Hop.VisitStatus.DONE)
+               if(hop.isVisited())
                        return;
                
                //recursively process children
@@ -178,7 +178,7 @@ public class RewriteAlgebraicSimplificationStatic extends 
HopRewriteRule
                                rule_AlgebraicSimplification(hi, descendFirst);
                }
 
-               hop.setVisited(Hop.VisitStatus.DONE);
+               hop.setVisited();
        }
        
        private Hop removeUnnecessaryVectorizeOperation(Hop hi)

http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/8936e4f8/src/main/java/org/apache/sysml/hops/rewrite/RewriteBlockSizeAndReblock.java
----------------------------------------------------------------------
diff --git 
a/src/main/java/org/apache/sysml/hops/rewrite/RewriteBlockSizeAndReblock.java 
b/src/main/java/org/apache/sysml/hops/rewrite/RewriteBlockSizeAndReblock.java
index d8edfdd..2e2f91f 100644
--- 
a/src/main/java/org/apache/sysml/hops/rewrite/RewriteBlockSizeAndReblock.java
+++ 
b/src/main/java/org/apache/sysml/hops/rewrite/RewriteBlockSizeAndReblock.java
@@ -84,7 +84,7 @@ public class RewriteBlockSizeAndReblock extends HopRewriteRule
        {
                // Go to the source(s) of the DAG
                for (Hop hi : hop.getInput()) {
-                       if (hi.getVisited() != Hop.VisitStatus.DONE)
+                       if (!hi.isVisited())
                                rule_BlockSizeAndReblock(hi, blocksize);
                }
 
@@ -237,7 +237,7 @@ public class RewriteBlockSizeAndReblock extends 
HopRewriteRule
                        }
                }
 
-               hop.setVisited(Hop.VisitStatus.DONE);
+               hop.setVisited();
        }
        
        private static boolean isReblockValid() {

http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/8936e4f8/src/main/java/org/apache/sysml/hops/rewrite/RewriteCommonSubexpressionElimination.java
----------------------------------------------------------------------
diff --git 
a/src/main/java/org/apache/sysml/hops/rewrite/RewriteCommonSubexpressionElimination.java
 
b/src/main/java/org/apache/sysml/hops/rewrite/RewriteCommonSubexpressionElimination.java
index d6d023c..72957dd 100644
--- 
a/src/main/java/org/apache/sysml/hops/rewrite/RewriteCommonSubexpressionElimination.java
+++ 
b/src/main/java/org/apache/sysml/hops/rewrite/RewriteCommonSubexpressionElimination.java
@@ -100,7 +100,7 @@ public class RewriteCommonSubexpressionElimination extends 
HopRewriteRule
                throws HopsException 
        {
                int ret = 0;
-               if( hop.getVisited() == Hop.VisitStatus.DONE )
+               if( hop.isVisited() )
                        return ret;
 
                if( hop.getInput().isEmpty() ) //LEAF NODE
@@ -152,7 +152,7 @@ public class RewriteCommonSubexpressionElimination extends 
HopRewriteRule
                        }       
                }
                
-               hop.setVisited(Hop.VisitStatus.DONE);
+               hop.setVisited();
                return ret;
        }
 
@@ -160,7 +160,7 @@ public class RewriteCommonSubexpressionElimination extends 
HopRewriteRule
                throws HopsException 
        {
                int ret = 0;
-               if( hop.getVisited() == Hop.VisitStatus.DONE )
+               if( hop.isVisited() )
                        return ret;
 
                //step 1: merge childs recursively first
@@ -212,7 +212,7 @@ public class RewriteCommonSubexpressionElimination extends 
HopRewriteRule
                                }
                }
                
-               hop.setVisited(Hop.VisitStatus.DONE);
+               hop.setVisited();
 
                return ret;
        }

http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/8936e4f8/src/main/java/org/apache/sysml/hops/rewrite/RewriteCompressedReblock.java
----------------------------------------------------------------------
diff --git 
a/src/main/java/org/apache/sysml/hops/rewrite/RewriteCompressedReblock.java 
b/src/main/java/org/apache/sysml/hops/rewrite/RewriteCompressedReblock.java
index 92b6db9..c150a2b 100644
--- a/src/main/java/org/apache/sysml/hops/rewrite/RewriteCompressedReblock.java
+++ b/src/main/java/org/apache/sysml/hops/rewrite/RewriteCompressedReblock.java
@@ -66,7 +66,7 @@ public class RewriteCompressedReblock extends HopRewriteRule
        {
                // Go to the source(s) of the DAG
                for (Hop hi : hop.getInput()) {
-                       if (hi.getVisited() != Hop.VisitStatus.DONE)
+                       if (!hi.isVisited())
                                rule_CompressedReblock(hi);
                }
 
@@ -77,6 +77,6 @@ public class RewriteCompressedReblock extends HopRewriteRule
                        hop.setRequiresCompression(true);
                }
 
-               hop.setVisited(Hop.VisitStatus.DONE);
+               hop.setVisited();
        }
 }

http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/8936e4f8/src/main/java/org/apache/sysml/hops/rewrite/RewriteConstantFolding.java
----------------------------------------------------------------------
diff --git 
a/src/main/java/org/apache/sysml/hops/rewrite/RewriteConstantFolding.java 
b/src/main/java/org/apache/sysml/hops/rewrite/RewriteConstantFolding.java
index 0b4faf6..afb982c 100644
--- a/src/main/java/org/apache/sysml/hops/rewrite/RewriteConstantFolding.java
+++ b/src/main/java/org/apache/sysml/hops/rewrite/RewriteConstantFolding.java
@@ -29,7 +29,6 @@ import org.apache.sysml.hops.Hop;
 import org.apache.sysml.hops.Hop.DataOpTypes;
 import org.apache.sysml.hops.Hop.OpOp1;
 import org.apache.sysml.hops.Hop.OpOp2;
-import org.apache.sysml.hops.Hop.VisitStatus;
 import org.apache.sysml.hops.HopsException;
 import org.apache.sysml.hops.LiteralOp;
 import org.apache.sysml.hops.UnaryOp;
@@ -98,7 +97,7 @@ public class RewriteConstantFolding extends HopRewriteRule
        private Hop rConstantFoldingExpression( Hop root ) 
                throws HopsException
        {
-               if( root.getVisited() == VisitStatus.DONE )
+               if( root.isVisited() )
                        return root;
                
                //recursively process childs (before replacement to allow 
bottom-recursion)
@@ -168,7 +167,7 @@ public class RewriteConstantFolding extends HopRewriteRule
                        
                
                //mark processed
-               root.setVisited( VisitStatus.DONE );
+               root.setVisited();
                return root;
        }
        

http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/8936e4f8/src/main/java/org/apache/sysml/hops/rewrite/RewriteIndexingVectorization.java
----------------------------------------------------------------------
diff --git 
a/src/main/java/org/apache/sysml/hops/rewrite/RewriteIndexingVectorization.java 
b/src/main/java/org/apache/sysml/hops/rewrite/RewriteIndexingVectorization.java
index cf5ebce..f5af292 100644
--- 
a/src/main/java/org/apache/sysml/hops/rewrite/RewriteIndexingVectorization.java
+++ 
b/src/main/java/org/apache/sysml/hops/rewrite/RewriteIndexingVectorization.java
@@ -72,7 +72,7 @@ public class RewriteIndexingVectorization extends 
HopRewriteRule
        private void rule_IndexingVectorization( Hop hop ) 
                throws HopsException 
        {
-               if(hop.getVisited() == Hop.VisitStatus.DONE)
+               if(hop.isVisited())
                        return;
                
                //recursively process children
@@ -90,7 +90,7 @@ public class RewriteIndexingVectorization extends 
HopRewriteRule
                        rule_IndexingVectorization( hi );
                }
 
-               hop.setVisited(Hop.VisitStatus.DONE);
+               hop.setVisited();
        }
 
        /**

http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/8936e4f8/src/main/java/org/apache/sysml/hops/rewrite/RewriteInjectSparkPReadCheckpointing.java
----------------------------------------------------------------------
diff --git 
a/src/main/java/org/apache/sysml/hops/rewrite/RewriteInjectSparkPReadCheckpointing.java
 
b/src/main/java/org/apache/sysml/hops/rewrite/RewriteInjectSparkPReadCheckpointing.java
index 5ddcae1..9aceab4 100644
--- 
a/src/main/java/org/apache/sysml/hops/rewrite/RewriteInjectSparkPReadCheckpointing.java
+++ 
b/src/main/java/org/apache/sysml/hops/rewrite/RewriteInjectSparkPReadCheckpointing.java
@@ -64,7 +64,7 @@ public class RewriteInjectSparkPReadCheckpointing extends 
HopRewriteRule
        private void rInjectCheckpointAfterPRead( Hop hop ) 
                throws HopsException 
        {
-               if(hop.getVisited() == Hop.VisitStatus.DONE)
+               if(hop.isVisited())
                        return;
                
                // The reblocking is performed after transform, and hence 
checkpoint only non-transformed reads.   
@@ -86,6 +86,6 @@ public class RewriteInjectSparkPReadCheckpointing extends 
HopRewriteRule
                        }
                }
                
-               hop.setVisited(Hop.VisitStatus.DONE);
+               hop.setVisited();
        }
 }

http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/8936e4f8/src/main/java/org/apache/sysml/hops/rewrite/RewriteMatrixMultChainOptimization.java
----------------------------------------------------------------------
diff --git 
a/src/main/java/org/apache/sysml/hops/rewrite/RewriteMatrixMultChainOptimization.java
 
b/src/main/java/org/apache/sysml/hops/rewrite/RewriteMatrixMultChainOptimization.java
index 9445fcb..d43cb81 100644
--- 
a/src/main/java/org/apache/sysml/hops/rewrite/RewriteMatrixMultChainOptimization.java
+++ 
b/src/main/java/org/apache/sysml/hops/rewrite/RewriteMatrixMultChainOptimization.java
@@ -93,12 +93,11 @@ public class RewriteMatrixMultChainOptimization extends 
HopRewriteRule
        private void rule_OptimizeMMChains(Hop hop) 
                throws HopsException 
        {
-               if(hop.getVisited() == Hop.VisitStatus.DONE)
+               if(hop.isVisited())
                                return;
                
                if (  HopRewriteUtils.isMatrixMultiply(hop)
-                         && !((AggBinaryOp)hop).hasLeftPMInput() 
-                         && hop.getVisited() != Hop.VisitStatus.DONE ) 
+                         && !((AggBinaryOp)hop).hasLeftPMInput() && 
!hop.isVisited() ) 
                {
                        // Try to find and optimize the chain in which current 
Hop is the
                        // last operator
@@ -108,7 +107,7 @@ public class RewriteMatrixMultChainOptimization extends 
HopRewriteRule
                for (Hop hi : hop.getInput())
                        rule_OptimizeMMChains(hi);
 
-               hop.setVisited(Hop.VisitStatus.DONE);
+               hop.setVisited();
        }
 
        
@@ -160,8 +159,7 @@ public class RewriteMatrixMultChainOptimization extends 
HopRewriteRule
                         */
 
                        if (    HopRewriteUtils.isMatrixMultiply(h)
-                            && !((AggBinaryOp)hop).hasLeftPMInput() 
-                                && h.getVisited() != Hop.VisitStatus.DONE ) 
+                            && !((AggBinaryOp)hop).hasLeftPMInput() && 
h.isVisited() ) 
                        {
                                // check if the output of "h" is used at 
multiple places. If yes, it can
                                // not be expanded.
@@ -173,7 +171,7 @@ public class RewriteMatrixMultChainOptimization extends 
HopRewriteRule
                                        expandable = true;
                        }
 
-                       h.setVisited(Hop.VisitStatus.DONE);
+                       h.setVisited();
 
                        if ( !expandable ) {
                                i = i + 1;

http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/8936e4f8/src/main/java/org/apache/sysml/hops/rewrite/RewriteRemovePersistentReadWrite.java
----------------------------------------------------------------------
diff --git 
a/src/main/java/org/apache/sysml/hops/rewrite/RewriteRemovePersistentReadWrite.java
 
b/src/main/java/org/apache/sysml/hops/rewrite/RewriteRemovePersistentReadWrite.java
index 7922f29..bd734c9 100644
--- 
a/src/main/java/org/apache/sysml/hops/rewrite/RewriteRemovePersistentReadWrite.java
+++ 
b/src/main/java/org/apache/sysml/hops/rewrite/RewriteRemovePersistentReadWrite.java
@@ -28,7 +28,6 @@ import org.apache.commons.logging.LogFactory;
 import org.apache.sysml.hops.DataOp;
 import org.apache.sysml.hops.Hop;
 import org.apache.sysml.hops.Hop.DataOpTypes;
-import org.apache.sysml.hops.Hop.VisitStatus;
 import org.apache.sysml.hops.HopsException;
 import org.apache.sysml.parser.Expression.DataType;
 import org.apache.sysml.runtime.controlprogram.LocalVariableMap;
@@ -107,7 +106,7 @@ public class RewriteRemovePersistentReadWrite extends 
HopRewriteRule
                throws HopsException
        {
                //check mark processed
-               if( hop.getVisited() == VisitStatus.DONE )
+               if( hop.isVisited() )
                        return;
                
                //recursively process childs
@@ -164,6 +163,6 @@ public class RewriteRemovePersistentReadWrite extends 
HopRewriteRule
                }
                
                //mark processed
-               hop.setVisited( VisitStatus.DONE );
+               hop.setVisited();
        }
 }

http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/8936e4f8/src/main/java/org/apache/sysml/hops/rewrite/RewriteRemoveReadAfterWrite.java
----------------------------------------------------------------------
diff --git 
a/src/main/java/org/apache/sysml/hops/rewrite/RewriteRemoveReadAfterWrite.java 
b/src/main/java/org/apache/sysml/hops/rewrite/RewriteRemoveReadAfterWrite.java
index 9348088..d3489f4 100644
--- 
a/src/main/java/org/apache/sysml/hops/rewrite/RewriteRemoveReadAfterWrite.java
+++ 
b/src/main/java/org/apache/sysml/hops/rewrite/RewriteRemoveReadAfterWrite.java
@@ -89,7 +89,7 @@ public class RewriteRemoveReadAfterWrite extends 
HopRewriteRule
        private void collectPersistentReadWriteOps(Hop hop, HashMap<String,Hop> 
pWrites, HashMap<String,Hop> pReads) 
                throws HopsException 
        {
-               if( hop.getVisited() == Hop.VisitStatus.DONE )
+               if( hop.isVisited() )
                        return;
                
                //process childs
@@ -111,6 +111,6 @@ public class RewriteRemoveReadAfterWrite extends 
HopRewriteRule
                        }
                }
                
-               hop.setVisited(Hop.VisitStatus.DONE);
+               hop.setVisited();
        }
 }

http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/8936e4f8/src/main/java/org/apache/sysml/hops/rewrite/RewriteRemoveUnnecessaryCasts.java
----------------------------------------------------------------------
diff --git 
a/src/main/java/org/apache/sysml/hops/rewrite/RewriteRemoveUnnecessaryCasts.java
 
b/src/main/java/org/apache/sysml/hops/rewrite/RewriteRemoveUnnecessaryCasts.java
index 95a1214..e657f7f 100644
--- 
a/src/main/java/org/apache/sysml/hops/rewrite/RewriteRemoveUnnecessaryCasts.java
+++ 
b/src/main/java/org/apache/sysml/hops/rewrite/RewriteRemoveUnnecessaryCasts.java
@@ -23,7 +23,6 @@ import java.util.ArrayList;
 import org.apache.sysml.hops.Hop;
 import org.apache.sysml.hops.Hop.OpOp1;
 import org.apache.sysml.hops.HopsException;
-import org.apache.sysml.hops.Hop.VisitStatus;
 import org.apache.sysml.hops.UnaryOp;
 import org.apache.sysml.parser.Expression.ValueType;
 
@@ -74,7 +73,7 @@ public class RewriteRemoveUnnecessaryCasts extends 
HopRewriteRule
        private void rule_RemoveUnnecessaryCasts( Hop hop )
        {
                //check mark processed
-               if( hop.getVisited() == VisitStatus.DONE )
+               if( hop.isVisited() )
                        return;
                
                //recursively process childs
@@ -129,6 +128,6 @@ public class RewriteRemoveUnnecessaryCasts extends 
HopRewriteRule
                }
                
                //mark processed
-               hop.setVisited( VisitStatus.DONE );
+               hop.setVisited();
        }
 }

http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/8936e4f8/src/main/java/org/apache/sysml/hops/rewrite/RewriteSplitDagDataDependentOperators.java
----------------------------------------------------------------------
diff --git 
a/src/main/java/org/apache/sysml/hops/rewrite/RewriteSplitDagDataDependentOperators.java
 
b/src/main/java/org/apache/sysml/hops/rewrite/RewriteSplitDagDataDependentOperators.java
index c4e6caa..85d34dc 100644
--- 
a/src/main/java/org/apache/sysml/hops/rewrite/RewriteSplitDagDataDependentOperators.java
+++ 
b/src/main/java/org/apache/sysml/hops/rewrite/RewriteSplitDagDataDependentOperators.java
@@ -31,7 +31,6 @@ import org.apache.sysml.hops.Hop.OpOp3;
 import org.apache.sysml.hops.Hop.ParamBuiltinOp;
 import org.apache.sysml.hops.Hop.DataOpTypes;
 import org.apache.sysml.hops.Hop.ReOrgOp;
-import org.apache.sysml.hops.Hop.VisitStatus;
 import org.apache.sysml.hops.HopsException;
 import org.apache.sysml.hops.LiteralOp;
 import org.apache.sysml.hops.ParameterizedBuiltinOp;
@@ -123,7 +122,7 @@ public class RewriteSplitDagDataDependentOperators extends 
StatementBlockRewrite
                                                //create new transient read
                                                DataOp tread = new 
DataOp(varname, c.getDataType(), c.getValueType(),
                                            DataOpTypes.TRANSIENTREAD, null, 
rlen, clen, nnz, update, brlen, bclen);
-                                               
tread.setVisited(VisitStatus.DONE);
+                                               tread.setVisited();
                                                
HopRewriteUtils.copyLineNumbers(c, tread);
                                                
                                                //replace data-dependent 
operator with transient read
@@ -149,7 +148,7 @@ public class RewriteSplitDagDataDependentOperators extends 
StatementBlockRewrite
                                                //create new transient read
                                                DataOp tread = new 
DataOp(varname, c.getDataType(), c.getValueType(),
                                            DataOpTypes.TRANSIENTREAD, null, 
rlen, clen, nnz, update, brlen, bclen);
-                                               
tread.setVisited(VisitStatus.DONE);
+                                               tread.setVisited();
                                                
HopRewriteUtils.copyLineNumbers(c, tread);
                                                
                                                //replace data-dependent 
operator with transient read
@@ -164,7 +163,7 @@ public class RewriteSplitDagDataDependentOperators extends 
StatementBlockRewrite
                                                //add data-dependent operator 
sub dag to first statement block
                                                DataOp twrite = new 
DataOp(varname, c.getDataType(), c.getValueType(),
                                                                                
   c, DataOpTypes.TRANSIENTWRITE, null);
-                                               
twrite.setVisited(VisitStatus.DONE);
+                                               twrite.setVisited();
                                                twrite.setOutputParams(rlen, 
clen, nnz, update, brlen, bclen);
                                                
HopRewriteUtils.copyLineNumbers(c, twrite);
                                                sb1hops.add(twrite);    
@@ -223,7 +222,7 @@ public class RewriteSplitDagDataDependentOperators extends 
StatementBlockRewrite
 
        private void rCollectDataDependentOperators( Hop hop, ArrayList<Hop> 
cand )
        {
-               if( hop.getVisited() == VisitStatus.DONE )
+               if( hop.isVisited() )
                        return;
                
                //prevent unnecessary dag split (dims known or no consumer 
operations)
@@ -293,7 +292,7 @@ public class RewriteSplitDagDataDependentOperators extends 
StatementBlockRewrite
                        Hop c = hop.getInput().get(i);
                        if( !(c instanceof LiteralOp || c instanceof DataOp) ){
                                cand.add(c);
-                               c.setVisited(VisitStatus.DONE);
+                               c.setVisited();
                                investigateChilds = false;      
                        }
 
@@ -307,7 +306,7 @@ public class RewriteSplitDagDataDependentOperators extends 
StatementBlockRewrite
                                for( Hop c : hop.getInput() )
                                        rCollectDataDependentOperators(c, cand);
                
-               hop.setVisited(VisitStatus.DONE);
+               hop.setVisited();
        }
 
        private boolean hasTransientWriteParents( Hop hop )
@@ -350,11 +349,11 @@ public class RewriteSplitDagDataDependentOperators 
extends StatementBlockRewrite
 
                        DataOp tread = new DataOp(varname, c.getDataType(), 
c.getValueType(), DataOpTypes.TRANSIENTREAD, 
                                        null, c.getDim1(), c.getDim2(), 
c.getNnz(), c.getUpdateType(), c.getRowsInBlock(), c.getColsInBlock());
-                       tread.setVisited(VisitStatus.DONE);
+                       tread.setVisited();
                        HopRewriteUtils.copyLineNumbers(c, tread);
 
                        DataOp twrite = new DataOp(varname, c.getDataType(), 
c.getValueType(), c, DataOpTypes.TRANSIENTWRITE, null);
-                       twrite.setVisited(VisitStatus.DONE);
+                       twrite.setVisited();
                        twrite.setOutputParams(c.getDim1(), c.getDim2(), 
c.getNnz(), c.getUpdateType(), c.getRowsInBlock(), c.getColsInBlock());
                        HopRewriteUtils.copyLineNumbers(c, twrite);
                        
@@ -378,7 +377,7 @@ public class RewriteSplitDagDataDependentOperators extends 
StatementBlockRewrite
 
        private void rAddHopsToProbeSet( Hop hop, HashSet<Hop> probeSet )
        {
-               if( hop.getVisited() == VisitStatus.DONE )
+               if( hop.isVisited() )
                        return;
                
                //prevent cuts for no-ops
@@ -392,7 +391,7 @@ public class RewriteSplitDagDataDependentOperators extends 
StatementBlockRewrite
                        for( Hop c : hop.getInput() )
                                rAddHopsToProbeSet(c, probeSet);
        
-               hop.setVisited(VisitStatus.DONE);       
+               hop.setVisited();       
        }
        
        /**
@@ -405,7 +404,7 @@ public class RewriteSplitDagDataDependentOperators extends 
StatementBlockRewrite
         */
        private void rProbeAndAddHopsToCandidateSet( Hop hop, HashSet<Hop> 
probeSet, HashSet<Pair<Hop,Hop>> candSet )
        {
-               if( hop.getVisited() == VisitStatus.DONE )
+               if( hop.isVisited() )
                        return;
 
                if( hop.getInput() != null )
@@ -420,7 +419,7 @@ public class RewriteSplitDagDataDependentOperators extends 
StatementBlockRewrite
                                }
                        }
                
-               hop.setVisited(VisitStatus.DONE);       
+               hop.setVisited();       
        }
        
        private void collectCandidateChildOperators( ArrayList<Hop> cand, 
HashSet<Hop> candChilds )
@@ -439,7 +438,7 @@ public class RewriteSplitDagDataDependentOperators extends 
StatementBlockRewrite
        
        private void rCollectCandidateChildOperators( Hop hop, ArrayList<Hop> 
cand, HashSet<Hop> candChilds, boolean collect )
        {
-               if( hop.getVisited() == VisitStatus.DONE )
+               if( hop.isVisited() )
                        return;
                
                //collect operator if necessary
@@ -459,6 +458,6 @@ public class RewriteSplitDagDataDependentOperators extends 
StatementBlockRewrite
                                rCollectCandidateChildOperators(c, cand, 
candChilds, passedFlag);
                }
                
-               hop.setVisited(VisitStatus.DONE);
+               hop.setVisited();
        }
 }

http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/8936e4f8/src/main/java/org/apache/sysml/hops/rewrite/RewriteSplitDagUnknownCSVRead.java
----------------------------------------------------------------------
diff --git 
a/src/main/java/org/apache/sysml/hops/rewrite/RewriteSplitDagUnknownCSVRead.java
 
b/src/main/java/org/apache/sysml/hops/rewrite/RewriteSplitDagUnknownCSVRead.java
index 692762e..ee7b9c6 100644
--- 
a/src/main/java/org/apache/sysml/hops/rewrite/RewriteSplitDagUnknownCSVRead.java
+++ 
b/src/main/java/org/apache/sysml/hops/rewrite/RewriteSplitDagUnknownCSVRead.java
@@ -25,7 +25,6 @@ import org.apache.sysml.hops.DataOp;
 import org.apache.sysml.hops.Hop;
 import org.apache.sysml.hops.Hop.DataOpTypes;
 import org.apache.sysml.hops.Hop.FileFormatTypes;
-import org.apache.sysml.hops.Hop.VisitStatus;
 import org.apache.sysml.hops.HopsException;
 import org.apache.sysml.parser.DataIdentifier;
 import org.apache.sysml.parser.StatementBlock;
@@ -137,7 +136,7 @@ public class RewriteSplitDagUnknownCSVRead extends 
StatementBlockRewriteRule
        
        private void collectCSVReadHopsUnknownSize( Hop hop, ArrayList<Hop> 
cand )
        {
-               if( hop.getVisited() == VisitStatus.DONE )
+               if( hop.isVisited() )
                        return;
                
                //collect persistent reads (of type csv, with unknown size)
@@ -159,6 +158,6 @@ public class RewriteSplitDagUnknownCSVRead extends 
StatementBlockRewriteRule
                        for( Hop c : hop.getInput() )
                                collectCSVReadHopsUnknownSize(c, cand);
                
-               hop.setVisited(VisitStatus.DONE);
+               hop.setVisited();
        }
 }

http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/8936e4f8/src/main/java/org/apache/sysml/parser/DMLTranslator.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/parser/DMLTranslator.java 
b/src/main/java/org/apache/sysml/parser/DMLTranslator.java
index 61dff7c..c0eb30f 100644
--- a/src/main/java/org/apache/sysml/parser/DMLTranslator.java
+++ b/src/main/java/org/apache/sysml/parser/DMLTranslator.java
@@ -541,108 +541,6 @@ public class DMLTranslator
                        }
                }
        }
-       
-
-       public void printHops(DMLProgram dmlp) throws ParseException, 
LanguageException, HopsException {
-               if (LOG.isDebugEnabled()) {
-                       // for each namespace, handle function program blocks
-                       for (String namespaceKey : 
dmlp.getNamespaces().keySet()){
-                               for (String fname : 
dmlp.getFunctionStatementBlocks(namespaceKey).keySet()){
-                                       FunctionStatementBlock fsblock = 
dmlp.getFunctionStatementBlock(namespaceKey,fname);
-                                       printHops(fsblock);
-                               }
-                       }
-
-                       // hand
-                       for (int i = 0; i < dmlp.getNumStatementBlocks(); i++) {
-                               StatementBlock current = 
dmlp.getStatementBlock(i);
-                               printHops(current);
-                       }
-               }
-       }
-       
-       public void printHops(StatementBlock current) throws ParseException, 
HopsException {
-               if (LOG.isDebugEnabled()) {
-                       ArrayList<Hop> hopsDAG = current.get_hops();
-                       LOG.debug("\n********************** HOPS DAG FOR BLOCK 
*******************");
-
-                       if (current instanceof FunctionStatementBlock) {
-                               if (current.getNumStatements() > 1)
-                                       LOG.debug("Function statement block has 
more than 1 stmt");
-                               FunctionStatement fstmt = 
(FunctionStatement)current.getStatement(0);
-                               for (StatementBlock child : fstmt.getBody()){
-                                       printHops(child);
-                               }
-                       }
-
-                       if (current instanceof WhileStatementBlock) {
-
-                               // print predicate hops
-                               WhileStatementBlock wstb = 
(WhileStatementBlock) current; 
-                               Hop predicateHops = wstb.getPredicateHops();
-                               LOG.debug("\n********************** PREDICATE 
HOPS *******************");
-                               predicateHops.printMe();
-                               
-                               if (wstb.getNumStatements() > 1)
-                                       LOG.debug("While statement block has 
more than 1 stmt");
-                               WhileStatement ws = 
(WhileStatement)wstb.getStatement(0);
-
-                               for (StatementBlock sb : ws.getBody()){
-                                       printHops(sb);
-                               }
-                       }
-
-                       if (current instanceof IfStatementBlock) {
-
-                               // print predicate hops
-                               IfStatementBlock istb = (IfStatementBlock) 
current; 
-                               Hop predicateHops = istb.getPredicateHops();
-                               LOG.debug("\n********************** PREDICATE 
HOPS *******************");
-                               predicateHops.printMe();
-                               
-
-                               if (istb.getNumStatements() > 1)
-                                       LOG.debug("If statement block has more 
than 1 stmt");
-                               IfStatement is = 
(IfStatement)istb.getStatement(0);
-
-                               for (StatementBlock sb : is.getIfBody()){
-                                       printHops(sb);
-                               }
-
-                               for (StatementBlock sb : is.getElseBody()){
-                                       printHops(sb);
-                               }
-                       }
-
-
-                       if (current instanceof ForStatementBlock) {
-
-                               // print predicate hops
-                               ForStatementBlock fsb = (ForStatementBlock) 
current; 
-                               LOG.debug("\n********************** PREDICATE 
HOPS *******************");
-                               if (fsb.getFromHops() != null) 
fsb.getFromHops().printMe();
-                               if (fsb.getToHops() != null) 
fsb.getToHops().printMe();
-                               if (fsb.getIncrementHops() != null) 
fsb.getIncrementHops().printMe();
-                               
-                               if (fsb.getNumStatements() > 1)
-                                       LOG.debug("For statement block has more 
than 1 stmt");
-                               ForStatement ws = 
(ForStatement)fsb.getStatement(0);
-
-                               for (StatementBlock sb : ws.getBody()){
-                                       printHops(sb);
-                               }
-                       }
-
-                       if (hopsDAG != null && !hopsDAG.isEmpty()) {
-                               // hopsDAG.iterator().next().printMe();
-                               Iterator<Hop> iter = hopsDAG.iterator();
-                               while (iter.hasNext()) {
-                                       LOG.debug("\n********************** 
OUTPUT HOPS *******************");
-                                       iter.next().printMe();
-                               }
-                       }
-               }
-       }
 
        public void refreshMemEstimates(DMLProgram dmlp) throws ParseException, 
LanguageException, HopsException {
 

http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/8936e4f8/src/main/java/org/apache/sysml/runtime/controlprogram/parfor/opt/OptTreeConverter.java
----------------------------------------------------------------------
diff --git 
a/src/main/java/org/apache/sysml/runtime/controlprogram/parfor/opt/OptTreeConverter.java
 
b/src/main/java/org/apache/sysml/runtime/controlprogram/parfor/opt/OptTreeConverter.java
index 80badf9..5c693d5 100644
--- 
a/src/main/java/org/apache/sysml/runtime/controlprogram/parfor/opt/OptTreeConverter.java
+++ 
b/src/main/java/org/apache/sysml/runtime/controlprogram/parfor/opt/OptTreeConverter.java
@@ -30,7 +30,6 @@ import org.apache.sysml.hops.Hop;
 import org.apache.sysml.hops.Hop.MultiThreadedHop;
 import org.apache.sysml.hops.HopsException;
 import org.apache.sysml.hops.LiteralOp;
-import org.apache.sysml.hops.Hop.VisitStatus;
 import org.apache.sysml.hops.OptimizerUtils;
 import org.apache.sysml.lops.LopProperties;
 import org.apache.sysml.parser.DMLProgram;
@@ -503,7 +502,7 @@ public class OptTreeConverter
                ArrayList<OptNode> ret = new ArrayList<OptNode>(); 
                ArrayList<Hop> in = hop.getInput();
        
-               if( hop.getVisited() == VisitStatus.DONE )
+               if( hop.isVisited() )
                        return ret;
                
                //general case
@@ -584,7 +583,7 @@ public class OptTreeConverter
                                if( !(hin instanceof DataOp || hin instanceof 
LiteralOp ) ) //no need for opt nodes
                                        ret.addAll(rCreateAbstractOptNodes(hin, 
vars, memo));
 
-               hop.setVisited(VisitStatus.DONE);
+               hop.setVisited();
                
                return ret;
        }

http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/8936e4f8/src/main/java/org/apache/sysml/runtime/controlprogram/parfor/opt/OptTreePlanChecker.java
----------------------------------------------------------------------
diff --git 
a/src/main/java/org/apache/sysml/runtime/controlprogram/parfor/opt/OptTreePlanChecker.java
 
b/src/main/java/org/apache/sysml/runtime/controlprogram/parfor/opt/OptTreePlanChecker.java
index 5099feb..db0f297 100644
--- 
a/src/main/java/org/apache/sysml/runtime/controlprogram/parfor/opt/OptTreePlanChecker.java
+++ 
b/src/main/java/org/apache/sysml/runtime/controlprogram/parfor/opt/OptTreePlanChecker.java
@@ -25,7 +25,6 @@ import java.util.Set;
 
 import org.apache.sysml.hops.FunctionOp;
 import org.apache.sysml.hops.Hop;
-import org.apache.sysml.hops.Hop.VisitStatus;
 import org.apache.sysml.hops.HopsException;
 import org.apache.sysml.parser.DMLProgram;
 import org.apache.sysml.parser.ForStatement;
@@ -186,7 +185,7 @@ public class OptTreePlanChecker
 
        private static void getAllFunctionOps( Hop hop, HashMap<String, 
FunctionOp> memo )
        {
-               if( hop.getVisited() == VisitStatus.DONE )
+               if( hop.isVisited() )
                        return;
                
                //process functionop
@@ -201,6 +200,6 @@ public class OptTreePlanChecker
                for( Hop in : hop.getInput() )
                        getAllFunctionOps(in, memo);
                
-               hop.setVisited(VisitStatus.DONE);
+               hop.setVisited();
        }
 }

http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/8936e4f8/src/main/java/org/apache/sysml/runtime/controlprogram/parfor/opt/OptimizerRuleBased.java
----------------------------------------------------------------------
diff --git 
a/src/main/java/org/apache/sysml/runtime/controlprogram/parfor/opt/OptimizerRuleBased.java
 
b/src/main/java/org/apache/sysml/runtime/controlprogram/parfor/opt/OptimizerRuleBased.java
index 87cabaa..a84f93f 100644
--- 
a/src/main/java/org/apache/sysml/runtime/controlprogram/parfor/opt/OptimizerRuleBased.java
+++ 
b/src/main/java/org/apache/sysml/runtime/controlprogram/parfor/opt/OptimizerRuleBased.java
@@ -2078,38 +2078,36 @@ public class OptimizerRuleBased extends Optimizer
        private void rGetUIPConsumerList(Hop hop, HashMap <String, 
ArrayList<UIPCandidateHop>> uipCandHopHM)
                throws DMLRuntimeException
        {
-               if(hop.getVisited() != Hop.VisitStatus.DONE)
-               {
-                       if ((!(!hop.getParent().isEmpty() && 
hop.getParent().get(0) instanceof LeftIndexingOp)) &&
-                                  ((hop instanceof DataOp && 
((DataOp)hop).getDataOpType() == DataOpTypes.TRANSIENTREAD ) ||
-                                       (hop instanceof ReorgOp && 
(((ReorgOp)hop).getOp() == ReOrgOp.RESHAPE || ((ReorgOp)hop).getOp() == 
ReOrgOp.TRANSPOSE)) ||
-                                       (hop instanceof FunctionOp)))
-                       {       
-                               // If candidate's name is same as input hop.
-                               String uipCandiateID = hop.getName();
-                               ArrayList <UIPCandidateHop> uipCandHopList = 
uipCandHopHM.get(uipCandiateID);
-                               
-                               if (uipCandHopList != null) 
-                               {
-                                       for (UIPCandidateHop uipCandHop: 
uipCandHopList)
-                                       {
-                                               // Add consumers for candidate 
hop.
-                                               ArrayList<Hop> consumerHops = 
uipCandHop.getConsumerHops();
-                                               if(uipCandHop.getConsumerHops() 
== null)
-                                                       consumerHops = new 
ArrayList<Hop>();
-                                               
consumerHops.add(getRootHop(hop));
-                                               
uipCandHop.setConsumerHops(consumerHops);
-                                       }
-                               }
-                       }
+               if(hop.isVisited())
+                       return;
+               
+               if ((!(!hop.getParent().isEmpty() && hop.getParent().get(0) 
instanceof LeftIndexingOp)) &&
+                          ((hop instanceof DataOp && 
((DataOp)hop).getDataOpType() == DataOpTypes.TRANSIENTREAD ) ||
+                               (hop instanceof ReorgOp && 
(((ReorgOp)hop).getOp() == ReOrgOp.RESHAPE || ((ReorgOp)hop).getOp() == 
ReOrgOp.TRANSPOSE)) ||
+                               (hop instanceof FunctionOp)))
+               {       
+                       // If candidate's name is same as input hop.
+                       String uipCandiateID = hop.getName();
+                       ArrayList <UIPCandidateHop> uipCandHopList = 
uipCandHopHM.get(uipCandiateID);
                        
-                       for(Hop hopIn: hop.getInput())
+                       if (uipCandHopList != null) 
                        {
-                               rGetUIPConsumerList(hopIn, uipCandHopHM);
+                               for (UIPCandidateHop uipCandHop: uipCandHopList)
+                               {
+                                       // Add consumers for candidate hop.
+                                       ArrayList<Hop> consumerHops = 
uipCandHop.getConsumerHops();
+                                       if(uipCandHop.getConsumerHops() == null)
+                                               consumerHops = new 
ArrayList<Hop>();
+                                       consumerHops.add(getRootHop(hop));
+                                       
uipCandHop.setConsumerHops(consumerHops);
+                               }
                        }
-                       
-                       hop.setVisited(Hop.VisitStatus.DONE);
                }
+               
+               for(Hop hopIn: hop.getInput())
+                       rGetUIPConsumerList(hopIn, uipCandHopHM);
+               
+               hop.setVisited();
        }
        
 
@@ -2337,61 +2335,51 @@ public class OptimizerRuleBased extends Optimizer
        private void rValidateUIPConsumerList(Hop hop, HashMap <String, 
ArrayList<UIPCandidateHop>> uipCandHopHM)
                        throws DMLRuntimeException 
        {
-               if(hop.getVisited() != Hop.VisitStatus.DONE)
+               if(hop.isVisited())
+                       return;
+               
+               for(Entry<String, ArrayList <UIPCandidateHop>> entry: 
uipCandHopHM.entrySet())
                {
-                       for(Entry<String, ArrayList <UIPCandidateHop>> entry: 
uipCandHopHM.entrySet())
-                       {
-                               ArrayList <UIPCandidateHop> uipCandHopList = 
entry.getValue();
-                               if (uipCandHopList != null) 
-                               {
-                                       for (UIPCandidateHop uipCandHop: 
uipCandHopList)
-                                       {
-                                               ArrayList<Hop> consumerHops = 
uipCandHop.getConsumerHops();
-                                               if(consumerHops != null)
-                                               {
-                                                       // If consumer has read 
then remove candidate from the list (set flag to false).
-                                                       for (Hop consumerHop: 
consumerHops)
-                                                               
if(hop.getName().equals(consumerHop.getName()))
-                                                               {
-                                                                       
uipCandHop.setUpdateInPlace(false);
-                                                                       break;
-                                                               }
+                       if (entry.getValue() == null)
+                               continue;
+                       for (UIPCandidateHop uipCandHop: entry.getValue()) {
+                               ArrayList<Hop> consumerHops = 
uipCandHop.getConsumerHops();
+                               if(consumerHops != null) {
+                                       // If consumer has read then remove 
candidate from the list (set flag to false).
+                                       for (Hop consumerHop: consumerHops)
+                                               
if(hop.getName().equals(consumerHop.getName())) {
+                                                       
uipCandHop.setUpdateInPlace(false);
+                                                       break;
                                                }
-                                       }
                                }
                        }
-                       hop.setVisited(Hop.VisitStatus.DONE);
                }
+               hop.setVisited();
        }
 
        private void rValidateUIPConsumerList(Hop hop, HashMap <String, 
ArrayList<UIPCandidateHop>> uipCandHopHM, VariableSet readVariables)
                        throws DMLRuntimeException 
        {
-               if(hop.getVisited() != Hop.VisitStatus.DONE)
+               if(hop.isVisited())
+                       return;
+               
+               for(Entry<String, ArrayList <UIPCandidateHop>> entry: 
uipCandHopHM.entrySet())
                {
-                       for(Entry<String, ArrayList <UIPCandidateHop>> entry: 
uipCandHopHM.entrySet())
-                       {
-                               ArrayList <UIPCandidateHop> uipCandHopList = 
entry.getValue();
-                               if (uipCandHopList != null) 
-                               {
-                                       for (UIPCandidateHop uipCandHop: 
uipCandHopList)
-                                       {
-                                               ArrayList<Hop> consumerHops = 
uipCandHop.getConsumerHops();
-                                               if(consumerHops != null)
-                                               {
-                                                       // If consumer has read 
then remove candidate from the list (set flag to false).
-                                                       for (Hop consumerHop: 
consumerHops)
-                                                               
if(readVariables.containsVariable(consumerHop.getName()))
-                                                               {
-                                                                       
uipCandHop.setUpdateInPlace(false);
-                                                                       break;
-                                                               }
+                       if (entry.getValue() == null)
+                               continue;
+                       for (UIPCandidateHop uipCandHop: entry.getValue()) {
+                               ArrayList<Hop> consumerHops = 
uipCandHop.getConsumerHops();
+                               if(consumerHops != null) {
+                                       // If consumer has read then remove 
candidate from the list (set flag to false).
+                                       for (Hop consumerHop: consumerHops)
+                                               
if(readVariables.containsVariable(consumerHop.getName())) {
+                                                       
uipCandHop.setUpdateInPlace(false);
+                                                       break;
                                                }
-                                       }
                                }
                        }
-                       hop.setVisited(Hop.VisitStatus.DONE);
                }
+               hop.setVisited();
        }
        
        

http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/8936e4f8/src/main/java/org/apache/sysml/runtime/controlprogram/parfor/opt/ProgramRecompiler.java
----------------------------------------------------------------------
diff --git 
a/src/main/java/org/apache/sysml/runtime/controlprogram/parfor/opt/ProgramRecompiler.java
 
b/src/main/java/org/apache/sysml/runtime/controlprogram/parfor/opt/ProgramRecompiler.java
index c21d0f8..f6ccc13 100644
--- 
a/src/main/java/org/apache/sysml/runtime/controlprogram/parfor/opt/ProgramRecompiler.java
+++ 
b/src/main/java/org/apache/sysml/runtime/controlprogram/parfor/opt/ProgramRecompiler.java
@@ -25,7 +25,6 @@ import java.util.ArrayList;
 import org.apache.sysml.conf.ConfigurationManager;
 import org.apache.sysml.conf.DMLConfig;
 import org.apache.sysml.hops.Hop;
-import org.apache.sysml.hops.Hop.VisitStatus;
 import org.apache.sysml.hops.HopsException;
 import org.apache.sysml.hops.IndexingOp;
 import org.apache.sysml.hops.OptimizerUtils;
@@ -396,7 +395,7 @@ public class ProgramRecompiler
        {
                boolean ret = false;
                
-               if( hop.getVisited() == VisitStatus.DONE )
+               if( hop.isVisited() )
                        return ret;
                
                ArrayList<Hop> in = hop.getInput();
@@ -423,7 +422,7 @@ public class ProgramRecompiler
                        for( Hop hin : in )
                                ret |= rFindAndSetCPIndexingHOP(hin,var);
                
-               hop.setVisited(VisitStatus.DONE);
+               hop.setVisited();
                
                return ret;
        }
@@ -432,7 +431,7 @@ public class ProgramRecompiler
        {
                boolean ret = false;
                
-               if( hop.getVisited() == VisitStatus.DONE )
+               if( hop.isVisited() )
                        return ret;
                
                ArrayList<Hop> in = hop.getInput();
@@ -453,7 +452,7 @@ public class ProgramRecompiler
                        for( Hop hin : in )
                                ret |= rFindAndReleaseIndexingHOP(hin,var);
                
-               hop.setVisited(VisitStatus.DONE);
+               hop.setVisited();
                
                return ret;
        }

http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/8936e4f8/src/main/java/org/apache/sysml/utils/Explain.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/utils/Explain.java 
b/src/main/java/org/apache/sysml/utils/Explain.java
index a03ad73..b78029a 100644
--- a/src/main/java/org/apache/sysml/utils/Explain.java
+++ b/src/main/java/org/apache/sysml/utils/Explain.java
@@ -28,7 +28,6 @@ import java.util.Map.Entry;
 
 import org.apache.sysml.api.DMLException;
 import org.apache.sysml.hops.Hop;
-import org.apache.sysml.hops.Hop.VisitStatus;
 import org.apache.sysml.hops.HopsException;
 import org.apache.sysml.hops.LiteralOp;
 import org.apache.sysml.hops.OptimizerUtils;
@@ -560,11 +559,8 @@ public class Explain
        private static String explainHop(Hop hop, int level) 
                throws DMLRuntimeException 
        {
-               if(   hop.getVisited() == VisitStatus.DONE 
-                  || (!SHOW_LITERAL_HOPS && hop instanceof LiteralOp) )
-               {
+               if( hop.isVisited() || (!SHOW_LITERAL_HOPS && hop instanceof 
LiteralOp) )
                        return "";
-               }
                
                StringBuilder sb = new StringBuilder();
                String offset = createOffset(level);
@@ -632,7 +628,7 @@ public class Explain
                
                sb.append('\n');
                
-               hop.setVisited(VisitStatus.DONE);
+               hop.setVisited();
                
                return sb.toString();
        }

http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/8936e4f8/src/main/java/org/apache/sysml/yarn/ropt/GridEnumerationMemory.java
----------------------------------------------------------------------
diff --git 
a/src/main/java/org/apache/sysml/yarn/ropt/GridEnumerationMemory.java 
b/src/main/java/org/apache/sysml/yarn/ropt/GridEnumerationMemory.java
index 05a9d47..78402d4 100644
--- a/src/main/java/org/apache/sysml/yarn/ropt/GridEnumerationMemory.java
+++ b/src/main/java/org/apache/sysml/yarn/ropt/GridEnumerationMemory.java
@@ -142,7 +142,7 @@ public class GridEnumerationMemory extends GridEnumeration
        
        private void getMemoryEstimates( Hop hop, ArrayList<Long> mem )
        {
-               if( hop.getVisited() == Hop.VisitStatus.DONE )
+               if( hop.isVisited() )
                        return;
 
                //process childs
@@ -153,7 +153,7 @@ public class GridEnumerationMemory extends GridEnumeration
                mem.add( (long)( (hop.getMemEstimate()+DEFAULT_MEM_ADD)
                                          /OptimizerUtils.MEM_UTIL_FACTOR) );
                
-               hop.setVisited(Hop.VisitStatus.DONE);
+               hop.setVisited();
        }
        
 }

http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/8936e4f8/src/main/java/org/apache/sysml/yarn/ropt/ResourceOptimizer.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/yarn/ropt/ResourceOptimizer.java 
b/src/main/java/org/apache/sysml/yarn/ropt/ResourceOptimizer.java
index 1544e45..d753406 100644
--- a/src/main/java/org/apache/sysml/yarn/ropt/ResourceOptimizer.java
+++ b/src/main/java/org/apache/sysml/yarn/ropt/ResourceOptimizer.java
@@ -437,7 +437,7 @@ public class ResourceOptimizer
                        vars.put(varname, mo);
                }
                
-               hop.setVisited(Hop.VisitStatus.DONE);
+               hop.setVisited();
        }
 
        private static ArrayList<ProgramBlock> pruneProgramBlocks( 
ArrayList<ProgramBlock> B ) 
@@ -513,7 +513,7 @@ public class ResourceOptimizer
 
        private static boolean pruneHasOnlyUnknownMR( Hop hop )
        {
-               if( hop == null || hop.getVisited() == Hop.VisitStatus.DONE )
+               if( hop == null || hop.isVisited() )
                        return true;
 
                boolean ret = true;
@@ -537,7 +537,7 @@ public class ResourceOptimizer
                        ret &= lret;
                }
                
-               hop.setVisited(Hop.VisitStatus.DONE);
+               hop.setVisited();
                
                return ret;
        }

Reply via email to