coins.ir.hir
Class SubpDefinitionImpl

java.lang.Object
  extended bycoins.ir.hir.HIR_Impl
      extended bycoins.ir.hir.SubpDefinitionImpl
All Implemented Interfaces:
java.lang.Cloneable, HasStringObject, HIR, HIR0, IR, IR0, SubpDefinition

public class SubpDefinitionImpl
extends HIR_Impl
implements SubpDefinition

Subprogram definition node.


Field Summary
 int fNodeIndexMax
          fNodeIndexMin Minimum of the node index.
 int fNodeIndexMin
          fNodeIndexMin Minimum of the node index.
 
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
SubpDefinitionImpl(HirRoot pHirRoot, Subp pSubpSym, SymTable pLocalSymTable, BlockStmt pInitiation, BlockStmt pHirBody)
           
 
Method Summary
 void accept(HirVisitor pVisitor)
          accept Acceptor used in HIR visitor.
 void addInitiationStmt(Stmt pStmt)
          Add pInitiationStmt to the tail of the block containing initiation statements that should be executed at the entry to the subprogram.
 java.lang.Object clone()
          clone Override Object.clone in HIR.
 HIR copyWithOperandsChangingLabel(IrList pLabelCorrespondence)
           
 Stmt getHirBody()
          Get the body part of the subprogram.
 BlockStmt getInitiationPart()
           Get the block containing statements that initiate variables local to the subprogram.
 int getNodeIndexMax()
          Get the node index attached at the last node of the subprogram definition.
 int getNodeIndexMin()
          Get the node index attached at the first node of the subprogram definition.
 Label getStartLabel()
          Get the start label that is attached at the head of subprogram body.
 Subp getSubpSym()
          Get the subprogram symbol of this subprogram definition.
 SymTable getSymTable()
          Get the symbol table local to the subprogram.
 void print(int pIndent, boolean pDetail)
          print Print this subtree in text format traversing all children of this node.
 void printHir(java.lang.String pHeader)
          printHir Print the HIR body of this subprogram.
 void setHirBody(BlockStmt pHirBody)
          Set pHirBody as the body part of the subprogram.
 void setSymTable(SymTable pSymTable)
           
 
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, getNextStmt, 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, 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, toString, toStringDetail, 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.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, toString, toStringDetail, toStringShort, toStringWithChildren, undecayExp, undecayExp, undecayExp, whileStmt
 
Methods inherited from interface coins.ir.IR
addInf, getChild1, getChild2, getInf, getInfList, getParent, getSym, 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, program, qualifiedExp, repeatStmt, replaceThisNode, returnStmt, setFlag, setIndexNumberToAllNodes, sizeofExp, sizeofExp, subpDefinition, subpNode, subscriptedExp, switchStmt, symNode, trueNode, undecayExp, varNode, whileStmt
 

Field Detail

fNodeIndexMin

public int fNodeIndexMin
fNodeIndexMin Minimum of the node index. fNodeIndexMax Maximum of the node index. They are set by setIndexNumberToAllNodes of HIR interface.


fNodeIndexMax

public int fNodeIndexMax
fNodeIndexMin Minimum of the node index. fNodeIndexMax Maximum of the node index. They are set by setIndexNumberToAllNodes of HIR interface.

Constructor Detail

SubpDefinitionImpl

public SubpDefinitionImpl(HirRoot pHirRoot,
                          Subp pSubpSym,
                          SymTable pLocalSymTable,
                          BlockStmt pInitiation,
                          BlockStmt pHirBody)
Method Detail

getSymTable

public SymTable getSymTable()
Description copied from interface: SubpDefinition
Get the symbol table local to the subprogram.

Specified by:
getSymTable in interface SubpDefinition
Returns:
the symbol table.

setSymTable

public void setSymTable(SymTable pSymTable)

getSubpSym

public Subp getSubpSym()
Description copied from interface: SubpDefinition
Get the subprogram symbol of this subprogram definition.

Specified by:
getSubpSym in interface SubpDefinition
Returns:
the subprogram symbol.

getInitiationPart

public BlockStmt getInitiationPart()
Description copied from interface: SubpDefinition
 Get the block containing statements that initiate
 variables local to the subprogram.
 Note:
   In C language, initial value specification should be
   evaluated at the position where the initial value
   declaration statement encountered. This means that
   the initiation statement in HIR should be placed
   at the position where the declaration statement is
   encountered, just as executable statement. Thus, if
   the source language is C, getInitiationPart() will
   return empty BlockStmt or null.

Specified by:
getInitiationPart in interface SubpDefinition
Returns:
the block statement containing initiation statements that should be executed at the entry point of the subprogram.

addInitiationStmt

public void addInitiationStmt(Stmt pStmt)
Description copied from interface: SubpDefinition
Add pInitiationStmt to the tail of the block containing initiation statements that should be executed at the entry to the subprogram. (If C is the source language, this method is not used.)

Specified by:
addInitiationStmt in interface SubpDefinition
Parameters:
pStmt - to be added to the initiation block.

getHirBody

public Stmt getHirBody()
Description copied from interface: SubpDefinition
Get the body part of the subprogram. It contains the sequence of executable statements in the subprogram.

Specified by:
getHirBody in interface SubpDefinition
Returns:
the body part of the subprogram.

setHirBody

public void setHirBody(BlockStmt pHirBody)
Description copied from interface: SubpDefinition
Set pHirBody as the body part of the subprogram.

Specified by:
setHirBody in interface SubpDefinition
Parameters:
pHirBody - body part to be set.

getStartLabel

public Label getStartLabel()
Description copied from interface: SubpDefinition
Get the start label that is attached at the head of subprogram body.

Specified by:
getStartLabel in interface SubpDefinition
Returns:
the start label.

copyWithOperandsChangingLabel

public HIR copyWithOperandsChangingLabel(IrList pLabelCorrespondence)

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 HIR_Impl
Returns:
cloned HIR object.
Throws:
java.lang.CloneNotSupportedException

print

public void print(int pIndent,
                  boolean pDetail)
Description copied from interface: IR
print Print this subtree in text format traversing all children of this node. "this" may be any subtree (it may be a leaf node).

Specified by:
print in interface IR
Overrides:
print in class HIR_Impl

printHir

public void printHir(java.lang.String pHeader)
Description copied from interface: SubpDefinition
printHir Print the HIR body of this subprogram.

Specified by:
printHir in interface SubpDefinition
Parameters:
pHeader - Header message to be printed.

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

getNodeIndexMin

public int getNodeIndexMin()
Description copied from interface: SubpDefinition
Get the node index attached at the first node of the subprogram definition. It is the minimum index of the subprogram definition.

Specified by:
getNodeIndexMin in interface SubpDefinition
Returns:
the minimum index.

getNodeIndexMax

public int getNodeIndexMax()
Description copied from interface: SubpDefinition
Get the node index attached at the last node of the subprogram definition. It is the maximum index of the subprogram definition.

Specified by:
getNodeIndexMax in interface SubpDefinition
Returns:
the maximum index.