com.ibm.wala.cast.java.translator
Class JavaCAst2IRTranslator

java.lang.Object
  extended by com.ibm.wala.cast.tree.visit.CAstVisitor
      extended by com.ibm.wala.cast.ir.translator.AstTranslator
          extended by com.ibm.wala.cast.java.translator.JavaCAst2IRTranslator

public class JavaCAst2IRTranslator
extends AstTranslator


Nested Class Summary
 
Nested classes/interfaces inherited from class com.ibm.wala.cast.ir.translator.AstTranslator
AstTranslator.AstCFG, AstTranslator.AstLexicalInformation, AstTranslator.DefaultContext, AstTranslator.FinalCAstSymbol, AstTranslator.IncipientCFG, AstTranslator.PreBasicBlock, AstTranslator.Scope, AstTranslator.Symbol, AstTranslator.UnwindState, AstTranslator.WalkContext
 
Nested classes/interfaces inherited from class com.ibm.wala.cast.tree.visit.CAstVisitor
CAstVisitor.Context
 
Field Summary
 
Fields inherited from class com.ibm.wala.cast.ir.translator.AstTranslator
DEBUG_ALL, DEBUG_CFG, DEBUG_LEXICAL, DEBUG_NAMES, DEBUG_TOP, loader
 
Constructor Summary
JavaCAst2IRTranslator(CAstEntity sourceFileEntity, JavaSourceLoaderImpl loader)
           
 
Method Summary
protected  java.lang.String composeEntityName(AstTranslator.WalkContext parent, CAstEntity f)
           
protected  void declareFunction(CAstEntity N, AstTranslator.WalkContext definingContext)
           
protected  TypeReference defaultCatchType()
           
protected  void defineField(CAstEntity topEntity, AstTranslator.WalkContext definingContext, CAstEntity n)
           
protected  void defineFunction(CAstEntity N, AstTranslator.WalkContext definingContext, AbstractCFG cfg, SymbolTable symtab, boolean hasCatchBlock, TypeReference[][] caughtTypes, AstMethod.LexicalInformation lexicalInfo, AstMethod.DebuggingInformation debugInfo)
           
protected  void defineType(CAstEntity type, AstTranslator.WalkContext wc)
           
protected  void doArrayRead(AstTranslator.WalkContext context, int result, int arrayValue, CAstNode arrayRefNode, int[] dimValues)
           
protected  void doArrayWrite(AstTranslator.WalkContext context, int arrayValue, CAstNode arrayRefNode, int[] dimValues, int rval)
           
protected  void doCall(AstTranslator.WalkContext context, CAstNode call, int result, int exception, CAstNode name, int receiver, int[] arguments)
           
protected  void doFieldRead(AstTranslator.WalkContext context, int result, int receiver, CAstNode elt, CAstNode parent)
           
protected  void doFieldWrite(AstTranslator.WalkContext context, int receiver, CAstNode elt, CAstNode parent, int rval)
           
protected  void doGlobalRead(AstTranslator.WalkContext context, int result, java.lang.String name)
           
protected  void doGlobalWrite(AstTranslator.WalkContext context, java.lang.String name, int rval)
           
protected  void doMaterializeFunction(AstTranslator.WalkContext context, int result, int exception, CAstEntity fn)
           
protected  void doNewObject(AstTranslator.WalkContext context, CAstNode newNode, int result, java.lang.Object type, int[] arguments)
           
protected  void doPrimitive(int resultVal, AstTranslator.WalkContext context, CAstNode primitiveCall)
           
protected  void doThrow(AstTranslator.WalkContext context, int exception)
           
protected  boolean doVisit(CAstNode n, CAstVisitor.Context context, CAstVisitor visitor)
          Node processing hook; sub-classes are expected to override if they introduce new node types.
protected  boolean hasImplicitGlobals()
          If this returns true, new global declarations get created for any attempt to access a non-existent variable (believe it or not, JavaScript actually does this!)
