Interface Subroutine


  • public interface Subroutine
    This interface defines properties of JVM bytecode subroutines. Note that it is 'abused' to maintain the top-level code in a consistent fashion, too.
    • Method Detail

      • getEnteringJsrInstructions

        InstructionHandle[] getEnteringJsrInstructions()
        Returns all the JsrInstructions that have the first instruction of this subroutine as their target. Must not be invoked on the 'top-level subroutine'.
        Returns:
        The JsrInstructions that have the first instruction of this subroutine as their target.
      • getLeavingRET

        InstructionHandle getLeavingRET()
        Returns the one and only RET that leaves the subroutine. Note that JustIce has a pretty rigid notion of a subroutine. Must not be invoked on the 'top-level subroutine'.
        Returns:
        The one and only RET that leaves the subroutine.
        See Also:
        Subroutines
      • getInstructions

        InstructionHandle[] getInstructions()
        Returns all instructions that together form this subroutine. Note that an instruction is part of exactly one subroutine (the top-level code is considered to be a special subroutine) - else it is not reachable at all (dead code).
        Returns:
        All instructions that together form this subroutine.
      • contains

        boolean contains​(InstructionHandle inst)
        Returns if the given InstructionHandle refers to an instruction that is part of this subroutine. This is a convenience method that saves iteration over the InstructionHandle objects returned by getInstructions().
        Parameters:
        inst - The InstructionHandle to test.
        Returns:
        Whether the given InstructionHandle refers to an instruction that is part of this subroutine.
        See Also:
        getInstructions()
      • getAccessedLocalsIndices

        int[] getAccessedLocalsIndices()
        Returns an int[] containing the indices of the local variable slots accessed by this Subroutine (read-accessed, write-accessed or both); local variables referenced by subroutines of this subroutine are not included.
        Returns:
        An int[] containing the indices of the local variable slots.
        See Also:
        getRecursivelyAccessedLocalsIndices()
      • getRecursivelyAccessedLocalsIndices

        int[] getRecursivelyAccessedLocalsIndices()
        Returns an int[] containing the indices of the local variable slots accessed by this Subroutine (read-accessed, write-accessed or both); local variables referenced by subroutines of this subroutine are included.
        Returns:
        An int[] containing the indices of the local variable slots.
        See Also:
        getAccessedLocalsIndices()
      • subSubs

        Subroutine[] subSubs()
        Returns the subroutines that are directly called from this subroutine.
        Returns:
        The subroutines that are directly called from this subroutine.