dk.brics.string.java
Class StatementTranslatorImpl

java.lang.Object
  extended by dk.brics.string.java.ExprAnswerVisitor<ValueBox,Variable>
      extended by dk.brics.string.java.StatementTranslatorImpl
All Implemented Interfaces:
StatementTranslator, StmtSwitch, Switch

public class StatementTranslatorImpl
extends ExprAnswerVisitor<ValueBox,Variable>
implements StmtSwitch, StatementTranslator

Translates Jimple-expressions and -statements into Statements in intermediate form.

This interface requires an implementation of the IntermediateFactory facade, which is currently provided by the StatementTranslatorFacadeImpl.

Note that this class is also responsible for creating Hotspot statements for each ValueBox marked as a hotspot. IntermediateFactory.isHotspot(soot.ValueBox) defines what is a hotspot.


Constructor Summary
StatementTranslatorImpl(MethodCallTranslator methodCalls, FieldReferenceTranslator fields)
           
 
Method Summary
 void assignment(DefinitionStmt stmt)
           
 Variable caseArrayRef(ArrayRef v, ValueBox box)
           
 void caseAssignStmt(AssignStmt stmt)
           
 void caseBreakpointStmt(BreakpointStmt stmt)
           
 Variable caseCastExpr(CastExpr v, ValueBox box)
           
 void caseEnterMonitorStmt(EnterMonitorStmt stmt)
           
 Variable caseEqExpr(EqExpr v, ValueBox question)
           
 void caseExitMonitorStmt(ExitMonitorStmt stmt)
           
 void caseGotoStmt(GotoStmt stmt)
           
 void caseIdentityStmt(IdentityStmt stmt)
           
 void caseIfStmt(IfStmt stmt)
           
 Variable caseInstanceFieldRef(InstanceFieldRef v, ValueBox box)
           
 Variable caseIntConstant(IntConstant v, ValueBox question)
           
 Variable caseInterfaceInvokeExpr(InterfaceInvokeExpr v, ValueBox box)
           
 void caseInvokeStmt(InvokeStmt stmt)
           
 Variable caseLocal(Local v, ValueBox box)
           
 void caseLookupSwitchStmt(LookupSwitchStmt stmt)
           
 Variable caseNeExpr(NeExpr v, ValueBox question)
           
 Variable caseNewArrayExpr(NewArrayExpr v, ValueBox box)
           
 Variable caseNewExpr(NewExpr v, ValueBox box)
           
 Variable caseNewMultiArrayExpr(NewMultiArrayExpr v, ValueBox box)
           
 void caseNopStmt(NopStmt stmt)
           
 Variable caseNullConstant(NullConstant v, ValueBox box)
           
 Variable caseParameterRef(ParameterRef v, ValueBox box)
           
 void caseRetStmt(RetStmt stmt)
           
 void caseReturnStmt(ReturnStmt stmt)
           
 void caseReturnVoidStmt(ReturnVoidStmt stmt)
           
 Variable caseSpecialInvokeExpr(SpecialInvokeExpr v, ValueBox box)
           
 Variable caseStaticFieldRef(StaticFieldRef v, ValueBox box)
           
 Variable caseStaticInvokeExpr(StaticInvokeExpr v, ValueBox box)
           
 Variable caseStringConstant(StringConstant v, ValueBox box)
           
 void caseTableSwitchStmt(TableSwitchStmt stmt)
           
 void caseThrowStmt(ThrowStmt stmt)
           
 Variable caseVirtualInvokeExpr(VirtualInvokeExpr v, ValueBox box)
           
 void defaultCase(Object obj)
           
 Variable defaultExpr(Object v, ValueBox box)
           
 void translateStatement(Stmt statement, IntermediateFactory factory)
          Translates the specified statement into intermediate code, using the specified factory.
 