protected  void leaveCast(CAstNode n, CAstVisitor.Context c, CAstVisitor visitor)
          Leave a Cast node.
protected  void leaveInstanceOf(CAstNode n, CAstVisitor.Context c, CAstVisitor visitor)
          Leave an InstanceOf node.
protected  void leaveThis(CAstNode n, CAstVisitor.Context c, CAstVisitor visitor)
          Leave a This node.
 JavaSourceLoaderImpl loader()
           
protected  TypeReference makeType(CAstType type)
           
 CAstEntity sourceFileEntity()
           
 void translate()
           
protected  boolean treatGlobalsAsLexicallyScoped()
           
protected  boolean useDefaultInitValues()
           
protected  boolean useLocalValuesForLexicalVars()
           
protected  boolean visitCast(CAstNode n, CAstVisitor.Context c, CAstVisitor visitor)
          Visit a Cast node.
protected  boolean visitInstanceOf(CAstNode n, CAstVisitor.Context c, CAstVisitor visitor)
          Visit an InstanceOf node.
 
Methods inherited from class com.ibm.wala.cast.ir.translator.AstTranslator
closeFunctionEntity, doGlobalRead, doIsFieldDefined, doLexicallyScopedRead, doLexicallyScopedWrite, doLocalRead, doLocalWrite, doPrologue, enterEntity, enterNode, getGlobalScope, getTypeForNode, getValue, handleUnspecifiedLiteralKey, hasSpecialUndeclaredVariables, hasValue, initFunctionEntity, leaveArrayLength, leaveArrayLiteral, leaveArrayLiteralInitElement, leaveArrayLiteralObject, leaveArrayRef, leaveArrayRefAssign, leaveArrayRefAssignOp, leaveAssert, leaveAssign, leaveBinaryExpr, leaveBlockExpr, leaveBlockExprAssign, leaveBlockExprAssignOp, leaveBlockStmt, leaveCall, leaveCatch, leaveConstant, leaveDeclStmt, leaveEachElementGet, leaveEachElementHasNext, leaveEmpty, leaveFieldEntity, leaveFileEntity, leaveFunctionEntity, leaveFunctionExpr, leaveFunctionStmt, leaveGetCaughtException, leaveGoto, leaveIfExpr, leaveIfExprCondition, leaveIfExprTrueClause, leaveIfgoto, leaveIfStmt, leaveIfStmtCondition, leaveIfStmtTrueClause, leaveIsDefinedExpr, leaveLabelStmt, leaveLocalScope, leaveLoop, leaveLoopHeader, leaveNew, leaveObjectLiteral, leaveObjectLiteralFieldInit, leaveObjectRef, leaveObjectRefAssign, leaveObjectRefAssignOp, leavePrimitive, leaveReturn, leaveScriptEntity, leaveSuper, leaveSwitch, leaveSwitchValue, leaveThrow, leaveTry, leaveTryBlock, leaveTypeEntity, leaveTypeLiteralExpr, leaveUnaryExpr, leaveUnwind, leaveVar, leaveVarAssign, leaveVarAssignOp, leaveVoid, makeCodeContext, makeFileContext, makeGlobalRef, makeLocalContext, makeTypeContext, makeTypeScope, makeUnwindContext, postProcessNode, processAssignOp, processFunctionExpr, processIf, processObjectRefAssignOp, setValue, translate, translateBinaryOpcode, translateConditionOpcode, translateUnaryOpcode, visitArrayLength, visitArrayLiteral, visitArrayRef, visitArrayRefAssign, visitArrayRefAssignOp, visitAssert, visitAssign, visitBinaryExpr, visitBlockExpr, visitBlockExprAssign, visitBlockExprAssignOp, visitBlockStmt, visitCall, visitCatch, visitConstant, visitDeclStmt, visitEachElementGet, visitEachElementHasNext, visitEmpty, visitFieldEntity, visitFileEntity, visitFunctionEntity, visitFunctionExpr, visitFunctionStmt, visitGetCaughtException, visitGoto, visitIfExpr, visitIfgoto, visitIfStmt, visitIsDefinedExpr, visitLabelStmt, visitLocalScope, visitLoop, visitNew, visitObjectLiteral, visitObjectRef, visitObjectRefAssign, visitObjectRefAssignOp, visitPrimitive, visitReturn, visitScriptEntity, visitSuper, visitSwitch, visitThis, visitThrow, visitTry, visitTypeEntity, visitTypeLiteralExpr, visitUnaryExpr, visitUnwind, visitVar, visitVarAssign, visitVarAssignOp, visitVoid, walkEntities, walkNodes
 
