## Uses of Class
org.apache.sysds.parser.StatementBlock

- Packages that use StatementBlock
  Package | Description
  --- | ---
  org.apache.sysds.hops.codegen |
  org.apache.sysds.hops.fedplanner |
  org.apache.sysds.hops.ipa |
  org.apache.sysds.hops.recompile |
  org.apache.sysds.hops.rewrite |
  org.apache.sysds.lops.compile |
  org.apache.sysds.parser |
  org.apache.sysds.runtime.controlprogram |
  org.apache.sysds.runtime.controlprogram.parfor.opt |
  org.apache.sysds.runtime.util |
  org.apache.sysds.utils |

- - ### Uses of StatementBlock in org.apache.sysds.hops.codegen

    Methods in org.apache.sysds.hops.codegen with parameters of type StatementBlock
    Modifier and Type | Method | Description
    --- | --- | ---
    `static ArrayList<Instruction>` | SpoofCompiler.`generateCodeFromHopDAGsToInst​(StatementBlock sb, ArrayList<Hop> roots)` |
    `static void` | SpoofCompiler.`generateCodeFromStatementBlock​(StatementBlock current)` |

  - ### Uses of StatementBlock in org.apache.sysds.hops.fedplanner

    Methods in org.apache.sysds.hops.fedplanner that return types with arguments of type StatementBlock
    Modifier and Type | Method | Description
    --- | --- | ---
    `ArrayList<StatementBlock>` | FederatedPlannerCostbased.`rewriteStatementBlock​(DMLProgram prog, StatementBlock sb, Map<String,​Hop> paramMap)` | Estimates cost and enumerates federated execution plans in hopRelMemo.

    Methods in org.apache.sysds.hops.fedplanner with parameters of type StatementBlock
    Modifier and Type | Method | Description
    --- | --- | ---
    `ArrayList<StatementBlock>` | FederatedPlannerCostbased.`rewriteStatementBlock​(DMLProgram prog, StatementBlock sb, Map<String,​Hop> paramMap)` | Estimates cost and enumerates federated execution plans in hopRelMemo.

  - ### Uses of StatementBlock in org.apache.sysds.hops.ipa

    Methods in org.apache.sysds.hops.ipa that return types with arguments of type StatementBlock
    Modifier and Type | Method | Description
    --- | --- | ---
    `List<StatementBlock>` | FunctionCallGraph.`getFunctionCallsSB​(String fkey)` | Returns all statement blocks that contain a function operator calling the given function.

    Methods in org.apache.sysds.hops.ipa with parameters of type StatementBlock
    Modifier and Type | Method | Description
    --- | --- | ---
    `void` | FunctionCallGraph.`removeFunctionCall​(String fkey, FunctionOp fop, StatementBlock sb)` | Removes a single function call identified by target function name, and source function op and statement block.
    `boolean` | IPAPassFlagFunctionsRecompileOnce.`rFlagFunctionForRecompileOnce​(StatementBlock sb, boolean inLoop)` | Returns true if this statementblock requires recompilation inside a loop statement block.

    Constructors in org.apache.sysds.hops.ipa with parameters of type StatementBlock
    Constructor | Description
    --- | ---
    `FunctionCallGraph​(StatementBlock sb)` | Constructs the function call graph for all functions reachable from the given statement block.
    `InterProceduralAnalysis​(StatementBlock sb)` |

  - ### Uses of StatementBlock in org.apache.sysds.hops.recompile

    Methods in org.apache.sysds.hops.recompile with parameters of type StatementBlock
    Modifier and Type | Method | Description
    --- | --- | ---
    `static ArrayList<Instruction>` | Recompiler.`recompileHopsDag​(StatementBlock sb, ArrayList<Hop> hops, ExecutionContext ec, RecompileStatus status, boolean inplace, boolean replaceLit, long tid)` |
    `static ArrayList<Instruction>` | Recompiler.`recompileHopsDag​(StatementBlock sb, ArrayList<Hop> hops, LocalVariableMap vars, RecompileStatus status, boolean inplace, boolean replaceLit, long tid)` |
    `static ArrayList<Instruction>` | Recompiler.`recompileHopsDag2Forced​(StatementBlock sb, ArrayList<Hop> hops, long tid, Types.ExecType et)` |
    `static ArrayList<Instruction>` | Recompiler.`recompileHopsDagInstructions​(StatementBlock sb, ArrayList<Hop> hops)` |
    `static RecompileStatus` | Recompiler.`reconcileUpdatedCallVarsIf​(RecompileStatus oldStatus, RecompileStatus callStatusIf, RecompileStatus callStatusElse, StatementBlock sb)` |
    `static LocalVariableMap` | Recompiler.`reconcileUpdatedCallVarsIf​(LocalVariableMap oldCallVars, LocalVariableMap callVarsIf, LocalVariableMap callVarsElse, StatementBlock sb)` |
    `static boolean` | Recompiler.`reconcileUpdatedCallVarsLoops​(RecompileStatus oldCallStatus, RecompileStatus callStatus, StatementBlock sb)` |
    `static boolean` | Recompiler.`reconcileUpdatedCallVarsLoops​(LocalVariableMap oldCallVars, LocalVariableMap callVars, StatementBlock sb)` |
    `static void` | Recompiler.`removeUpdatedScalars​(LocalVariableMap callVars, StatementBlock sb)` | Remove any scalar variables from the variable map if the variable is updated in this block.

  - ### Uses of StatementBlock in org.apache.sysds.hops.rewrite

    Methods in org.apache.sysds.hops.rewrite that return types with arguments of type StatementBlock
    Modifier and Type | Method | Description
    --- | --- | ---
    `List<StatementBlock>` | MarkForLineageReuse.`rewriteStatementBlock​(StatementBlock sb, ProgramRewriteStatus status)` |
    `List<StatementBlock>` | RewriteCompressedReblock.`rewriteStatementBlock​(StatementBlock sb, ProgramRewriteStatus sate)` |
    `List<StatementBlock>` | RewriteForLoopVectorization.`rewriteStatementBlock​(StatementBlock sb, ProgramRewriteStatus state)` |
    `List<StatementBlock>` | RewriteHoistLoopInvariantOperations.`rewriteStatementBlock​(StatementBlock sb, ProgramRewriteStatus state)` |
    `List<StatementBlock>` | RewriteInjectSparkLoopCheckpointing.`rewriteStatementBlock​(StatementBlock sb, ProgramRewriteStatus status)` |
    `List<StatementBlock>` | RewriteMarkLoopVariablesUpdateInPlace.`rewriteStatementBlock​(StatementBlock sb, ProgramRewriteStatus status)` |
    `List<StatementBlock>` | RewriteMergeBlockSequence.`rewriteStatementBlock​(StatementBlock sb, ProgramRewriteStatus state)` |
    `List<StatementBlock>` | RewriteRemoveEmptyBasicBlocks.`rewriteStatementBlock​(StatementBlock sb, ProgramRewriteStatus state)` |
    `List<StatementBlock>` | RewriteRemoveForLoopEmptySequence.`rewriteStatementBlock​(StatementBlock sb, ProgramRewriteStatus state)` |
    `List<StatementBlock>` | RewriteRemoveUnnecessaryBranches.`rewriteStatementBlock​(StatementBlock sb, ProgramRewriteStatus state)` |
    `List<StatementBlock>` | RewriteSplitDagDataDependentOperators.`rewriteStatementBlock​(StatementBlock sb, ProgramRewriteStatus state)` |
    `List<StatementBlock>` | RewriteSplitDagUnknownCSVRead.`rewriteStatementBlock​(StatementBlock sb, ProgramRewriteStatus state)` |
    `abstract List<StatementBlock>` | StatementBlockRewriteRule.`rewriteStatementBlock​(StatementBlock sb, ProgramRewriteStatus state)` | Handle an arbitrary statement block.
    `List<StatementBlock>` | MarkForLineageReuse.`rewriteStatementBlocks​(List<StatementBlock> sbs, ProgramRewriteStatus status)` |
    `List<StatementBlock>` | RewriteCompressedReblock.`rewriteStatementBlocks​(List<StatementBlock> sbs, ProgramRewriteStatus sate)` |
    `List<StatementBlock>` | RewriteForLoopVectorization.`rewriteStatementBlocks​(List<StatementBlock> sbs, ProgramRewriteStatus sate)` |
    `List<StatementBlock>` | RewriteHoistLoopInvariantOperations.`rewriteStatementBlocks​(List<StatementBlock> sbs, ProgramRewriteStatus state)` |
    `List<StatementBlock>` | RewriteInjectSparkLoopCheckpointing.`rewriteStatementBlocks​(List<StatementBlock> sbs, ProgramRewriteStatus sate)` |
    `List<StatementBlock>` | RewriteMarkLoopVariablesUpdateInPlace.`rewriteStatementBlocks​(List<StatementBlock> sbs, ProgramRewriteStatus sate)` |
    `List<StatementBlock>` | RewriteMergeBlockSequence.`rewriteStatementBlocks​(List<StatementBlock> sbs, ProgramRewriteStatus sate)` |
    `List<StatementBlock>` | RewriteRemoveEmptyBasicBlocks.`rewriteStatementBlocks​(List<StatementBlock> sbs, ProgramRewriteStatus sate)` |
    `List<StatementBlock>` | RewriteRemoveForLoopEmptySequence.`rewriteStatementBlocks​(List<StatementBlock> sbs, ProgramRewriteStatus state)` |
    `List<StatementBlock>` | RewriteRemoveUnnecessaryBranches.`rewriteStatementBlocks​(List<StatementBlock> sbs, ProgramRewriteStatus sate)` |
    `List<StatementBlock>` | RewriteSplitDagDataDependentOperators.`rewriteStatementBlocks​(List<StatementBlock> sbs, ProgramRewriteStatus sate)` |
    `List<StatementBlock>` | RewriteSplitDagUnknownCSVRead.`rewriteStatementBlocks​(List<StatementBlock> sbs, ProgramRewriteStatus sate)` |
    `abstract List<StatementBlock>` | StatementBlockRewriteRule.`rewriteStatementBlocks​(List<StatementBlock> sbs, ProgramRewriteStatus state)` | Handle a list of statement blocks.
    `ArrayList<StatementBlock>` | ProgramRewriter.`rRewriteStatementBlock​(StatementBlock sb, ProgramRewriteStatus status, boolean splitDags)` |
    `ArrayList<StatementBlock>` | ProgramRewriter.`rRewriteStatementBlocks​(ArrayList<StatementBlock> sbs, ProgramRewriteStatus status, boolean splitDags)` |

    Methods in org.apache.sysds.hops.rewrite with parameters of type StatementBlock
    Modifier and Type | Method | Description
    --- | --- | ---
    `static boolean` | HopRewriteUtils.`isLastLevelStatementBlock​(StatementBlock sb)` |
    `static boolean` | HopRewriteUtils.`isLoopStatementBlock​(StatementBlock sb)` |
    `List<StatementBlock>` | MarkForLineageReuse.`rewriteStatementBlock​(StatementBlock sb, ProgramRewriteStatus status)` |
    `List<StatementBlock>` | RewriteCompressedReblock.`rewriteStatementBlock​(StatementBlock sb, ProgramRewriteStatus sate)` |
    `List<StatementBlock>` | RewriteForLoopVectorization.`rewriteStatementBlock​(StatementBlock sb, ProgramRewriteStatus state)` |
    `List<StatementBlock>` | RewriteHoistLoopInvariantOperations.`rewriteStatementBlock​(StatementBlock sb, ProgramRewriteStatus state)` |
    `List<StatementBlock>` | RewriteInjectSparkLoopCheckpointing.`rewriteStatementBlock​(StatementBlock sb, ProgramRewriteStatus status)` |
    `List<StatementBlock>` | RewriteMarkLoopVariablesUpdateInPlace.`rewriteStatementBlock​(StatementBlock sb, ProgramRewriteStatus status)` |
    `List<StatementBlock>` | RewriteMergeBlockSequence.`rewriteStatementBlock​(StatementBlock sb, ProgramRewriteStatus state)` |
    `List<StatementBlock>` | RewriteRemoveEmptyBasicBlocks.`rewriteStatementBlock​(StatementBlock sb, ProgramRewriteStatus state)` |
    `List<StatementBlock>` | RewriteRemoveForLoopEmptySequence.`rewriteStatementBlock​(StatementBlock sb, ProgramRewriteStatus state)` |
    `List<StatementBlock>` | RewriteRemoveUnnecessaryBranches.`rewriteStatementBlock​(StatementBlock sb, ProgramRewriteStatus state)` |
    `List<StatementBlock>` | RewriteSplitDagDataDependentOperators.`rewriteStatementBlock​(StatementBlock sb, ProgramRewriteStatus state)` |
    `List<StatementBlock>` | RewriteSplitDagUnknownCSVRead.`rewriteStatementBlock​(StatementBlock sb, ProgramRewriteStatus state)` |
    `abstract List<StatementBlock>` | StatementBlockRewriteRule.`rewriteStatementBlock​(StatementBlock sb, ProgramRewriteStatus state)` | Handle an arbitrary statement block.
    `ArrayList<StatementBlock>` | ProgramRewriter.`rRewriteStatementBlock​(StatementBlock sb, ProgramRewriteStatus status, boolean splitDags)` |
    `void` | ProgramRewriter.`rRewriteStatementBlockHopDAGs​(StatementBlock current, ProgramRewriteStatus state)` |
    `static void` | HopRewriteUtils.`setUnoptimizedFunctionCalls​(StatementBlock sb)` |

    Method parameters in org.apache.sysds.hops.rewrite with type arguments of type StatementBlock
    Modifier and Type | Method | Description
    --- | --- | ---
    `List<StatementBlock>` | MarkForLineageReuse.`rewriteStatementBlocks​(List<StatementBlock> sbs, ProgramRewriteStatus status)` |
    `List<StatementBlock>` | RewriteCompressedReblock.`rewriteStatementBlocks​(List<StatementBlock> sbs, ProgramRewriteStatus sate)` |
    `List<StatementBlock>` | RewriteForLoopVectorization.`rewriteStatementBlocks​(List<StatementBlock> sbs, ProgramRewriteStatus sate)` |
    `List<StatementBlock>` | RewriteHoistLoopInvariantOperations.`rewriteStatementBlocks​(List<StatementBlock> sbs, ProgramRewriteStatus state)` |
    `List<StatementBlock>` | RewriteInjectSparkLoopCheckpointing.`rewriteStatementBlocks​(List<StatementBlock> sbs, ProgramRewriteStatus sate)` |
    `List<StatementBlock>` | RewriteMarkLoopVariablesUpdateInPlace.`rewriteStatementBlocks​(List<StatementBlock> sbs, ProgramRewriteStatus sate)` |
    `List<StatementBlock>` | RewriteMergeBlockSequence.`rewriteStatementBlocks​(List<StatementBlock> sbs, ProgramRewriteStatus sate)` |
    `List<StatementBlock>` | RewriteRemoveEmptyBasicBlocks.`rewriteStatementBlocks​(List<StatementBlock> sbs, ProgramRewriteStatus sate)` |
    `List<StatementBlock>` | RewriteRemoveForLoopEmptySequence.`rewriteStatementBlocks​(List<StatementBlock> sbs, ProgramRewriteStatus state)` |
    `List<StatementBlock>` | RewriteRemoveUnnecessaryBranches.`rewriteStatementBlocks​(List<StatementBlock> sbs, ProgramRewriteStatus sate)` |
    `List<StatementBlock>` | RewriteSplitDagDataDependentOperators.`rewriteStatementBlocks​(List<StatementBlock> sbs, ProgramRewriteStatus sate)` |
    `List<StatementBlock>` | RewriteSplitDagUnknownCSVRead.`rewriteStatementBlocks​(List<StatementBlock> sbs, ProgramRewriteStatus sate)` |
    `abstract List<StatementBlock>` | StatementBlockRewriteRule.`rewriteStatementBlocks​(List<StatementBlock> sbs, ProgramRewriteStatus state)` | Handle a list of statement blocks.
    `ArrayList<StatementBlock>` | ProgramRewriter.`rRewriteStatementBlocks​(ArrayList<StatementBlock> sbs, ProgramRewriteStatus status, boolean splitDags)` |

  - ### Uses of StatementBlock in org.apache.sysds.lops.compile

    Methods in org.apache.sysds.lops.compile with parameters of type StatementBlock
    Modifier and Type | Method | Description
    --- | --- | ---
    `ArrayList<Instruction>` | Dag.`getJobs​(StatementBlock sb, DMLConfig config)` | Method to compile a dag generically

  - ### Uses of StatementBlock in org.apache.sysds.parser

    Subclasses of StatementBlock in org.apache.sysds.parser
    Modifier and Type | Class | Description
    --- | --- | ---
    `class` | `ForStatementBlock` |
    `class` | `FunctionStatementBlock` |
    `class` | `IfStatementBlock` |
    `class` | `ParForStatementBlock` | This ParForStatementBlock is essentially identical to a ForStatementBlock, except an extended validate for checking/setting optional parfor parameters and running the loop dependency analysis.
    `class` | `WhileStatementBlock` |

    Methods in org.apache.sysds.parser that return StatementBlock
    Modifier and Type | Method | Description
    --- | --- | ---
    `StatementBlock` | DMLProgram.`getStatementBlock​(int i)` |
    `static StatementBlock` | ParserWrapper.`getStatementBlock​(Statement current)` | Custom wrapper to convert statement into statement blocks.

    Methods in org.apache.sysds.parser that return types with arguments of type StatementBlock
    Modifier and Type | Method | Description
    --- | --- | ---
    `ArrayList<StatementBlock>` | ForStatement.`getBody()` |
    `ArrayList<StatementBlock>` | FunctionStatement.`getBody()` |
    `ArrayList<StatementBlock>` | WhileStatement.`getBody()` |
    `ArrayList<StatementBlock>` | IfStatement.`getElseBody()` |
    `ArrayList<StatementBlock>` | IfStatement.`getIfBody()` |
    `ArrayList<StatementBlock>` | DMLProgram.`getStatementBlocks()` |
    `static ArrayList<StatementBlock>` | StatementBlock.`mergeFunctionCalls​(List<StatementBlock> body, DMLProgram dmlProg)` |
    `static ArrayList<StatementBlock>` | StatementBlock.`mergeStatementBlocks​(List<StatementBlock> sb)` |
    `static List<StatementBlock>` | StatementBlock.`rHoistFunctionCallsFromExpressions​(StatementBlock current, DMLProgram prog)` |

    Methods in org.apache.sysds.parser with parameters of type StatementBlock
    Modifier and Type | Method | Description
    --- | --- | ---
    `void` | DMLProgram.`addStatementBlock​(StatementBlock b)` |
    `void` | ForStatement.`addStatementBlock​(StatementBlock sb)` |
    `void` | StatementBlock.`addStatementBlock​(StatementBlock s)` |
    `void` | WhileStatement.`addStatementBlock​(StatementBlock sb)` |
    `void` | IfStatement.`addStatementBlockElseBody​(StatementBlock sb)` |
    `void` | IfStatement.`addStatementBlockIfBody​(StatementBlock sb)` |
    `void` | DMLTranslator.`constructHops​(StatementBlock sb)` |
    `void` | DMLTranslator.`constructHopsForConditionalPredicate​(StatementBlock passedSB)` |
    `boolean` | DMLTranslator.`constructLops​(StatementBlock sb)` |
    `ProgramBlock` | DMLTranslator.`createRuntimeProgramBlock​(Program prog, StatementBlock sb, DMLConfig config)` |
    `static void` | DMLTranslator.`refreshMemEstimates​(StatementBlock current)` |
    `static void` | DMLTranslator.`resetHopsDAGVisitStatus​(StatementBlock current)` |
    `void` | DMLTranslator.`resetLopsDAGVisitStatus​(StatementBlock current)` |
    `static List<StatementBlock>` | StatementBlock.`rHoistFunctionCallsFromExpressions​(StatementBlock current, DMLProgram prog)` |

    Method parameters in org.apache.sysds.parser with type arguments of type StatementBlock
    Modifier and Type | Method | Description
    --- | --- | ---
    `void` | DMLTranslator.`cleanupLiveOutVariables​(List<StatementBlock> sbs, VariableSet unionLiveIn)` |
    `static ArrayList<StatementBlock>` | StatementBlock.`mergeFunctionCalls​(List<StatementBlock> body, DMLProgram dmlProg)` |
    `static ArrayList<StatementBlock>` | StatementBlock.`mergeStatementBlocks​(List<StatementBlock> sb)` |
    `void` | ForStatement.`setBody​(ArrayList<StatementBlock> body)` |
    `void` | FunctionStatement.`setBody​(ArrayList<StatementBlock> body)` |
    `void` | WhileStatement.`setBody​(ArrayList<StatementBlock> body)` |
    `void` | IfStatement.`setElseBody​(ArrayList<StatementBlock> body)` |
    `void` | IfStatement.`setIfBody​(ArrayList<StatementBlock> body)` |
    `void` | DMLProgram.`setStatementBlocks​(ArrayList<StatementBlock> passed)` |

    Constructors in org.apache.sysds.parser with parameters of type StatementBlock
    Constructor | Description
    --- | ---
    `StatementBlock​(StatementBlock sb)` |

  - ### Uses of StatementBlock in org.apache.sysds.runtime.controlprogram

    Methods in org.apache.sysds.runtime.controlprogram that return StatementBlock
    Modifier and Type | Method | Description
    --- | --- | ---
    `StatementBlock` | ProgramBlock.`getStatementBlock()` |

    Methods in org.apache.sysds.runtime.controlprogram with parameters of type StatementBlock
    Modifier and Type | Method | Description
    --- | --- | ---
    `void` | ProgramBlock.`setStatementBlock​(StatementBlock sb)` |

  - ### Uses of StatementBlock in org.apache.sysds.runtime.controlprogram.parfor.opt

    Methods in org.apache.sysds.runtime.controlprogram.parfor.opt with parameters of type StatementBlock
    Modifier and Type | Method | Description
    --- | --- | ---
    `static void` | OptTreePlanChecker.`checkProgramCorrectness​(ProgramBlock pb, StatementBlock sb, Set<String> fnStack)` |
    `static LocalVariableMap` | ProgramRecompiler.`getReusableScalarVariables​(DMLProgram prog, StatementBlock parforSB, LocalVariableMap vars)` |
    `static boolean` | ProgramRecompiler.`isApplicableForReuseVariable​(DMLProgram prog, StatementBlock parforSB, String var)` | This function determines if an parfor input variable is guaranteed to be read-only across multiple invocations of parfor optimization (e.g., in a surrounding while loop).
    `long` | OptTreePlanMappingAbstract.`putProgMapping​(StatementBlock sb, ProgramBlock pb, OptNode n)` |
    `static OptNode` | OptTreeConverter.`rCreateAbstractOptNode​(StatementBlock sb, ProgramBlock pb, LocalVariableMap vars, boolean topLevel, OptTreePlanMappingAbstract hlMap, Set<String> memo)` |
    `static void` | ProgramRecompiler.`replaceConstantScalarVariables​(StatementBlock sb, LocalVariableMap vars)` |
    `static void` | ProgramRecompiler.`rFindAndRecompileIndexingHOP​(StatementBlock sb, ProgramBlock pb, String var, ExecutionContext ec, boolean force)` | NOTE: if force is set, we set and recompile the respective indexing hops; otherwise, we release the forced exec type and recompile again.

    Method parameters in org.apache.sysds.runtime.controlprogram.parfor.opt with type arguments of type StatementBlock
    Modifier and Type | Method | Description
    --- | --- | ---
    `static ArrayList<ProgramBlock>` | ProgramRecompiler.`generatePartitialRuntimeProgram​(Program rtprog, ArrayList<StatementBlock> sbs)` |

  - ### Uses of StatementBlock in org.apache.sysds.runtime.util

    Methods in org.apache.sysds.runtime.util that return StatementBlock
    Modifier and Type | Method | Description
    --- | --- | ---
    `static StatementBlock` | ProgramConverter.`createStatementBlockCopy​(StatementBlock sb, long pid, boolean plain, boolean forceDeepCopy)` |
    `static StatementBlock` | ProgramConverter.`rCreateDeepCopyStatementBlock​(StatementBlock sb)` |

    Methods in org.apache.sysds.runtime.util with parameters of type StatementBlock
    Modifier and Type | Method | Description
    --- | --- | ---
    `static StatementBlock` | ProgramConverter.`createStatementBlockCopy​(StatementBlock sb, long pid, boolean plain, boolean forceDeepCopy)` |
    `static StatementBlock` | ProgramConverter.`rCreateDeepCopyStatementBlock​(StatementBlock sb)` |

  - ### Uses of StatementBlock in org.apache.sysds.utils

    Methods in org.apache.sysds.utils with parameters of type StatementBlock
    Modifier and Type | Method | Description
    --- | --- | ---
    `static String` | Explain.`explain​(StatementBlock sb)` |