coins.ir.hir
Interface SubpDefinition

All Superinterfaces:
java.lang.Cloneable, HIR, HIR0, IR, IR0
All Known Implementing Classes:
SubpDefinitionImpl

public interface SubpDefinition
extends HIR

Subprogram definition node.


Field Summary
 
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
 
Method Summary
 void addInitiationStmt(Stmt pInitiationStmt)
          Add pInitiationStmt to the tail of the block containing initiation statements that should be executed at the entry to the subprogram.
 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 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.
 
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, print, removeInf
 
Methods inherited from interface coins.ir.IR0
getChild, getChildCount, getIndex, getOperator, setChild
 
Methods inherited from interface 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, 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
 

Method Detail

getSymTable

public SymTable getSymTable()
Get the symbol table local to the subprogram.

Returns:
the symbol table.

getSubpSym

public Subp getSubpSym()
Get the subprogram symbol of this subprogram definition.

Returns:
the subprogram symbol.

getInitiationPart

public BlockStmt getInitiationPart()
 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.

Returns:
the block statement containing initiation statements that should be executed at the entry point of the subprogram.

addInitiationStmt

public void addInitiationStmt(Stmt pInitiationStmt)
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.)

Parameters:
pInitiationStmt - to be added to the initiation block.

getHirBody

public Stmt getHirBody()
Get the body part of the subprogram. It contains the sequence of executable statements in the subprogram.

Returns:
the body part of the subprogram.

setHirBody

public void setHirBody(BlockStmt pHirBody)
Set pHirBody as the body part of the subprogram.

Parameters:
pHirBody - body part to be set.

getStartLabel

public Label getStartLabel()
Get the start label that is attached at the head of subprogram body.

Returns:
the start label.

printHir

public void printHir(java.lang.String pHeader)
printHir Print the HIR body of this subprogram.

Parameters:
pHeader - Header message to be printed.

getNodeIndexMin

public int getNodeIndexMin()
Get the node index attached at the first node of the subprogram definition. It is the minimum index of the subprogram definition.

Returns:
the minimum index.

getNodeIndexMax

public int getNodeIndexMax()
Get the node index attached at the last node of the subprogram definition. It is the maximum index of the subprogram definition.

Returns:
the maximum index.