Package org.apache.sysds.parser

## Class StatementBlock

- java.lang.Object
- - org.apache.sysds.parser.LiveVariableAnalysis
  - - org.apache.sysds.parser.StatementBlock

All Implemented Interfaces:
  `ParseInfo`

Direct Known Subclasses:
  `ForStatementBlock`, `FunctionStatementBlock`, `IfStatementBlock`, `WhileStatementBlock`

    public class StatementBlock
    extends LiveVariableAnalysis
    implements ParseInfo

### Field Summary

Fields
`static double` `DEFAULT_LOOP_REPETITIONS`

### Constructor Summary

Constructors
`StatementBlock()`
`StatementBlock​(StatementBlock sb)`

### Method Summary

All Methods Static Methods Instance Methods Concrete Methods
`void` `addStatement​(Statement s)`
`void` `addStatementBlock​(StatementBlock s)`
`VariableSet` `analyze​(VariableSet loPassed)`
`int` `getBeginColumn()`
`int` `getBeginLine()`
`HashMap<Lop.Type,​List<Lop.Type>>` `getCheckpointPositions()`
`HashMap<String,​ConstIdentifier>` `getConstIn()`
`HashMap<String,​ConstIdentifier>` `getConstOut()`
`DMLProgram` `getDMLProg()`
`int` `getEndColumn()`
`int` `getEndLine()`
`String` `getFilename()`
`ArrayList<Hop>` `getHops()`
`ArrayList<String>` `getInputstoSB()`
`ArrayList<Lop>` `getLops()`
`String` `getName()`
`int` `getNumStatements()`
`ArrayList<String>` `getOutputNamesofSB()`
`ArrayList<DataIdentifier>` `getOutputsofSB()`
`long` `getSBID()`
`Statement` `getStatement​(int i)`
`ArrayList<Statement>` `getStatements()`
`String` `getText()`
`ArrayList<String>` `getUpdateInPlaceVars()`
`boolean` `hasHops()`
`VariableSet` `initializebackwardLV​(VariableSet loPassed)`

`VariableSet`

`initializeforwardLV​(VariableSet activeIn)`

For each statement: gen rule: for each variable read in current statement but not updated in any PRIOR statement, add to gen Handles case where variable both read and updated in same statement (i = i + 1, i needs to be added to gen) kill rule: for each variable updated in current statement but not read in this or any PRIOR statement, add to kill.

`boolean` `isMergeableFunctionCallBlock​(DMLProgram dmlProg)`
`boolean` `isNondeterministic()`
`boolean` `isRewritableFunctionCall​(Statement stmt, DMLProgram dmlProg)`
`boolean` `isSplitDag()`
`boolean` `mergeable()`
`static ArrayList<StatementBlock>` `mergeFunctionCalls​(List<StatementBlock> body, DMLProgram dmlProg)`
`static ArrayList<StatementBlock>` `mergeStatementBlocks​(List<StatementBlock> sb)`
`String` `printBlockErrorLocation()`
`String` `printErrorLocation()`
`String` `printWarningLocation()`
`void` `raiseValidateError​(String msg, boolean conditional)`
`void` `raiseValidateError​(String msg, boolean conditional, String errorCode)`
`boolean` `requiresRecompilation()`
`ArrayList<Statement>` `rewriteFunctionCallStatements​(DMLProgram dmlProg, ArrayList<Statement> statements)`
`static Expression` `rHoistFunctionCallsFromExpressions​(Expression expr, boolean root, ArrayList<Statement> tmp, DMLProgram prog)`
`static List<StatementBlock>` `rHoistFunctionCallsFromExpressions​(StatementBlock current, DMLProgram prog)`
`static List<Statement>` `rHoistFunctionCallsFromExpressions​(Statement stmt, DMLProgram prog)`
`void` `setBeginColumn​(int passed)`
`void` `setBeginLine​(int passed)`
`void` `setCheckpointPosition​(Lop input, List<Lop> outputs)`
`void` `setDMLProg​(DMLProgram dmlProg)`
`void` `setEndColumn​(int passed)`
`void` `setEndLine​(int passed)`
`void` `setFilename​(String fname)`
`void` `setHops​(ArrayList<Hop> hops)`
`void` `setLops​(ArrayList<Lop> lops)`
`void` `setNondeterministic​(boolean flag)`
`void` `setParseInfo​(ParseInfo parseInfo)` Set parse information.
`void` `setSplitDag​(boolean flag)`
`void` `setStatementFormatType​(AssignmentStatement s, boolean conditionalValidate)`
`void` `setStatementFormatType​(OutputStatement s, boolean conditionalValidate)`
`void` `setStatements​(ArrayList<Statement> s)`
`void` `setText​(String text)`
`void` `setUpdateInPlaceVars​(ArrayList<String> vars)`
`String` `toString()`
`boolean` `updateRecompilationFlag()`
`void` `updateRepetitionEstimates​(double repetitions)` Updates the repetition estimate for this statement block and all contained hops.
`VariableSet` `validate​(DMLProgram dmlProg, VariableSet ids, HashMap<String,​ConstIdentifier> constVars, boolean conditional)`

