Interface Subroutine
-
public interface SubroutineThis 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 Description booleancontains(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.InstructionHandlegetLeavingRET()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
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.
-
-