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

Version:
  $Id: Subroutine.java,v 1.1.1.1 2001/10/29 20:00:42 jvanzyl Exp $
Author:
  Enver Haase

Method Summary
`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

### getEnteringJsrInstructions

    public 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'.

### getLeavingRET

    public 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'.

  See Also:
    `Subroutines`

### getInstructions

    public 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).

### contains

    public 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().

  See Also:
    `getInstructions()`

### getAccessedLocalsIndices

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

  See Also:
    `getRecursivelyAccessedLocalsIndices()`

### getRecursivelyAccessedLocalsIndices

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

  See Also:
    `getAccessedLocalsIndices()`

### subSubs

    public Subroutine[] subSubs()

  Returns the subroutines that are directly called from this subroutine.

Copyright © 2002-2003 Apache Software Foundation. All Rights Reserved.