coins.ir.hir
Class BlockStmtImpl

java.lang.Object
  extended bycoins.ir.hir.HIR_Impl
      extended bycoins.ir.hir.StmtImpl
          extended bycoins.ir.hir.BlockStmtImpl
All Implemented Interfaces:
BlockStmt, java.lang.Cloneable, HasStringObject, HIR, HIR0, IR, IR0, Stmt

public class BlockStmtImpl
extends StmtImpl
implements BlockStmt

Block representing a sequence of statements.


Field Summary
(package private)  Stmt fLastStmt
           
(package private)  SymTable fLocalSymTable
           
(package private)  boolean fSubpBodyFlag
           
 
Fields inherited from class coins.ir.hir.StmtImpl
fMultiBlock, fNextStmt, fPrevStmt
 
Fields inherited from class coins.ir.hir.HIR_Impl
fAdditionalChild, fChildCount, fChildNode1, fChildNode2, fDbgLevel, fHirAnnex, fOperator, fParentNode, fType, hirRoot, inversionTable, machineParam, sourceLanguage
 
Fields inherited from interface coins.ir.hir.HIR
OP_CODE_NAME, OP_CODE_NAME_DENSE
 
Fields inherited from interface coins.ir.IR
OP_INF, OP_LIST, OP_PROG, OP_SUBP_DEF
 
Fields inherited from interface coins.ir.hir.HIR0
FLAG_C_PTR, FLAG_CONST_EXP, FLAG_INIT_BLOCK, FLAG_LOOP_WITH_CONDITIONAL_INIT, FLAG_NOCHANGE, FLAG_NONTERMINAL, OP_ADD, OP_ADD_ASSIGN, OP_ADDR, OP_AND, OP_AND_ASSIGN, OP_ARROW, OP_ASM, OP_ASSIGN, OP_BLOCK, OP_CALL, OP_CMP_EQ, OP_CMP_GE, OP_CMP_GT, OP_CMP_LE, OP_CMP_LT, OP_CMP_NE, OP_COMMA, OP_CONST, OP_CONTENTS, OP_CONV, OP_DECAY, OP_DIV, OP_DIV_ASSIGN, OP_ELEM, OP_ENCLOSE, OP_EQ_ZERO, OP_EXP_STMT, OP_EXPLIST, OP_EXPREPEAT, OP_FOR, OP_IF, OP_INDEX, OP_INDEXED_LOOP, OP_JUMP, OP_LABEL, OP_LABEL_DEF, OP_LABELED_STMT, OP_LG_AND, OP_LG_OR, OP_MOD, OP_MOD_ASSIGN, OP_MULT, OP_MULT_ASSIGN, OP_NEG, OP_NOT, OP_NULL, OP_OFFSET, OP_OR, OP_OR_ASSIGN, OP_PARAM, OP_PHI, OP_POST_DECR, OP_POST_INCR, OP_PRE_DECR, OP_PRE_INCR, OP_QUAL, OP_REPEAT, OP_RETURN, OP_SELECT, OP_SEQ, OP_SETDATA, OP_SHIFT_L_ASSIGN, OP_SHIFT_LL, OP_SHIFT_R, OP_SHIFT_R_ASSIGN, OP_SHIFT_RL, OP_SIZEOF, OP_STMT, OP_STMT_UPPER, OP_SUB, OP_SUB_ASSIGN, OP_SUBP, OP_SUBS, OP_SWITCH, OP_SYM, OP_TYPE, OP_UNDECAY, OP_UNTIL, OP_VAR, OP_WHILE, OP_XOR, OP_XOR_ASSIGN
 
Constructor Summary
BlockStmtImpl(HirRoot pHirRoot)
          BlockStmt Build block statement that make a sequence of statement to be treated as one statement.
