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
commit e30871a3303c5c57237145e82289eb5fab3ce754 Author: Gary David Gregory (Code signing key) <ggreg...@apache.org> AuthorDate: Sat Oct 29 10:46:47 2022 -0400 Simplify array copy --- src/examples/Package.java | 1 - src/main/java/org/apache/bcel/ExceptionConst.java | 10 +++------- src/main/java/org/apache/bcel/classfile/Unknown.java | 7 ++++--- src/main/java/org/apache/bcel/classfile/Utility.java | 3 +-- src/main/java/org/apache/bcel/generic/ConstantPoolGen.java | 7 ++++--- src/main/java/org/apache/bcel/generic/InstructionList.java | 4 ++-- src/main/java/org/apache/bcel/generic/SWITCH.java | 8 ++++---- src/main/java/org/apache/bcel/util/InstructionFinder.java | 5 ++--- src/test/java/org/apache/bcel/PerformanceTest.java | 5 ++--- 9 files changed, 22 insertions(+), 28 deletions(-) diff --git a/src/examples/Package.java b/src/examples/Package.java index 1d630235..d7128170 100644 --- a/src/examples/Package.java +++ b/src/examples/Package.java @@ -34,7 +34,6 @@ import org.apache.bcel.classfile.ConstantPool; import org.apache.bcel.classfile.ConstantUtf8; import org.apache.bcel.classfile.JavaClass; import org.apache.bcel.util.ClassPath; -import org.apache.commons.lang3.ArraySorter; /** * Package the client. Creates a jar file in the current directory that contains a minimal set of classes needed to run diff --git a/src/main/java/org/apache/bcel/ExceptionConst.java b/src/main/java/org/apache/bcel/ExceptionConst.java index bd5b0470..c0396dcd 100644 --- a/src/main/java/org/apache/bcel/ExceptionConst.java +++ b/src/main/java/org/apache/bcel/ExceptionConst.java @@ -16,6 +16,8 @@ */ package org.apache.bcel; +import org.apache.commons.lang3.ArrayUtils; + /** * Exception constants. * @@ -120,13 +122,7 @@ public final class ExceptionConst { // helper method to merge exception class arrays private static Class<?>[] mergeExceptions(final Class<?>[] input, final Class<?>... extraClasses) { - final int extraLen = extraClasses == null ? 0 : extraClasses.length; - final Class<?>[] excs = new Class<?>[input.length + extraLen]; - System.arraycopy(input, 0, excs, 0, input.length); - if (extraLen > 0) { - System.arraycopy(extraClasses, 0, excs, input.length, extraLen); - } - return excs; + return ArrayUtils.addAll(input, extraClasses); } } diff --git a/src/main/java/org/apache/bcel/classfile/Unknown.java b/src/main/java/org/apache/bcel/classfile/Unknown.java index 72d16268..dd0d956e 100644 --- a/src/main/java/org/apache/bcel/classfile/Unknown.java +++ b/src/main/java/org/apache/bcel/classfile/Unknown.java @@ -19,6 +19,7 @@ package org.apache.bcel.classfile; import java.io.DataInput; import java.io.DataOutputStream; import java.io.IOException; +import java.util.Arrays; import java.util.HashMap; import java.util.Map; @@ -165,9 +166,9 @@ public final class Unknown extends Attribute { return "(Unknown attribute " + name + ")"; } String hex; - if (super.getLength() > 10) { - final byte[] tmp = new byte[10]; - System.arraycopy(bytes, 0, tmp, 0, 10); + final int limit = 10; + if (super.getLength() > limit) { + final byte[] tmp = Arrays.copyOf(bytes, limit); hex = Utility.toHexString(tmp) + "... (truncated)"; } else { hex = Utility.toHexString(bytes); diff --git a/src/main/java/org/apache/bcel/classfile/Utility.java b/src/main/java/org/apache/bcel/classfile/Utility.java index 53beeba5..f0f64a59 100644 --- a/src/main/java/org/apache/bcel/classfile/Utility.java +++ b/src/main/java/org/apache/bcel/classfile/Utility.java @@ -671,8 +671,7 @@ public abstract class Utility { while ((b = gis.read()) >= 0) { tmp[count++] = (byte) b; } - bytes = new byte[count]; - System.arraycopy(tmp, 0, bytes, 0, count); + bytes = Arrays.copyOf(tmp, count); } return bytes; } diff --git a/src/main/java/org/apache/bcel/generic/ConstantPoolGen.java b/src/main/java/org/apache/bcel/generic/ConstantPoolGen.java index 0aeaafc2..29fed1f8 100644 --- a/src/main/java/org/apache/bcel/generic/ConstantPoolGen.java +++ b/src/main/java/org/apache/bcel/generic/ConstantPoolGen.java @@ -16,6 +16,7 @@ */ package org.apache.bcel.generic; +import java.util.Arrays; import java.util.HashMap; import java.util.Map; @@ -215,6 +216,8 @@ public class ConstantPoolGen { /** * Initialize with given constant pool. + * + * @param cp the constant pool. */ public ConstantPoolGen(final ConstantPool cp) { this(cp.getConstantPool()); @@ -563,9 +566,7 @@ public class ConstantPoolGen { * @return constant pool with proper length */ public ConstantPool getFinalConstantPool() { - final Constant[] cs = new Constant[index]; - System.arraycopy(constants, 0, cs, 0, index); - return new ConstantPool(cs); + return new ConstantPool(Arrays.copyOf(constants, index)); } private int getIndex(final Map<String, Integer> map, final String key) { diff --git a/src/main/java/org/apache/bcel/generic/InstructionList.java b/src/main/java/org/apache/bcel/generic/InstructionList.java index 4735f095..7c9bb3fb 100644 --- a/src/main/java/org/apache/bcel/generic/InstructionList.java +++ b/src/main/java/org/apache/bcel/generic/InstructionList.java @@ -20,6 +20,7 @@ import java.io.ByteArrayOutputStream; import java.io.DataOutputStream; import java.io.IOException; import java.util.ArrayList; +import java.util.Arrays; import java.util.HashMap; import java.util.Iterator; import java.util.List; @@ -135,8 +136,7 @@ public class InstructionList implements Iterable<InstructionHandle> { } catch (final IOException e) { throw new ClassGenException(e.toString(), e); } - bytePositions = new int[count]; // Trim to proper size - System.arraycopy(pos, 0, bytePositions, 0, count); + bytePositions = Arrays.copyOf(pos, count); // Trim to proper size /* * Pass 2: Look for BranchInstruction and update their targets, i.e., convert offsets to instruction handles. */ diff --git a/src/main/java/org/apache/bcel/generic/SWITCH.java b/src/main/java/org/apache/bcel/generic/SWITCH.java index caa79f50..1c10bd64 100644 --- a/src/main/java/org/apache/bcel/generic/SWITCH.java +++ b/src/main/java/org/apache/bcel/generic/SWITCH.java @@ -16,6 +16,8 @@ */ package org.apache.bcel.generic; +import java.util.Arrays; + /** * 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. @@ -78,10 +80,8 @@ public final class SWITCH implements CompoundInstruction { tVec[count] = targets[i]; count++; } - match = new int[count]; - targets = new InstructionHandle[count]; - System.arraycopy(mVec, 0, match, 0, count); - System.arraycopy(tVec, 0, targets, 0, count); + match = Arrays.copyOf(mVec, count); + targets = Arrays.copyOf(tVec, count); } public Instruction getInstruction() { diff --git a/src/main/java/org/apache/bcel/util/InstructionFinder.java b/src/main/java/org/apache/bcel/util/InstructionFinder.java index f5f06d96..8f98914d 100644 --- a/src/main/java/org/apache/bcel/util/InstructionFinder.java +++ b/src/main/java/org/apache/bcel/util/InstructionFinder.java @@ -17,6 +17,7 @@ package org.apache.bcel.util; import java.util.ArrayList; +import java.util.Arrays; import java.util.HashMap; import java.util.Iterator; import java.util.List; @@ -257,9 +258,7 @@ public class InstructionFinder { * @return the matched piece of code as an array of instruction (handles) */ private InstructionHandle[] getMatch(final int matchedFrom, final int matchLength) { - final InstructionHandle[] match = new InstructionHandle[matchLength]; - System.arraycopy(handles, matchedFrom, match, 0, matchLength); - return match; + return Arrays.copyOfRange(handles, matchedFrom, matchedFrom + matchLength); } /** diff --git a/src/test/java/org/apache/bcel/PerformanceTest.java b/src/test/java/org/apache/bcel/PerformanceTest.java index aafe9ddf..fb992188 100644 --- a/src/test/java/org/apache/bcel/PerformanceTest.java +++ b/src/test/java/org/apache/bcel/PerformanceTest.java @@ -23,6 +23,7 @@ import java.io.ByteArrayInputStream; import java.io.File; import java.io.IOException; import java.io.InputStream; +import java.util.Arrays; import java.util.Enumeration; import java.util.jar.JarEntry; import java.util.jar.JarFile; @@ -49,9 +50,7 @@ public final class PerformanceTest { final int n = is.read(b, len, b.length - len); if (n == -1) { if (len < b.length) { - final byte[] c = new byte[len]; - System.arraycopy(b, 0, c, 0, len); - b = c; + b = Arrays.copyOf(b, len); } return b; }