[MINOR][SYSTEMML-1917] Refactoring hops get/set, incl exception handling

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

Branch: refs/heads/master
Commit: c04929fab52248d0777111529c779eaea3e0465e
Parents: 779d432
Author: Matthias Boehm <mboe...@gmail.com>
Authored: Sat Nov 11 22:48:01 2017 -0800
Committer: Matthias Boehm <mboe...@gmail.com>
Committed: Sat Nov 11 23:56:56 2017 -0800

----------------------------------------------------------------------
 .../sysml/hops/codegen/SpoofCompiler.java       |   4 +-
 .../sysml/hops/globalopt/GDFEnumOptimizer.java  |  55 +++----
 .../hops/globalopt/gdfgraph/GraphBuilder.java   |   2 +-
 .../sysml/hops/ipa/FunctionCallGraph.java       |   2 +-
 .../sysml/hops/ipa/IPAPassInlineFunctions.java  |  10 +-
 .../ipa/IPAPassPropagateReplaceLiterals.java    |   2 +-
 .../ipa/IPAPassRemoveConstantBinaryOps.java     |   8 +-
 .../IPAPassRemoveUnnecessaryCheckpoints.java    |  52 ++++---
 .../sysml/hops/ipa/InterProceduralAnalysis.java |   2 +-
 .../apache/sysml/hops/recompile/Recompiler.java |  14 +-
 .../sysml/hops/rewrite/ProgramRewriter.java     |   2 +-
 .../hops/rewrite/RewriteCompressedReblock.java  |  12 +-
 .../rewrite/RewriteForLoopVectorization.java    |  24 +--
 .../RewriteInjectSparkLoopCheckpointing.java    |   2 +-
 .../RewriteMarkLoopVariablesUpdateInPlace.java  |   4 +-
 .../hops/rewrite/RewriteMergeBlockSequence.java |  14 +-
 .../RewriteSplitDagDataDependentOperators.java  |  13 +-
 .../rewrite/RewriteSplitDagUnknownCSVRead.java  |   7 +-
 .../org/apache/sysml/parser/DMLTranslator.java  | 156 +++++--------------
 .../apache/sysml/parser/ForStatementBlock.java  |  11 +-
 .../sysml/parser/FunctionStatementBlock.java    |  13 --
 .../apache/sysml/parser/IfStatementBlock.java   |   9 --
 .../org/apache/sysml/parser/StatementBlock.java |   9 +-
 .../sysml/parser/WhileStatementBlock.java       |  11 --
 .../runtime/controlprogram/ProgramBlock.java    |   2 +-
 .../controlprogram/parfor/ProgramConverter.java |   6 +-
 .../parfor/opt/OptTreeConverter.java            |   2 +-
 .../parfor/opt/OptTreePlanChecker.java          |   2 +-
 .../parfor/opt/OptimizerRuleBased.java          |   2 +-
 .../parfor/opt/ProgramRecompiler.java           |  10 +-
 .../java/org/apache/sysml/utils/Explain.java    |   4 +-
 .../sysml/yarn/ropt/GridEnumerationMemory.java  |   6 +-
 .../sysml/yarn/ropt/ResourceOptimizer.java      |   8 +-
 33 files changed, 176 insertions(+), 304 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/systemml/blob/c04929fa/src/main/java/org/apache/sysml/hops/codegen/SpoofCompiler.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/hops/codegen/SpoofCompiler.java 
b/src/main/java/org/apache/sysml/hops/codegen/SpoofCompiler.java
index 51cd0a2..8aa673b 100644
--- a/src/main/java/org/apache/sysml/hops/codegen/SpoofCompiler.java
+++ b/src/main/java/org/apache/sysml/hops/codegen/SpoofCompiler.java
@@ -240,7 +240,7 @@ public class SpoofCompiler
                }
                else //generic (last-level)
                {
-                       current.set_hops( 
generateCodeFromHopDAGs(current.get_hops()) );
+                       current.setHops( 
generateCodeFromHopDAGs(current.getHops()) );
                        current.updateRecompilationFlag();
                }
        }
@@ -291,7 +291,7 @@ public class SpoofCompiler
                else //generic (last-level)
                {
                        StatementBlock sb = current.getStatementBlock();
-                       current.setInstructions( 
generateCodeFromHopDAGsToInst(sb, sb.get_hops()) );
+                       current.setInstructions( 
generateCodeFromHopDAGsToInst(sb, sb.getHops()) );
                }
        }
 

http://git-wip-us.apache.org/repos/asf/systemml/blob/c04929fa/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 73762ce..50284b1 100644
--- a/src/main/java/org/apache/sysml/hops/globalopt/GDFEnumOptimizer.java
+++ b/src/main/java/org/apache/sysml/hops/globalopt/GDFEnumOptimizer.java
@@ -445,41 +445,34 @@ public class GDFEnumOptimizer extends GlobalOptimizer
                        Hop currentHop = p.getNode().getHop();
                        ProgramBlock pb = p.getNode().getProgramBlock();
                        
-                       try
-                       {
-                               //keep the old dag roots
-                               ArrayList<Hop> oldRoots = 
pb.getStatementBlock().get_hops();
-                               Hop tmpHop = null;
-                               if( !(currentHop instanceof DataOp && 
((DataOp)currentHop).isWrite()) ){
-                                       ArrayList<Hop> newRoots = new 
ArrayList<>();
-                                       tmpHop = new DataOp("_tmp", 
currentHop.getDataType(), currentHop.getValueType(), currentHop, 
DataOpTypes.TRANSIENTWRITE, "tmp");
-                                       tmpHop.setVisited(); //ensure recursive 
visitstatus reset on recompile
-                                       newRoots.add(tmpHop);
-                                       
pb.getStatementBlock().set_hops(newRoots);
-                               }
-                               
-                               //recompile modified runtime program
-                               
Recompiler.recompileProgramBlockHierarchy(prog.getProgramBlocks(),
-                                       new LocalVariableMap(), 0, 
ResetType.NO_RESET);
-                               _compiledPlans++;
-                               
-                               //cost partial runtime program up to current hop
-                               ExecutionContext ec = 
ExecutionContextFactory.createContext(prog);
-                               costs = 
CostEstimationWrapper.getTimeEstimate(prog, ec);        
-                               
-                               //restore original hop dag
-                               if( tmpHop !=null )
-                                       
HopRewriteUtils.removeChildReference(tmpHop, currentHop);
-                               pb.getStatementBlock().set_hops(oldRoots);      
-                       }
-                       catch(HopsException ex)
-                       {
-                               throw new DMLRuntimeException(ex);
+                       //keep the old dag roots
+                       ArrayList<Hop> oldRoots = 
pb.getStatementBlock().getHops();
+                       Hop tmpHop = null;
+                       if( !(currentHop instanceof DataOp && 
((DataOp)currentHop).isWrite()) ){
+                               ArrayList<Hop> newRoots = new ArrayList<>();
+                               tmpHop = new DataOp("_tmp", 
currentHop.getDataType(), currentHop.getValueType(), currentHop, 
DataOpTypes.TRANSIENTWRITE, "tmp");
+                               tmpHop.setVisited(); //ensure recursive 
visitstatus reset on recompile
+                               newRoots.add(tmpHop);
+                               pb.getStatementBlock().setHops(newRoots);
                        }
+                       
+                       //recompile modified runtime program
+                       
Recompiler.recompileProgramBlockHierarchy(prog.getProgramBlocks(),
+                               new LocalVariableMap(), 0, ResetType.NO_RESET);
+                       _compiledPlans++;
+                       
+                       //cost partial runtime program up to current hop
+                       ExecutionContext ec = 
ExecutionContextFactory.createContext(prog);
+                       costs = CostEstimationWrapper.getTimeEstimate(prog, ec);
+                       
+                       //restore original hop dag
+                       if( tmpHop !=null )
+                               HopRewriteUtils.removeChildReference(tmpHop, 
currentHop);
+                       pb.getStatementBlock().setHops(oldRoots);
                }
                
                //release forced data flow configuration from program
-               rResetRuntimePlanConfig(p, new HashMap<Long,Plan>());           
+               rResetRuntimePlanConfig(p, new HashMap<Long,Plan>());
                _costedPlans++;
                
                return costs;

