Class Wild


  • public class Wild
    extends PatternElement
    A wildcard PatternElement, which matches any kind of instruction indiscriminately.
    Author:
    David Hovemeyer
    See Also:
    PatternElement
    • Constructor Detail

      • Wild

        public Wild()
        Default constructor. Creates a wildcard that matches from 0 to Integer.MAX_VALUE instructions.
      • Wild

        public Wild​(int max)
        Constructor. Matches any number of instructions from 0 to the maximum specified.
        Parameters:
        max - the maximum number of instructions the wildcard may match
      • Wild

        public Wild​(int min,
                    int max)
        Constructor.
        Parameters:
        min - minimum number of times the wildcard must match
        max - maximum number of times the wildcard may match
    • Method Detail

      • setMinAndMax

        public void setMinAndMax​(int min,
                                 int max)
        Set min and max values.
        Parameters:
        min - minimum number of times the wildcard must match
        max - maximum number of times the wildcard may match
      • minOccur

        public int minOccur()
        Description copied from class: PatternElement
        Return the minimum number of instructions this PatternElement must match in the ByteCodePattern.
        Specified by:
        minOccur in class PatternElement
      • maxOccur

        public int maxOccur()
        Description copied from class: PatternElement
        Return the maximum number of instructions this PatternElement must match in the ByteCodePattern.
        Specified by:
        maxOccur in class PatternElement
      • acceptBranch

        public boolean acceptBranch​(Edge edge,
                                    org.apache.bcel.generic.InstructionHandle source)
        Description copied from class: PatternElement
        Return whether or not it is acceptable to take the given branch.
        Specified by:
        acceptBranch in class PatternElement
        Parameters:
        edge - the Edge representing the branch
        source - the source instruction of the branch
        Returns:
        true if the Edge is acceptable, false if not
      • match

        public MatchResult match​(org.apache.bcel.generic.InstructionHandle handle,
                                 org.apache.bcel.generic.ConstantPoolGen cpg,
                                 ValueNumberFrame before,
                                 ValueNumberFrame after,
                                 BindingSet bindingSet)
                          throws DataflowAnalysisException
        Description copied from class: PatternElement
        Return whether or not this element matches the given instruction with the given Bindings in effect.
        Specified by:
        match in class PatternElement
        Parameters:
        handle - the instruction
        cpg - the ConstantPoolGen from the method
        before - the ValueNumberFrame representing values in the Java stack frame just before the execution of the instruction
        after - the ValueNumberFrame representing values in the Java stack frame just after the execution of the instruction
        bindingSet - the set of Bindings
        Returns:
        if the match is successful, returns a MatchResult with the PatternElement and BindingSet; if the match is not successful, returns null
        Throws:
        DataflowAnalysisException