Methods inherited from class com.ibm.wala.cast.tree.visit.CAstVisitor
doVisitAssignNodes, doVisitEntity, getParent, leaveEntity, leaveNode, postProcessEntity, setParent, visit, visitAllChildren, visitAssignNodes, visitChildren, visitEntities, visitEntity, visitNode, visitScopedEntities, visitScopedEntities
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

JavaCAst2IRTranslator

public JavaCAst2IRTranslator(CAstEntity sourceFileEntity,
                             JavaSourceLoaderImpl loader)
Method Detail

translate

public void translate()

sourceFileEntity

public CAstEntity sourceFileEntity()

loader

public JavaSourceLoaderImpl loader()

useDefaultInitValues

protected boolean useDefaultInitValues()
Specified by:
useDefaultInitValues in class AstTranslator

hasImplicitGlobals

protected boolean hasImplicitGlobals()
Description copied from class: AstTranslator
If this returns true, new global declarations get created for any attempt to access a non-existent variable (believe it or not, JavaScript actually does this!)

Overrides:
hasImplicitGlobals in class AstTranslator

defaultCatchType

protected TypeReference defaultCatchType()
Specified by:
defaultCatchType in class AstTranslator

makeType

protected TypeReference makeType(CAstType type)
Specified by:
makeType in class AstTranslator

treatGlobalsAsLexicallyScoped

protected boolean treatGlobalsAsLexicallyScoped()
Specified by:
treatGlobalsAsLexicallyScoped in class AstTranslator

useLocalValuesForLexicalVars

protected boolean useLocalValuesForLexicalVars()
Specified by:
useLocalValuesForLexicalVars in class AstTranslator

doThrow

protected void doThrow(AstTranslator.WalkContext context,
                       int exception)
Specified by:
doThrow in class AstTranslator

doArrayRead

protected void doArrayRead(AstTranslator.WalkContext context,
                           int result,
                           int arrayValue,
                           CAstNode arrayRefNode,
                           int[] dimValues)
Specified by:
doArrayRead in class AstTranslator

doArrayWrite

protected void doArrayWrite(AstTranslator.WalkContext context,
                            int arrayValue,
                            CAstNode arrayRefNode,
                            int[] dimValues,
                            int rval)
Specified by:
doArrayWrite in class AstTranslator

doFieldRead

protected void doFieldRead(AstTranslator.WalkContext context,
                           int result,
                           int receiver,
                           CAstNode elt,
                           CAstNode parent)
Specified by:
doFieldRead in class AstTranslator

doFieldWrite

protected void doFieldWrite(AstTranslator.WalkContext context,
                            int receiver,
                            CAstNode elt,
                            CAstNode parent,
                            int rval)
Specified by:
doFieldWrite in class AstTranslator

doMaterializeFunction

protected void doMaterializeFunction(AstTranslator.WalkContext context,
                                     int result,
                                     int exception,
                                     CAstEntity fn)
Specified by:
doMaterializeFunction in class AstTranslator

doNewObject

protected void doNewObject(AstTranslator.WalkContext context,
                           CAstNode newNode,
                           int result,
                           java.lang.Object type,
                           int[] arguments)
Specified by:
doNewObject in class AstTranslator