Methods inherited from class dk.brics.string.java.ExprAnswerVisitor
applyTo, caseAddExpr, caseAndExpr, caseCaughtExceptionRef, caseClassConstant, caseCmpExpr, caseCmpgExpr, caseCmplExpr, caseDivExpr, caseDoubleConstant, caseFloatConstant, caseGeExpr, caseGtExpr, caseInstanceOfExpr, caseLeExpr, caseLengthExpr, caseLongConstant, caseLtExpr, caseMulExpr, caseNegExpr, caseOrExpr, caseRemExpr, caseShlExpr, caseShrExpr, caseSubExpr, caseThisRef, caseUshrExpr, caseXorExpr
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

StatementTranslatorImpl

public StatementTranslatorImpl(MethodCallTranslator methodCalls,
                               FieldReferenceTranslator fields)
Method Detail

assignment

public void assignment(DefinitionStmt stmt)

caseArrayRef

public Variable caseArrayRef(ArrayRef v,
                             ValueBox box)
Overrides:
caseArrayRef in class ExprAnswerVisitor<ValueBox,Variable>

caseAssignStmt

public void caseAssignStmt(AssignStmt stmt)
Specified by:
caseAssignStmt in interface StmtSwitch

caseBreakpointStmt

public void caseBreakpointStmt(BreakpointStmt stmt)
Specified by:
caseBreakpointStmt in interface StmtSwitch

caseCastExpr

public Variable caseCastExpr(CastExpr v,
                             ValueBox box)
Overrides:
caseCastExpr in class ExprAnswerVisitor<ValueBox,Variable>

caseEnterMonitorStmt

public void caseEnterMonitorStmt(EnterMonitorStmt stmt)
Specified by:
caseEnterMonitorStmt in interface StmtSwitch

caseEqExpr

public Variable caseEqExpr(EqExpr v,
                           ValueBox question)
Overrides:
caseEqExpr in class ExprAnswerVisitor<ValueBox,Variable>

caseExitMonitorStmt

public void caseExitMonitorStmt(ExitMonitorStmt stmt)
Specified by:
caseExitMonitorStmt in interface StmtSwitch

caseGotoStmt

public void caseGotoStmt(GotoStmt stmt)
Specified by:
caseGotoStmt in interface StmtSwitch

caseIdentityStmt

public void caseIdentityStmt(IdentityStmt stmt)
Specified by:
caseIdentityStmt in interface StmtSwitch

caseIfStmt

public void caseIfStmt(IfStmt stmt)
Specified by:
caseIfStmt in interface StmtSwitch

caseInstanceFieldRef

public Variable caseInstanceFieldRef(InstanceFieldRef v,
                                     ValueBox box)
Overrides:
caseInstanceFieldRef in class ExprAnswerVisitor<ValueBox,Variable>

caseIntConstant

public Variable caseIntConstant(IntConstant v,
                                ValueBox question)
Overrides:
caseIntConstant in class ExprAnswerVisitor<ValueBox,Variable>

caseInterfaceInvokeExpr

public Variable caseInterfaceInvokeExpr(InterfaceInvokeExpr v,
                                        ValueBox box)
Overrides:
caseInterfaceInvokeExpr in class ExprAnswerVisitor<ValueBox,Variable>

caseInvokeStmt

public void caseInvokeStmt(InvokeStmt stmt)
Specified by:
caseInvokeStmt in interface StmtSwitch

caseLocal

public Variable caseLocal(Local v,
                          ValueBox box)
Overrides:
caseLocal in class ExprAnswerVisitor<ValueBox,Variable>

caseLookupSwitchStmt

public void caseLookupSwitchStmt(LookupSwitchStmt stmt)
Specified by:
caseLookupSwitchStmt in interface StmtSwitch

caseNeExpr

public Variable caseNeExpr(NeExpr v,
                           ValueBox question)
Overrides:
caseNeExpr in class ExprAnswerVisitor<ValueBox,Variable>

caseNewArrayExpr