http://git-wip-us.apache.org/repos/asf/systemml/blob/c04929fa/src/main/java/org/apache/sysml/hops/globalopt/gdfgraph/GraphBuilder.java
----------------------------------------------------------------------
diff --git 
a/src/main/java/org/apache/sysml/hops/globalopt/gdfgraph/GraphBuilder.java 
b/src/main/java/org/apache/sysml/hops/globalopt/gdfgraph/GraphBuilder.java
index e768854..923807e 100644
--- a/src/main/java/org/apache/sysml/hops/globalopt/gdfgraph/GraphBuilder.java
+++ b/src/main/java/org/apache/sysml/hops/globalopt/gdfgraph/GraphBuilder.java
@@ -147,7 +147,7 @@ public class GraphBuilder
                else //last-level program block
                {
                        StatementBlock sb = pb.getStatementBlock();
-                       ArrayList<Hop> hops = sb.get_hops();
+                       ArrayList<Hop> hops = sb.getHops();
                        if( hops != null )
                        {
                                //create new local memo structure for local dag

http://git-wip-us.apache.org/repos/asf/systemml/blob/c04929fa/src/main/java/org/apache/sysml/hops/ipa/FunctionCallGraph.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/hops/ipa/FunctionCallGraph.java 
b/src/main/java/org/apache/sysml/hops/ipa/FunctionCallGraph.java
index 4735f47..6ea1338 100644
--- a/src/main/java/org/apache/sysml/hops/ipa/FunctionCallGraph.java
+++ b/src/main/java/org/apache/sysml/hops/ipa/FunctionCallGraph.java
@@ -276,7 +276,7 @@ public class FunctionCallGraph
                } 
                else {
                        // For generic StatementBlock
-                       ArrayList<Hop> hopsDAG = sb.get_hops();
+                       ArrayList<Hop> hopsDAG = sb.getHops();
                        if( hopsDAG == null || hopsDAG.isEmpty() ) 
                                return; //nothing to do
                        

http://git-wip-us.apache.org/repos/asf/systemml/blob/c04929fa/src/main/java/org/apache/sysml/hops/ipa/IPAPassInlineFunctions.java
----------------------------------------------------------------------
diff --git 
a/src/main/java/org/apache/sysml/hops/ipa/IPAPassInlineFunctions.java 
b/src/main/java/org/apache/sysml/hops/ipa/IPAPassInlineFunctions.java
index c7ee3e4..106eb2b 100644
--- a/src/main/java/org/apache/sysml/hops/ipa/IPAPassInlineFunctions.java
+++ b/src/main/java/org/apache/sysml/hops/ipa/IPAPassInlineFunctions.java
@@ -62,16 +62,16 @@ public class IPAPassInlineFunctions extends IPAPass
                        FunctionStatement fstmt = 
(FunctionStatement)fsb.getStatement(0);
                        if( fstmt.getBody().size() == 1 
                                && 
HopRewriteUtils.isLastLevelStatementBlock(fstmt.getBody().get(0)) 
-                               && 
!containsFunctionOp(fstmt.getBody().get(0).get_hops())
+                               && 
!containsFunctionOp(fstmt.getBody().get(0).getHops())
                                && (fgraph.getFunctionCalls(fkey).size() == 1
-                                       || 
countOperators(fstmt.getBody().get(0).get_hops()) 
+                                       || 
countOperators(fstmt.getBody().get(0).getHops()) 
                                                <= 
InterProceduralAnalysis.INLINING_MAX_NUM_OPS) )
                        {
                                if( LOG.isDebugEnabled() )
                                        LOG.debug("IPA: Inline function 
'"+fkey+"'");
                                
                                //replace all relevant function calls 
-                               ArrayList<Hop> hops = 
fstmt.getBody().get(0).get_hops();
+                               ArrayList<Hop> hops = 
fstmt.getBody().get(0).getHops();
                                List<FunctionOp> fcalls = 
fgraph.getFunctionCalls(fkey);
                                List<StatementBlock> fcallsSB = 
fgraph.getFunctionCallsSB(fkey);
                                for(int i=0; i<fcalls.size(); i++) {
@@ -101,8 +101,8 @@ public class IPAPassInlineFunctions extends IPAPass
                                                if( HopRewriteUtils.isData(out, 
DataOpTypes.TRANSIENTWRITE) )
                                                        
out.setName(outMap.get(out.getName()));
                                        }
-                                       fcallsSB.get(i).get_hops().remove(op);
-                                       
fcallsSB.get(i).get_hops().addAll(hops2);
+                                       fcallsSB.get(i).getHops().remove(op);
+                                       fcallsSB.get(i).getHops().addAll(hops2);
                                }
                        }
                }

http://git-wip-us.apache.org/repos/asf/systemml/blob/c04929fa/src/main/java/org/apache/sysml/hops/ipa/IPAPassPropagateReplaceLiterals.java
----------------------------------------------------------------------
diff --git 
a/src/main/java/org/apache/sysml/hops/ipa/IPAPassPropagateReplaceLiterals.java 
b/src/main/java/org/apache/sysml/hops/ipa/IPAPassPropagateReplaceLiterals.java
index 5e2e86c..664ac7b 100644
--- 
a/src/main/java/org/apache/sysml/hops/ipa/IPAPassPropagateReplaceLiterals.java
+++ 
b/src/main/java/org/apache/sysml/hops/ipa/IPAPassPropagateReplaceLiterals.java
@@ -116,7 +116,7 @@ public class IPAPassPropagateReplaceLiterals extends IPAPass
                                rReplaceLiterals(current, constants);
                }
                else {
-                       replaceLiterals(sb.get_hops(), constants);
+                       replaceLiterals(sb.getHops(), constants);
                }
        }
        

http://git-wip-us.apache.org/repos/asf/systemml/blob/c04929fa/src/main/java/org/apache/sysml/hops/ipa/IPAPassRemoveConstantBinaryOps.java
----------------------------------------------------------------------
diff --git 
a/src/main/java/org/apache/sysml/hops/ipa/IPAPassRemoveConstantBinaryOps.java 
b/src/main/java/org/apache/sysml/hops/ipa/IPAPassRemoveConstantBinaryOps.java
index 6b110c8..d948128 100644
--- 
a/src/main/java/org/apache/sysml/hops/ipa/IPAPassRemoveConstantBinaryOps.java
+++ 
b/src/main/java/org/apache/sysml/hops/ipa/IPAPassRemoveConstantBinaryOps.java
@@ -79,7 +79,7 @@ public class IPAPassRemoveConstantBinaryOps extends IPAPass
                        if( !(sb instanceof IfStatementBlock || sb instanceof 
WhileStatementBlock 
                                  || sb instanceof ForStatementBlock) )
                        {
-                               collectMatrixOfOnes(sb.get_hops(), mOnes);
+                               collectMatrixOfOnes(sb.getHops(), mOnes);
                        }
                }
        }
