coins.ir.hir
Class LabeledStmtImpl

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

public class LabeledStmtImpl
extends StmtImpl
implements LabeledStmt

LabeledStmtImpl Labeled statement class


Field Summary
protected  Sym fFileNameSym
           
protected  int fLineNumber
           
 
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
LabeledStmtImpl(HirRoot pHirRoot, Label pLabel, Stmt pStmt)
           
 
Method Summary
 void accept(HirVisitor pVisitor)
          accept Acceptor used in HIR visitor.
 java.lang.Object clone()
          deleteThisStmt Delete labels defined by this statement from the label definition list of the current subprogram and then delete this statement.
 Stmt deleteLabel(Label pLabel)
          deleteLabel
 LabelNode explicitLabelReference()
          explicitLabelReference Get a LabelNode refering explicitly a label attached to this statement.
 Label getLabel()
          getLabel Get the label attached to this statement.
 IrList getLabelDefList()
           
 Stmt getStmt()
           
 void merge(LabeledStmt from)
          Merging of LabeledStmt.
 void replaceLabelNodesReferingThisStmtToNewOne(Label pNewLabel)
          replaceLabelNodesReferingThisStmtToNewOne Replace each LabelNode that refers a label defined by this statement to a LabelNode having pNewLabel.
 void setLabelDefList(IrList pLabelDefList)
          Set thte label definition list of this statement.
 void setStmt(Stmt pStmt)
          Set the statement part of this labeled statement.
 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, 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, 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

fFileNameSym

protected Sym fFileNameSym

fLineNumber

protected int fLineNumber
Constructor Detail

LabeledStmtImpl

public LabeledStmtImpl(HirRoot pHirRoot,
                       Label pLabel,
                       Stmt pStmt)
Method Detail

getLabelDefList

public IrList getLabelDefList()
Specified by:
getLabelDefList in interface Stmt
Overrides:
getLabelDefList in class StmtImpl

setLabelDefList

public void setLabelDefList(IrList pLabelDefList)
Description copied from interface: LabeledStmt
Set thte label definition list of this statement.

Specified by:
setLabelDefList in interface LabeledStmt
Parameters:
pLabelDefList - label definition list to be set.

getLabel

public Label getLabel()
Description copied from interface: Stmt
getLabel Get the label attached to this statement. If the statement has multiple labels, then the heading (##2) one of the labels is returned.

Specified by:
getLabel in interface Stmt
Overrides:
getLabel in class StmtImpl
Returns:
the label attached to this statement, return null if no label is attached to this statement. If the statement has multiple labels, then the heading (##2) one of the labels is returned.

getStmt

public Stmt getStmt()
Specified by:
getStmt in interface LabeledStmt

setStmt

public void setStmt(Stmt pStmt)
Description copied from interface: LabeledStmt
Set the statement part of this labeled statement.

Specified by:
setStmt in interface LabeledStmt
Parameters:
pStmt - Statement to be set.

deleteLabel

public Stmt deleteLabel(Label pLabel)
Description copied from interface: LabeledStmt
deleteLabel
  Delete LabelDef having pLabel as its label from
  the list of LabelDef nodes of this statement.
  If no label remains after deletion,
  this statement is changed to a statement without label.
  If no label remains and statement body is either null or
  NullNode, then this statement is deleted and null is returned.

Specified by:
deleteLabel in interface LabeledStmt
Parameters:
pLabel - label to be deleted.
Returns:
the statement without pLabel or return null.

replaceLabelNodesReferingThisStmtToNewOne

public void replaceLabelNodesReferingThisStmtToNewOne(Label pNewLabel)
Description copied from interface: LabeledStmt
replaceLabelNodesReferingThisStmtToNewOne Replace each LabelNode that refers a label defined by this statement to a LabelNode having pNewLabel. If this statement has multiple labels, all LabelNodes refering them are replaced by instanciating new LabelNode.

Specified by:
replaceLabelNodesReferingThisStmtToNewOne in interface LabeledStmt
Parameters:
pNewLabel - Label to which refering LabelNodes are to be changed.

merge

public void merge(LabeledStmt from)
Description copied from interface: LabeledStmt
Merging of LabeledStmt. The label which given LabeledStmt includes is added to this LabeledStmt. However, if the same kind of label as the added label already exists, this method replaces instead of adds. Moreover, the label not referred is not added.

Specified by:
merge in interface LabeledStmt
Parameters:
from - LabeledStmt

explicitLabelReference

public LabelNode explicitLabelReference()
explicitLabelReference Get a LabelNode refering explicitly a label attached to this statement. If there are multiple LabelNodes refering explicitly, then the first one in the refering list will be returned. Before invoking this method, label reference list should be constructed by using coins.flow.LabelRefListBuilder. If there is no explicit reference, then null is returned. This method is used to examine whether this statement is a target of some explicit branch. Explicit reference is made by JumpStmt and case list of SwitchStmt (and break statement in C). Other generated labels such as THEN_LABEL, ELSE_LABEL, END_IF_LABEL, LOOP_BACK_LABEL, etc. do not appear explicitly in jump statement and they are treated as implicit reference.

Returns:
a LabelNode refering explicitly some label of this statement. If there is no explicit reference, return null.

clone

public java.lang.Object clone()
                       throws java.lang.CloneNotSupportedException
deleteThisStmt Delete labels defined by this statement from the label definition list of the current subprogram and then delete this statement.

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

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

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