com.ibm.wala.cast.js.translator
Class JSAstTranslator

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.js.translator.JSAstTranslator

public class JSAstTranslator
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, TYPE_FUNCTION, TYPE_GLOBAL, TYPE_LOCAL, TYPE_SCRIPT, TYPE_TYPE
 
Constructor Summary
JSAstTranslator(JavaScriptLoader loader)
           
 
Method Summary
protected  java.lang.String composeEntityName(AstTranslator.WalkContext parent, CAstEntity f)
           
protected  void declareFunction(CAstEntity N, AstTranslator.WalkContext context)
           
protected  TypeReference defaultCatchType()
           
protected  void defineField(CAstEntity topEntity, AstTranslator.WalkContext wc, CAstEntity n)
           
protected  void defineFunction(CAstEntity N, AstTranslator.WalkContext definingContext, AbstractCFG cfg, SymbolTable symtab, boolean hasCatchBlock, TypeReference[][] caughtTypes, AstMethod.LexicalInformation LI, AstMethod.DebuggingInformation debugInfo)
           
protected  void defineType(CAstEntity type, AstTranslator.WalkContext wc)
           
protected  void doArrayRead(AstTranslator.WalkContext context, int result, int arrayValue, CAstNode arrayRef, int[] dimValues)
           
protected  void doArrayWrite(AstTranslator.WalkContext context, int arrayValue, CAstNode arrayRef, 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 doIsFieldDefined(AstTranslator.WalkContext context, int result, int ref, CAstNode f)
           
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 doPrologue(AstTranslator.WalkContext context)
           
protected  void doThrow(AstTranslator.WalkContext context, int exception)
           
protected  boolean doVisit(CAstNode n, CAstVisitor.Context cntxt, 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  TypeReference makeType(CAstType type)
           
protected  boolean treatGlobalsAsLexicallyScoped()
           
protected  boolean useDefaultInitValues()
           
protected  boolean useLocalValuesForLexicalVars()
           
 
Methods inherited from class com.ibm.wala.cast.ir.translator.AstTranslator
closeFunctionEntity, doGlobalRead, doGlobalWrite, doLexicallyScopedRead, doLexicallyScopedWrite, doLocalRead, doLocalWrite, enterEntity, enterNode, getGlobalScope, getTypeForNode, getValue, handleUnspecifiedLiteralKey, hasSpecialUndeclaredVariables, hasValue, initFunctionEntity, isExceptionLabel, 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, leaveThis, 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, leaveCast, leaveEntity, leaveInstanceOf, leaveNode, postProcessEntity, setParent, visit, visitAllChildren, visitAssignNodes, visitCast, visitChildren, visitEntities, visitEntity, visitInstanceOf, visitNode, visitScopedEntities, visitScopedEntities
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

JSAstTranslator

public JSAstTranslator(JavaScriptLoader loader)
Method Detail

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

treatGlobalsAsLexicallyScoped

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

useLocalValuesForLexicalVars

protected boolean useLocalValuesForLexicalVars()
Specified by:
useLocalValuesForLexicalVars 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

defineType

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

defineField

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

composeEntityName

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

declareFunction

protected void declareFunction(CAstEntity N,
                               AstTranslator.WalkContext context)
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 LI,
                              AstMethod.DebuggingInformation debugInfo)
Specified by:
defineFunction in class AstTranslator

doThrow

protected void doThrow(AstTranslator.WalkContext context,
                       int exception)
Specified by:
doThrow 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

doNewObject

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

doMaterializeFunction

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

doArrayRead

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

doArrayWrite

protected void doArrayWrite(AstTranslator.WalkContext context,
                            int arrayValue,
                            CAstNode arrayRef,
                            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

doPrimitive

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

doIsFieldDefined

protected void doIsFieldDefined(AstTranslator.WalkContext context,
                                int result,
                                int ref,
                                CAstNode f)
Overrides:
doIsFieldDefined in class AstTranslator

doPrologue

protected void doPrologue(AstTranslator.WalkContext context)
Overrides:
doPrologue in class AstTranslator

doVisit

protected boolean doVisit(CAstNode n,
                          CAstVisitor.Context cntxt,
                          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