public class ManualFieldPolicy extends Object implements FieldRefinePolicy
Modifier and Type | Field and Description |
---|---|
protected Pattern |
refinePattern |
Constructor and Description |
---|
ManualFieldPolicy(IClassHierarchy cha,
Pattern refinePattern) |
Modifier and Type | Method and Description |
---|---|
String |
getHistory() |
boolean |
nextPass() |
boolean |
shouldRefine(IField field,
PointerKey basePtr,
PointerKey val,
IFlowLabel label,
StateMachine.State state) |
protected final Pattern refinePattern
public ManualFieldPolicy(IClassHierarchy cha, Pattern refinePattern)
refinePattern
- a pattern for detecting which match edges to refine. If the declaring class of the field related
to the match edge matches the pattern, the match edge will be refined. For example, the pattern
Pattern.compile("Ljava/util")
will cause all fields of classes in the java.util
package to
be refined.public boolean shouldRefine(IField field, PointerKey basePtr, PointerKey val, IFlowLabel label, StateMachine.State state)
shouldRefine
in interface FieldRefinePolicy
field
- the accessed fieldbasePtr
- the base pointer of the accesstrue
if match edges for the field access should be refined. Otherwise, false
is returned, indicating that the field can be handled with match edges.public boolean nextPass()
nextPass
in interface FieldRefinePolicy
true
if more refinement can be done, and hence another pass can be attempted;
false
otherwisepublic String getHistory()