|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectcoins.casttohir.ToHirVisit
coins.casttohir.ToHirBase
Convert HIR-C to HIR-base.
| Field Summary | |
int |
fDbgLevel
|
protected HIR |
hir
HIR instance (used to create HIR objects). |
protected BlockStmt |
nowBlock
Now processing block (used to create initializer). |
protected Sym |
sym
Sym instance (used to create Sym objects). |
protected ToHir |
toHir
Offers cooperation with the object of other packages. |
| Constructor Summary | |
ToHirBase(ToHir tohir)
Constructor. |
|
| Method Summary | |
protected Exp |
atAdd(Exp e)
At add expression node. |
protected Exp |
atAddAssign(Exp e)
At add-assign expression node. |
protected Exp |
atAddr(Exp e)
At address expression node. |
protected Exp |
atAnd(Exp e)
At and expression node. |
protected Exp |
atAndAssign(Exp e)
At and-assign expression node. |
protected Exp |
atArrow(Exp e)
At arrow expression node. |
protected Exp |
atARShift(Exp e)
At arithmetic R-shift expression node. |
protected Exp |
atAssign(Exp e)
At assign expression node. |
protected void |
atAssignStmt(AssignStmt s)
At assign statement node. |
protected void |
atBlock(BlockStmt s)
At block statement node. |
protected Exp |
atCall(FunctionExp e)
At function call expression node. |
protected Exp |
atCmpEq(Exp e)
At EQ expression node. |
protected Exp |
atCmpGe(Exp e)
At GE expression node. |
protected Exp |
atCmpGt(Exp e)
At GT expression node. |
protected Exp |
atCmpLe(Exp e)
At LE expression node. |
protected Exp |
atCmpLt(Exp e)
At LT expression node. |
protected Exp |
atCmpNe(Exp e)
At NE expression node. |
protected Exp |
atComma(Exp e)
At comma expression node. |
protected Exp |
atConst(ConstNode e)
At constant node. |
protected Exp |
atContents(Exp e)
At indirection expression node. |
protected Exp |
atConv(Exp e)
At cast expression node. |
protected Exp |
atDecay(Exp e)
At decay expression node. |
protected Exp |
atDiv(Exp e)
At div expression node. |
protected Exp |
atDivAssign(Exp e)
At div-assign expression node. |
protected Exp |
atElem(ElemNode e)
At element node. |
protected Exp |
atEqZero(Exp e)
At logical-not expression node. |
protected Exp |
atExpList(ExpListExp e)
At expression list node. |
protected Exp |
atExpRepeat(Exp e)
At expression repeatation node. |
protected void |
atExpStmt(ExpStmt s)
At expression statement node. |
protected void |
atFor(LoopStmt s)
At for statement node. |
protected void |
atIf(IfStmt s)
At if statement node. |
protected Exp |
atIndex(Exp e)
At index expression node. |
protected InfStmt |
atInfStmt(InfStmt pInf)
atInfStmt parses the pragma body in the form of String and change its symbols to instances of Sym (Var, Subp, Label, Const) and items enclosed in parenthesis to IrList changing its elements to Sym, etc. |
protected void |
atJump(JumpStmt s)
At goto statement node. |
protected void |
atLabeledStmt(LabeledStmt s)
At labeled statement node. |
protected Exp |
atLgAnd(Exp e)
At logical-and expression node. |
protected Exp |
atLgOr(Exp e)
At logical-or expression node. |
protected Exp |
atLShift(Exp e)
At L-shift expression node. |
protected Exp |
atLShiftAssign(Exp e)
At L-shift-assign expression node. |
protected Exp |
atMod(Exp e)
At mod expression node. |
protected Exp |
atModAssign(Exp e)
At mod-assign expression node. |
protected Exp |
atMul(Exp e)
At mul expression node. |
protected Exp |
atMulAssign(Exp e)
At mul-assign expression node. |
protected Exp |
atNeg(Exp e)
At negative expression node. |
protected Exp |
atNot(Exp e)
At logical not expression node. |
protected Exp |
atOffset(Exp e)
At offset(difference of address) expression node. |
protected Exp |
atOr(Exp e)
At or expression node. |
protected Exp |
atOrAssign(Exp e)
At or-assign expression node. |
protected Exp |
atPost(int op,
Exp e)
At post-operator expression node. |
protected Exp |
atPre(int op,
Exp e)
At pre-operator expression node. |
protected Exp |
atQual(Exp e)
At member-access expression node. |
protected void |
atReturn(ReturnStmt s)
At return statement node. |
protected Exp |
atRShift(Exp e)
At logical R-shift expression node. |
protected Exp |
atRShiftAssign(Exp e)
At R-shift-assign expression node. |
protected Exp |
atSelect(Exp e)
At selection expression node. |
protected void |
atSetDataStmt(SetDataStmt s)
At datacode statement node. |
protected Exp |
atSub(Exp e)
At sub expression node. |
protected Exp |
atSubAssign(Exp e)
At sub-assign expression node. |
protected Exp |
atSubp(SubpNode e)
At function node. |
protected SubpDefinition |
atSubpDefinition(SubpDefinition s)
At block statement node. |
protected Exp |
atSubs(Exp e)
At subscript expression node. |
protected void |
atSwitch(SwitchStmt s)
At switch statement node. |
protected Exp |
atUndecay(Exp e)
At undecay expression node. |
protected void |
atUntil(LoopStmt s)
At do-while statement node. |
protected Exp |
atVar(VarNode e)
At variable node. |
protected void |
atWhile(LoopStmt s)
At while statement node. |
protected Exp |
atXor(Exp e)
At xor expression node. |
protected Exp |
atXorAssign(Exp e)
At xor-assign expression node. |
protected boolean |
inInitBlock()
Return true if now processing in the initialization block. |
protected void |
message(int level,
java.lang.String mes)
Output debug message. |
(package private) IrList |
processPragmaItem(ParseString pParseString,
java.lang.String pNextItem,
IrList pList)
|
(package private) Exp |
visitExp(Exp e)
|
protected void |
visitExpAsExpStmt(Exp e)
Do the same as visitExpAsSequencePoint but this is for an expression whose value is not used (in such cases as procedure call (ExpStmt), non-last expression of comma expression (x of (x, y)), etc.). |
protected Exp |
visitExpAsSequencePoint(Exp e)
Visit the expression e. |
void |
visitProgram()
Visit HIR program tree. |
(package private) void |
visitProgram(Program program)
Visit HIR program tree. |
(package private) void |
visitStmt(Stmt s)
Call appropriate method by operator of statement node. |
| Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
protected final ToHir toHir
protected final HIR hir
protected final Sym sym
protected BlockStmt nowBlock
public final int fDbgLevel
| Constructor Detail |
public ToHirBase(ToHir tohir)
tohir - Offers cooperation with the object of other packages.| Method Detail |
protected void message(int level,
java.lang.String mes)
message in class ToHirVisitlevel - Debug level.mes - Debug message.protected void atIf(IfStmt s)
atIf in class ToHirVisits - IfStmtprotected void atWhile(LoopStmt s)
atWhile in class ToHirVisits - LoopStmtprotected void atFor(LoopStmt s)
atFor in class ToHirVisits - LoopStmtprotected void atUntil(LoopStmt s)
atUntil in class ToHirVisits - LoopStmtprotected void atSwitch(SwitchStmt s)
atSwitch in class ToHirVisits - SwitchStmtprotected void atReturn(ReturnStmt s)
atReturn in class ToHirVisits - ReturnStmtprotected void atExpStmt(ExpStmt s)
atExpStmt in class ToHirVisits - ExpStmtprotected void atSetDataStmt(SetDataStmt s)
atSetDataStmt in class ToHirVisits - SetDataStmtprotected Exp visitExpAsSequencePoint(Exp e)
e - Expression to be visited.
protected void visitExpAsExpStmt(Exp e)
e - Expression to be visited.protected Exp atSubs(Exp e)
atSubs in class ToHirVisite - Exp
protected Exp atCall(FunctionExp e)
atCall in class ToHirVisite - Exp
protected Exp atAdd(Exp e)
atAdd in class ToHirVisite - Exp
protected Exp atSub(Exp e)
atSub in class ToHirVisite - Exp
protected Exp atMul(Exp e)
atMul in class ToHirVisite - Exp
protected Exp atDiv(Exp e)
atDiv in class ToHirVisite - Exp
protected Exp atMod(Exp e)
atMod in class ToHirVisite - Exp
protected Exp atAnd(Exp e)
atAnd in class ToHirVisite - Exp
protected Exp atOr(Exp e)
atOr in class ToHirVisite - Exp
protected Exp atXor(Exp e)
atXor in class ToHirVisite - Exp
protected Exp atCmpEq(Exp e)
1) a==b; => a; b; 2) x = a==b; => if(a==b) x=1; else x=0; 3) x + a==b; => if(a==b) tmp=1; else tmp=0; x+tmp;
atCmpEq in class ToHirVisite - Exp
protected Exp atCmpNe(Exp e)
atCmpNe in class ToHirVisite - Exp
protected Exp atCmpGt(Exp e)
atCmpGt in class ToHirVisite - Exp
protected Exp atCmpGe(Exp e)
atCmpGe in class ToHirVisite - Exp
protected Exp atCmpLt(Exp e)
atCmpLt in class ToHirVisite - Exp
protected Exp atCmpLe(Exp e)
atCmpLe in class ToHirVisite - Exp
protected Exp atLShift(Exp e)
atLShift in class ToHirVisite - Exp
protected Exp atRShift(Exp e)
atRShift in class ToHirVisite - Exp
protected Exp atARShift(Exp e)
atARShift in class ToHirVisite - Exp
protected Exp atNot(Exp e)
atNot in class ToHirVisite - Exp
protected Exp atNeg(Exp e)
atNeg in class ToHirVisite - Exp
protected Exp atAssign(Exp e)
At first, visit the left operand and immediately store its result
as left operand. (The left operand may be refered in the process
of visiting the right operand.)
Second, visit the right operand and then do following operations
according to its returned expression:
1) If same to the left operand, return the left operand;
2) If null, return the left operand because an AssignStmt is already
sweped out.
3) If not null, sweep out AssignStmt during which do following operations
according to parent type:
a) If the parent is null, return null after sweeping out AssignStmt.
b) If the parent is not null, return expression with less overhead
by doing following transformation:
i) a = b[i] --> a = b[i]; (return the left side a)
ii) a[i] = 1 --> a[i] = 1; (return the right side 1)
iii) a[i] = b[j] --> t=b[j]; a[i]=t; (return the temporal variable t)
atAssign in class ToHirVisite - Exp to be visited.
protected Exp atOffset(Exp e)
atOffset in class ToHirVisite - Exp
protected Exp atLgAnd(Exp e)
atLgAnd in class ToHirVisite - Exp
protected Exp atLgOr(Exp e)
atLgOr in class ToHirVisite - Exp
protected Exp atSelect(Exp e)
atSelect in class ToHirVisite - Exp
protected Exp atComma(Exp e)
atComma in class ToHirVisite - Exp
protected Exp atPre(int op,
Exp e)
1) ++v => ( v=v+1, v )
2) ++*p => ( *p=*p+1, *p )
3) ++*(p+j) => ( tmp=p+j, *tmp=*tmp+1, *tmp )
else) ++s.m => ( tmp=&s.m, *tmp=*tmp+1, *tmp )
atPre in class ToHirVisite - Exp
protected Exp atPost(int op,
Exp e)
atPost in class ToHirVisite - Exp
protected Exp atAddAssign(Exp e)
atAddAssign in class ToHirVisite - Exp
protected Exp atSubAssign(Exp e)
atSubAssign in class ToHirVisite - Exp
protected Exp atMulAssign(Exp e)
atMulAssign in class ToHirVisite - Exp
protected Exp atDivAssign(Exp e)
atDivAssign in class ToHirVisite - Exp
protected Exp atModAssign(Exp e)
atModAssign in class ToHirVisite - Exp
protected Exp atLShiftAssign(Exp e)
atLShiftAssign in class ToHirVisite - Exp
protected Exp atRShiftAssign(Exp e)
atRShiftAssign in class ToHirVisite - Exp
protected Exp atAndAssign(Exp e)
atAndAssign in class ToHirVisite - Exp
protected Exp atOrAssign(Exp e)
atOrAssign in class ToHirVisite - Exp
protected Exp atXorAssign(Exp e)
atXorAssign in class ToHirVisite - Exp
protected boolean inInitBlock()
public final void visitProgram()
final void visitProgram(Program program)
program - Programfinal void visitStmt(Stmt s)
s - Visited statement.protected void atBlock(BlockStmt s)
s - BlockStmtprotected void atLabeledStmt(LabeledStmt s)
s - LabeledStmtprotected void atAssignStmt(AssignStmt s)
s - AssignStmtprotected void atJump(JumpStmt s)
s - JumpStmtfinal Exp visitExp(Exp e)
protected Exp atConst(ConstNode e)
e - Exp
protected Exp atVar(VarNode e)
e - Exp
protected Exp atSubp(SubpNode e)
e - Exp
protected Exp atElem(ElemNode e)
e - Exp
protected Exp atIndex(Exp e)
e - Exp
protected Exp atQual(Exp e)
e - Exp
protected Exp atArrow(Exp e)
e - Exp
protected Exp atAddr(Exp e)
e - Exp
protected Exp atConv(Exp e)
e - Exp
protected Exp atDecay(Exp e)
e - Exp
protected Exp atUndecay(Exp e)
e - Exp
protected Exp atContents(Exp e)
e - Exp
protected Exp atEqZero(Exp e)
e - Exp
protected Exp atExpList(ExpListExp e)
e - Exp
protected Exp atExpRepeat(Exp e)
e - Exp
protected SubpDefinition atSubpDefinition(SubpDefinition s)
s - BlockStmtprotected InfStmt atInfStmt(InfStmt pInf)
IrList processPragmaItem(ParseString pParseString,
java.lang.String pNextItem,
IrList pList)
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||