|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||
java.lang.Objectcom.ibm.wala.cast.tree.visit.CAstVisitor
com.ibm.wala.cast.ir.translator.AstTranslator
com.ibm.wala.cast.java.translator.JavaCAst2IRTranslator
public class JavaCAst2IRTranslator
| 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.InternalCAstSymbol, AstTranslator.PreBasicBlock, AstTranslator.Scope, AstTranslator.ScopeType, 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, insts, loader, namedEntityResolver |
| Constructor Summary | |
|---|---|
JavaCAst2IRTranslator(ModuleEntry module,
CAstEntity sourceFileEntity,
JavaSourceLoaderImpl loader)
|
|
| Method Summary | |
|---|---|
protected java.lang.String |
composeEntityName(AstTranslator.WalkContext parent,
CAstEntity f)
create the language-appropriate name for f |
protected void |
declareFunction(CAstEntity N,
AstTranslator.WalkContext definingContext)
declare a new function, represented by N |
protected TypeReference |
defaultCatchType()
for a block that catches all exceptions, what is the root exception type that it can catch? E.g., for Java, java.lang.Throwable |
protected void |
defineField(CAstEntity topEntity,
AstTranslator.WalkContext definingContext,
CAstEntity n)
define a new field fieldEntity within topEntity |
protected void |
defineFunction(CAstEntity N,
AstTranslator.WalkContext definingContext,
AbstractCFG cfg,
SymbolTable symtab,
boolean hasCatchBlock,
TypeReference[][] caughtTypes,
boolean hasMonitorOp,
AstTranslator.AstLexicalInformation lexicalInfo,
AstMethod.DebuggingInformation debugInfo)
fully define a function. |
protected boolean |
defineType(CAstEntity type,
AstTranslator.WalkContext wc)
define a new (presumably nested) type. |
void |
doArrayRead(AstTranslator.WalkContext context,
int result,
int arrayValue,
CAstNode arrayRefNode,
int[] dimValues)
generate IR for a CAst array read, updating context.cfg() |
void |
doArrayWrite(AstTranslator.WalkContext context,
int arrayValue,
CAstNode arrayRefNode,
int[] dimValues,
int rval)
generate IR for a CAst array write, updating context.cfg() |
protected void |
doCall(AstTranslator.WalkContext context,
CAstNode call,
int result,
int exception,
CAstNode name,
int receiver,
int[] arguments)
generate IR for a CAst method call expression, updating context.cfg() |
protected void |
doFieldRead(AstTranslator.WalkContext context,
int result,
int receiver,
CAstNode elt,
CAstNode parent)
generate IR for a CAst field read, updating context.cfg() |
protected void |
doFieldWrite(AstTranslator.WalkContext context,
int receiver,
CAstNode elt,
CAstNode parent,
int rval)
generate IR for a CAst field write, updating context.cfg() |
protected void |
doGlobalRead(AstTranslator.WalkContext context,
int result,
java.lang.String name)
|
protected void |
doGlobalWrite(AstTranslator.WalkContext context,
java.lang.String name,
int rval)
generate instructions for a write of a global |
protected void |
doMaterializeFunction(CAstNode n,
AstTranslator.WalkContext context,
int result,
int exception,
CAstEntity fn)
generate IR for a CAst function expression, updating context.cfg() |
protected void |
doNewObject(AstTranslator.WalkContext context,
CAstNode newNode,
int result,
java.lang.Object type,
int[] arguments)
generate IR for a CAst new expression, updating context.cfg() |
protected void |
doPrimitive(int resultVal,
AstTranslator.WalkContext context,
CAstNode primitiveCall)
generate IR for call modeling creation of primitive value, updating context.cfg() |
protected void |
doThrow(AstTranslator.WalkContext context,
int exception)
generate IR for a CAst throw expression, updating context.cfg() |
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()
can lexical reads / writes access globals? |
protected boolean |
useDefaultInitValues()
does the language care about using type-appropriate default values? For Java, the answer is yes (ints should get a default value of 0, null for pointers, etc.). |
protected boolean |
useLocalValuesForLexicalVars()
given accesses in a method to variables defined in an enclosing lexical scope, is it legal to read the variable into a local l once at the beginning of the method, operate on l through the method body (rather than performing separate lexical read / write operations), and write back the value in l (if necessary) at the end of the method? |
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.tree.visit.CAstVisitor |
|---|
doVisitArrayRefNode, doVisitAssignNodes, doVisitEntity, getParent, leaveEntity, leaveMacroEntity, leaveMacroVar, leaveNode, postProcessEntity, setParent, visit, visitAllChildren, visitAssignNodes, visitChildren, visitEntities, visitEntity, visitInclude, visitMacroVar, visitNode, visitScopedEntities, visitScopedEntities |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Constructor Detail |
|---|
public JavaCAst2IRTranslator(ModuleEntry module,
CAstEntity sourceFileEntity,
JavaSourceLoaderImpl loader)
| Method Detail |
|---|
public void translate()
public CAstEntity sourceFileEntity()
public JavaSourceLoaderImpl loader()
protected boolean useDefaultInitValues()
AstTranslator
useDefaultInitValues in class AstTranslatorprotected boolean hasImplicitGlobals()
AstTranslator
hasImplicitGlobals in class AstTranslatorprotected TypeReference defaultCatchType()
AstTranslator
defaultCatchType in class AstTranslatorprotected TypeReference makeType(CAstType type)
makeType in class AstTranslatorprotected boolean treatGlobalsAsLexicallyScoped()
AstTranslator
treatGlobalsAsLexicallyScoped in class AstTranslatorprotected boolean useLocalValuesForLexicalVars()
AstTranslator
useLocalValuesForLexicalVars in class AstTranslator
protected void doThrow(AstTranslator.WalkContext context,
int exception)
AstTranslator
doThrow in class AstTranslator
public void doArrayRead(AstTranslator.WalkContext context,
int result,
int arrayValue,
CAstNode arrayRefNode,
int[] dimValues)
AstTranslator
doArrayRead in interface ArrayOpHandlerdoArrayRead in class AstTranslator
public void doArrayWrite(AstTranslator.WalkContext context,
int arrayValue,
CAstNode arrayRefNode,
int[] dimValues,
int rval)
AstTranslator
doArrayWrite in interface ArrayOpHandlerdoArrayWrite in class AstTranslator
protected void doFieldRead(AstTranslator.WalkContext context,
int result,
int receiver,
CAstNode elt,
CAstNode parent)
AstTranslator
doFieldRead in class AstTranslator
protected void doFieldWrite(AstTranslator.WalkContext context,
int receiver,
CAstNode elt,
CAstNode parent,
int rval)
AstTranslator
doFieldWrite in class AstTranslator
protected void doMaterializeFunction(CAstNode n,
AstTranslator.WalkContext context,
int result,
int exception,
CAstEntity fn)
AstTranslator
doMaterializeFunction in class AstTranslator
protected void doNewObject(AstTranslator.WalkContext context,
CAstNode newNode,
int result,
java.lang.Object type,
int[] arguments)
AstTranslator
doNewObject in class AstTranslator
protected void doCall(AstTranslator.WalkContext context,
CAstNode call,
int result,
int exception,
CAstNode name,
int receiver,
int[] arguments)
AstTranslator
doCall in class AstTranslator
protected void doGlobalRead(AstTranslator.WalkContext context,
int result,
java.lang.String name)
protected void doGlobalWrite(AstTranslator.WalkContext context,
java.lang.String name,
int rval)
AstTranslator
doGlobalWrite in class AstTranslator
protected void defineField(CAstEntity topEntity,
AstTranslator.WalkContext definingContext,
CAstEntity n)
AstTranslator
defineField in class AstTranslator
protected void declareFunction(CAstEntity N,
AstTranslator.WalkContext definingContext)
AstTranslator
declareFunction in class AstTranslator
protected void defineFunction(CAstEntity N,
AstTranslator.WalkContext definingContext,
AbstractCFG cfg,
SymbolTable symtab,
boolean hasCatchBlock,
TypeReference[][] caughtTypes,
boolean hasMonitorOp,
AstTranslator.AstLexicalInformation lexicalInfo,
AstMethod.DebuggingInformation debugInfo)
AstTranslator
defineFunction in class AstTranslator
protected void doPrimitive(int resultVal,
AstTranslator.WalkContext context,
CAstNode primitiveCall)
AstTranslator
doPrimitive in class AstTranslator
protected java.lang.String composeEntityName(AstTranslator.WalkContext parent,
CAstEntity f)
AstTranslator
composeEntityName in class AstTranslator
protected boolean defineType(CAstEntity type,
AstTranslator.WalkContext wc)
AstTranslator
defineType in class AstTranslator
protected void leaveThis(CAstNode n,
CAstVisitor.Context c,
CAstVisitor visitor)
CAstVisitor
leaveThis in class AstTranslatorn - the node to processc - a visitor-specific context
protected boolean visitCast(CAstNode n,
CAstVisitor.Context c,
CAstVisitor visitor)
CAstVisitor
visitCast in class CAstVisitorn - the node to processc - a visitor-specific context
protected void leaveCast(CAstNode n,
CAstVisitor.Context c,
CAstVisitor visitor)
CAstVisitor
leaveCast in class CAstVisitorn - the node to processc - a visitor-specific context
protected boolean visitInstanceOf(CAstNode n,
CAstVisitor.Context c,
CAstVisitor visitor)
CAstVisitor
visitInstanceOf in class CAstVisitorn - the node to processc - a visitor-specific context
protected void leaveInstanceOf(CAstNode n,
CAstVisitor.Context c,
CAstVisitor visitor)
CAstVisitor
leaveInstanceOf in class CAstVisitorn - the node to processc - a visitor-specific context
protected boolean doVisit(CAstNode n,
CAstVisitor.Context context,
CAstVisitor visitor)
CAstVisitor
doVisit in class CAstVisitor
|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||