Class ManualFieldPolicy

java.lang.Object
com.ibm.wala.demandpa.alg.refinepolicy.ManualFieldPolicy
All Implemented Interfaces:
FieldRefinePolicy
Direct Known Subclasses:
ContainersFieldPolicy

public class ManualFieldPolicy extends Object implements FieldRefinePolicy
Manually annotated policy for refining field accesses.
  • Field Details

    • refinePattern

      protected final Pattern refinePattern
  • Constructor Details

    • ManualFieldPolicy

      public ManualFieldPolicy(IClassHierarchy cha, Pattern refinePattern)
      Parameters:
      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.
  • Method Details

    • shouldRefine

      public boolean shouldRefine(IField field, PointerKey basePtr, PointerKey val, IFlowLabel label, StateMachine.State state)
      Specified by:
      shouldRefine in interface FieldRefinePolicy
      Parameters:
      field - the accessed field
      basePtr - the base pointer of the access
      Returns:
      true if match edges for the field access should be refined. Otherwise, false is returned, indicating that the field can be handled with match edges.
    • nextPass

      public boolean nextPass()
      Specified by:
      nextPass in interface FieldRefinePolicy
      Returns:
      true if more refinement can be done, and hence another pass can be attempted; false otherwise
    • getHistory

      public String getHistory()
      Returns:
      a String representation of the decisions made by this