@@ -128,9 +128,9 @@ public class IPAPassRemoveConstantBinaryOps extends IPAPass
                }
                else
                {
-                       if( sb.get_hops() != null ){
-                               Hop.resetVisitStatus(sb.get_hops());
-                               for( Hop hop : sb.get_hops() )
+                       if( sb.getHops() != null ){
+                               Hop.resetVisitStatus(sb.getHops());
+                               for( Hop hop : sb.getHops() )
                                        rRemoveConstantBinaryOp(hop, mOnes);
                        }
                }

http://git-wip-us.apache.org/repos/asf/systemml/blob/c04929fa/src/main/java/org/apache/sysml/hops/ipa/IPAPassRemoveUnnecessaryCheckpoints.java
----------------------------------------------------------------------
diff --git 
a/src/main/java/org/apache/sysml/hops/ipa/IPAPassRemoveUnnecessaryCheckpoints.java
 
b/src/main/java/org/apache/sysml/hops/ipa/IPAPassRemoveUnnecessaryCheckpoints.java
index 1c2c6b9..d90b4b6 100644
--- 
a/src/main/java/org/apache/sysml/hops/ipa/IPAPassRemoveUnnecessaryCheckpoints.java
+++ 
b/src/main/java/org/apache/sysml/hops/ipa/IPAPassRemoveUnnecessaryCheckpoints.java
@@ -90,10 +90,10 @@ public class IPAPassRemoveUnnecessaryCheckpoints extends 
IPAPass
                                        //data operations like nrow(X) or 
operations removed by rewrites 
                                        //double check hops on basic blocks; 
otherwise worst-case
                                        boolean skipRemove = false;
-                                       if( sb.get_hops() !=null ) {
-                                               
Hop.resetVisitStatus(sb.get_hops());
+                                       if( sb.getHops() !=null ) {
+                                               
Hop.resetVisitStatus(sb.getHops());
                                                skipRemove = true;
-                                               for( Hop root : sb.get_hops() )
+                                               for( Hop root : sb.getHops() )
                                                        skipRemove &= 
!HopRewriteUtils.rContainsRead(root, cand, false);
                                        }                                       
                                        if( !skipRemove )
@@ -114,10 +114,10 @@ public class IPAPassRemoveUnnecessaryCheckpoints extends 
IPAPass
                        else
                        {
                                for( String cand : cands2 )
-                                       if( 
sb.variablesUpdated().containsVariable(cand) && sb.get_hops() != null) 
+                                       if( 
sb.variablesUpdated().containsVariable(cand) && sb.getHops() != null) 
                                        {
-                                               
Hop.resetVisitStatus(sb.get_hops());
-                                               for( Hop root : sb.get_hops() )
+                                               
Hop.resetVisitStatus(sb.getHops());
+                                               for( Hop root : sb.getHops() )
                                                        if( 
root.getName().equals(cand) &&
                                                                
!HopRewriteUtils.rHasSimpleReadChain(root, cand) ) {
                                                                
chkpointCand.remove(cand);
@@ -126,14 +126,15 @@ public class IPAPassRemoveUnnecessaryCheckpoints extends 
IPAPass
                        }
                
                        //collect checkpoints and remove unnecessary checkpoints
-                       ArrayList<Hop> tmp = collectCheckpoints(sb.get_hops());
-                       for( Hop chkpoint : tmp ) {
-                               if( 
chkpointCand.containsKey(chkpoint.getName()) ) {
-                                       
chkpointCand.get(chkpoint.getName()).setRequiresCheckpoint(false);
+                       if( HopRewriteUtils.isLastLevelStatementBlock(sb) ) {
+                               ArrayList<Hop> tmp = 
collectCheckpoints(sb.getHops());
+                               for( Hop chkpoint : tmp ) {
+                                       if( 
chkpointCand.containsKey(chkpoint.getName()) ) {
+                                               
chkpointCand.get(chkpoint.getName()).setRequiresCheckpoint(false);
+                                       }
+                                       chkpointCand.put(chkpoint.getName(), 
chkpoint);
                                }
-                               chkpointCand.put(chkpoint.getName(), chkpoint);
                        }
-                       
                }
        }
 
@@ -159,10 +160,10 @@ public class IPAPassRemoveUnnecessaryCheckpoints extends 
IPAPass
                                        //data operations like nrow(X) or 
operations removed by rewrites 
                                        //double check hops on basic blocks; 
otherwise worst-case
                                        boolean skipRemove = false;
-                                       if( sb.get_hops() !=null ) {
-                                               
Hop.resetVisitStatus(sb.get_hops());
+                                       if( sb.getHops() !=null ) {
+                                               
Hop.resetVisitStatus(sb.getHops());
                                                skipRemove = true;
-                                               for( Hop root : sb.get_hops() )
+                                               for( Hop root : sb.getHops() )
                                                        skipRemove &= 
!HopRewriteUtils.rContainsRead(root, cand, false);
                                        }                                       
                                        if( !skipRemove )
@@ -185,9 +186,9 @@ public class IPAPassRemoveUnnecessaryCheckpoints extends 
IPAPass
                        else
                        {
                                for( String cand : cands2 )
-                                       if( 
sb.variablesUpdated().containsVariable(cand) && sb.get_hops() != null) {
-                                               
Hop.resetVisitStatus(sb.get_hops());
-                                               for( Hop root : sb.get_hops() )
+                                       if( 
sb.variablesUpdated().containsVariable(cand) && sb.getHops() != null) {
+                                               
Hop.resetVisitStatus(sb.getHops());
+                                               for( Hop root : sb.getHops() )
                                                        if( 
root.getName().equals(cand) ) {
                                                                if( 
HopRewriteUtils.rHasSimpleReadChain(root, cand) ) {
                                                                        
chkpointCand.get(cand).setRequiresCheckpoint(false);
@@ -195,15 +196,16 @@ public class IPAPassRemoveUnnecessaryCheckpoints extends 
IPAPass
                                                                        
chkpointCand.put(cand, root.getInput().get(0));
                                                                }
                                                                else
-                                                                       
chkpointCand.remove(cand);              
+                                                                       
chkpointCand.remove(cand);
                                                        }
                                        }       
                        }
                
                        //collect checkpoints
-                       ArrayList<Hop> tmp = collectCheckpoints(sb.get_hops());
-                       for( Hop chkpoint : tmp ) {
-                               chkpointCand.put(chkpoint.getName(), chkpoint);
+                       if( HopRewriteUtils.isLastLevelStatementBlock(sb) ) {
+                               ArrayList<Hop> tmp = 
collectCheckpoints(sb.getHops());
+                               for( Hop chkpoint : tmp )
+                                       chkpointCand.put(chkpoint.getName(), 
chkpoint);
                        }
                }
        }
@@ -218,9 +220,9 @@ public class IPAPassRemoveUnnecessaryCheckpoints extends 
IPAPass
                        || sbs.get(0) instanceof ForStatementBlock) ) 
                {
                        //recursively process all dag roots
-                       if( sbs.get(0).get_hops()!=null ) {
-                               Hop.resetVisitStatus(sbs.get(0).get_hops());
-                               for( Hop root : sbs.get(0).get_hops() )
+                       if( sbs.get(0).getHops()!=null ) {
+                               Hop.resetVisitStatus(sbs.get(0).getHops());
+                               for( Hop root : sbs.get(0).getHops() )
                                        rRemoveCheckpointReadWrite(root);
                        }
                }

http://git-wip-us.apache.org/repos/asf/systemml/blob/c04929fa/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 de12bb1..317f601 100644
--- a/src/main/java/org/apache/sysml/hops/ipa/InterProceduralAnalysis.java
+++ b/src/main/java/org/apache/sysml/hops/ipa/InterProceduralAnalysis.java
@@ -353,7 +353,7 @@ public class InterProceduralAnalysis
                        //remove updated constant scalars
                        Recompiler.removeUpdatedScalars(callVars, sb);
                        //old stats in, new stats out if updated
-                       ArrayList<Hop> roots = sb.get_hops();
+                       ArrayList<Hop> roots = sb.getHops();
                        DMLProgram prog = sb.getDMLProg();
                        //replace scalar reads with literals
                        Hop.resetVisitStatus(roots);

http://git-wip-us.apache.org/repos/asf/systemml/blob/c04929fa/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 c6d74dd..360e261 100644
--- a/src/main/java/org/apache/sysml/hops/recompile/Recompiler.java
+++ b/src/main/java/org/apache/sysml/hops/recompile/Recompiler.java
@@ -646,8 +646,8 @@ public class Recompiler
                {
                        //recompile last-level program block instructions
                        StatementBlock sb = pb.getStatementBlock();
-                       if( sb!=null && sb.get_hops()!=null ) {
-                               
pb.setInstructions(recompileHopsDagInstructions(sb, sb.get_hops()));
+                       if( sb!=null && sb.getHops()!=null ) {
+                               
pb.setInstructions(recompileHopsDagInstructions(sb, sb.getHops()));
                        }
                }
        }
@@ -883,18 +883,18 @@ public class Recompiler
                                /*&& 
!Recompiler.containsNonRecompileInstructions(tmp)*/ )
                        {
                                tmp = Recompiler.recompileHopsDag(
-                                       sb, sb.get_hops(), vars, status, true, 
false, tid);
+                                       sb, sb.getHops(), vars, status, true, 
false, tid);
                                pb.setInstructions( tmp );
                                
                                //propagate stats across hops (should be 
executed on clone of vars)
-                               
Recompiler.extractDAGOutputStatistics(sb.get_hops(), vars);
+                               
Recompiler.extractDAGOutputStatistics(sb.getHops(), vars);
                                
                                //reset recompilation flags (w/ special 
handling functions)
                                if( 
ParForProgramBlock.RESET_RECOMPILATION_FLAGs 
-                                       && 
!containsRootFunctionOp(sb.get_hops())  
+                                       && 
!containsRootFunctionOp(sb.getHops())  
                                        && resetRecompile.isReset() ) 
                                {
-                                       
Hop.resetRecompilationFlag(sb.get_hops(), ExecType.CP, resetRecompile);
+                                       
Hop.resetRecompilationFlag(sb.getHops(), ExecType.CP, resetRecompile);
                                        sb.updateRecompilationFlag();
                                }
                        }
@@ -1278,7 +1278,7 @@ public class Recompiler
                        //would be invalid with permutation matrix mult across 
multiple dags)
                        if(     sb != null ) {
                                ArrayList<Instruction> tmp = 
pb.getInstructions();
-                               tmp = Recompiler.recompileHopsDag2Forced(sb, 
sb.get_hops(), tid, et);
+                               tmp = Recompiler.recompileHopsDag2Forced(sb, 
sb.getHops(), tid, et);
                                pb.setInstructions( tmp );
                        }
                        

http://git-wip-us.apache.org/repos/asf/systemml/blob/c04929fa/src/main/java/org/apache/sysml/hops/rewrite/ProgramRewriter.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/hops/rewrite/ProgramRewriter.java 
b/src/main/java/org/apache/sysml/hops/rewrite/ProgramRewriter.java
index c56b2ed..d8acdf6 100644
--- a/src/main/java/org/apache/sysml/hops/rewrite/ProgramRewriter.java
+++ b/src/main/java/org/apache/sysml/hops/rewrite/ProgramRewriter.java
@@ -256,7 +256,7 @@ public class ProgramRewriter
                }
                else //generic (last-level)
                {
-                       current.set_hops( rewriteHopDAG(current.get_hops(), 
state) );
+                       current.setHops( rewriteHopDAG(current.getHops(), 
state) );
                }
        }
        

http://git-wip-us.apache.org/repos/asf/systemml/blob/c04929fa/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 7e4567d..fdaad10 100644
--- a/src/main/java/org/apache/sysml/hops/rewrite/RewriteCompressedReblock.java
+++ b/src/main/java/org/apache/sysml/hops/rewrite/RewriteCompressedReblock.java
@@ -68,7 +68,7 @@ public class RewriteCompressedReblock extends 
StatementBlockRewriteRule
        {
                //check for inapplicable statement blocks
                if( !HopRewriteUtils.isLastLevelStatementBlock(sb)
-                       || sb.get_hops() == null )
+                       || sb.getHops() == null )
                        return Arrays.asList(sb);
                
                //parse compression config
@@ -78,10 +78,10 @@ public class RewriteCompressedReblock extends 
StatementBlockRewriteRule
                
                //perform compressed reblock rewrite
                if( compress.isEnabled() ) {
-                       Hop.resetVisitStatus(sb.get_hops());
-                       for( Hop h : sb.get_hops() ) 
+                       Hop.resetVisitStatus(sb.getHops());
+                       for( Hop h : sb.getHops() ) 
                                injectCompressionDirective(h, compress, 
sb.getDMLProg());
-                       Hop.resetVisitStatus(sb.get_hops());
+                       Hop.resetVisitStatus(sb.getHops());
                }
                return Arrays.asList(sb);
        }
@@ -198,8 +198,8 @@ public class RewriteCompressedReblock extends 
StatementBlockRewriteRule
                        if( fsb.variablesRead().containsAnyName(status.compMtx) 
)
                                status.usedInLoop = true;
                }
