chord.program.reflect
Class StaticReflectResolver
java.lang.Object
chord.program.reflect.StaticReflectResolver
- Direct Known Subclasses:
- CastBasedStaticReflect
public class StaticReflectResolver
- extends java.lang.Object
Static analysis for resolving reflection.
- Author:
- Mayur Naik (mhn@cs.stanford.edu)
|
Field Summary |
protected java.util.Set<joeq.Compiler.Quad.RegisterFactory.Register> |
abortedVars
|
protected joeq.Compiler.Quad.ControlFlowGraph |
cfg
|
protected boolean |
changed
|
protected static boolean |
DEBUG
|
protected java.util.Set<joeq.Compiler.Quad.Quad> |
forNameSites
|
protected java.util.Set<joeq.Compiler.Quad.Quad> |
newInstSites
|
protected int |
numArgs
|
protected java.util.Set<Pair<joeq.Compiler.Quad.RegisterFactory.Register,joeq.Class.jq_Reference>> |
resolutions
|
protected java.util.Set<Pair<joeq.Compiler.Quad.Quad,joeq.Class.jq_Reference>> |
resolvedClsForNameSites
|
protected java.util.Set<Pair<joeq.Compiler.Quad.Quad,joeq.Class.jq_Reference>> |
resolvedObjNewInstSites
|
protected java.util.Set<joeq.Compiler.Quad.RegisterFactory.Register> |
trackedVars
|
| Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
DEBUG
protected static final boolean DEBUG
- See Also:
- Constant Field Values
cfg
protected joeq.Compiler.Quad.ControlFlowGraph cfg
numArgs
protected int numArgs
forNameSites
protected final java.util.Set<joeq.Compiler.Quad.Quad> forNameSites
newInstSites
protected final java.util.Set<joeq.Compiler.Quad.Quad> newInstSites
abortedVars
protected final java.util.Set<joeq.Compiler.Quad.RegisterFactory.Register> abortedVars
trackedVars
protected final java.util.Set<joeq.Compiler.Quad.RegisterFactory.Register> trackedVars
resolutions
protected final java.util.Set<Pair<joeq.Compiler.Quad.RegisterFactory.Register,joeq.Class.jq_Reference>> resolutions
resolvedClsForNameSites
protected final java.util.Set<Pair<joeq.Compiler.Quad.Quad,joeq.Class.jq_Reference>> resolvedClsForNameSites
resolvedObjNewInstSites
protected final java.util.Set<Pair<joeq.Compiler.Quad.Quad,joeq.Class.jq_Reference>> resolvedObjNewInstSites
changed
protected boolean changed
StaticReflectResolver
public StaticReflectResolver()
getResolvedClsForNameSites
public java.util.Set<Pair<joeq.Compiler.Quad.Quad,joeq.Class.jq_Reference>> getResolvedClsForNameSites()
getResolvedObjNewInstSites
public java.util.Set<Pair<joeq.Compiler.Quad.Quad,joeq.Class.jq_Reference>> getResolvedObjNewInstSites()
run
public void run(joeq.Class.jq_Method m)
initForNameAndNewInstSites
protected void initForNameAndNewInstSites()
resolveForNameSites
protected void resolveForNameSites()
resolveNewInstSites
protected void resolveNewInstSites()
processInvoke
protected void processInvoke(joeq.Compiler.Quad.Quad q)
processReturn
protected void processReturn(joeq.Compiler.Quad.Quad q)
processCheckCast
protected void processCheckCast(joeq.Compiler.Quad.RegisterFactory.Register l,
joeq.Compiler.Quad.RegisterFactory.Register r,
joeq.Compiler.Quad.Quad q)
initAbortedVars
protected void initAbortedVars(boolean isNewInst)
processCopy
protected void processCopy(joeq.Compiler.Quad.RegisterFactory.Register l,
joeq.Compiler.Quad.RegisterFactory.Register r)
processPhi
protected void processPhi(joeq.Compiler.Quad.Quad q)
needNewIter
public boolean needNewIter()
- Used to cue RTA to do a new iteration
startedNewIter
public void startedNewIter()