### Methods inherited from class org.apache.sysds.parser.LiveVariableAnalysis

`getGen, getKill, getWarn, liveIn, liveOut, setGen, setKill, setLiveIn, setLiveOut, setReadVariables, setUpdatedVariables, updateLiveVariablesOut, variablesRead, variablesUpdated`

### Methods inherited from class java.lang.Object

`equals, getClass, hashCode, notify, notifyAll, wait, wait, wait`

### Field Detail

#### DEFAULT_LOOP_REPETITIONS

    public static final double DEFAULT_LOOP_REPETITIONS

See Also:
  Constant Field Values

### Constructor Detail

#### StatementBlock

    public StatementBlock()

#### StatementBlock

    public StatementBlock​(StatementBlock sb)

### Method Detail

#### setDMLProg

    public void setDMLProg​(DMLProgram dmlProg)

#### getDMLProg

    public DMLProgram getDMLProg()

#### getSBID

    public long getSBID()

#### getName

    public String getName()

#### addStatement

    public void addStatement​(Statement s)

#### addStatementBlock

    public void addStatementBlock​(StatementBlock s)

#### getNumStatements

    public int getNumStatements()

#### getStatement

    public Statement getStatement​(int i)

#### getStatements

    public ArrayList<Statement> getStatements()

#### setStatements

    public void setStatements​(ArrayList<Statement> s)

#### getHops

    public ArrayList<Hop> getHops()

#### getLops

    public ArrayList<Lop> getLops()

#### setHops

    public void setHops​(ArrayList<Hop> hops)

#### setLops

    public void setLops​(ArrayList<Lop> lops)

#### mergeable

    public boolean mergeable()

#### setSplitDag

    public void setSplitDag​(boolean flag)

#### isSplitDag

    public boolean isSplitDag()

#### isMergeableFunctionCallBlock

    public boolean isMergeableFunctionCallBlock​(DMLProgram dmlProg)

#### isRewritableFunctionCall

    public boolean isRewritableFunctionCall​(Statement stmt,
                                            DMLProgram dmlProg)

#### mergeFunctionCalls

    public static ArrayList<StatementBlock> mergeFunctionCalls​(List<StatementBlock> body,
                                                               DMLProgram dmlProg)

#### toString

    public String toString()

Overrides:
  `toString` in class `Object`

#### getInputstoSB

    public ArrayList<String> getInputstoSB()

#### getOutputNamesofSB

    public ArrayList<String> getOutputNamesofSB()

#### getOutputsofSB

    public ArrayList<DataIdentifier> getOutputsofSB()

#### mergeStatementBlocks

    public static ArrayList<StatementBlock> mergeStatementBlocks​(List<StatementBlock> sb)

#### rHoistFunctionCallsFromExpressions

    public static List<StatementBlock> rHoistFunctionCallsFromExpressions​(StatementBlock current,
                                                                          DMLProgram prog)

#### rHoistFunctionCallsFromExpressions

    public static List<Statement> rHoistFunctionCallsFromExpressions​(Statement stmt,
                                                                     DMLProgram prog)

#### rHoistFunctionCallsFromExpressions

    public static Expression rHoistFunctionCallsFromExpressions​(Expression expr,
                                                                boolean root,
                                                                ArrayList<Statement> tmp,
                                                                DMLProgram prog)

#### rewriteFunctionCallStatements

    public ArrayList<Statement> rewriteFunctionCallStatements​(DMLProgram dmlProg,
                                                              ArrayList<Statement> statements)

#### validate

    public VariableSet validate​(DMLProgram dmlProg,
                                VariableSet ids,
                                HashMap<String,​ConstIdentifier> constVars,
                                boolean conditional)

