aboutsummaryrefslogtreecommitdiffstats
path: root/bcel-builder
diff options
context:
space:
mode:
authorAndy Clement <aclement@pivotal.io>2022-01-10 08:09:47 -0800
committerGitHub <noreply@github.com>2022-01-10 08:09:47 -0800
commit04b4ff08535291ac111884320661ae23f1d7a3c9 (patch)
tree492cdd06efa5fa3215f1b0bb49397f25408734c3 /bcel-builder
parent605b700abfb1cffcc3d39ae768d048bf6a8fef2a (diff)
parent4c8c90de69b4e3cdeea0f598fea5a5358ac2c861 (diff)
downloadaspectj-04b4ff08535291ac111884320661ae23f1d7a3c9.tar.gz
aspectj-04b4ff08535291ac111884320661ae23f1d7a3c9.zip
Merge pull request #109 from turbanoff/avoid_empty_arrays_allocation
Reduce empty array allocations
Diffstat (limited to 'bcel-builder')
-rw-r--r--bcel-builder/src/main/java/org/aspectj/apache/bcel/classfile/FieldOrMethod.java2
-rw-r--r--bcel-builder/src/main/java/org/aspectj/apache/bcel/classfile/JavaClass.java11
-rw-r--r--bcel-builder/src/main/java/org/aspectj/apache/bcel/classfile/Method.java4
-rw-r--r--bcel-builder/src/main/java/org/aspectj/apache/bcel/classfile/Utility.java2
-rw-r--r--bcel-builder/src/main/java/org/aspectj/apache/bcel/generic/ClassGen.java2
5 files changed, 9 insertions, 12 deletions
diff --git a/bcel-builder/src/main/java/org/aspectj/apache/bcel/classfile/FieldOrMethod.java b/bcel-builder/src/main/java/org/aspectj/apache/bcel/classfile/FieldOrMethod.java
index 67f70e1b4..59e4d2b37 100644
--- a/bcel-builder/src/main/java/org/aspectj/apache/bcel/classfile/FieldOrMethod.java
+++ b/bcel-builder/src/main/java/org/aspectj/apache/bcel/classfile/FieldOrMethod.java
@@ -177,7 +177,7 @@ public abstract class FieldOrMethod extends Modifiers implements Node {
if (accumulatedAnnotations.size() == 0) {
annotations = AnnotationGen.NO_ANNOTATIONS;
} else {
- annotations = accumulatedAnnotations.toArray(new AnnotationGen[] {});
+ annotations = accumulatedAnnotations.toArray(AnnotationGen.NO_ANNOTATIONS);
}
}
return annotations;
diff --git a/bcel-builder/src/main/java/org/aspectj/apache/bcel/classfile/JavaClass.java b/bcel-builder/src/main/java/org/aspectj/apache/bcel/classfile/JavaClass.java
index 0be2b8ae5..5d2ec65e5 100644
--- a/bcel-builder/src/main/java/org/aspectj/apache/bcel/classfile/JavaClass.java
+++ b/bcel-builder/src/main/java/org/aspectj/apache/bcel/classfile/JavaClass.java
@@ -88,10 +88,7 @@ import org.aspectj.apache.bcel.util.SyntheticRepository;
public class JavaClass extends Modifiers implements Cloneable, Node {
private static final String[] NoInterfaceNames = new String[0];
- private static final Field[] NoFields = new Field[0];
- private static final Method[] NoMethod = new Method[0];
private static final int[] NoInterfaceIndices = new int[0];
- private static final Attribute[] NoAttributes = new Attribute[0];
private String fileName;
private String packageName;
@@ -141,9 +138,9 @@ public class JavaClass extends Modifiers implements Cloneable, Node {
this.modifiers = access_flags;
this.cpool = cpool;
this.interfaces = interfaces;
- this.fields = (fields == null ? NoFields : fields);
- this.methods = (methods == null ? NoMethod : methods);
- this.attributes = (attributes == null ? NoAttributes : attributes);
+ this.fields = (fields == null ? Field.NoFields : fields);
+ this.methods = (methods == null ? Method.NoMethods : methods);
+ this.attributes = (attributes == null ? Attribute.NoAttributes : attributes);
annotationsOutOfDate = true;
// Get source file name if available
@@ -294,7 +291,7 @@ public class JavaClass extends Modifiers implements Cloneable, Node {
accumulatedAnnotations.addAll(runtimeAnnotations.getAnnotations());
}
}
- annotations = accumulatedAnnotations.toArray(new AnnotationGen[] {});
+ annotations = accumulatedAnnotations.toArray(AnnotationGen.NO_ANNOTATIONS);
annotationsOutOfDate = false;
}
return annotations;
diff --git a/bcel-builder/src/main/java/org/aspectj/apache/bcel/classfile/Method.java b/bcel-builder/src/main/java/org/aspectj/apache/bcel/classfile/Method.java
index 316eaa4c9..8f9003744 100644
--- a/bcel-builder/src/main/java/org/aspectj/apache/bcel/classfile/Method.java
+++ b/bcel-builder/src/main/java/org/aspectj/apache/bcel/classfile/Method.java
@@ -228,8 +228,8 @@ public final class Method extends FieldOrMethod {
AnnotationGen[] invisibleOnes = null;
for (int i = 0; i < parameterCount; i++) {
int count = 0;
- visibleOnes = new AnnotationGen[0];
- invisibleOnes = new AnnotationGen[0];
+ visibleOnes = AnnotationGen.NO_ANNOTATIONS;
+ invisibleOnes = AnnotationGen.NO_ANNOTATIONS;
if (parameterAnnotationsVis != null) {
visibleOnes = parameterAnnotationsVis.getAnnotationsOnParameter(i);
count += visibleOnes.length;
diff --git a/bcel-builder/src/main/java/org/aspectj/apache/bcel/classfile/Utility.java b/bcel-builder/src/main/java/org/aspectj/apache/bcel/classfile/Utility.java
index 921570515..6ac083bce 100644
--- a/bcel-builder/src/main/java/org/aspectj/apache/bcel/classfile/Utility.java
+++ b/bcel-builder/src/main/java/org/aspectj/apache/bcel/classfile/Utility.java
@@ -709,7 +709,7 @@ public abstract class Utility {
newAttributes.add(new RuntimeInvisParamAnnos(riaIndex, riaData.length, riaData, cp));
}
- return newAttributes.toArray(new Attribute[] {});
+ return newAttributes.toArray(Attribute.NoAttributes);
} catch (IOException e) {
System.err.println("IOException whilst processing parameter annotations");
e.printStackTrace();
diff --git a/bcel-builder/src/main/java/org/aspectj/apache/bcel/generic/ClassGen.java b/bcel-builder/src/main/java/org/aspectj/apache/bcel/generic/ClassGen.java
index fc8112858..ce4eb98ea 100644
--- a/bcel-builder/src/main/java/org/aspectj/apache/bcel/generic/ClassGen.java
+++ b/bcel-builder/src/main/java/org/aspectj/apache/bcel/generic/ClassGen.java
@@ -195,7 +195,7 @@ public class ClassGen extends Modifiers implements Cloneable {
ConstantPool cp = this.cpool.getFinalConstantPool();
return new JavaClass(classnameIndex, superclassnameIndex, filename, major, minor, modifiers, cp, interfaces, fields,
- methods, attributes.toArray(new Attribute[0]));// OPTIMIZE avoid toArray()?
+ methods, attributes.toArray(Attribute.NoAttributes));// OPTIMIZE avoid toArray()?
}
public void addInterface(String name) {