doCall

protected void doCall(AstTranslator.WalkContext context,
                      CAstNode call,
                      int result,
                      int exception,
                      CAstNode name,
                      int receiver,
                      int[] arguments)
Specified by:
doCall in class AstTranslator

doGlobalRead

protected void doGlobalRead(AstTranslator.WalkContext context,
                            int result,
                            java.lang.String name)

doGlobalWrite

protected void doGlobalWrite(AstTranslator.WalkContext context,
                             java.lang.String name,
                             int rval)
Overrides:
doGlobalWrite in class AstTranslator

defineField

protected void defineField(CAstEntity topEntity,
                           AstTranslator.WalkContext definingContext,
                           CAstEntity n)
Specified by:
defineField in class AstTranslator

declareFunction

protected void declareFunction(CAstEntity N,
                               AstTranslator.WalkContext definingContext)
Specified by:
declareFunction in class AstTranslator

defineFunction

protected void defineFunction(CAstEntity N,
                              AstTranslator.WalkContext definingContext,
                              AbstractCFG cfg,
                              SymbolTable symtab,
                              boolean hasCatchBlock,
                              TypeReference[][] caughtTypes,
                              AstMethod.LexicalInformation lexicalInfo,
                              AstMethod.DebuggingInformation debugInfo)
Specified by:
defineFunction in class AstTranslator

doPrimitive

protected void doPrimitive(int resultVal,
                           AstTranslator.WalkContext context,
                           CAstNode primitiveCall)
Specified by:
doPrimitive in class AstTranslator

composeEntityName

protected java.lang.String composeEntityName(AstTranslator.WalkContext parent,
                                             CAstEntity f)
Specified by:
composeEntityName in class AstTranslator

defineType

protected void defineType(CAstEntity type,
                          AstTranslator.WalkContext wc)
Specified by:
defineType in class AstTranslator

leaveThis

protected void leaveThis(CAstNode n,
                         CAstVisitor.Context c,
                         CAstVisitor visitor)
Description copied from class: CAstVisitor
Leave a This node.

Overrides:
leaveThis in class AstTranslator
Parameters:
n - the node to process
c - a visitor-specific context

visitCast

protected boolean visitCast(CAstNode n,
                            CAstVisitor.Context c,
                            CAstVisitor visitor)
Description copied from class: CAstVisitor
Visit a Cast node.

Overrides:
visitCast in class CAstVisitor
Parameters:
n - the node to process
c - a visitor-specific context
Returns:
true if no further processing is needed

leaveCast

protected void leaveCast(CAstNode n,
                         CAstVisitor.Context c,
                         CAstVisitor visitor)
Description copied from class: CAstVisitor
Leave a Cast node.

Overrides:
leaveCast in class CAstVisitor
Parameters:
n - the node to process
c - a visitor-specific context

visitInstanceOf

protected boolean visitInstanceOf(CAstNode n,
                                  CAstVisitor.Context c,
                                  CAstVisitor visitor)
Description copied from class: CAstVisitor
Visit an InstanceOf node.

Overrides:
visitInstanceOf in class CAstVisitor
Parameters:
n - the node to process
c - a visitor-specific context
Returns:
true if no further processing is needed

leaveInstanceOf

protected void leaveInstanceOf(CAstNode n,
                               CAstVisitor.Context c,
                               CAstVisitor visitor)
Description copied from class: CAstVisitor
Leave an InstanceOf node.

Overrides:
leaveInstanceOf in class CAstVisitor
Parameters:
n - the node to process
c - a visitor-specific context

doVisit

protected boolean doVisit(CAstNode n,
                          CAstVisitor.Context context,
                          CAstVisitor visitor)
Description copied from class: CAstVisitor
Node processing hook; sub-classes are expected to override if they introduce new node types. (Should invoke super.doVisit() for unprocessed nodes.)

Overrides:
doVisit in class CAstVisitor
Returns:
true if node was handled