Package EDU.purdue.cs.bloat.trans
Class SideEffectChecker
- java.lang.Object
-
- EDU.purdue.cs.bloat.tree.TreeVisitor
-
- EDU.purdue.cs.bloat.trans.SideEffectChecker
-
public class SideEffectChecker extends TreeVisitor
SideEffectChecker traverses a tree and determines is a node has any side effects such as changing the stack, calling a function, or performing a residency check. The side effects are represented by an integer whose bits represent a certain kind of side effect.SideEffectChecker is a TreeVisitor. The way it works is that after a SideEffectChecker is reset, an expression tree Node is visited to determine whether or not it has side effects. Neat.
-
-
Field Summary
Fields Modifier and Type Field Description static intALIASstatic intALLOCstatic intCALLstatic intRCstatic intSTACKstatic intSTOREstatic intSYNCstatic intTHROWstatic intUCstatic intVOLATILE-
Fields inherited from class EDU.purdue.cs.bloat.tree.TreeVisitor
FORWARD, REVERSE
-
-
Constructor Summary
Constructors Constructor Description SideEffectChecker(EditorContext context)Constructor.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description booleanhasSideEffects()voidreset()intsideEffects()voidvisitArithExpr(ArithExpr expr)voidvisitArrayLengthExpr(ArrayLengthExpr expr)voidvisitArrayRefExpr(ArrayRefExpr expr)voidvisitCallMethodExpr(CallMethodExpr expr)voidvisitCallStaticExpr(CallStaticExpr expr)voidvisitCastExpr(CastExpr expr)voidvisitCatchExpr(CatchExpr expr)voidvisitFieldExpr(FieldExpr expr)voidvisitLocalExpr(LocalExpr expr)voidvisitMonitorStmt(MonitorStmt stmt)voidvisitNewArrayExpr(NewArrayExpr expr)voidvisitNewExpr(NewExpr expr)voidvisitNewMultiArrayExpr(NewMultiArrayExpr expr)voidvisitRCExpr(RCExpr expr)voidvisitStackExpr(StackExpr expr)voidvisitStackManipStmt(StackManipStmt stmt)voidvisitStaticFieldExpr(StaticFieldExpr expr)voidvisitStoreExpr(StoreExpr expr)voidvisitUCExpr(UCExpr expr)voidvisitZeroCheckExpr(ZeroCheckExpr expr)-
Methods inherited from class EDU.purdue.cs.bloat.tree.TreeVisitor
direction, forward, prune, reverse, setPrune, visitAddressStoreStmt, visitBlock, visitCallExpr, visitCheckExpr, visitConstantExpr, visitDefExpr, visitExpr, visitExprStmt, visitFlowGraph, visitGotoStmt, visitIfCmpStmt, visitIfStmt, visitIfZeroStmt, visitInitStmt, visitInstanceOfExpr, visitJsrStmt, visitLabelStmt, visitMemExpr, visitMemRefExpr, visitNegExpr, visitNode, visitPhiCatchStmt, visitPhiJoinStmt, visitPhiStmt, visitRetStmt, visitReturnAddressExpr, visitReturnExprStmt, visitReturnStmt, visitSCStmt, visitShiftExpr, visitSRStmt, visitStmt, visitSwitchStmt, visitThrowStmt, visitTree, visitVarExpr
-
-
-
-
Field Detail
-
STACK
public static final int STACK
- See Also:
- Constant Field Values
-
THROW
public static final int THROW
- See Also:
- Constant Field Values
-
CALL
public static final int CALL
- See Also:
- Constant Field Values
-
SYNC
public static final int SYNC
- See Also:
- Constant Field Values
-
ALLOC
public static final int ALLOC
- See Also:
- Constant Field Values
-
RC
public static final int RC
- See Also:
- Constant Field Values
-
UC
public static final int UC
- See Also:
- Constant Field Values
-
STORE
public static final int STORE
- See Also:
- Constant Field Values
-
ALIAS
public static final int ALIAS
- See Also:
- Constant Field Values
-
VOLATILE
public static final int VOLATILE
- See Also:
- Constant Field Values
-
-
Constructor Detail
-
SideEffectChecker
public SideEffectChecker(EditorContext context)
Constructor. The Context is needed to determine whether or not a field is VOLATILE, etc.
-
-
Method Detail
-
sideEffects
public int sideEffects()
-
hasSideEffects
public boolean hasSideEffects()
-
reset
public void reset()
-
visitStoreExpr
public void visitStoreExpr(StoreExpr expr)
- Overrides:
visitStoreExprin classTreeVisitor
-
visitLocalExpr
public void visitLocalExpr(LocalExpr expr)
- Overrides:
visitLocalExprin classTreeVisitor
-
visitZeroCheckExpr
public void visitZeroCheckExpr(ZeroCheckExpr expr)
- Overrides:
visitZeroCheckExprin classTreeVisitor
-
visitRCExpr
public void visitRCExpr(RCExpr expr)
- Overrides:
visitRCExprin classTreeVisitor
-
visitUCExpr
public void visitUCExpr(UCExpr expr)
- Overrides:
visitUCExprin classTreeVisitor
-
visitNewMultiArrayExpr
public void visitNewMultiArrayExpr(NewMultiArrayExpr expr)
- Overrides:
visitNewMultiArrayExprin classTreeVisitor
-
visitNewArrayExpr
public void visitNewArrayExpr(NewArrayExpr expr)
- Overrides:
visitNewArrayExprin classTreeVisitor
-
visitCatchExpr
public void visitCatchExpr(CatchExpr expr)
- Overrides:
visitCatchExprin classTreeVisitor
-
visitNewExpr
public void visitNewExpr(NewExpr expr)
- Overrides:
visitNewExprin classTreeVisitor
-
visitStackExpr
public void visitStackExpr(StackExpr expr)
- Overrides:
visitStackExprin classTreeVisitor
-
visitCastExpr
public void visitCastExpr(CastExpr expr)
- Overrides:
visitCastExprin classTreeVisitor
-
visitArithExpr
public void visitArithExpr(ArithExpr expr)
- Overrides:
visitArithExprin classTreeVisitor
-
visitArrayLengthExpr
public void visitArrayLengthExpr(ArrayLengthExpr expr)
- Overrides:
visitArrayLengthExprin classTreeVisitor
-
visitArrayRefExpr
public void visitArrayRefExpr(ArrayRefExpr expr)
- Overrides:
visitArrayRefExprin classTreeVisitor
-
visitFieldExpr
public void visitFieldExpr(FieldExpr expr)
- Overrides:
visitFieldExprin classTreeVisitor
-
visitStaticFieldExpr
public void visitStaticFieldExpr(StaticFieldExpr expr)
- Overrides:
visitStaticFieldExprin classTreeVisitor
-
visitCallStaticExpr
public void visitCallStaticExpr(CallStaticExpr expr)
- Overrides:
visitCallStaticExprin classTreeVisitor
-
visitCallMethodExpr
public void visitCallMethodExpr(CallMethodExpr expr)
- Overrides:
visitCallMethodExprin classTreeVisitor
-
visitMonitorStmt
public void visitMonitorStmt(MonitorStmt stmt)
- Overrides:
visitMonitorStmtin classTreeVisitor
-
visitStackManipStmt
public void visitStackManipStmt(StackManipStmt stmt)
- Overrides:
visitStackManipStmtin classTreeVisitor
-
-