public Variable caseNewArrayExpr(NewArrayExpr v,
                                 ValueBox box)
Overrides:
caseNewArrayExpr in class ExprAnswerVisitor<ValueBox,Variable>

caseNewExpr

public Variable caseNewExpr(NewExpr v,
                            ValueBox box)
Overrides:
caseNewExpr in class ExprAnswerVisitor<ValueBox,Variable>

caseNewMultiArrayExpr

public Variable caseNewMultiArrayExpr(NewMultiArrayExpr v,
                                      ValueBox box)
Overrides:
caseNewMultiArrayExpr in class ExprAnswerVisitor<ValueBox,Variable>

caseNopStmt

public void caseNopStmt(NopStmt stmt)
Specified by:
caseNopStmt in interface StmtSwitch

caseNullConstant

public Variable caseNullConstant(NullConstant v,
                                 ValueBox box)
Overrides:
caseNullConstant in class ExprAnswerVisitor<ValueBox,Variable>

caseParameterRef

public Variable caseParameterRef(ParameterRef v,
                                 ValueBox box)
Overrides:
caseParameterRef in class ExprAnswerVisitor<ValueBox,Variable>

caseRetStmt

public void caseRetStmt(RetStmt stmt)
Specified by:
caseRetStmt in interface StmtSwitch

caseReturnStmt

public void caseReturnStmt(ReturnStmt stmt)
Specified by:
caseReturnStmt in interface StmtSwitch

caseReturnVoidStmt

public void caseReturnVoidStmt(ReturnVoidStmt stmt)
Specified by:
caseReturnVoidStmt in interface StmtSwitch

caseSpecialInvokeExpr

public Variable caseSpecialInvokeExpr(SpecialInvokeExpr v,
                                      ValueBox box)
Overrides:
caseSpecialInvokeExpr in class ExprAnswerVisitor<ValueBox,Variable>

caseStaticFieldRef

public Variable caseStaticFieldRef(StaticFieldRef v,
                                   ValueBox box)
Overrides:
caseStaticFieldRef in class ExprAnswerVisitor<ValueBox,Variable>

caseStaticInvokeExpr

public Variable caseStaticInvokeExpr(StaticInvokeExpr v,
                                     ValueBox box)
Overrides:
caseStaticInvokeExpr in class ExprAnswerVisitor<ValueBox,Variable>

caseStringConstant

public Variable caseStringConstant(StringConstant v,
                                   ValueBox box)
Overrides:
caseStringConstant in class ExprAnswerVisitor<ValueBox,Variable>

caseTableSwitchStmt

public void caseTableSwitchStmt(TableSwitchStmt stmt)
Specified by:
caseTableSwitchStmt in interface StmtSwitch

caseThrowStmt

public void caseThrowStmt(ThrowStmt stmt)
Specified by:
caseThrowStmt in interface StmtSwitch

caseVirtualInvokeExpr

public Variable caseVirtualInvokeExpr(VirtualInvokeExpr v,
                                      ValueBox box)
Overrides:
caseVirtualInvokeExpr in class ExprAnswerVisitor<ValueBox,Variable>

defaultCase

public void defaultCase(Object obj)
Specified by:
defaultCase in interface StmtSwitch

defaultExpr

public Variable defaultExpr(Object v,
                            ValueBox box)
Overrides:
defaultExpr in class ExprAnswerVisitor<ValueBox,Variable>

translateStatement

public void translateStatement(Stmt statement,
                               IntermediateFactory factory)
Description copied from interface: StatementTranslator
Translates the specified statement into intermediate code, using the specified factory. The results of the translation exist only in the side-effects imposed by method calls to the factory.

Specified by:
translateStatement in interface StatementTranslator
Parameters:
statement - the jimple statement to translate.
factory - the factory to produce intermediate code with.


Copyright © 2003-2009 Anders Møller, Aske Simon Christensen, Asger Feldthaus.