|
||||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||
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 内の addNextStmtpStatement - statement subtree to be added.
public Stmt addNextStmt(Stmt pStatement,
BlockStmt pBlock)
public Stmt getNextStmt()
HIR0 内の getNextStmtHIR_Impl 内の getNextStmtpublic Stmt getUpperStmt()
Stmt の記述:
Stmt 内の getUpperStmtpublic Stmt insertPreviousStmt(Stmt pStatement)
Stmt 内の insertPreviousStmtpStatement - 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 内の insertPreviousStmtpStatement - 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 内の combineStmtpStmt - 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 内の deleteThisStmtpublic 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 内の cutLabelLinkOfStmtpStmt - Statement to be searched for label definition
to cut definition point relation.public Stmt deleteNextStmt()
public Stmt deletePreviousStmt()
public void isolateThisStmt()
Stmt の記述:
Stmt 内の isolateThisStmtpublic 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 内の replaceThisStmtWithpStmt - statement used to replace this.
public LabeledStmt attachLabel(Label pLabel)
Stmt 内の attachLabelpLabel - 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 内の attachLabelAsFirstOnepublic IrList getLabelDefList()
Stmt 内の getLabelDefListpublic Label getLabel()
Stmt 内の getLabelpublic Stmt getStmtWithLabel(Label pLabel)
public LabeledStmt getLabeledStmt()
Stmt の記述:
Stmt 内の getLabeledStmtpublic LabeledStmt backTraceLabeledStmt()
public BlockStmt getBlockStmt()
Stmt 内の getBlockStmtpublic boolean isMultiBlock()
Stmt の記述:
Stmt 内の isMultiBlockpublic void adjustMultiBlockFlag()
public void adjustMultiBlockFlag(Stmt pStmt)
public boolean isLoopStmt()
public boolean isBranchStmt()
Stmt の記述:
Stmt 内の isBranchStmtpublic Stmt ancestorControlStmtOfConditionalExp(HIR pHir)
Stmt 内の ancestorControlStmtOfConditionalExp
public void combineWithConditionalExp(Stmt pStmt,
HIR pCond)
Stmt 内の combineWithConditionalExppStmt - 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 内の clonejava.lang.CloneNotSupportedExceptionpublic 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 内の setFileNamepFileName - name of the source program file
containing this statement.public final java.lang.String getFileName()
Stmt の記述:
Stmt 内の getFileNamepublic final void setLineNumber(int pLineNumber)
Stmt の記述:
Stmt 内の setLineNumberpLineNumber - the line number of this statement within
the source file.public final int getLineNumber()
Stmt の記述:
Stmt 内の getLineNumberpublic final void copyPosition(Stmt pStmt)
Stmt の記述:
Stmt 内の copyPositionpStmt - statement from which file name and
line number are to be copied.public java.lang.String toStringDetail()
HIR の記述:
HIR 内の toStringDetailHIR_Impl 内の toStringDetailpublic void printLinkage(java.lang.String pHeader)
|
||||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||