#### setStatementFormatType

    public void setStatementFormatType​(OutputStatement s,
                                       boolean conditionalValidate)

#### setStatementFormatType

    public void setStatementFormatType​(AssignmentStatement s,
                                       boolean conditionalValidate)

#### initializeforwardLV

    public VariableSet initializeforwardLV​(VariableSet activeIn)

For each statement: gen rule: for each variable read in current statement but not updated in any PRIOR statement, add to gen Handles case where variable both read and updated in same statement (i = i + 1, i needs to be added to gen) kill rule: for each variable updated in current statement but not read in this or any PRIOR statement, add to kill.

Specified by:
  `initializeforwardLV` in class `LiveVariableAnalysis`

#### initializebackwardLV

    public VariableSet initializebackwardLV​(VariableSet loPassed)

Specified by:
  `initializebackwardLV` in class `LiveVariableAnalysis`

#### getConstIn

    public HashMap<String,​ConstIdentifier> getConstIn()

#### getConstOut

    public HashMap<String,​ConstIdentifier> getConstOut()

#### analyze

    public VariableSet analyze​(VariableSet loPassed)

Specified by:
  `analyze` in class `LiveVariableAnalysis`

#### hasHops

    public boolean hasHops()

#### updateRepetitionEstimates

    public void updateRepetitionEstimates​(double repetitions)

Updates the repetition estimate for this statement block and all contained hops. FunctionStatementBlocks are loaded from the function dictionary and repetitions are estimated for the contained statement blocks. This method is overridden in the subclasses of StatementBlock.

Parameters:
  `repetitions` - estimated for this statement block

#### raiseValidateError

    public void raiseValidateError​(String msg,
                                   boolean conditional)

#### raiseValidateError

    public void raiseValidateError​(String msg,
                                   boolean conditional,
                                   String errorCode)

#### setFilename

    public void setFilename​(String fname)

Specified by:
  `setFilename` in interface `ParseInfo`

#### setBeginLine

    public void setBeginLine​(int passed)

Specified by:
  `setBeginLine` in interface `ParseInfo`

#### setBeginColumn

    public void setBeginColumn​(int passed)

Specified by:
  `setBeginColumn` in interface `ParseInfo`

#### setEndLine

    public void setEndLine​(int passed)

Specified by:
  `setEndLine` in interface `ParseInfo`

#### setEndColumn

    public void setEndColumn​(int passed)

Specified by:
  `setEndColumn` in interface `ParseInfo`

#### setText

    public void setText​(String text)

Specified by:
  `setText` in interface `ParseInfo`

#### setParseInfo

    public void setParseInfo​(ParseInfo parseInfo)

Set parse information.

Parameters:
  `parseInfo` - parse information, such as beginning line position, beginning column position, ending line position, ending column position, text, and filename the DML filename (if it exists)

#### getFilename

    public String getFilename()

Specified by:
  `getFilename` in interface `ParseInfo`

#### getBeginLine

    public int getBeginLine()

Specified by:
  `getBeginLine` in interface `ParseInfo`

#### getBeginColumn

    public int getBeginColumn()

Specified by:
  `getBeginColumn` in interface `ParseInfo`

#### getEndLine

    public int getEndLine()

Specified by:
  `getEndLine` in interface `ParseInfo`

#### getEndColumn

    public int getEndColumn()

Specified by:
  `getEndColumn` in interface `ParseInfo`

#### getText

    public String getText()

Specified by:
  `getText` in interface `ParseInfo`

#### printErrorLocation

    public String printErrorLocation()

#### printBlockErrorLocation

    public String printBlockErrorLocation()

#### printWarningLocation

    public String printWarningLocation()

#### updateRecompilationFlag

    public boolean updateRecompilationFlag()

#### requiresRecompilation

    public boolean requiresRecompilation()

#### getUpdateInPlaceVars

    public ArrayList<String> getUpdateInPlaceVars()

#### setUpdateInPlaceVars

    public void setUpdateInPlaceVars​(ArrayList<String> vars)

#### setNondeterministic

    public void setNondeterministic​(boolean flag)

#### isNondeterministic

    public boolean isNondeterministic()

#### setCheckpointPosition

    public void setCheckpointPosition​(Lop input,
                                      List<Lop> outputs)

#### getCheckpointPositions

    public HashMap<Lop.Type,​List<Lop.Type>> getCheckpointPositions()