-               else if( sb.get_hops() != null ) { //generic (last-level)
-                       ArrayList<Hop> roots = sb.get_hops();
+               else if( sb.getHops() != null ) { //generic (last-level)
+                       ArrayList<Hop> roots = sb.getHops();
                        Hop.resetVisitStatus(roots);
                        //process entire HOP DAG starting from the roots
                        for( Hop root : roots )

http://git-wip-us.apache.org/repos/asf/systemml/blob/c04929fa/src/main/java/org/apache/sysml/hops/rewrite/RewriteForLoopVectorization.java
----------------------------------------------------------------------
diff --git 
a/src/main/java/org/apache/sysml/hops/rewrite/RewriteForLoopVectorization.java 
b/src/main/java/org/apache/sysml/hops/rewrite/RewriteForLoopVectorization.java
index 7d01715..fce1fa1 100644
--- 
a/src/main/java/org/apache/sysml/hops/rewrite/RewriteForLoopVectorization.java
+++ 
b/src/main/java/org/apache/sysml/hops/rewrite/RewriteForLoopVectorization.java
@@ -119,8 +119,8 @@ public class RewriteForLoopVectorization extends 
StatementBlockRewriteRule
                boolean rightScalar = false;
                boolean rowIx = false; //row or col
                
-               if( csb.get_hops()!=null && csb.get_hops().size()==1 ){
-                       Hop root = csb.get_hops().get(0);
+               if( csb.getHops()!=null && csb.getHops().size()==1 ){
+                       Hop root = csb.getHops().get(0);
                        
                        if( root.getDataType()==DataType.SCALAR && 
root.getInput().get(0) instanceof BinaryOp ) {
                                BinaryOp bop = (BinaryOp) 
root.getInput().get(0);
@@ -171,7 +171,7 @@ public class RewriteForLoopVectorization extends 
StatementBlockRewriteRule
                //apply rewrite if possible
                if( leftScalar || rightScalar ) 
                {
-                       Hop root = csb.get_hops().get(0);
+                       Hop root = csb.getHops().get(0);
                        BinaryOp bop = (BinaryOp) root.getInput().get(0);
                        Hop cast = bop.getInput().get( leftScalar?1:0 );
                        Hop ix = cast.getInput().get(0);
@@ -218,9 +218,9 @@ public class RewriteForLoopVectorization extends 
StatementBlockRewriteRule
                //check for applicability
                boolean apply = false;
                boolean rowIx = false; //row or col
-               if( csb.get_hops()!=null && csb.get_hops().size()==1 )
+               if( csb.getHops()!=null && csb.getHops().size()==1 )
                {
-                       Hop root = csb.get_hops().get(0);
+                       Hop root = csb.getHops().get(0);
                        
                        if( root.getDataType()==DataType.MATRIX && 
root.getInput().get(0) instanceof LeftIndexingOp )
                        {
@@ -262,7 +262,7 @@ public class RewriteForLoopVectorization extends 
StatementBlockRewriteRule
                //apply rewrite if possible
                if( apply ) 
                {
-                       Hop root = csb.get_hops().get(0);
+                       Hop root = csb.getHops().get(0);
                        LeftIndexingOp lix = (LeftIndexingOp) 
root.getInput().get(0);
                        BinaryOp bop = (BinaryOp) lix.getInput().get(1);
                        IndexingOp rix0 = (IndexingOp) bop.getInput().get(0);
@@ -302,9 +302,9 @@ public class RewriteForLoopVectorization extends 
StatementBlockRewriteRule
                //check for applicability
                boolean apply = false;
                boolean rowIx = false; //row or col
-               if( csb.get_hops()!=null && csb.get_hops().size()==1 )
+               if( csb.getHops()!=null && csb.getHops().size()==1 )
                {
-                       Hop root = csb.get_hops().get(0);
+                       Hop root = csb.getHops().get(0);
                        
                        if( root.getDataType()==DataType.MATRIX && 
root.getInput().get(0) instanceof LeftIndexingOp )
                        {
@@ -326,7 +326,7 @@ public class RewriteForLoopVectorization extends 
StatementBlockRewriteRule
                
                //apply rewrite if possible
                if( apply ) {
-                       Hop root = csb.get_hops().get(0);
+                       Hop root = csb.getHops().get(0);
                        LeftIndexingOp lix = (LeftIndexingOp) 
root.getInput().get(0);
                        UnaryOp uop = (UnaryOp) lix.getInput().get(1);
                        IndexingOp rix = (IndexingOp) uop.getInput().get(0);
@@ -362,9 +362,9 @@ public class RewriteForLoopVectorization extends 
StatementBlockRewriteRule
                //check for applicability
                boolean apply = false;
                boolean rowIx = false; //row or col
-               if( csb.get_hops()!=null && csb.get_hops().size()==1 )
+               if( csb.getHops()!=null && csb.getHops().size()==1 )
                {
-                       Hop root = csb.get_hops().get(0);
+                       Hop root = csb.getHops().get(0);
                        
                        if( root.getDataType()==DataType.MATRIX && 
root.getInput().get(0) instanceof LeftIndexingOp )
                        {
@@ -384,7 +384,7 @@ public class RewriteForLoopVectorization extends 
StatementBlockRewriteRule
                
                //apply rewrite if possible
                if( apply ) {
-                       Hop root = csb.get_hops().get(0);
+                       Hop root = csb.getHops().get(0);
                        LeftIndexingOp lix = (LeftIndexingOp) 
root.getInput().get(0);
                        IndexingOp rix = (IndexingOp) lix.getInput().get(1);
                        int index1 = rowIx ? 2 : 4;

http://git-wip-us.apache.org/repos/asf/systemml/blob/c04929fa/src/main/java/org/apache/sysml/hops/rewrite/RewriteInjectSparkLoopCheckpointing.java
----------------------------------------------------------------------
diff --git 
a/src/main/java/org/apache/sysml/hops/rewrite/RewriteInjectSparkLoopCheckpointing.java
 
b/src/main/java/org/apache/sysml/hops/rewrite/RewriteInjectSparkLoopCheckpointing.java
index f838952..ddee8ab 100644
--- 
a/src/main/java/org/apache/sysml/hops/rewrite/RewriteInjectSparkLoopCheckpointing.java
+++ 
b/src/main/java/org/apache/sysml/hops/rewrite/RewriteInjectSparkLoopCheckpointing.java
@@ -107,7 +107,7 @@ public class RewriteInjectSparkLoopCheckpointing extends 
StatementBlockRewriteRu
                                        livein.addVariable(var, 
read.getVariable(var));
                                        liveout.addVariable(var, 
read.getVariable(var));
                                }
-                               sb0.set_hops(hops);
+                               sb0.setHops(hops);
                                sb0.setLiveIn(livein);
                                sb0.setLiveOut(liveout);
                                sb0.setSplitDag(true);

http://git-wip-us.apache.org/repos/asf/systemml/blob/c04929fa/src/main/java/org/apache/sysml/hops/rewrite/RewriteMarkLoopVariablesUpdateInPlace.java
----------------------------------------------------------------------
diff --git 
a/src/main/java/org/apache/sysml/hops/rewrite/RewriteMarkLoopVariablesUpdateInPlace.java
 
b/src/main/java/org/apache/sysml/hops/rewrite/RewriteMarkLoopVariablesUpdateInPlace.java
index c29820e..c4b3340 100644
--- 
a/src/main/java/org/apache/sysml/hops/rewrite/RewriteMarkLoopVariablesUpdateInPlace.java
+++ 
b/src/main/java/org/apache/sysml/hops/rewrite/RewriteMarkLoopVariablesUpdateInPlace.java
@@ -114,8 +114,8 @@ public class RewriteMarkLoopVariablesUpdateInPlace extends 
StatementBlockRewrite
                                        ret &= 
rIsApplicableForUpdateInPlace(istmt.getElseBody(), varname);     
                        }
                        else {
-                               if( sb.get_hops() != null )
-                                       for( Hop hop : sb.get_hops() ) 
+                               if( sb.getHops() != null )
+                                       for( Hop hop : sb.getHops() ) 
                                                ret &= 
isApplicableForUpdateInPlace(hop, varname);
                        }
                        

http://git-wip-us.apache.org/repos/asf/systemml/blob/c04929fa/src/main/java/org/apache/sysml/hops/rewrite/RewriteMergeBlockSequence.java
----------------------------------------------------------------------
diff --git 
a/src/main/java/org/apache/sysml/hops/rewrite/RewriteMergeBlockSequence.java 
b/src/main/java/org/apache/sysml/hops/rewrite/RewriteMergeBlockSequence.java
index c1a6332..8742ade 100644
--- a/src/main/java/org/apache/sysml/hops/rewrite/RewriteMergeBlockSequence.java
+++ b/src/main/java/org/apache/sysml/hops/rewrite/RewriteMergeBlockSequence.java
@@ -72,8 +72,8 @@ public class RewriteMergeBlockSequence extends 
StatementBlockRewriteRule
                                        && (!hasFunctionOpRoot(sb1) || 
!hasFunctionIOConflict(sb1,sb2))
                                        && (!hasFunctionOpRoot(sb2) || 
!hasFunctionIOConflict(sb2,sb1)) )
                                {
-                                       ArrayList<Hop> sb1Hops = sb1.get_hops();
-                                       ArrayList<Hop> sb2Hops = sb2.get_hops();
+                                       ArrayList<Hop> sb1Hops = sb1.getHops();
+                                       ArrayList<Hop> sb2Hops = sb2.getHops();
                                        
                                        //determine transient read inputs s2 
                                        Hop.resetVisitStatus(sb2Hops);
@@ -162,19 +162,19 @@ public class RewriteMergeBlockSequence extends 
StatementBlockRewriteRule
        
        private static boolean hasFunctionOpRoot(StatementBlock sb) 
                        throws HopsException {
-               if( sb == null || sb.get_hops() == null )
+               if( sb == null || sb.getHops() == null )
                        return false;
                boolean ret = false;
-               for( Hop root : sb.get_hops() )
+               for( Hop root : sb.getHops() )
                        ret |= (root instanceof FunctionOp);
                return ret;
        }
        
        private static boolean hasExternalFunctionOpRoot(StatementBlock sb) 
                        throws HopsException {
-               if( sb == null || sb.get_hops() == null )
+               if( sb == null || sb.getHops() == null )
                        return false;
-               for( Hop root : sb.get_hops() )
+               for( Hop root : sb.getHops() )
                        if( root instanceof FunctionOp ) {
                                FunctionStatementBlock fsb = sb.getDMLProg()
                                        
.getFunctionStatementBlock(((FunctionOp)root).getFunctionKey());
@@ -195,7 +195,7 @@ public class RewriteMergeBlockSequence extends 
StatementBlockRewriteRule
                
                //collect all function output variables of sb1
                HashSet<String> outSb1 = new HashSet<>();
-               for( Hop root : sb1.get_hops() )
+               for( Hop root : sb1.getHops() )
                        if( root instanceof FunctionOp )
                                
outSb1.addAll(Arrays.asList(((FunctionOp)root).getOutputVariableNames()));
                

http://git-wip-us.apache.org/repos/asf/systemml/blob/c04929fa/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 7e7860e..6fbd953 100644
--- 
a/src/main/java/org/apache/sysml/hops/rewrite/RewriteSplitDagDataDependentOperators.java
+++ 
b/src/main/java/org/apache/sysml/hops/rewrite/RewriteSplitDagDataDependentOperators.java
@@ -75,15 +75,16 @@ public class RewriteSplitDagDataDependentOperators extends 
StatementBlockRewrite
                throws HopsException 
        {
                //DAG splits not required for forced single node
-               if( DMLScript.rtplatform == RUNTIME_PLATFORM.SINGLE_NODE )
+               if( DMLScript.rtplatform == RUNTIME_PLATFORM.SINGLE_NODE
+                       || !HopRewriteUtils.isLastLevelStatementBlock(sb) )
                        return new ArrayList<>(Arrays.asList(sb));
                
                ArrayList<StatementBlock> ret = new ArrayList<>();
        
                //collect all unknown csv reads hops
                ArrayList<Hop> cand = new ArrayList<>();
-               collectDataDependentOperators( sb.get_hops(), cand );
-               Hop.resetVisitStatus(sb.get_hops());
+               collectDataDependentOperators( sb.getHops(), cand );
+               Hop.resetVisitStatus(sb.getHops());
                
                //split hop dag on demand
                if( !cand.isEmpty() )
@@ -141,7 +142,7 @@ public class RewriteSplitDagDataDependentOperators extends 
StatementBlockRewrite
                                                                if( parent != 
twrite )
                                                                        
HopRewriteUtils.replaceChildReference(parent, c, tread);
                                                                else
-                                                                       
sb.get_hops().remove(parent);
+                                                                       
sb.getHops().remove(parent);
                                                        }
                                                }
                                                
@@ -187,10 +188,10 @@ public class RewriteSplitDagDataDependentOperators 
extends StatementBlockRewrite
                                }
                                
                                //ensure disjoint operators across DAGs 
(prevent replicated operations)
-                               handleReplicatedOperators( sb1hops, 
sb.get_hops(), sb1.liveOut(), sb.liveIn() );
+                               handleReplicatedOperators( sb1hops, 
sb.getHops(), sb1.liveOut(), sb.liveIn() );
                                
                                //deep copy new dag (in order to prevent any 
dangling references)
-                               
sb1.set_hops(Recompiler.deepCopyHopsDag(sb1hops));
+                               
sb1.setHops(Recompiler.deepCopyHopsDag(sb1hops));
                                sb1.updateRecompilationFlag();
                                sb1.setSplitDag(true); //avoid later merge by 
other rewrites
                                

http://git-wip-us.apache.org/repos/asf/systemml/blob/c04929fa/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 e9a6407..5ec7cb0 100644
--- 
a/src/main/java/org/apache/sysml/hops/rewrite/RewriteSplitDagUnknownCSVRead.java
+++ 
b/src/main/java/org/apache/sysml/hops/rewrite/RewriteSplitDagUnknownCSVRead.java
@@ -50,14 +50,15 @@ public class RewriteSplitDagUnknownCSVRead extends 
StatementBlockRewriteRule
                throws HopsException 
        {
                //DAG splits not required for forced single node
-               if( DMLScript.rtplatform == RUNTIME_PLATFORM.SINGLE_NODE )
+               if( DMLScript.rtplatform == RUNTIME_PLATFORM.SINGLE_NODE
+                       || !HopRewriteUtils.isLastLevelStatementBlock(sb) )
                        return Arrays.asList(sb);
                
                ArrayList<StatementBlock> ret = new ArrayList<>();
                
                //collect all unknown csv reads hops
                ArrayList<Hop> cand = new ArrayList<>();
-               collectCSVReadHopsUnknownSize( sb.get_hops(), cand );
+               collectCSVReadHopsUnknownSize( sb.getHops(), cand );
                
                //split hop dag on demand
                if( !cand.isEmpty() )
@@ -117,7 +118,7 @@ public class RewriteSplitDagUnknownCSVRead extends 
StatementBlockRewriteRule
                                        }
                                }
                                
-                               sb1.set_hops(sb1hops);
+                               sb1.setHops(sb1hops);
                                sb1.updateRecompilationFlag();
                                ret.add(sb1); //statement block with csv 
reblocks
                                ret.add(sb); //statement block with remaining 
hops

http://git-wip-us.apache.org/repos/asf/systemml/blob/c04929fa/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 5a7f60e..71633c4 100644
--- a/src/main/java/org/apache/sysml/parser/DMLTranslator.java
+++ b/src/main/java/org/apache/sysml/parser/DMLTranslator.java
@@ -132,17 +132,9 @@ public class DMLTranslator
                        
                                // add the input variables for the function to 
input variable list
                                FunctionStatement fstmt = 
(FunctionStatement)fblock.getStatement(0);
-                               if (fblock.getNumStatements() > 1){
-                                       LOG.error(fstmt.printErrorLocation() + 
"FunctionStatementBlock can only have 1 FunctionStatement");
-                                       throw new 
LanguageException(fstmt.printErrorLocation() + "FunctionStatementBlock can only 
have 1 FunctionStatement");
-                               }
-                       
-                               for (DataIdentifier currVar : 
fstmt.getInputParams()) { 
-                                       
-                                       if (currVar.getDataType() == 
DataType.SCALAR){
+                               for (DataIdentifier currVar : 
fstmt.getInputParams()) {
+                                       if (currVar.getDataType() == 
DataType.SCALAR)
                                                currVar.setDimensions(0, 0);
-                                       }
-                                       
                                        vs.addVariable(currVar.getName(), 
currVar);
                                }
                                fblock.validate(dmlp, vs, constVars, false);
@@ -251,7 +243,7 @@ public class DMLTranslator
        {
                // Step 1: construct hops for all functions
                // for each namespace, handle function program blocks
-               for (String namespaceKey : dmlp.getNamespaces().keySet()){      
        
+               for (String namespaceKey : dmlp.getNamespaces().keySet()){
                        for (String fname: 
dmlp.getFunctionStatementBlocks(namespaceKey).keySet()) {
                                FunctionStatementBlock current = 
dmlp.getFunctionStatementBlock(namespaceKey, fname);
                                constructHops(current);
@@ -337,15 +329,10 @@ public class DMLTranslator
                        WhileStatementBlock wsb = (WhileStatementBlock)sb;
                        WhileStatement whileStmt = 
(WhileStatement)wsb.getStatement(0);
                        ArrayList<StatementBlock> body = whileStmt.getBody();
-                               
-                       if (sb.get_hops() != null && !sb.get_hops().isEmpty()) {
-                               LOG.error(sb.printBlockErrorLocation() + 
"WhileStatementBlock should not have hops");
-                               throw new 
HopsException(sb.printBlockErrorLocation() + "WhileStatementBlock should not 
have hops");
-                       }
+                       
                        // step through stmt blocks in while stmt body
-                       for (StatementBlock stmtBlock : body){
+                       for (StatementBlock stmtBlock : body)
                                ret |= constructLops(stmtBlock);
-                       }
                        
                        // handle while stmt predicate
                        Lop l = wsb.getPredicateHops().constructLops();
@@ -359,11 +346,7 @@ public class DMLTranslator
                        IfStatement ifStmt = (IfStatement)isb.getStatement(0);
                        ArrayList<StatementBlock> ifBody = ifStmt.getIfBody();
                        ArrayList<StatementBlock> elseBody = 
ifStmt.getElseBody();
-                               
-                       if (sb.get_hops() != null && !sb.get_hops().isEmpty()){
-                               LOG.error(sb.printBlockErrorLocation() + 
"IfStatementBlock should not have hops");
-                               throw new 
HopsException(sb.printBlockErrorLocation() + "IfStatementBlock should not have 
hops");
-                       }
+                       
                        // step through stmt blocks in if stmt ifBody
                        for (StatementBlock stmtBlock : ifBody)
                                ret |= constructLops(stmtBlock);
@@ -383,11 +366,7 @@ public class DMLTranslator
                        ForStatementBlock fsb =  (ForStatementBlock) sb;
                        ForStatement fs = (ForStatement)sb.getStatement(0);
                        ArrayList<StatementBlock> body = fs.getBody();
-                                               
-                       if (sb.get_hops() != null && !sb.get_hops().isEmpty() ) 
{
-                               LOG.error(sb.printBlockErrorLocation() + 
"ForStatementBlock should not have hops");
-                               throw new 
HopsException(sb.printBlockErrorLocation() + "ForStatementBlock should not have 
hops");
-                       }
+                       
                        // step through stmt blocks in FOR stmt body
                        for (StatementBlock stmtBlock : body)
                                ret |= constructLops(stmtBlock);
@@ -411,10 +390,7 @@ public class DMLTranslator
                        FunctionStatementBlock fsb = (FunctionStatementBlock) 
sb;
                        FunctionStatement functStmt = 
(FunctionStatement)sb.getStatement(0);
                        ArrayList<StatementBlock> body = functStmt.getBody();
-                       if (sb.get_hops() != null && !sb.get_hops().isEmpty()) {
-                               LOG.error(sb.printBlockErrorLocation() + 
"FunctionStatementBlock should not have hops");
-                               throw new 
HopsException(sb.printBlockErrorLocation() + "FunctionStatementBlock should not 
have hops");
-                       }
+                       
                        // step through stmt blocks in while stmt body
                        for( StatementBlock stmtBlock : body )
                                ret |= constructLops(stmtBlock);
@@ -424,10 +400,10 @@ public class DMLTranslator
                
                // handle default case for regular StatementBlock
                else {
-                       if (sb.get_hops() == null)
-                               sb.set_hops(new ArrayList<Hop>());
+                       if (sb.getHops() == null)
+                               sb.setHops(new ArrayList<Hop>());
                        ArrayList<Lop> lops = new ArrayList<>();
-                       for (Hop hop : sb.get_hops())
+                       for (Hop hop : sb.getHops())
                                lops.add(hop.constructLops());
                        sb.setLops(lops);
                        ret |= sb.updateRecompilationFlag(); 
@@ -503,10 +479,6 @@ public class DMLTranslator
                        //// process the body of the while statement block ////
                        
                        WhileStatementBlock wsb = (WhileStatementBlock)sb;
-                       if (wsb.getNumStatements() > 1){
-                               LOG.error(wsb.printBlockErrorLocation() + 
"WhileStatementBlock should only have 1 statement");
-                               throw new 
LopsException(wsb.printBlockErrorLocation() + "WhileStatementBlock should only 
have 1 statement");
-                       }
                        WhileStatement wstmt = 
(WhileStatement)wsb.getStatement(0);
                        for (StatementBlock sblock : wstmt.getBody()){
                                
@@ -515,13 +487,6 @@ public class DMLTranslator
                                rtpb.addProgramBlock(childBlock);
                        }
                        
-                       // check there are actually Lops in to process (loop 
stmt body will not have any)
-                       if (wsb.getLops() != null && !wsb.getLops().isEmpty() ){
-                               LOG.error(wsb.printBlockErrorLocation() + 
"WhileStatementBlock should have no Lops");
-                               throw new 
LopsException(wsb.printBlockErrorLocation() + "WhileStatementBlock should have 
no Lops");
-                       }
-                       
-                       
                        retPB = rtpb;
                        
                        // add statement block
@@ -550,10 +515,6 @@ public class DMLTranslator
                        
                        // process the body of the if statement block
                        IfStatementBlock isb = (IfStatementBlock)sb;
-                       if (isb.getNumStatements() > 1){
-                               LOG.error(isb.printBlockErrorLocation() + 
"IfStatementBlock should have only 1 statement");
-                               throw new 
LopsException(isb.printBlockErrorLocation() + "IfStatementBlock should have 
only 1 statement");
-                       }
                        IfStatement istmt = (IfStatement)isb.getStatement(0);
                        
                        // process the if body
@@ -568,12 +529,6 @@ public class DMLTranslator
                                rtpb.addProgramBlockElseBody(childBlock); 
                        }
                        
-                       // check there are actually Lops in to process (loop 
stmt body will not have any)
-                       if (isb.getLops() != null && !isb.getLops().isEmpty() ){
-                               LOG.error(isb.printBlockErrorLocation() + 
"IfStatementBlock should have no Lops");
-                               throw new 
LopsException(isb.printBlockErrorLocation() + "IfStatementBlock should have no 
Lops");
-                       }
-                       
                        retPB = rtpb;
                        
                        //post processing for generating missing instructions
@@ -609,19 +564,16 @@ public class DMLTranslator
                        ArrayList<Instruction> incrementInstructions = 
incrementDag.getJobs(null, config);
 
                        // create for program block
-                       String sbName = null;
                        ForProgramBlock rtpb = null;
                        IterablePredicate iterPred = fsb.getIterPredicate();
                        
                        if( sb instanceof ParForStatementBlock && 
ConfigurationManager.isParallelParFor() ) {
-                               sbName = "ParForStatementBlock";
                                rtpb = new ParForProgramBlock(prog, 
iterPred.getIterVar().getName(),
                                        iterPred.getParForParams(), 
((ParForStatementBlock)sb).getResultVariables());
                                ParForProgramBlock pfrtpb = 
(ParForProgramBlock)rtpb;
                                
pfrtpb.setStatementBlock((ParForStatementBlock)sb); //used for optimization and 
creating unscoped variables
                        }
                        else {//ForStatementBlock
-                               sbName = "ForStatementBlock";
                                rtpb = new ForProgramBlock(prog, 
iterPred.getIterVar().getName());
                        }
                        
@@ -630,22 +582,12 @@ public class DMLTranslator
                        rtpb.setIncrementInstructions(incrementInstructions);
                        
                        // process the body of the for statement block
-                       if (fsb.getNumStatements() > 1){
-                               LOG.error(fsb.printBlockErrorLocation() + " " + 
sbName + " should have 1 statement" );
-                               throw new 
LopsException(fsb.printBlockErrorLocation() + " " + sbName + " should have 1 
statement" );
-                       }
                        ForStatement fs = (ForStatement)fsb.getStatement(0);
                        for (StatementBlock sblock : fs.getBody()){
                                ProgramBlock childBlock = 
createRuntimeProgramBlock(prog, sblock, config);
                                rtpb.addProgramBlock(childBlock); 
                        }
                
-                       // check there are actually Lops in to process (loop 
stmt body will not have any)
-                       if (fsb.getLops() != null && !fsb.getLops().isEmpty()){
-                               LOG.error(fsb.printBlockErrorLocation() + 
sbName + " should have no Lops" );
-                               throw new 
LopsException(fsb.printBlockErrorLocation() + sbName + " should have no Lops" );
-                       }
-                       
                        retPB = rtpb;
                        
                        // add statement block
@@ -659,10 +601,6 @@ public class DMLTranslator
                else if (sb instanceof FunctionStatementBlock){
                        
                        FunctionStatementBlock fsb = (FunctionStatementBlock)sb;
-                       if (fsb.getNumStatements() > 1){
-                               LOG.error(fsb.printBlockErrorLocation() + 
"FunctionStatementBlock should only have 1 statement");
-                               throw new 
LopsException(fsb.printBlockErrorLocation() + "FunctionStatementBlock should 
only have 1 statement");
-                       }
                        FunctionStatement fstmt = 
(FunctionStatement)fsb.getStatement(0);
                        FunctionProgramBlock rtpb = null;
                        
@@ -670,17 +608,11 @@ public class DMLTranslator
                                 // create external function program block
                                
                                String execType = ((ExternalFunctionStatement) 
fstmt)
-                                                   
.getOtherParams().get(ExternalFunctionStatement.EXEC_TYPE);
+                                               
.getOtherParams().get(ExternalFunctionStatement.EXEC_TYPE);
                                boolean isCP = 
(execType.equals(ExternalFunctionStatement.IN_MEMORY)) ? true : false;
                                
-                               String scratchSpaceLoc = null;
-                               try {
-                                       scratchSpaceLoc = 
config.getTextValue(DMLConfig.SCRATCH_SPACE);
-                               } catch (Exception e){
-                                       LOG.error(fsb.printBlockErrorLocation() 
+ "could not retrieve parameter " + DMLConfig.SCRATCH_SPACE + " from 
DMLConfig");
-                               }                               
                                StringBuilder buff = new StringBuilder();
-                               buff.append(scratchSpaceLoc);
+                               
buff.append(config.getTextValue(DMLConfig.SCRATCH_SPACE));
                                buff.append(Lop.FILE_SEPARATOR);
                                buff.append(Lop.PROCESS_PREFIX);
                                buff.append(DMLScript.getUUID());
@@ -697,7 +629,7 @@ public class DMLTranslator
                                        rtpb = new 
ExternalFunctionProgramBlockCP(prog, 
                                                                        
fstmt.getInputParams(), fstmt.getOutputParams(), 
                                                                        
((ExternalFunctionStatement) fstmt).getOtherParams(),
-                                                                       basedir 
);                                      
+                                                                       basedir 
);
                                }
                                else
                                {
@@ -922,12 +854,12 @@ public class DMLTranslator
        public void refreshMemEstimates(StatementBlock current) throws 
ParseException, HopsException {
        
                MemoTable memo = new MemoTable();
-               ArrayList<Hop> hopsDAG = current.get_hops();
-               if (hopsDAG != null && !hopsDAG.isEmpty()) {
-                       Iterator<Hop> iter = hopsDAG.iterator();
-                       while (iter.hasNext()) {
-                               iter.next().refreshMemEstimates(memo);
-                       }
+               
+               if( HopRewriteUtils.isLastLevelStatementBlock(current) ) {
+                       ArrayList<Hop> hopsDAG = current.getHops();
+                       if (hopsDAG != null && !hopsDAG.isEmpty())
+                               for( Hop hop : hopsDAG )
+                                       hop.refreshMemEstimates(memo);
                }
                
                if (current instanceof FunctionStatementBlock) {
@@ -937,8 +869,7 @@ public class DMLTranslator
                                refreshMemEstimates(sb);
                        }
                }
-               
-               if (current instanceof WhileStatementBlock) {
+               else if (current instanceof WhileStatementBlock) {
                        // handle predicate
                        WhileStatementBlock wstb = (WhileStatementBlock) 
current;
                        wstb.getPredicateHops().refreshMemEstimates(new 
MemoTable());
@@ -951,8 +882,7 @@ public class DMLTranslator
                                refreshMemEstimates(sb);
                        }
                }
-               
-               if (current instanceof IfStatementBlock) {
+               else if (current instanceof IfStatementBlock) {
                        // handle predicate
                        IfStatementBlock istb = (IfStatementBlock) current;
                        istb.getPredicateHops().refreshMemEstimates(new 
MemoTable());
@@ -968,8 +898,7 @@ public class DMLTranslator
                                refreshMemEstimates(sb);
                        }
                }
-               
-               if (current instanceof ForStatementBlock) {
+               else if (current instanceof ForStatementBlock) {
                        // handle predicate
                        ForStatementBlock fsb = (ForStatementBlock) current;
                        if (fsb.getFromHops() != null) 
@@ -1008,51 +937,40 @@ public class DMLTranslator
                        
        public static void resetHopsDAGVisitStatus(StatementBlock current) 
throws ParseException, HopsException {
        
-               ArrayList<Hop> hopsDAG = current.get_hops();
-               if (hopsDAG != null && !hopsDAG.isEmpty() ) {
-                       Hop.resetVisitStatus(hopsDAG);
+               if( HopRewriteUtils.isLastLevelStatementBlock(current) ) {
+                       ArrayList<Hop> hopsDAG = current.getHops();
+                       if (hopsDAG != null && !hopsDAG.isEmpty() ) {
+                               Hop.resetVisitStatus(hopsDAG);
+                       }
                }
                
                if (current instanceof FunctionStatementBlock) {
-                       
                        FunctionStatement fstmt = 
(FunctionStatement)current.getStatement(0);
                        for (StatementBlock sb : fstmt.getBody()){
                                resetHopsDAGVisitStatus(sb);
                        }
                }
-               
-               if (current instanceof WhileStatementBlock) {
+               else if (current instanceof WhileStatementBlock) {
                        // handle predicate
                        WhileStatementBlock wstb = (WhileStatementBlock) 
current;
                        wstb.getPredicateHops().resetVisitStatus();
-               
-                       if (wstb.getNumStatements() > 1)
-                               LOG.debug("While stmt block has more than 1 
stmt");
-                       WhileStatement ws = 
(WhileStatement)wstb.getStatement(0);
                        
-                       for (StatementBlock sb : ws.getBody()){
+                       WhileStatement ws = 
(WhileStatement)wstb.getStatement(0);
+                       for (StatementBlock sb : ws.getBody())
                                resetHopsDAGVisitStatus(sb);
-                       }
                }
-               
-               if (current instanceof IfStatementBlock) {
+               else if (current instanceof IfStatementBlock) {
                        // handle predicate
                        IfStatementBlock istb = (IfStatementBlock) current;
                        istb.getPredicateHops().resetVisitStatus();
                
-                       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()){
+                       for (StatementBlock sb : is.getIfBody())
                                resetHopsDAGVisitStatus(sb);
-                       }
-                       for (StatementBlock sb : is.getElseBody()){
+                       for (StatementBlock sb : is.getElseBody())
                                resetHopsDAGVisitStatus(sb);
-                       }
                }
-               
-               if (current instanceof ForStatementBlock) {
+               else if (current instanceof ForStatementBlock) {
                        // handle predicate
                        ForStatementBlock fsb = (ForStatementBlock) current;
                        if (fsb.getFromHops() != null) 
@@ -1090,7 +1008,7 @@ public class DMLTranslator
        
        public void resetLopsDAGVisitStatus(StatementBlock current) throws 
HopsException {
                
-               ArrayList<Hop> hopsDAG = current.get_hops();
+               ArrayList<Hop> hopsDAG = current.getHops();
 
                if (hopsDAG != null && !hopsDAG.isEmpty() ) {
                        Iterator<Hop> iter = hopsDAG.iterator();
@@ -1474,7 +1392,7 @@ public class DMLTranslator
                        
                }
                sb.updateLiveVariablesOut(updatedLiveOut);
-               sb.set_hops(output);
+               sb.setHops(output);
 
        }
        

http://git-wip-us.apache.org/repos/asf/systemml/blob/c04929fa/src/main/java/org/apache/sysml/parser/ForStatementBlock.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/parser/ForStatementBlock.java 
b/src/main/java/org/apache/sysml/parser/ForStatementBlock.java
index 686ce7a..ae1aa75 100644
--- a/src/main/java/org/apache/sysml/parser/ForStatementBlock.java
+++ b/src/main/java/org/apache/sysml/parser/ForStatementBlock.java
@@ -265,16 +265,7 @@ public class ForStatementBlock extends StatementBlock
                return loReturn;
        
        }
-
-       @Override
-       public ArrayList<Hop> get_hops() throws HopsException {
-               if (_hops != null && !_hops.isEmpty()){
-                       LOG.error(this.printBlockErrorLocation() + "there 
should be no HOPs associated with the ForStatementBlock");
-                       throw new HopsException(this.printBlockErrorLocation() 
+ "there should be no HOPs associated with the ForStatementBlock");
-               }
-               return _hops;
-       }
-
+       
        public void setFromHops(Hop hops) { _fromHops = hops; }
        public void setToHops(Hop hops) { _toHops = hops; }
        public void setIncrementHops(Hop hops) { _incrementHops = hops; }

http://git-wip-us.apache.org/repos/asf/systemml/blob/c04929fa/src/main/java/org/apache/sysml/parser/FunctionStatementBlock.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/parser/FunctionStatementBlock.java 
b/src/main/java/org/apache/sysml/parser/FunctionStatementBlock.java
index 0f91d00..35ec6d4 100644
--- a/src/main/java/org/apache/sysml/parser/FunctionStatementBlock.java
+++ b/src/main/java/org/apache/sysml/parser/FunctionStatementBlock.java
@@ -23,8 +23,6 @@ import java.io.IOException;
 import java.util.ArrayList;
 import java.util.HashMap;
 
-import org.apache.sysml.hops.Hop;
-import org.apache.sysml.hops.HopsException;
 import org.apache.sysml.hops.FunctionOp.FunctionType;
 import org.apache.sysml.parser.Expression.DataType;
 import org.apache.sysml.parser.Expression.ValueType;
@@ -267,17 +265,6 @@ public class FunctionStatementBlock extends StatementBlock
        }
        
        @Override
-       public ArrayList<Hop> get_hops() throws HopsException {
-               
-               if (_hops != null && _hops.size() > 0){
-                       LOG.error(this.printBlockErrorLocation() + "there 
should be no HOPs associated with the FunctionStatementBlock");
-                       throw new HopsException(this.printBlockErrorLocation() 
+ "there should be no HOPs associated with the FunctionStatementBlock");
-               }
-               
-               return _hops;
-       }
-       
-       @Override
        public VariableSet analyze(VariableSet loPassed) throws 
LanguageException{
                LOG.error(this.printBlockErrorLocation() + "Both liveIn and 
liveOut variables need to be specified for liveness analysis for 
FunctionStatementBlock");
                throw new LanguageException(this.printBlockErrorLocation() + 
"Both liveIn and liveOut variables need to be specified for liveness analysis 
for FunctionStatementBlock");        

http://git-wip-us.apache.org/repos/asf/systemml/blob/c04929fa/src/main/java/org/apache/sysml/parser/IfStatementBlock.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/parser/IfStatementBlock.java 
b/src/main/java/org/apache/sysml/parser/IfStatementBlock.java
index 6803eb2..00295d1 100644
--- a/src/main/java/org/apache/sysml/parser/IfStatementBlock.java
+++ b/src/main/java/org/apache/sysml/parser/IfStatementBlock.java
@@ -455,15 +455,6 @@ public class IfStatementBlock extends StatementBlock
                _predicateHops = hops;
        }
        
-       @Override
-       public ArrayList<Hop> get_hops() throws HopsException{
-               if (_hops != null && _hops.size() > 0){
-                       LOG.error(this.printBlockErrorLocation() + "error there 
should be no HOPs in IfStatementBlock");
-                       throw new HopsException(this.printBlockErrorLocation() 
+ "error there should be no HOPs in IfStatementBlock");
-               }
-               return _hops;
-       }
-       
        public Hop getPredicateHops(){
                return _predicateHops;
        }

http://git-wip-us.apache.org/repos/asf/systemml/blob/c04929fa/src/main/java/org/apache/sysml/parser/StatementBlock.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/parser/StatementBlock.java 
b/src/main/java/org/apache/sysml/parser/StatementBlock.java
index c2a3e01..f7f6426 100644
--- a/src/main/java/org/apache/sysml/parser/StatementBlock.java
+++ b/src/main/java/org/apache/sysml/parser/StatementBlock.java
@@ -114,8 +114,7 @@ public class StatementBlock extends LiveVariableAnalysis 
implements ParseInfo
                return _statements.get(i);
        }
 
-       public ArrayList<Statement> getStatements()
-       {
+       public ArrayList<Statement> getStatements() {
                return _statements;
        }
 
@@ -124,7 +123,7 @@ public class StatementBlock extends LiveVariableAnalysis 
implements ParseInfo
                _statements = s;
        }
 
-       public ArrayList<Hop> get_hops() throws HopsException {
+       public ArrayList<Hop> getHops() {
                return _hops;
        }
 
@@ -132,7 +131,7 @@ public class StatementBlock extends LiveVariableAnalysis 
implements ParseInfo
                return _lops;
        }
 
-       public void set_hops(ArrayList<Hop> hops) {
+       public void setHops(ArrayList<Hop> hops) {
                _hops = hops;
        }
 
@@ -1047,7 +1046,7 @@ public class StatementBlock extends LiveVariableAnalysis 
implements ParseInfo
        public boolean updateRecompilationFlag() throws HopsException {
                return (_requiresRecompile =
                        ConfigurationManager.isDynamicRecompilation()
-                       && Recompiler.requiresRecompilation(get_hops()));
+                       && Recompiler.requiresRecompilation(getHops()));
        }
 
        public boolean requiresRecompilation() {

http://git-wip-us.apache.org/repos/asf/systemml/blob/c04929fa/src/main/java/org/apache/sysml/parser/WhileStatementBlock.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/parser/WhileStatementBlock.java 
b/src/main/java/org/apache/sysml/parser/WhileStatementBlock.java
index 05e2c2c..d34353a 100644
--- a/src/main/java/org/apache/sysml/parser/WhileStatementBlock.java
+++ b/src/main/java/org/apache/sysml/parser/WhileStatementBlock.java
@@ -247,17 +247,6 @@ public class WhileStatementBlock extends StatementBlock
                _predicateHops = hops;
        }
        
-       @Override
-       public ArrayList<Hop> get_hops() throws HopsException {
-               
-               if (_hops != null && !_hops.isEmpty()){
-                       LOG.error(this._statements.get(0).printErrorLocation() 
+ "there should be no HOPs associated with the WhileStatementBlock");
-                       throw new 
HopsException(this._statements.get(0).printErrorLocation() + "there should be 
no HOPs associated with the WhileStatementBlock");
-               }
-               
-               return _hops;
-       }
-       
        public Hop getPredicateHops(){
                return _predicateHops;
        }

http://git-wip-us.apache.org/repos/asf/systemml/blob/c04929fa/src/main/java/org/apache/sysml/runtime/controlprogram/ProgramBlock.java
----------------------------------------------------------------------
diff --git 
a/src/main/java/org/apache/sysml/runtime/controlprogram/ProgramBlock.java 
b/src/main/java/org/apache/sysml/runtime/controlprogram/ProgramBlock.java
index 34ba2fc..fd6909d 100644
--- a/src/main/java/org/apache/sysml/runtime/controlprogram/ProgramBlock.java
+++ b/src/main/java/org/apache/sysml/runtime/controlprogram/ProgramBlock.java
@@ -145,7 +145,7 @@ public class ProgramBlock implements ParseInfo
                                && _sb.requiresRecompilation() )
                        {
                                tmp = Recompiler.recompileHopsDag(
-                                       _sb, _sb.get_hops(), ec.getVariables(), 
null, false, true, _tid);
+                                       _sb, _sb.getHops(), ec.getVariables(), 
null, false, true, _tid);
                        }
                        if( DMLScript.STATISTICS ){
                                long t1 = System.nanoTime();

http://git-wip-us.apache.org/repos/asf/systemml/blob/c04929fa/src/main/java/org/apache/sysml/runtime/controlprogram/parfor/ProgramConverter.java
----------------------------------------------------------------------
diff --git 
a/src/main/java/org/apache/sysml/runtime/controlprogram/parfor/ProgramConverter.java
 
b/src/main/java/org/apache/sysml/runtime/controlprogram/parfor/ProgramConverter.java
index 3e4568b..ea3deb5 100644
--- 
a/src/main/java/org/apache/sysml/runtime/controlprogram/parfor/ProgramConverter.java
+++ 
b/src/main/java/org/apache/sysml/runtime/controlprogram/parfor/ProgramConverter.java
@@ -543,7 +543,7 @@ public class ProgramConverter
                {
                        if( 
ConfigurationManager.getCompilerConfigFlag(ConfigType.ALLOW_PARALLEL_DYN_RECOMPILATION)
 
                                && sb != null  //forced deep copy for function 
recompilation
-                               && (Recompiler.requiresRecompilation( 
sb.get_hops() ) || forceDeepCopy)  )
+                               && (Recompiler.requiresRecompilation( 
sb.getHops() ) || forceDeepCopy)  )
                        {
                                //create new statement (shallow copy 
livein/liveout for recompile, line numbers for explain)
                                ret = new StatementBlock();
@@ -555,10 +555,10 @@ public class ProgramConverter
                                ret.setReadVariables( sb.variablesRead() );
                                
                                //deep copy hops dag for concurrent recompile
-                               ArrayList<Hop> hops = 
Recompiler.deepCopyHopsDag( sb.get_hops() );
+                               ArrayList<Hop> hops = 
Recompiler.deepCopyHopsDag( sb.getHops() );
                                if( !plain )
                                        Recompiler.updateFunctionNames( hops, 
pid );
-                               ret.set_hops( hops );
+                               ret.setHops( hops );
                                ret.updateRecompilationFlag();
                        }
                        else

http://git-wip-us.apache.org/repos/asf/systemml/blob/c04929fa/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 d5b990b..69ad37a 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
@@ -459,7 +459,7 @@ public class OptTreeConverter
                        //process all hops
                        node = new OptNode(NodeType.GENERIC);
                        _hlMap.putProgMapping(sb, pb, node);
-                       node.addChilds( createAbstractOptNodes(sb.get_hops(), 
vars, memo) );
+                       node.addChilds( createAbstractOptNodes(sb.getHops(), 
vars, memo) );
                        node.setExecType(ExecType.CP);
                        node.setLineNumbers(sb.getBeginLine(), sb.getEndLine());
                        

http://git-wip-us.apache.org/repos/asf/systemml/blob/c04929fa/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 597b7c0..28368c7 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
@@ -117,7 +117,7 @@ public class OptTreePlanChecker
                }
                else
                {
-                       checkHopDagCorrectness(prog, dprog, sb.get_hops(), 
pb.getInstructions(), fnStack);
+                       checkHopDagCorrectness(prog, dprog, sb.getHops(), 
pb.getInstructions(), fnStack);
                        //checkLinksProgramStatementBlock(pb, sb);
                }
                

http://git-wip-us.apache.org/repos/asf/systemml/blob/c04929fa/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 1294809..eca87da 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
@@ -773,7 +773,7 @@ public class OptimizerRuleBased extends Optimizer
                
                //construct new instructions
                ArrayList<Instruction> newInst = Recompiler.recompileHopsDag(
-                       sb, sb.get_hops(), vars, null, false, false, 0);
+                       sb, sb.getHops(), vars, null, false, false, 0);
                pb.setInstructions( newInst );   
                
                //reset all rix estimated (modified by recompile)

http://git-wip-us.apache.org/repos/asf/systemml/blob/c04929fa/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 12a4ccb..98b104f 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
@@ -164,17 +164,17 @@ public class ProgramRecompiler
                        {
                                //process actual hops
                                boolean ret = false;
-                               Hop.resetVisitStatus(sb.get_hops());
+                               Hop.resetVisitStatus(sb.getHops());
                                if( force )
                                {
                                        //set forced execution type
-                                       for( Hop h : sb.get_hops() )
+                                       for( Hop h : sb.getHops() )
                                                ret |= 
rFindAndSetCPIndexingHOP(h, var);
                                }
                                else
                                {
                                        //release forced execution type
-                                       for( Hop h : sb.get_hops() )
+                                       for( Hop h : sb.getHops() )
                                                ret |= 
rFindAndReleaseIndexingHOP(h, var);
                                }
                                
@@ -183,7 +183,7 @@ public class ProgramRecompiler
                                {
                                        //construct new instructions
                                        ArrayList<Instruction> newInst = 
Recompiler.recompileHopsDag(
-                                               sb, sb.get_hops(), 
ec.getVariables(), null, true, false, 0);
+                                               sb, sb.getHops(), 
ec.getVariables(), null, true, false, 0);
                                        pb.setInstructions( newInst ); 
                                }
                        }
@@ -245,7 +245,7 @@ public class ProgramRecompiler
                }
                else //last level block
                {
-                       ArrayList<Hop> hops = sb.get_hops();
+                       ArrayList<Hop> hops = sb.getHops();
                        if( hops != null ) 
                        {       
                                //replace constant literals

http://git-wip-us.apache.org/repos/asf/systemml/blob/c04929fa/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 6a9d696..b72fe99 100644
--- a/src/main/java/org/apache/sysml/utils/Explain.java
+++ b/src/main/java/org/apache/sysml/utils/Explain.java
@@ -617,7 +617,7 @@ public class Explain
                        if (sb.requiresRecompilation()) {
                                addSubGraphHeader(builder, withSubgraph);
                        }
-                       ArrayList<Hop> hopsDAG = sb.get_hops();
+                       ArrayList<Hop> hopsDAG = sb.getHops();
                        if (hopsDAG != null && !hopsDAG.isEmpty()) {
                                Hop.resetVisitStatus(hopsDAG);
                                for (Hop hop : hopsDAG)
@@ -710,7 +710,7 @@ public class Explain
                        // For generic StatementBlock
                        builder.append(offset);
                        builder.append("GENERIC (lines 
"+sb.getBeginLine()+"-"+sb.getEndLine()+") [recompile=" + 
sb.requiresRecompilation() + "]\n");
-                       ArrayList<Hop> hopsDAG = sb.get_hops();
+                       ArrayList<Hop> hopsDAG = sb.getHops();
                        if( hopsDAG != null && !hopsDAG.isEmpty() ) {
                                Hop.resetVisitStatus(hopsDAG);
                                for (Hop hop : hopsDAG)

http://git-wip-us.apache.org/repos/asf/systemml/blob/c04929fa/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 b3e4ae7..934967e 100644
--- a/src/main/java/org/apache/sysml/yarn/ropt/GridEnumerationMemory.java
+++ b/src/main/java/org/apache/sysml/yarn/ropt/GridEnumerationMemory.java
@@ -130,9 +130,9 @@ public class GridEnumerationMemory extends GridEnumeration
                else
                {
                        StatementBlock sb = pb.getStatementBlock();
-                       if( sb != null && sb.get_hops() != null ){
-                               Hop.resetVisitStatus(sb.get_hops());
-                               for( Hop hop : sb.get_hops() )
+                       if( sb != null && sb.getHops() != null ){
+                               Hop.resetVisitStatus(sb.getHops());
+                               for( Hop hop : sb.getHops() )
                                        getMemoryEstimates(hop, mem);
                        }
                }

http://git-wip-us.apache.org/repos/asf/systemml/blob/c04929fa/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 c5cabbe..43030da 100644
--- a/src/main/java/org/apache/sysml/yarn/ropt/ResourceOptimizer.java
+++ b/src/main/java/org/apache/sysml/yarn/ropt/ResourceOptimizer.java
@@ -256,7 +256,7 @@ public class ResourceOptimizer
                {
                        StatementBlock sb = pb.getStatementBlock();
                        ArrayList<Instruction> inst = 
Recompiler.recompileHopsDag(
-                               sb, sb.get_hops(), new LocalVariableMap(), 
null, false, false, 0);
+                               sb, sb.getHops(), new LocalVariableMap(), null, 
false, false, 0);
                        pb.setInstructions( inst );
                        B.add(pb);
                        _cntCompilePB ++;
@@ -337,7 +337,7 @@ public class ResourceOptimizer
                {
                        StatementBlock sb = pb.getStatementBlock();
                        ArrayList<Instruction> inst = 
Recompiler.recompileHopsDag(
-                               sb, sb.get_hops(), new LocalVariableMap(), 
null, false, false, 0);
+                               sb, sb.getHops(), new LocalVariableMap(), null, 
false, false, 0);
                        inst = annotateMRJobInstructions(inst, cp, mr);
                        pb.setInstructions( inst );
                }
@@ -388,7 +388,7 @@ public class ResourceOptimizer
                double val = 0;
                if( COST_INDIVIDUAL_BLOCKS ) {
                        LocalVariableMap vars = new LocalVariableMap();
-                       collectReadVariables(pb.getStatementBlock().get_hops(), 
vars);
+                       collectReadVariables(pb.getStatementBlock().getHops(), 
vars);
                        ExecutionContext ec = 
ExecutionContextFactory.createContext(false, null);
                        ec.setVariables(vars);
                        val = CostEstimationWrapper.getTimeEstimate(pb, ec, 
false);     
@@ -499,7 +499,7 @@ public class ResourceOptimizer
                else //last-level program blocks
                {
                        StatementBlock sb = pb.getStatementBlock();
-                       return pruneHasOnlyUnknownMR(sb.get_hops());
+                       return pruneHasOnlyUnknownMR(sb.getHops());
                }
        }
 

Reply via email to