org.apache.bcel.verifier.structurals

## 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 Summary

    All Methods Instance Methods Abstract Methods
    Modifier and Type | Method and Description
    --- | ---
    `boolean` | `contains(InstructionHandle inst)` Returns if the given InstructionHandle refers to an instruction that is part of this subroutine.
    `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.
    `InstructionHandle[]` | `getEnteringJsrInstructions()` Returns all the JsrInstructions that have the first instruction of this subroutine as their target.
    `InstructionHandle[]` | `getInstructions()` Returns all instructions that together form this subroutine.
    `InstructionHandle` | `getLeavingRET()` Returns the one and only RET that leaves the subroutine.
    `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.
    `Subroutine[]` | `subSubs()` Returns the subroutines that are directly called from this subroutine.

- - ### Method Detail

    - #### 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()`

    - #### 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.

    - #### 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.

    - #### 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`

    - #### 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.

Copyright © 2004–2022 The Apache Software Foundation. All rights reserved.