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
Modifier and Type
Field
Description
`static final double`
`DEFAULT_LOOP_REPETITIONS`

## Constructor Summary

Constructors
Constructor
Description
`StatementBlock()`
`StatementBlock(StatementBlock sb)`

## Method Summary

Modifier and Type
Method
Description
`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()`
`double`
`getLoopDepRatio()`
`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`
`isRecompileOnce()`
`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`
`setLoopDepRatio(double dep)`
`void`
`setLops(ArrayList<Lop> lops)`
`void`
`setNondeterministic(boolean flag)`
`void`
`setParseInfo(ParseInfo parseInfo)`
Set parse information.
`void`
`setRecompileOnce(boolean flag)`
`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()`
`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 Details

### DEFAULT_LOOP_REPETITIONS

public static final double DEFAULT_LOOP_REPETITIONS

See Also:
  - Constant Field Values

## Constructor Details

### StatementBlock

public StatementBlock()

### StatementBlock

public StatementBlock(StatementBlock sb)

## Method Details

### 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()

### getLoopDepRatio

public double getLoopDepRatio()

### setLoopDepRatio

public void setLoopDepRatio(double dep)

### 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()

### 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()

### setRecompileOnce

public void setRecompileOnce(boolean flag)

### isRecompileOnce

public boolean isRecompileOnce()

### setCheckpointPosition

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

### getCheckpointPositions

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