|
||||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
java.lang.Object | +--coins.ir.hir.HIR_Impl | +--coins.ir.hir.StmtImpl
Statement
フィールドの概要 | |
protected boolean |
fMultiBlock
|
protected Stmt |
fNextStmt
|
protected Stmt |
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 |
コンストラクタの概要 | |
|
StmtImpl()
Default constructor for subclasses. |
|
StmtImpl(HirRoot pHirRoot)
|
protected |
StmtImpl(HirRoot pHirRoot,
int pOperator)
|
メソッドの概要 | |
Stmt |
addNextStmt(Stmt pStatement)
addNextStmt Add a statement as the one next to this statement. |
Stmt |
addNextStmt(Stmt pStatement,
BlockStmt pBlock)
|
void |
adjustMultiBlockFlag()
|
void |
adjustMultiBlockFlag(Stmt pStmt)
|
Stmt |
ancestorControlStmtOfConditionalExp(HIR pHir)
Get the ancestor control statement (IfStmt, LoopStmt, SwitchStmt) containing pHir as conditional Exp or ExpStmt. |
LabeledStmt |
attachLabel(Label pLabel)
attachLabel Attach the definition of a label (pLabel) to this statement. (##2) A statement may have multiple labels (set of labels). (##2) If this statement has already a label different from pLabel, then pLabel is added as the last label attached to the statement. (##2) If pLabel is already attached to this statement, then pLabel is not attached to avoid duplication. |
LabeledStmt |
attachLabelAsFirstOne(Label pLabel)
attachLabelAsFirstOne Attach pLabel as the first label of this statement. |
LabeledStmt |
backTraceLabeledStmt()
|
java.lang.Object |
clone()
clone Override Object.clone in HIR. |
Stmt |
combineStmt(Stmt pStmt,
boolean pBeforeBranch)
combineStmt Combine this statement and pStmt making them as one statement. |
void |
combineWithConditionalExp(Stmt pStmt,
HIR pCond)
Combine pStmt with conditional expression part pCond of control statement so that pStmt should be executed before pCond. |
void |
copyPosition(Stmt pStmt)
Copy the file name and line number of pStatement to this statement. |
void |
cutLabelLinkOfStmt(Stmt pStmt)
cutLabelLinkOfStmt For labels defined in pStmt, execute setHirPosition(null) to prepare for deletion of pStmt. |
Stmt |
deleteNextStmt()
deleteNextStmt Delete the statement next to this statement and return the statement next ot the next statement, which may be null. |
Stmt |
deletePreviousStmt()
deletePreviousStmt Delete the statement that preceeds this statement and return a statement previous to the previous one. |
Stmt |
deleteThisStmt()
deleteThisStmt Delete this statement and return the next statement. |
BlockStmt |
getBlockStmt()
getBlockStmt Get the block statement containing this statement. |
java.lang.String |
getFileName()
Get the absolute path of the file containing this statement (see setFileName method). |
Label |
getLabel()
getLabel Get the label attached to this statement. |
IrList |
getLabelDefList()
|
LabeledStmt |
getLabeledStmt()
getLabeledStmt |
int |
getLineNumber()
Get the line number of this statement. |
Stmt |
getNextStmt()
getNextStmt Get the statement next to "this" one. |
Stmt |
getPreviousStmt()
getPreviousStmt Get the statement previous to this one. |
Stmt |
getStmtWithLabel(Label pLabel)
|
Stmt |
getUpperStmt()
Get the statement that includes this statement. |
Stmt |
insertPreviousStmt(Stmt pStatement)
insertPreviousStmt Insert a statement in front of "this" one. |
Stmt |
insertPreviousStmt(Stmt pStatement,
BlockStmt pBlock)
insertPreviousStmt Insert a statement in front of "this" one. |
boolean |
isBranchStmt()
isBranch Return true if this statement is either //##60 IfStmt, JumpStmt, SwitchStmt, CallStmt, ReturnStmt, JumpStmt, ReturnStmt, //##60 or LabeledStmt with one of above statement body. |
boolean |
isLoopStmt()
|
boolean |
isMultiBlock()
isMultiBlock true if this statement is composed of multiple basic blocks or a jump statement. |
void |
isolateThisStmt()
isolateThisStmt Cut previous/next link and parent link of this statement. |
void |
printLinkage(java.lang.String pHeader)
|
Stmt |
replaceThisStmtWith(Stmt pStmt)
replaceThisStmtWith Replace this statement with pStmt which is made to have the same linkage with other nodes as this statement and this statement is made isolated. |
void |
setFileName(java.lang.String pFileName)
Set the absolute path of the source program file containing this statement. |
void |
setLineNumber(int pLineNumber)
Set the line number of this statement within the file specified by setFileName. |
java.lang.String |
toStringDetail()
toStringDetail Get text string of this node showing detail information. |
Stmt |
traceFirstStmt()
|
Stmt |
traceLastStmt()
|
クラス java.lang.Object から継承したメソッド |
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
インタフェース 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 から継承したメソッド |
accept, assignStmt, blockStmt, callStmt, constNode, contentsExp, convExp, copyWithOperands, copyWithOperandsChangingLabels, decayExp, elemNode, exp, exp, expStmt, falseNode, finishHir, forStmt, functionExp, getChildNumber, getFlag, getFlagBox, 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 |
フィールドの詳細 |
protected Stmt fNextStmt
protected Stmt fPrevStmt
protected boolean fMultiBlock
コンストラクタの詳細 |
public StmtImpl()
public StmtImpl(HirRoot pHirRoot)
protected StmtImpl(HirRoot pHirRoot, int pOperator)
メソッドの詳細 |
public Stmt addNextStmt(Stmt pStatement)
Stmt
内の addNextStmt
pStatement
- statement subtree to be added.
public Stmt addNextStmt(Stmt pStatement, BlockStmt pBlock)
public Stmt getNextStmt()
HIR0
内の getNextStmt
HIR_Impl
内の getNextStmt
public Stmt getUpperStmt()
Stmt
の記述:
Stmt
内の getUpperStmt
public Stmt insertPreviousStmt(Stmt pStatement)
Stmt
内の insertPreviousStmt
pStatement
- statement subtree to be inserted.
public Stmt insertPreviousStmt(Stmt pStatement, BlockStmt pBlock)
Stmt
の記述: Insert a statement in front of "this" one. It is not recommended to insert statement having non-null linkage (getNextStmt(), getPreviousStmt(), or getParent() are not null) because the addition will change these linkages. In such case, copy of the statement should be used (see copyWithOperands() of HIR).
Stmt
内の insertPreviousStmt
pStatement
- statement subtree to be inserted.pBlock
- Block statement containing this statement.
If it is unknown, give null.
public Stmt getPreviousStmt()
Stmt
内の getPreviousStmt
public Stmt combineStmt(Stmt pStmt, boolean pBeforeBranch)
Stmt
の記述: Combine this statement and pStmt making them as one statement. If this statement is a block, pStmt is added as the last statement of the block. If this statement is a labeled statement, then pStmt is combined with its statement body (((LabeledStmt)this).getStmt().combineStmt(pStmt, pBeforeBranch). //##65 In other case, a new block statement including this and pStmt is created and pStmt is made as the next one to this statement. If pBeforeBranch is true and this statement has branch as the last statement (if this is a block), then pStatement is inserted before the branch statement. If pStmt is null, do nothing. It is not recommended to combine statement having non-null linkage (getNextStmt(), getPreviousStmt(), or getParent() are not null) because the addition will change these linkages. In such case, copy of the statement should be used (see copyWithOperands() of HIR). This method (combineStmt) changes statement linkages (linkages get by getNextStmt(), getPreviousStmt(), getParent()) of this statement. If these linkages are used later, then make copy and use the copy in applying combineStmt. combineStmt makes neither a copy of pStmt nore a copy of this Stmt. //##60 If copy is required, then make copy before calling combineStmt. If label is to be changed so as not to make duplicated label, it is necessary to change it before calling combineStmt (see copyWithOperandsChangingLabels). //##60 The combined result replaces this statement and inherit its linkages. It may be the same to Stmt ltmt3 = lStmt1.combineStmt( ((Stmt)lStmt2.copyWithOperands(), true); lStmt1.replaceThisStmtWith(lStmt3);
Stmt
内の combineStmt
pStmt
- Statement to be combined as the next one to
this statement.pBeforeBranch
- if true, insertion is done before the
branch statement.
public Stmt traceLastStmt()
public Stmt traceFirstStmt()
public Stmt deleteThisStmt()
Stmt
内の deleteThisStmt
public void cutLabelLinkOfStmt(Stmt pStmt)
Stmt
の記述: For labels defined in pStmt, execute setHirPosition(null) to prepare for deletion of pStmt. If pStmt is a compound statement, then all statements in pStmt are searched for labels defined in pStmt. If no label is defined by pStmt, no effect remains.
Stmt
内の cutLabelLinkOfStmt
pStmt
- Statement to be searched for label definition
to cut definition point relation.public Stmt deleteNextStmt()
public Stmt deletePreviousStmt()
public void isolateThisStmt()
Stmt
の記述:
Stmt
内の isolateThisStmt
public Stmt replaceThisStmtWith(Stmt pStmt)
Stmt
の記述: Replace this statement with pStmt which is made to have the same linkage with other nodes as this statement and this statement is made isolated. pStmt should not be a statement contained in this statement as its subtree because this statement will be deleted in this method. If this statement is to be replaced with its subtree, then copy the subtree by copyWithOperandsChangingLabels(null) and replace by the copied subtree.
Stmt
内の replaceThisStmtWith
pStmt
- statement used to replace this.
public LabeledStmt attachLabel(Label pLabel)
Stmt
内の attachLabel
pLabel
- label to be attached to this statement.
Note: (##2)
Let attach label L1 to statement S and denote the resultant
statement as S1, and let attach label L2 to S1 and denote the
resultant statement as S2, then we say that S is attached with
labels L1 and L2, or S has set of labels L1 and L2.
In this case, L2 is the heading label of S and the label
next to L2 is L1. (In C notation, if "L2: L1: S", S has set of
labels L1 and L2, and the label next to L2 is L1.)
public LabeledStmt attachLabelAsFirstOne(Label pLabel)
Stmt
の記述:
Stmt
内の attachLabelAsFirstOne
public IrList getLabelDefList()
Stmt
内の getLabelDefList
public Label getLabel()
Stmt
内の getLabel
public Stmt getStmtWithLabel(Label pLabel)
public LabeledStmt getLabeledStmt()
Stmt
の記述:
Stmt
内の getLabeledStmt
public LabeledStmt backTraceLabeledStmt()
public BlockStmt getBlockStmt()
Stmt
内の getBlockStmt
public boolean isMultiBlock()
Stmt
の記述:
Stmt
内の isMultiBlock
public void adjustMultiBlockFlag()
public void adjustMultiBlockFlag(Stmt pStmt)
public boolean isLoopStmt()
public boolean isBranchStmt()
Stmt
の記述:
Stmt
内の isBranchStmt
public Stmt ancestorControlStmtOfConditionalExp(HIR pHir)
Stmt
内の ancestorControlStmtOfConditionalExp
public void combineWithConditionalExp(Stmt pStmt, HIR pCond)
Stmt
内の combineWithConditionalExp
pStmt
- statement to be executed before pCond.pCond
- conditional expression to be combined with pStmt.public java.lang.Object clone() throws java.lang.CloneNotSupportedException
HIR_Impl
の記述:
HIR_Impl
内の clone
java.lang.CloneNotSupportedException
public final void setFileName(java.lang.String pFileName)
Stmt
の記述: Set the absolute path of the source program file containing this statement. In C language, if this statement is included in a file specified by #include, then give the name of the file specified by #include (it may differ statement by statement within a subprogram). If setFileName is not called for this statement, then the name of compiler input file is taken as the default value by getFileName().
Stmt
内の setFileName
pFileName
- name of the source program file
containing this statement.public final java.lang.String getFileName()
Stmt
の記述:
Stmt
内の getFileName
public final void setLineNumber(int pLineNumber)
Stmt
の記述:
Stmt
内の setLineNumber
pLineNumber
- the line number of this statement within
the source file.public final int getLineNumber()
Stmt
の記述:
Stmt
内の getLineNumber
public final void copyPosition(Stmt pStmt)
Stmt
の記述:
Stmt
内の copyPosition
pStmt
- statement from which file name and
line number are to be copied.public java.lang.String toStringDetail()
HIR
の記述:
HIR
内の toStringDetail
HIR_Impl
内の toStringDetail
public void printLinkage(java.lang.String pHeader)
|
||||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |