This is an automated email from the ASF dual-hosted git repository. ggregory pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/commons-bcel.git
The following commit(s) were added to refs/heads/master by this push: new eef6bb9c Make org.apache.bcel.generic.SWITCH.match final eef6bb9c is described below commit eef6bb9cfb6815a9d445849dd512959bbf416c61 Author: Gary David Gregory (Code signing key) <ggreg...@apache.org> AuthorDate: Thu Nov 24 08:32:54 2022 -0500 Make org.apache.bcel.generic.SWITCH.match final Remove unused org.apache.bcel.generic.SWITCH.targets --- src/main/java/org/apache/bcel/generic/SWITCH.java | 71 +++++++++++------------ 1 file changed, 35 insertions(+), 36 deletions(-) diff --git a/src/main/java/org/apache/bcel/generic/SWITCH.java b/src/main/java/org/apache/bcel/generic/SWITCH.java index 08c9d67f..ec55a058 100644 --- a/src/main/java/org/apache/bcel/generic/SWITCH.java +++ b/src/main/java/org/apache/bcel/generic/SWITCH.java @@ -24,6 +24,40 @@ import java.util.Arrays; */ public final class SWITCH implements CompoundInstruction { + /** + * Sorts match and targets array with QuickSort. + */ + private static void sort(final int l, final int r, final int[] match, final InstructionHandle[] targets) { + int i = l; + int j = r; + int h; + final int m = match[l + r >>> 1]; + InstructionHandle h2; + do { + while (match[i] < m) { + i++; + } + while (m < match[j]) { + j--; + } + if (i <= j) { + h = match[i]; + match[i] = match[j]; + match[j] = h; // Swap elements + h2 = targets[i]; + targets[i] = targets[j]; + targets[j] = h2; // Swap instructions, too + i++; + j--; + } + } while (i <= j); + if (l < j) { + sort(l, j, match, targets); + } + if (i < r) { + sort(i, r, match, targets); + } + } private final int[] match; private final Select instruction; private final int matchLength; @@ -50,7 +84,7 @@ public final class SWITCH implements CompoundInstruction { if ((matchLength = match.length) < 2) { instruction = new TABLESWITCH(match, targets, target); } else { - sort(0, matchLength - 1, targetsCopy); + sort(0, matchLength - 1, matchCopy, targetsCopy); if (matchIsOrdered(maxGap)) { final int maxSize = matchLength + matchLength * maxGap; final int[] mVec = new int[maxSize]; @@ -100,39 +134,4 @@ public final class SWITCH implements CompoundInstruction { } return true; } - - /** - * Sort match and targets array with QuickSort. - */ - private void sort(final int l, final int r, final InstructionHandle[] targets) { - int i = l; - int j = r; - int h; - final int m = match[l + r >>> 1]; - InstructionHandle h2; - do { - while (match[i] < m) { - i++; - } - while (m < match[j]) { - j--; - } - if (i <= j) { - h = match[i]; - match[i] = match[j]; - match[j] = h; // Swap elements - h2 = targets[i]; - targets[i] = targets[j]; - targets[j] = h2; // Swap instructions, too - i++; - j--; - } - } while (i <= j); - if (l < j) { - sort(l, j, targets); - } - if (i < r) { - sort(i, r, targets); - } - } }