Package org.apache.bcel.generic
Class SWITCH
java.lang.Object
org.apache.bcel.generic.SWITCH
- All Implemented Interfaces:
CompoundInstruction
SWITCH - Branch depending on int value, generates either LOOKUPSWITCH or TABLESWITCH instruction, depending on
whether the match values (int[]) can be sorted with no gaps between the numbers.
-
Field Summary
Fields -
Constructor Summary
ConstructorsConstructorDescriptionSWITCH
(int[] match, InstructionHandle[] targets, InstructionHandle target) SWITCH
(int[] match, InstructionHandle[] targets, InstructionHandle target, int maxGap) Template for switch() constructs. -
Method Summary
Modifier and TypeMethodDescriptionprivate static boolean
matchIsOrdered
(int[] match, int matchLength, int maxGap) private static void
sort
(int l, int r, int[] match, InstructionHandle[] targets) Sorts match and targets array with QuickSort.
-
Field Details
-
instruction
-
-
Constructor Details
-
SWITCH
-
SWITCH
Template for switch() constructs. If the match array can be sorted in ascending order with gaps no larger than maxGap between the numbers, a TABLESWITCH instruction is generated, and a LOOKUPSWITCH otherwise. The former may be more efficient, but needs more space. Note, that the key array always will be sorted, though we leave the original arrays unaltered.- Parameters:
match
- array of match values (case 2: ... case 7: ..., etc.)targets
- the instructions to be branched to for each casetarget
- the default targetmaxGap
- maximum gap that may between case branches
-
-
Method Details
-
matchIsOrdered
private static boolean matchIsOrdered(int[] match, int matchLength, int maxGap) - Returns:
- match is sorted in ascending order with no gap bigger than maxGap?
-
sort
Sorts match and targets array with QuickSort. -
getInstruction
-
getInstructionList
- Specified by:
getInstructionList
in interfaceCompoundInstruction
-