BlockStmtImpl(HirRoot pHirRoot, Stmt pStmtSequence)
           
 
Method Summary
 void accept(HirVisitor pVisitor)
          accept Acceptor used in HIR visitor.
 void addBeforeBranchStmt(Stmt pStatement)
          addBeforeBranchStmt (##6) If the last statement of this block is a branch statement (jump, if, switch, call, return), then insert pStatement in front of it.
 Stmt addFirstStmt(Stmt pStatement)
          addFirstStmt
 Stmt addLastStmt(Stmt pStatement)
          addLastStmt
 java.lang.Object clone()
          clone Override Object.clone in HIR.
 Stmt getFirstStmt()
          getFirstStrmt
 Stmt getLastStmt()
          getLastStmt Get the last statement of this block.
 boolean getSubpBodyFlag()
           
 SymTable getSymTable()
          getSymTable
 void replaceFirstStmt(Stmt pStmt)
           
 void setFirstStmt(Stmt pStmt)
           
 void setLastStmt(Stmt pStmt)
           
 void setSubpBodyFlag(boolean pFlag)
           
 void setSymTable(SymTable pSymTable)
          setSymTable Set pSymTable as the local symbol tabel of this BlockStmt.
 java.lang.String toString()
          toString Get text representation of this node without traversing children.
 
Methods inherited from class coins.ir.hir.StmtImpl
addNextStmt, addNextStmt, adjustMultiBlockFlag, adjustMultiBlockFlag, ancestorControlStmtOfConditionalExp, attachLabel, attachLabelAsFirstOne, backTraceLabeledStmt, combineStmt, combineWithConditionalExp, copyPosition, cutLabelLinkOfStmt, deleteNextStmt, deletePreviousStmt, deleteThisStmt, getBlockStmt, getFileName, getLabel, getLabelDefList, getLabeledStmt, getLineNumber, getNextStmt, getPreviousStmt, getStmtWithLabel, getUpperStmt, insertPreviousStmt, insertPreviousStmt, isBranchStmt, isLoopStmt, isMultiBlock, isolateThisStmt, printLinkage, replaceThisStmtWith, setFileName, setLineNumber, toStringDetail, traceFirstStmt, traceLastStmt
 
Methods inherited from class coins.ir.hir.HIR_Impl
addInf, addrExp, asmStmt, assignStmt, blockStmt, callStmt, checkLinkage, conditionalExp, conditionalExp1, constNode, contains, contentsExp, convExp, copyInfListFrom, copyWithOperands, copyWithOperandsChangingLabels, cutParentLink, cutParentLink, decayExp, elemNode, exp, exp, exp, expList, expRepeat, expStmt, falseNode, fatalError, finishHir, flagsAreAllFalse, forStmt, forStmt, functionExp, getChild, getChild1, getChild2, getChildCount, getChildNumber, getClone, getExpId, getFlag, getFlagBox, getFlowAnalSym, getIndentSpace, getIndex, getInf, getInfList, getInfString, getIrName, getNextNode, getNextNodeSeeingAncestor, getOperator, getParent, getResultOperand, getResultVar, getSourceNode, getSourceNode1, getSourceNode2, getStmtContainingThisNode, getSym, getSymOrExpId, getType, getWork, hirClone, hirIterator, hirList, hirNodeClone, hirSeq, hirSeq, hirSeq, ifStmt, indexedLoopStmt, indexedLoopStmt, infStmt, infStmt, intConstNode, intConstNode, irList, irList, isEmpty, isHIR, isLIR, isSameAs, isStmt, isSym, isTerminal, isTree, isTree, jumpStmt, labelDef, labeledStmt, labelNode, nullNode, nullStmt, offsetConstNode, phiExp, pointedExp, print, print, program, qualifiedExp, removeInf, repeatStmt, repeatStmt, replaceOperator, replaceResultOperand, replaceResultVar, replaceSource, replaceSource1, replaceSource2, replaceThisNode, returnStmt, returnStmt, setChild, setChild1, setChild2, setChildren, setChildren, setChildren, setChildren, setDataStmt, setFlag, setIndex, setIndexNumberToAllNodes, setIndexNumberToAllNodes, setIndexNumberToAllNodes2, setParameters, setParent, setType, setWork, severeError, sizeofExp, sizeofExp, slightError, subpDefinition, subpDefinition, subpDefinition, subpIterator, subpNode, subscriptedExp, subscriptedExp, switchStmt, symNode, toStringShort, toStringWithChildren, trueNode, typeNode, undecayExp, undecayExp, undecayExp, undecayExp, varNode, warinig, whileStmt, whileStmt, withInf
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface coins.ir.hir.Stmt
addNextStmt, ancestorControlStmtOfConditionalExp, attachLabel, attachLabelAsFirstOne, combineStmt, combineWithConditionalExp, copyPosition, cutLabelLinkOfStmt, deleteThisStmt, getBlockStmt, getFileName, getLabel, getLabelDefList, getLabeledStmt, getLineNumber, getPreviousStmt, getUpperStmt, insertPreviousStmt, insertPreviousStmt, isBranchStmt, isMultiBlock, isolateThisStmt, replaceThisStmtWith, setFileName, setLineNumber
 
Methods inherited from interface coins.ir.hir.HIR
addrExp, asmStmt, checkLinkage, conditionalExp, contains, copyInfListFrom, cutParentLink, exp, expList, expRepeat, forStmt, getExpId, getFlowAnalSym, getIndentSpace, getInfString, getIrName, getSourceNode, getSourceNode1, getSourceNode2, getSymOrExpId, getWork, hirNodeClone, hirSeq, hirSeq, indexedLoopStmt, indexedLoopStmt, infStmt, infStmt, intConstNode, irList, isEmpty, isStmt, isTree, nullNode, nullStmt, offsetConstNode, phiExp, repeatStmt, replaceSource, replaceSource1, replaceSource2, returnStmt, setChild1, setChild2, setChildren, setChildren, setDataStmt, setIndex, setIndexNumberToAllNodes, setParent, setType, setWork, subpDefinition, subpIterator, subscriptedExp, toStringDetail, toStringShort, toStringWithChildren, undecayExp, undecayExp, undecayExp, whileStmt
 
Methods inherited from interface coins.ir.IR
addInf, getChild1, getChild2, getInf, getInfList, getParent, getSym, print, print, removeInf
 
Methods inherited from interface coins.ir.IR0
getChild, getChildCount, getIndex, getOperator, setChild
 
Methods inherited from interface coins.ir.hir.HIR0
assignStmt, blockStmt, callStmt, constNode, contentsExp, convExp, copyWithOperands, copyWithOperandsChangingLabels, decayExp, elemNode, exp, exp, expStmt, falseNode, finishHir, forStmt, functionExp, getChildNumber, getFlag, getFlagBox, getNextStmt, getStmtContainingThisNode, getType, hirClone, hirIterator, hirList, hirSeq, ifStmt, intConstNode, irList, isSameAs, jumpStmt, labelDef, labeledStmt, labelNode, pointedExp, print, program, qualifiedExp, repeatStmt, replaceThisNode, returnStmt, setFlag, setIndexNumberToAllNodes, sizeofExp, sizeofExp, subpDefinition, subpNode, subscriptedExp, switchStmt, symNode, trueNode, undecayExp, varNode, whileStmt
 

Field Detail

fLocalSymTable

SymTable fLocalSymTable

fLastStmt

Stmt fLastStmt

fSubpBodyFlag

boolean fSubpBodyFlag
Constructor Detail

BlockStmtImpl

public BlockStmtImpl(HirRoot pHirRoot)
BlockStmt Build block statement that make a sequence of statement to be treated as one statement. pStmtSequence sequence of statements to be included in the block. It may be null at the creation of block statement if statements are to be added by AddFirstStmt, AddNextStmt of HIR_interface. Return the subtree of the built statement with statement body operator opBlock.

Parameters:
pHirRoot - instance of HirRoot common to all HIR nodes.

BlockStmtImpl

public BlockStmtImpl(HirRoot pHirRoot,
                     Stmt pStmtSequence)
Method Detail

getSymTable

public SymTable getSymTable()
Description copied from interface: BlockStmt
getSymTable

Specified by:
getSymTable in interface BlockStmt
Returns:
the symbol table containing symbols locally declared in this BlockStmt. If there is no local symbols declared in this block, then the symbol table may be null.

setSymTable

public void setSymTable(SymTable pSymTable)
Description copied from interface: BlockStmt
setSymTable Set pSymTable as the local symbol tabel of this BlockStmt.

Specified by:
setSymTable in interface BlockStmt
Parameters:
pSymTable - local symbol tabel to be attached to this block.

addFirstStmt

public Stmt addFirstStmt(Stmt pStatement)
Description copied from interface: BlockStmt
addFirstStmt
  Add pStatement as the first statement of this block.
  If this block has already has several statements, this method inserts
  pStatement in front of the existing statements.
  If pStatement is null, no statement is added and the current
  first statement is returned.
  This method  changes statement linkages (linkages
  get by getNextStmt(), getPreviousStmt(), getParent()). If these
  linkages are used later, then make a copy (by copyWithOperands())
  and use the copy as the parameter.

Specified by:
addFirstStmt in interface BlockStmt
Parameters:
pStatement - Statement that was added.
Returns:
the new first statement of the block.

addLastStmt

public Stmt addLastStmt(Stmt pStatement)
Description copied from interface: BlockStmt
addLastStmt
  Add pStatement as the last statement of this block.
  If this block has no statement, this method does the same
  operation as that of addFirstStmt.
  Successive call of addlastStmt add a sequence of statements
  to this block in the order of addition.
  If this block has already labeled statement as the last statement
  where the label of the last statement is either RETURN_POINT_LABEL
  or LOOP_STEP_LABEL, then pStatement is inserted in front of the
  last labeled statement.
  If pStatement is null, no statement is added and the current
  last statement is returned.
  This method  changes statement linkages (linkages
  get by getNextStmt(), getPreviousStmt(), getParent()). If these
  linkages are used later, then make a copy (by copyWithOperands())
  and use the copy as the parameter.

Specified by:
addLastStmt in interface BlockStmt
Parameters:
pStatement - Statement that was added.
Returns:
the new last statement of the block.

addBeforeBranchStmt

public void addBeforeBranchStmt(Stmt pStatement)
Description copied from interface: BlockStmt
addBeforeBranchStmt (##6) If the last statement of this block is a branch statement (jump, if, switch, call, return), then insert pStatement in front of it. If the last statement is not a branch, then add pStatement as the last statement of this block. This method changes statement linkages (linkages get by getNextStmt(), getPreviousStmt(), getParent()). If these linkages are used later, then make a copy (by copyWithOperands()) and use the copy as the parameter.

Specified by:
addBeforeBranchStmt in interface BlockStmt
Parameters:
pStatement - Statement that was added.

getFirstStmt

public Stmt getFirstStmt()
Description copied from interface: BlockStmt
getFirstStrmt
  Get the first statement of this block.
  If this block has no statement, then null is returned.
  After getting the first statement, successive call of
  getNextStmt() will traverse all statements in this block.
    for (Stmt lStmt = lBBlock.getFirstStmt(); lStmt != null;
         lStmt = lStmt.getNextStmt()) { ...... }

Specified by:
getFirstStmt in interface BlockStmt
Returns:
the first statement of this block.

getLastStmt

public Stmt getLastStmt()
Description copied from interface: BlockStmt
getLastStmt Get the last statement of this block. If this block has no statement, then null is returned.

Specified by:
getLastStmt in interface BlockStmt
Returns:
the last statement of this block.

setFirstStmt

public void setFirstStmt(Stmt pStmt)

setLastStmt

public void setLastStmt(Stmt pStmt)

replaceFirstStmt

public void replaceFirstStmt(Stmt pStmt)

getSubpBodyFlag

public boolean getSubpBodyFlag()
Specified by:
getSubpBodyFlag in interface BlockStmt

setSubpBodyFlag

public void setSubpBodyFlag(boolean pFlag)
Specified by:
setSubpBodyFlag in interface BlockStmt

clone

public java.lang.Object clone()
                       throws java.lang.CloneNotSupportedException
Description copied from class: HIR_Impl
clone Override Object.clone in HIR.

Overrides:
clone in class StmtImpl
Throws:
java.lang.CloneNotSupportedException

accept

public void accept(HirVisitor pVisitor)
Description copied from interface: HIR0
accept Acceptor used in HIR visitor. See HirVisitor, HirVisitorModel1, HirVisitormodel2.

Specified by:
accept in interface HIR0
Overrides:
accept in class HIR_Impl

toString

public java.lang.String toString()
Description copied from interface: HIR
toString Get text representation of this node without traversing children.

Specified by:
toString in interface HIR
Overrides:
toString in class HIR_Impl