coins.ir.hir
クラス LabeledStmtImpl

java.lang.Object
  |
  +--coins.ir.hir.HIR_Impl
        |
        +--coins.ir.hir.StmtImpl
              |
              +--coins.ir.hir.LabeledStmtImpl
すべての実装インタフェース:
java.lang.Cloneable, HasStringObject, HIR, HIR0, IR, IR0, LabeledStmt, Stmt

public class LabeledStmtImpl
extends StmtImpl
implements LabeledStmt

LabeledStmtImpl Labeled statement class


フィールドの概要
protected  Sym fFileNameSym
           
protected  int fLineNumber
           
 
クラス coins.ir.hir.StmtImpl から継承したフィールド
fMultiBlock, fNextStmt, fPrevStmt
 
クラス coins.ir.hir.HIR_Impl から継承したフィールド
fAdditionalChild, fChildCount, fChildNode1, fChildNode2, fDbgLevel, fHirAnnex, fOperator, fParentNode, fType, hirRoot, inversionTable, machineParam, sourceLanguage
 
インタフェース coins.ir.hir.HIR から継承したフィールド
OP_CODE_NAME, OP_CODE_NAME_DENSE
 
インタフェース coins.ir.IR から継承したフィールド
OP_INF, OP_LIST, OP_PROG, OP_SUBP_DEF
 
インタフェース 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
 
コンストラクタの概要
LabeledStmtImpl(HirRoot pHirRoot, Label pLabel, Stmt pStmt)
           
 
メソッドの概要
 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 Delete LabelDef having pLabel as its label from the list of LabelDef nodes of this statement.
 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.
 
クラス 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
 
クラス 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
 
クラス java.lang.Object から継承したメソッド
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
インタフェース 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
 
インタフェース 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
 
インタフェース coins.ir.IR から継承したメソッド
addInf, getChild1, getChild2, getInf, getInfList, getParent, getSym, print, print, removeInf
 
インタフェース coins.ir.IR0 から継承したメソッド
getChild, getChildCount, getIndex, getOperator, setChild
 
インタフェース 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
 

フィールドの詳細

fFileNameSym

protected Sym fFileNameSym

fLineNumber

protected int fLineNumber
コンストラクタの詳細

LabeledStmtImpl

public LabeledStmtImpl(HirRoot pHirRoot,
                       Label pLabel,
                       Stmt pStmt)
メソッドの詳細

getLabelDefList

public IrList getLabelDefList()
定義:
インタフェース Stmt 内の getLabelDefList
オーバーライド:
クラス StmtImpl 内の getLabelDefList

setLabelDefList

public void setLabelDefList(IrList pLabelDefList)
インタフェース LabeledStmt の記述:
Set thte label definition list of this statement.

定義:
インタフェース LabeledStmt 内の setLabelDefList
パラメータ:
pLabelDefList - label definition list to be set.

getLabel

public Label getLabel()
インタフェース 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.

定義:
インタフェース Stmt 内の getLabel
オーバーライド:
クラス StmtImpl 内の getLabel
戻り値:
the label attached to this statement, return null if no label is attached to this statement.

getStmt

public Stmt getStmt()
定義:
インタフェース LabeledStmt 内の getStmt

setStmt

public void setStmt(Stmt pStmt)
インタフェース LabeledStmt の記述:
Set the statement part of this labeled statement.

定義:
インタフェース LabeledStmt 内の setStmt
パラメータ:
pStmt - Statement to be set.

deleteLabel

public Stmt deleteLabel(Label pLabel)
インタフェース 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.

定義:
インタフェース LabeledStmt 内の deleteLabel
パラメータ:
pLabel - label to be deleted.
戻り値:
the statement without pLabel or return null.

replaceLabelNodesReferingThisStmtToNewOne

public void replaceLabelNodesReferingThisStmtToNewOne(Label pNewLabel)
インタフェース 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.

定義:
インタフェース LabeledStmt 内の replaceLabelNodesReferingThisStmtToNewOne
パラメータ:
pNewLabel - Label to which refering LabelNodes are to be changed.

merge

public void merge(LabeledStmt from)
インタフェース 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.

定義:
インタフェース LabeledStmt 内の merge
パラメータ:
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.

戻り値:
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.

オーバーライド:
クラス StmtImpl 内の clone
戻り値:
cloned HIR object.
例外:
java.lang.CloneNotSupportedException

toString

public java.lang.String toString()
インタフェース HIR の記述:
toString Get text representation of this node without traversing children.

定義:
インタフェース HIR 内の toString
オーバーライド:
クラス HIR_Impl 内の toString
戻り値:
the text string representing the node including operation name, type, node index, and symbol name if this represents a symbol or constant.

accept

public void accept(HirVisitor pVisitor)
インタフェース HIR0 の記述:
accept Acceptor used in HIR visitor. See HirVisitor, HirVisitorModel1, HirVisitormodel2.

定義:
インタフェース HIR0 内の accept
オーバーライド:
クラス HIR_Impl 内の accept
パラメータ:
pVisitor - HirVisitor