|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||
java.lang.Objectedu.umd.cs.findbugs.ba.AbstractFrameModelingVisitor<ValueNumber,ValueNumberFrame>
edu.umd.cs.findbugs.ba.ValueNumberFrameModelingVisitor
public class ValueNumberFrameModelingVisitor
Visitor which models the effects of bytecode instructions on value numbers of values in the operand stack frames.
ValueNumber,
ValueNumberFrame,
ValueNumberAnalysis| Field Summary | |
|---|---|
private ValueNumberCache |
cache
|
private java.util.HashMap<java.lang.String,ValueNumber> |
classObjectValueMap
|
private java.util.IdentityHashMap<org.apache.bcel.generic.InstructionHandle,ValueNumber> |
constantValueMap
|
private static ValueNumber[] |
EMPTY_INPUT_VALUE_LIST
|
private ValueNumberFactory |
factory
|
private org.apache.bcel.generic.InstructionHandle |
handle
|
private LoadedFieldSet |
loadedFieldSet
|
private RepositoryLookupFailureCallback |
lookupFailureCallback
|
private org.apache.bcel.generic.MethodGen |
methodGen
|
private java.util.HashMap<ValueNumber,java.lang.String> |
stringConstantMap
|
| Fields inherited from interface edu.umd.cs.findbugs.ba.Debug |
|---|
CHECK_ASSERTIONS, VERIFY_INTEGRITY |
| Fields inherited from interface edu.umd.cs.findbugs.ba.ValueNumberAnalysisFeatures |
|---|
REDUNDANT_LOAD_ELIMINATION, RLE_DEBUG |
| Constructor Summary | |
|---|---|
ValueNumberFrameModelingVisitor(org.apache.bcel.generic.MethodGen methodGen,
ValueNumberFactory factory,
ValueNumberCache cache,
LoadedFieldSet loadedFieldSet,
RepositoryLookupFailureCallback lookupFailureCallback)
Constructor. |
|
| Method Summary | |
|---|---|
private void |
checkConsumedAndProducedValues(org.apache.bcel.generic.Instruction ins,
ValueNumber[] consumedValueList,
ValueNumber[] producedValueList)
|
private boolean |
doForwardSubstitution()
Determine whether forward substitution should be performed for the heap location referenced by the current instruction. |
private boolean |
doRedundantLoadElimination()
Determine whether redundant load elimination should be performed for the heap location referenced by the current instruction. |
private ValueNumber |
getClassObjectValue(java.lang.String className)
Get the ValueNumber for given class's Class object. |
ValueNumber |
getDefaultValue()
Produce a "default" value. |
private ValueNumber[] |
getOutputValues(ValueNumber[] inputValueList,
int numWordsProduced)
Get output values for current instruction from the ValueNumberCache. |
private ValueNumber[] |
getOutputValues(ValueNumber[] inputValueList,
int numWordsProduced,
int flags)
|
private void |
loadInstanceField(InstanceField instanceField,
org.apache.bcel.generic.Instruction obj)
Load an instance field. |
private void |
loadStaticField(StaticField staticField,
org.apache.bcel.generic.Instruction obj)
Load a static field. |
void |
modelNormalInstruction(org.apache.bcel.generic.Instruction ins,
int numWordsConsumed,
int numWordsProduced)
This is the default instruction modeling method. |
private ValueNumber[] |
popInputValues(int numWordsConsumed)
Pop the input values for the given instruction from the current frame. |
private void |
pushOutputValues(ValueNumber[] outputValueList)
Push given output values onto the current frame. |
void |
setHandle(org.apache.bcel.generic.InstructionHandle handle)
Set the instruction handle of the instruction currently being visited. |
private void |
storeInstanceField(InstanceField instanceField,
org.apache.bcel.generic.Instruction obj,
boolean pushStoredValue)
Store an instance field. |
private void |
storeStaticField(StaticField staticField,
org.apache.bcel.generic.Instruction obj,
boolean pushStoredValue)
Store a static field. |
void |
visitGETFIELD(org.apache.bcel.generic.GETFIELD obj)
|
void |
visitGETSTATIC(org.apache.bcel.generic.GETSTATIC obj)
|
void |
visitINVOKESTATIC(org.apache.bcel.generic.INVOKESTATIC obj)
|
void |
visitLDC(org.apache.bcel.generic.LDC obj)
|
void |
visitPUTFIELD(org.apache.bcel.generic.PUTFIELD obj)
|
void |
visitPUTSTATIC(org.apache.bcel.generic.PUTSTATIC obj)
|
private static java.lang.String |
vlts(ValueNumber[] vl)
|
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
|---|
private org.apache.bcel.generic.MethodGen methodGen
private ValueNumberFactory factory
private ValueNumberCache cache
private LoadedFieldSet loadedFieldSet
private java.util.HashMap<java.lang.String,ValueNumber> classObjectValueMap
private java.util.IdentityHashMap<org.apache.bcel.generic.InstructionHandle,ValueNumber> constantValueMap
private java.util.HashMap<ValueNumber,java.lang.String> stringConstantMap
private RepositoryLookupFailureCallback lookupFailureCallback
private org.apache.bcel.generic.InstructionHandle handle
private static final ValueNumber[] EMPTY_INPUT_VALUE_LIST
| Constructor Detail |
|---|
public ValueNumberFrameModelingVisitor(org.apache.bcel.generic.MethodGen methodGen,
ValueNumberFactory factory,
ValueNumberCache cache,
LoadedFieldSet loadedFieldSet,
RepositoryLookupFailureCallback lookupFailureCallback)
methodGen - the method being analyzedfactory - factory for ValueNumbers for the methodcache - cache of input/output transformations for each instructionloadedFieldSet - fields loaded/stored by each instruction and entire methodlookupFailureCallback - callback to use to report class lookup failures| Method Detail |
|---|
public ValueNumber getDefaultValue()
AbstractFrameModelingVisitor
getDefaultValue in class AbstractFrameModelingVisitor<ValueNumber,ValueNumberFrame>public void setHandle(org.apache.bcel.generic.InstructionHandle handle)
private boolean doRedundantLoadElimination()
private boolean doForwardSubstitution()
private void checkConsumedAndProducedValues(org.apache.bcel.generic.Instruction ins,
ValueNumber[] consumedValueList,
ValueNumber[] producedValueList)
public void modelNormalInstruction(org.apache.bcel.generic.Instruction ins,
int numWordsConsumed,
int numWordsProduced)
modelNormalInstruction in class AbstractFrameModelingVisitor<ValueNumber,ValueNumberFrame>public void visitGETFIELD(org.apache.bcel.generic.GETFIELD obj)
visitGETFIELD in interface org.apache.bcel.generic.VisitorvisitGETFIELD in class AbstractFrameModelingVisitor<ValueNumber,ValueNumberFrame>public void visitPUTFIELD(org.apache.bcel.generic.PUTFIELD obj)
visitPUTFIELD in interface org.apache.bcel.generic.VisitorvisitPUTFIELD in class AbstractFrameModelingVisitor<ValueNumber,ValueNumberFrame>public void visitGETSTATIC(org.apache.bcel.generic.GETSTATIC obj)
visitGETSTATIC in interface org.apache.bcel.generic.VisitorvisitGETSTATIC in class AbstractFrameModelingVisitor<ValueNumber,ValueNumberFrame>public void visitPUTSTATIC(org.apache.bcel.generic.PUTSTATIC obj)
visitPUTSTATIC in interface org.apache.bcel.generic.VisitorvisitPUTSTATIC in class AbstractFrameModelingVisitor<ValueNumber,ValueNumberFrame>public void visitINVOKESTATIC(org.apache.bcel.generic.INVOKESTATIC obj)
visitINVOKESTATIC in interface org.apache.bcel.generic.VisitorvisitINVOKESTATIC in class AbstractFrameModelingVisitor<ValueNumber,ValueNumberFrame>public void visitLDC(org.apache.bcel.generic.LDC obj)
visitLDC in interface org.apache.bcel.generic.VisitorvisitLDC in class AbstractFrameModelingVisitor<ValueNumber,ValueNumberFrame>private ValueNumber[] popInputValues(int numWordsConsumed)
private void pushOutputValues(ValueNumber[] outputValueList)
private ValueNumber[] getOutputValues(ValueNumber[] inputValueList,
int numWordsProduced)
private ValueNumber[] getOutputValues(ValueNumber[] inputValueList,
int numWordsProduced,
int flags)
private static java.lang.String vlts(ValueNumber[] vl)
private void loadInstanceField(InstanceField instanceField,
org.apache.bcel.generic.Instruction obj)
instanceField - the fieldobj - the Instruction loading the field
private void loadStaticField(StaticField staticField,
org.apache.bcel.generic.Instruction obj)
staticField - the fieldobj - the Instruction loading the field
private void storeInstanceField(InstanceField instanceField,
org.apache.bcel.generic.Instruction obj,
boolean pushStoredValue)
instanceField - the fieldobj - the instruction which stores the fieldpushStoredValue - push the stored value onto the stack
(because we are modeling an inner-class field access method)
private void storeStaticField(StaticField staticField,
org.apache.bcel.generic.Instruction obj,
boolean pushStoredValue)
staticField - the static fieldobj - the instruction which stores the fieldpushStoredValue - push the stored value onto the stack
(because we are modeling an inner-class field access method)private ValueNumber getClassObjectValue(java.lang.String className)
className - the class
|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||