aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndrey Turbanov <turbanoff@gmail.com>2021-12-18 15:20:43 +0300
committerAndrey Turbanov <turbanoff@gmail.com>2021-12-18 15:20:43 +0300
commit4c8c90de69b4e3cdeea0f598fea5a5358ac2c861 (patch)
tree6b1526b6d91bde9f3a1e00bace4e12cde6b6dfd4
parent4021ffcbfe320a1b91bb2bcee7a112f7122ef82d (diff)
downloadaspectj-4c8c90de69b4e3cdeea0f598fea5a5358ac2c861.tar.gz
aspectj-4c8c90de69b4e3cdeea0f598fea5a5358ac2c861.zip
Reduce empty array allocations
-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
-rw-r--r--bridge/src/main/java/org/aspectj/bridge/MessageUtil.java2
-rw-r--r--loadtime/src/main/java/org/aspectj/weaver/loadtime/ConcreteAspectCodeGen.java13
-rw-r--r--org.aspectj.ajdt.core/src/main/java/org/aspectj/ajdt/internal/compiler/ast/AdviceDeclaration.java4
-rw-r--r--org.aspectj.ajdt.core/src/main/java/org/aspectj/ajdt/internal/compiler/ast/AspectDeclaration.java2
-rw-r--r--org.aspectj.ajdt.core/src/main/java/org/aspectj/ajdt/internal/compiler/ast/DeclareDeclaration.java2
-rw-r--r--org.aspectj.ajdt.core/src/main/java/org/aspectj/ajdt/internal/compiler/ast/ValidateAtAspectJAnnotationsVisitor.java6
-rw-r--r--org.aspectj.ajdt.core/src/main/java/org/aspectj/ajdt/internal/compiler/lookup/EclipseFactory.java2
-rw-r--r--org.aspectj.ajdt.core/src/main/java/org/aspectj/ajdt/internal/compiler/lookup/EclipseSourceType.java12
-rw-r--r--org.aspectj.matcher/src/main/java/org/aspectj/weaver/Advice.java2
-rw-r--r--org.aspectj.matcher/src/main/java/org/aspectj/weaver/AjcMemberMaker.java2
-rw-r--r--org.aspectj.matcher/src/main/java/org/aspectj/weaver/MemberImpl.java2
-rw-r--r--org.aspectj.matcher/src/main/java/org/aspectj/weaver/MissingResolvedTypeWithKnownSignature.java10
-rw-r--r--org.aspectj.matcher/src/main/java/org/aspectj/weaver/ResolvedType.java2
-rw-r--r--org.aspectj.matcher/src/main/java/org/aspectj/weaver/patterns/AnnotationPatternList.java6
-rw-r--r--org.aspectj.matcher/src/main/java/org/aspectj/weaver/patterns/IfPointcut.java2
-rw-r--r--org.aspectj.matcher/src/main/java/org/aspectj/weaver/reflect/ReflectionBasedReferenceTypeDelegate.java6
-rw-r--r--org.aspectj.matcher/src/main/java/org/aspectj/weaver/reflect/ReflectionBasedReferenceTypeDelegateFactory.java6
-rw-r--r--org.aspectj.matcher/src/main/java/org/aspectj/weaver/reflect/StandardShadow.java2
-rw-r--r--util/src/main/java/org/aspectj/util/GenericSignature.java2
-rw-r--r--util/src/main/java/org/aspectj/util/GenericSignatureParser.java2
-rw-r--r--weaver/src/main/java/org/aspectj/weaver/bcel/AtAjAttributes.java20
-rw-r--r--weaver/src/main/java/org/aspectj/weaver/bcel/BcelCflowCounterFieldAdder.java2
-rw-r--r--weaver/src/main/java/org/aspectj/weaver/bcel/BcelClassWeaver.java2
-rw-r--r--weaver/src/main/java/org/aspectj/weaver/bcel/BcelField.java2
-rw-r--r--weaver/src/main/java/org/aspectj/weaver/bcel/BcelMethod.java4
-rw-r--r--weaver/src/main/java/org/aspectj/weaver/bcel/BcelObjectType.java6
-rw-r--r--weaver/src/main/java/org/aspectj/weaver/bcel/BcelShadow.java8
-rw-r--r--weaver/src/main/java/org/aspectj/weaver/bcel/BcelTypeMunger.java4
-rw-r--r--weaver/src/main/java/org/aspectj/weaver/bcel/LazyClassGen.java2
-rw-r--r--weaver/src/main/java/org/aspectj/weaver/bcel/LazyMethodGen.java8
-rw-r--r--weaver/src/main/java/org/aspectj/weaver/bcel/TypeAnnotationAccessVar.java2
-rw-r--r--weaver/src/main/java/org/aspectj/weaver/reflect/Java15AnnotationFinder.java5
-rw-r--r--weaver/src/main/java/org/aspectj/weaver/reflect/Java15ReflectionBasedReferenceTypeDelegate.java2
-rw-r--r--weaver/src/main/java/org/aspectj/weaver/reflect/JavaLangTypeToResolvedTypeConverter.java2
39 files changed, 85 insertions, 92 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) {
diff --git a/bridge/src/main/java/org/aspectj/bridge/MessageUtil.java b/bridge/src/main/java/org/aspectj/bridge/MessageUtil.java
index 0a765e503..7ef4e92ab 100644
--- a/bridge/src/main/java/org/aspectj/bridge/MessageUtil.java
+++ b/bridge/src/main/java/org/aspectj/bridge/MessageUtil.java
@@ -357,7 +357,7 @@ public class MessageUtil {
*/
public static IMessage[] getMessagesExcept(IMessageHolder holder, final IMessage.Kind kind, final boolean orGreater) {
if ((null == holder) || (null == kind)) {
- return new IMessage[0];
+ return IMessage.RA_IMessage;
}
IMessageHandler selector = new IMessageHandler() {
diff --git a/loadtime/src/main/java/org/aspectj/weaver/loadtime/ConcreteAspectCodeGen.java b/loadtime/src/main/java/org/aspectj/weaver/loadtime/ConcreteAspectCodeGen.java
index 459a0f86c..1d812c6ba 100644
--- a/loadtime/src/main/java/org/aspectj/weaver/loadtime/ConcreteAspectCodeGen.java
+++ b/loadtime/src/main/java/org/aspectj/weaver/loadtime/ConcreteAspectCodeGen.java
@@ -11,6 +11,8 @@
*******************************************************************************/
package org.aspectj.weaver.loadtime;
+import static org.aspectj.apache.bcel.generic.Type.NO_ARGS;
+
import java.lang.reflect.Modifier;
import java.util.ArrayList;
import java.util.Collection;
@@ -75,7 +77,6 @@ import org.aspectj.weaver.patterns.TypePattern;
public class ConcreteAspectCodeGen {
private final static String[] EMPTY_STRINGS = new String[0];
- private final static Type[] EMPTY_TYPES = new Type[0];
/**
* Concrete aspect definition we build for
@@ -427,17 +428,17 @@ public class ConcreteAspectCodeGen {
}
// default constructor
- LazyMethodGen init = new LazyMethodGen(Modifier.PUBLIC, Type.VOID, "<init>", EMPTY_TYPES, EMPTY_STRINGS, cg);
+ LazyMethodGen init = new LazyMethodGen(Modifier.PUBLIC, Type.VOID, "<init>", NO_ARGS, EMPTY_STRINGS, cg);
InstructionList cbody = init.getBody();
cbody.append(InstructionConstants.ALOAD_0);
- cbody.append(cg.getFactory().createInvoke(parentName, "<init>", Type.VOID, EMPTY_TYPES, Constants.INVOKESPECIAL));
+ cbody.append(cg.getFactory().createInvoke(parentName, "<init>", Type.VOID, NO_ARGS, Constants.INVOKESPECIAL));
cbody.append(InstructionConstants.RETURN);
cg.addMethodGen(init);
for (Definition.Pointcut abstractPc : concreteAspect.pointcuts) {
// TODO AV - respect visibility instead of opening up as public?
- LazyMethodGen mg = new LazyMethodGen(Modifier.PUBLIC, Type.VOID, abstractPc.name, EMPTY_TYPES, EMPTY_STRINGS, cg);
+ LazyMethodGen mg = new LazyMethodGen(Modifier.PUBLIC, Type.VOID, abstractPc.name, NO_ARGS, EMPTY_STRINGS, cg);
SimpleElementValue svg = new SimpleElementValue(ElementValue.STRING, cg.getConstantPool(), abstractPc.expression);
List<NameValuePair> elems = new ArrayList<>();
elems.add(new NameValuePair("value", svg, cg.getConstantPool()));
@@ -547,7 +548,7 @@ public class ConcreteAspectCodeGen {
String nameComponent = da.declareAnnotationKind.name().toLowerCase();
String declareName = new StringBuilder("ajc$declare_at_").append(nameComponent).append("_").append(decCounter).toString();
- LazyMethodGen declareMethod = new LazyMethodGen(Modifier.PUBLIC, Type.VOID, declareName, Type.NO_ARGS, EMPTY_STRINGS, cg);
+ LazyMethodGen declareMethod = new LazyMethodGen(Modifier.PUBLIC, Type.VOID, declareName, NO_ARGS, EMPTY_STRINGS, cg);
InstructionList declareMethodBody = declareMethod.getBody();
declareMethodBody.append(InstructionFactory.RETURN);
declareMethod.addAnnotation(constructedAnnotation);
@@ -909,7 +910,7 @@ public class ConcreteAspectCodeGen {
}
// Time to construct the method itself:
- LazyMethodGen advice = new LazyMethodGen(Modifier.PUBLIC, returnType, adviceName, paramTypes.toArray(new Type[0]), EMPTY_STRINGS, cg);
+ LazyMethodGen advice = new LazyMethodGen(Modifier.PUBLIC, returnType, adviceName, paramTypes.toArray(NO_ARGS), EMPTY_STRINGS, cg);
InstructionList adviceBody = advice.getBody();
diff --git a/org.aspectj.ajdt.core/src/main/java/org/aspectj/ajdt/internal/compiler/ast/AdviceDeclaration.java b/org.aspectj.ajdt.core/src/main/java/org/aspectj/ajdt/internal/compiler/ast/AdviceDeclaration.java
index abbfdf974..4579308b9 100644
--- a/org.aspectj.ajdt.core/src/main/java/org/aspectj/ajdt/internal/compiler/ast/AdviceDeclaration.java
+++ b/org.aspectj.ajdt.core/src/main/java/org/aspectj/ajdt/internal/compiler/ast/AdviceDeclaration.java
@@ -141,9 +141,9 @@ public class AdviceDeclaration extends AjMethodDeclaration {
// XXX set these correctly
formalsUnchangedToProceed = new boolean[baseArgumentCount];
- proceedCallSignatures = new ResolvedMember[0];
+ proceedCallSignatures = ResolvedMember.NONE;
proceedInInners = false;
- declaredExceptions = new UnresolvedType[0];
+ declaredExceptions = UnresolvedType.NONE;
for (Proceed call : proceedCalls) {
if (call.inInner) {
diff --git a/org.aspectj.ajdt.core/src/main/java/org/aspectj/ajdt/internal/compiler/ast/AspectDeclaration.java b/org.aspectj.ajdt.core/src/main/java/org/aspectj/ajdt/internal/compiler/ast/AspectDeclaration.java
index f1155fe2f..4de7c57e0 100644
--- a/org.aspectj.ajdt.core/src/main/java/org/aspectj/ajdt/internal/compiler/ast/AspectDeclaration.java
+++ b/org.aspectj.ajdt.core/src/main/java/org/aspectj/ajdt/internal/compiler/ast/AspectDeclaration.java
@@ -1129,7 +1129,7 @@ public class AspectDeclaration extends TypeDeclaration {
}
private PerClause resolvePerClause() {
- EclipseScope iscope = new EclipseScope(new FormalBinding[0], scope);
+ EclipseScope iscope = new EclipseScope(FormalBinding.NONE, scope);
perClause.resolve(iscope);
return perClause;
}
diff --git a/org.aspectj.ajdt.core/src/main/java/org/aspectj/ajdt/internal/compiler/ast/DeclareDeclaration.java b/org.aspectj.ajdt.core/src/main/java/org/aspectj/ajdt/internal/compiler/ast/DeclareDeclaration.java
index 072bbeee5..25df5deea 100644
--- a/org.aspectj.ajdt.core/src/main/java/org/aspectj/ajdt/internal/compiler/ast/DeclareDeclaration.java
+++ b/org.aspectj.ajdt.core/src/main/java/org/aspectj/ajdt/internal/compiler/ast/DeclareDeclaration.java
@@ -147,7 +147,7 @@ public class DeclareDeclaration extends AjMethodDeclaration {
return null;
}
- EclipseScope scope = new EclipseScope(new FormalBinding[0], classScope);
+ EclipseScope scope = new EclipseScope(FormalBinding.NONE, classScope);
declareDecl.resolve(scope);
return declareDecl;
diff --git a/org.aspectj.ajdt.core/src/main/java/org/aspectj/ajdt/internal/compiler/ast/ValidateAtAspectJAnnotationsVisitor.java b/org.aspectj.ajdt.core/src/main/java/org/aspectj/ajdt/internal/compiler/ast/ValidateAtAspectJAnnotationsVisitor.java
index cbac1619c..285f6f5bf 100644
--- a/org.aspectj.ajdt.core/src/main/java/org/aspectj/ajdt/internal/compiler/ast/ValidateAtAspectJAnnotationsVisitor.java
+++ b/org.aspectj.ajdt.core/src/main/java/org/aspectj/ajdt/internal/compiler/ast/ValidateAtAspectJAnnotationsVisitor.java
@@ -280,7 +280,7 @@ public class ValidateAtAspectJAnnotationsVisitor extends ASTVisitor {
if (perClause != null && !perClause.equals("")) {
ISourceContext context = new EclipseSourceContext(unit.compilationResult, pcLoc[0]);
Pointcut pc = new PatternParser(perClause, context).maybeParsePerClause();
- FormalBinding[] bindings = new FormalBinding[0];
+ FormalBinding[] bindings = FormalBinding.NONE;
if (pc != null)
pc.resolve(new EclipseScope(bindings, typeDecl.scope));
}
@@ -430,9 +430,9 @@ public class ValidateAtAspectJAnnotationsVisitor extends ASTVisitor {
private FormalBinding[] buildFormalAdviceBindingsFrom(MethodDeclaration mDecl) {
if (mDecl.arguments == null)
- return new FormalBinding[0];
+ return FormalBinding.NONE;
if (mDecl.binding == null)
- return new FormalBinding[0];
+ return FormalBinding.NONE;
EclipseFactory factory = EclipseFactory.fromScopeLookupEnvironment(mDecl.scope);
String extraArgName = maybeGetExtraArgName();
if (extraArgName == null)
diff --git a/org.aspectj.ajdt.core/src/main/java/org/aspectj/ajdt/internal/compiler/lookup/EclipseFactory.java b/org.aspectj.ajdt.core/src/main/java/org/aspectj/ajdt/internal/compiler/lookup/EclipseFactory.java
index 5f8b1f2f7..dadb3bb09 100644
--- a/org.aspectj.ajdt.core/src/main/java/org/aspectj/ajdt/internal/compiler/lookup/EclipseFactory.java
+++ b/org.aspectj.ajdt.core/src/main/java/org/aspectj/ajdt/internal/compiler/lookup/EclipseFactory.java
@@ -291,7 +291,7 @@ public class EclipseFactory {
// act of resolution here may cause recursion problems since the parameters may
// be type variables that we haven't fixed up yet.
if (arguments == null) {
- arguments = new UnresolvedType[0];
+ arguments = UnresolvedType.NONE;
// for pr384398
if (!hasAnyArguments(ptb)) {
return UnresolvedType.forRawTypeName(getName(binding));
diff --git a/org.aspectj.ajdt.core/src/main/java/org/aspectj/ajdt/internal/compiler/lookup/EclipseSourceType.java b/org.aspectj.ajdt.core/src/main/java/org/aspectj/ajdt/internal/compiler/lookup/EclipseSourceType.java
index 49c80e318..8ed7a0275 100644
--- a/org.aspectj.ajdt.core/src/main/java/org/aspectj/ajdt/internal/compiler/lookup/EclipseSourceType.java
+++ b/org.aspectj.ajdt.core/src/main/java/org/aspectj/ajdt/internal/compiler/lookup/EclipseSourceType.java
@@ -349,9 +349,9 @@ public class EclipseSourceType extends AbstractReferenceTypeDelegate {
declaredFields.add(factory.makeResolvedMember(f));
}
- this.declaredPointcuts = declaredPointcuts.toArray(new ResolvedPointcutDefinition[0]);
- this.declaredMethods = declaredMethods.toArray(new ResolvedMember[0]);
- this.declaredFields = declaredFields.toArray(new ResolvedMember[0]);
+ this.declaredPointcuts = declaredPointcuts.toArray(ResolvedPointcutDefinition.NO_POINTCUTS);
+ this.declaredMethods = declaredMethods.toArray(ResolvedMember.NONE);
+ this.declaredFields = declaredFields.toArray(ResolvedMember.NONE);
}
private final static char[] valuesCharArray = "values".toCharArray();
@@ -395,10 +395,10 @@ public class EclipseSourceType extends AbstractReferenceTypeDelegate {
private FormalBinding[] buildFormalAdviceBindingsFrom(AbstractMethodDeclaration mDecl) {
if (mDecl.arguments == null) {
- return new FormalBinding[0];
+ return FormalBinding.NONE;
}
if (mDecl.binding == null) {
- return new FormalBinding[0];
+ return FormalBinding.NONE;
}
EclipseFactory factory = EclipseFactory.fromScopeLookupEnvironment(mDecl.scope);
String extraArgName = "";// maybeGetExtraArgName();
@@ -1198,7 +1198,7 @@ public class EclipseSourceType extends AbstractReferenceTypeDelegate {
@Override
public TypeVariable[] getTypeVariables() {
if (declaration.typeParameters == null) {
- return new TypeVariable[0];
+ return TypeVariable.NONE;
}
TypeVariable[] typeVariables = new TypeVariable[declaration.typeParameters.length];
for (int i = 0; i < typeVariables.length; i++) {
diff --git a/org.aspectj.matcher/src/main/java/org/aspectj/weaver/Advice.java b/org.aspectj.matcher/src/main/java/org/aspectj/weaver/Advice.java
index 284786213..94cf7561e 100644
--- a/org.aspectj.matcher/src/main/java/org/aspectj/weaver/Advice.java
+++ b/org.aspectj.matcher/src/main/java/org/aspectj/weaver/Advice.java
@@ -104,7 +104,7 @@ public abstract class Advice extends ShadowMunger {
if (signature != null) {
bindingParameterTypes = signature.getParameterTypes();
} else {
- bindingParameterTypes = new UnresolvedType[0];
+ bindingParameterTypes = UnresolvedType.NONE;
}
}
diff --git a/org.aspectj.matcher/src/main/java/org/aspectj/weaver/AjcMemberMaker.java b/org.aspectj.matcher/src/main/java/org/aspectj/weaver/AjcMemberMaker.java
index b20d0c2ca..88e14400d 100644
--- a/org.aspectj.matcher/src/main/java/org/aspectj/weaver/AjcMemberMaker.java
+++ b/org.aspectj.matcher/src/main/java/org/aspectj/weaver/AjcMemberMaker.java
@@ -140,7 +140,7 @@ public class AjcMemberMaker {
// public static a.X ajc$createAspectInstance(java.lang.String)
ResolvedMemberImpl rm = new ResolvedMemberImpl(Member.METHOD, declaringType, PUBLIC_STATIC, declaringType, // return value
NameMangler.PERTYPEWITHIN_CREATEASPECTINSTANCE_METHOD,
- new UnresolvedType[] { UnresolvedType.forSignature("Ljava/lang/String;") }, new UnresolvedType[] {});
+ new UnresolvedType[] { UnresolvedType.forSignature("Ljava/lang/String;") }, UnresolvedType.NONE);
return rm;
}
diff --git a/org.aspectj.matcher/src/main/java/org/aspectj/weaver/MemberImpl.java b/org.aspectj.matcher/src/main/java/org/aspectj/weaver/MemberImpl.java
index 33111fc65..f837ac522 100644
--- a/org.aspectj.matcher/src/main/java/org/aspectj/weaver/MemberImpl.java
+++ b/org.aspectj.matcher/src/main/java/org/aspectj/weaver/MemberImpl.java
@@ -211,7 +211,7 @@ public class MemberImpl implements Member {
l.add(UnresolvedType.forSignature(sig.substring(start, i)));
}
}
- UnresolvedType[] paramTypes = l.toArray(new UnresolvedType[0]);
+ UnresolvedType[] paramTypes = l.toArray(UnresolvedType.NONE);
UnresolvedType returnType = UnresolvedType.forSignature(sig.substring(i + 1, sig.length()));
return new Object[] { returnType, paramTypes };
} else {
diff --git a/org.aspectj.matcher/src/main/java/org/aspectj/weaver/MissingResolvedTypeWithKnownSignature.java b/org.aspectj.matcher/src/main/java/org/aspectj/weaver/MissingResolvedTypeWithKnownSignature.java
index 8d3159dc5..a21461592 100644
--- a/org.aspectj.matcher/src/main/java/org/aspectj/weaver/MissingResolvedTypeWithKnownSignature.java
+++ b/org.aspectj.matcher/src/main/java/org/aspectj/weaver/MissingResolvedTypeWithKnownSignature.java
@@ -25,8 +25,6 @@ import org.aspectj.bridge.context.CompilationAndWeavingContext;
*/
public class MissingResolvedTypeWithKnownSignature extends ResolvedType {
- private static ResolvedMember[] NO_MEMBERS = new ResolvedMember[0];
- private static ResolvedType[] NO_TYPES = new ResolvedType[0];
private boolean issuedCantFindTypeError = false;
private boolean issuedJoinPointWarning = false;
private boolean issuedMissingInterfaceWarning = false;
@@ -61,7 +59,7 @@ public class MissingResolvedTypeWithKnownSignature extends ResolvedType {
@Override
public ResolvedMember[] getDeclaredFields() {
raiseCantFindType(WeaverMessages.CANT_FIND_TYPE_FIELDS);
- return NO_MEMBERS;
+ return ResolvedMember.NONE;
}
/*
@@ -72,7 +70,7 @@ public class MissingResolvedTypeWithKnownSignature extends ResolvedType {
@Override
public ResolvedMember[] getDeclaredMethods() {
raiseCantFindType(WeaverMessages.CANT_FIND_TYPE_METHODS);
- return NO_MEMBERS;
+ return ResolvedMember.NONE;
}
@Override
@@ -84,13 +82,13 @@ public class MissingResolvedTypeWithKnownSignature extends ResolvedType {
@Override
public ResolvedType[] getDeclaredInterfaces() {
raiseCantFindType(WeaverMessages.CANT_FIND_TYPE_INTERFACES);
- return NO_TYPES;
+ return ResolvedType.EMPTY_RESOLVED_TYPE_ARRAY;
}
@Override
public ResolvedMember[] getDeclaredPointcuts() {
raiseCantFindType(WeaverMessages.CANT_FIND_TYPE_POINTCUTS);
- return NO_MEMBERS;
+ return ResolvedMember.NONE;
}
@Override
diff --git a/org.aspectj.matcher/src/main/java/org/aspectj/weaver/ResolvedType.java b/org.aspectj.matcher/src/main/java/org/aspectj/weaver/ResolvedType.java
index dcf5f21ae..b0069d840 100644
--- a/org.aspectj.matcher/src/main/java/org/aspectj/weaver/ResolvedType.java
+++ b/org.aspectj.matcher/src/main/java/org/aspectj/weaver/ResolvedType.java
@@ -1085,7 +1085,7 @@ public abstract class ResolvedType extends UnresolvedType implements AnnotatedEl
l.add(m);
}
}
- return l.toArray(new ResolvedMember[0]);
+ return l.toArray(ResolvedMember.NONE);
}
public abstract ISourceContext getSourceContext();
diff --git a/org.aspectj.matcher/src/main/java/org/aspectj/weaver/patterns/AnnotationPatternList.java b/org.aspectj.matcher/src/main/java/org/aspectj/weaver/patterns/AnnotationPatternList.java
index d9b61c603..ede14efca 100644
--- a/org.aspectj.matcher/src/main/java/org/aspectj/weaver/patterns/AnnotationPatternList.java
+++ b/org.aspectj.matcher/src/main/java/org/aspectj/weaver/patterns/AnnotationPatternList.java
@@ -30,13 +30,13 @@ public class AnnotationPatternList extends PatternNode {
private AnnotationTypePattern[] typePatterns;
int ellipsisCount = 0;
- public static final AnnotationPatternList EMPTY = new AnnotationPatternList(new AnnotationTypePattern[] {});
+ public static final AnnotationPatternList EMPTY = new AnnotationPatternList(AnnotationTypePattern.NONE);
public static final AnnotationPatternList ANY = new AnnotationPatternList(
new AnnotationTypePattern[] { AnnotationTypePattern.ELLIPSIS });
public AnnotationPatternList() {
- typePatterns = new AnnotationTypePattern[0];
+ typePatterns = AnnotationTypePattern.NONE;
ellipsisCount = 0;
}
@@ -50,7 +50,7 @@ public class AnnotationPatternList extends PatternNode {
}
public AnnotationPatternList(List<AnnotationTypePattern> l) {
- this((AnnotationTypePattern[]) l.toArray(new AnnotationTypePattern[0]));
+ this((AnnotationTypePattern[]) l.toArray(AnnotationTypePattern.NONE));
}
protected AnnotationTypePattern[] getAnnotationPatterns() {
diff --git a/org.aspectj.matcher/src/main/java/org/aspectj/weaver/patterns/IfPointcut.java b/org.aspectj.matcher/src/main/java/org/aspectj/weaver/patterns/IfPointcut.java
index 40014cda4..5ecbd8115 100644
--- a/org.aspectj.matcher/src/main/java/org/aspectj/weaver/patterns/IfPointcut.java
+++ b/org.aspectj.matcher/src/main/java/org/aspectj/weaver/patterns/IfPointcut.java
@@ -308,7 +308,7 @@ public class IfPointcut extends Pointcut {
}
}
- ret = Test.makeAnd(ret, Test.makeCall(testMethod, (Expr[]) args.toArray(new Expr[0])));
+ ret = Test.makeAnd(ret, Test.makeCall(testMethod, (Expr[]) args.toArray(Expr.NONE)));
// Remember...
ifLastMatchedShadowId = shadow.shadowId;
diff --git a/org.aspectj.matcher/src/main/java/org/aspectj/weaver/reflect/ReflectionBasedReferenceTypeDelegate.java b/org.aspectj.matcher/src/main/java/org/aspectj/weaver/reflect/ReflectionBasedReferenceTypeDelegate.java
index 39f989a69..e9e48e910 100644
--- a/org.aspectj.matcher/src/main/java/org/aspectj/weaver/reflect/ReflectionBasedReferenceTypeDelegate.java
+++ b/org.aspectj.matcher/src/main/java/org/aspectj/weaver/reflect/ReflectionBasedReferenceTypeDelegate.java
@@ -212,7 +212,7 @@ public class ReflectionBasedReferenceTypeDelegate implements ReferenceTypeDelega
*/
public ResolvedType[] getAnnotationTypes() {
// no annotations in Java 1.4
- return new ResolvedType[0];
+ return ResolvedType.EMPTY_RESOLVED_TYPE_ARRAY;
}
/*
@@ -281,7 +281,7 @@ public class ReflectionBasedReferenceTypeDelegate implements ReferenceTypeDelega
* @see org.aspectj.weaver.ReferenceTypeDelegate#getDeclaredPointcuts()
*/
public ResolvedMember[] getDeclaredPointcuts() {
- return new ResolvedMember[0];
+ return ResolvedMember.NONE;
}
/*
@@ -291,7 +291,7 @@ public class ReflectionBasedReferenceTypeDelegate implements ReferenceTypeDelega
*/
public TypeVariable[] getTypeVariables() {
// no type variables in Java 1.4
- return new TypeVariable[0];
+ return TypeVariable.NONE;
}
/*
diff --git a/org.aspectj.matcher/src/main/java/org/aspectj/weaver/reflect/ReflectionBasedReferenceTypeDelegateFactory.java b/org.aspectj.matcher/src/main/java/org/aspectj/weaver/reflect/ReflectionBasedReferenceTypeDelegateFactory.java
index 8da8151cf..9e42e7b82 100644
--- a/org.aspectj.matcher/src/main/java/org/aspectj/weaver/reflect/ReflectionBasedReferenceTypeDelegateFactory.java
+++ b/org.aspectj.matcher/src/main/java/org/aspectj/weaver/reflect/ReflectionBasedReferenceTypeDelegateFactory.java
@@ -160,8 +160,8 @@ public class ReflectionBasedReferenceTypeDelegateFactory {
public static ResolvedMember createStaticInitMember(Class forType, World inWorld) {
return new ResolvedMemberImpl(org.aspectj.weaver.Member.STATIC_INITIALIZATION, toResolvedType(forType,
- (IReflectionWorld) inWorld), Modifier.STATIC, UnresolvedType.VOID, "<clinit>", new UnresolvedType[0],
- new UnresolvedType[0]);
+ (IReflectionWorld) inWorld), Modifier.STATIC, UnresolvedType.VOID, "<clinit>", UnresolvedType.NONE,
+ UnresolvedType.NONE);
}
public static ResolvedMember createResolvedConstructor(Constructor aConstructor, World inWorld) {
@@ -181,7 +181,7 @@ public class ReflectionBasedReferenceTypeDelegateFactory {
public static ResolvedMember createResolvedField(Field aField, World inWorld) {
ReflectionBasedResolvedMemberImpl ret = new ReflectionBasedResolvedMemberImpl(org.aspectj.weaver.Member.FIELD,
toResolvedType(aField.getDeclaringClass(), (IReflectionWorld) inWorld), aField.getModifiers(), toResolvedType(
- aField.getType(), (IReflectionWorld) inWorld), aField.getName(), new UnresolvedType[0], aField);
+ aField.getType(), (IReflectionWorld) inWorld), aField.getName(), UnresolvedType.NONE, aField);
if (inWorld instanceof IReflectionWorld) {
ret.setAnnotationFinder(((IReflectionWorld) inWorld).getAnnotationFinder());
}
diff --git a/org.aspectj.matcher/src/main/java/org/aspectj/weaver/reflect/StandardShadow.java b/org.aspectj.matcher/src/main/java/org/aspectj/weaver/reflect/StandardShadow.java
index 59fcb9082..ad584fa35 100644
--- a/org.aspectj.matcher/src/main/java/org/aspectj/weaver/reflect/StandardShadow.java
+++ b/org.aspectj.matcher/src/main/java/org/aspectj/weaver/reflect/StandardShadow.java
@@ -111,7 +111,7 @@ public class StandardShadow extends Shadow {
Kind kind = Shadow.StaticInitialization;
if (clinit == -1) {
Member clinitMember = new ResolvedMemberImpl(org.aspectj.weaver.Member.STATIC_INITIALIZATION, forType, Modifier.STATIC,
- UnresolvedType.VOID, "<clinit>", new UnresolvedType[0], new UnresolvedType[0]);
+ UnresolvedType.VOID, "<clinit>", UnresolvedType.NONE, UnresolvedType.NONE);
return new StandardShadow(inWorld, kind, clinitMember, null, forType, null, withContext);
} else {
return new StandardShadow(inWorld, kind, members[clinit], null, forType, null, withContext);
diff --git a/util/src/main/java/org/aspectj/util/GenericSignature.java b/util/src/main/java/org/aspectj/util/GenericSignature.java
index e68a78b7e..3ac878771 100644
--- a/util/src/main/java/org/aspectj/util/GenericSignature.java
+++ b/util/src/main/java/org/aspectj/util/GenericSignature.java
@@ -38,7 +38,7 @@ public class GenericSignature {
}
public static class MethodTypeSignature {
- public FormalTypeParameter[] formalTypeParameters = new FormalTypeParameter[0];
+ public FormalTypeParameter[] formalTypeParameters = FormalTypeParameter.NONE;
public TypeSignature[] parameters = new TypeSignature[0];
public TypeSignature returnType;
public FieldTypeSignature[] throwsSignatures = new FieldTypeSignature[0];
diff --git a/util/src/main/java/org/aspectj/util/GenericSignatureParser.java b/util/src/main/java/org/aspectj/util/GenericSignatureParser.java
index 3f1f3d52a..b6fbe4b4b 100644
--- a/util/src/main/java/org/aspectj/util/GenericSignatureParser.java
+++ b/util/src/main/java/org/aspectj/util/GenericSignatureParser.java
@@ -71,7 +71,7 @@ public class GenericSignatureParser {
this.inputString = sig;
tokenStream = tokenize(sig);
tokenIndex = 0;
- FormalTypeParameter[] formals = new FormalTypeParameter[0];
+ FormalTypeParameter[] formals = FormalTypeParameter.NONE;
TypeSignature returnType = null;
// FormalTypeParameters-opt
if (maybeEat("<")) {
diff --git a/weaver/src/main/java/org/aspectj/weaver/bcel/AtAjAttributes.java b/weaver/src/main/java/org/aspectj/weaver/bcel/AtAjAttributes.java
index 58af6d64f..77b3aa47a 100644
--- a/weaver/src/main/java/org/aspectj/weaver/bcel/AtAjAttributes.java
+++ b/weaver/src/main/java/org/aspectj/weaver/bcel/AtAjAttributes.java
@@ -558,7 +558,7 @@ public class AtAjAttributes {
// struct.ajAttributes.add(new AjAttribute.WeaverVersionInfo());
AjAttribute.Aspect aspectAttribute = new AjAttribute.Aspect(perClause);
struct.ajAttributes.add(aspectAttribute);
- FormalBinding[] bindings = new org.aspectj.weaver.patterns.FormalBinding[0];
+ FormalBinding[] bindings = FormalBinding.NONE;
final IScope binding;
binding = new BindingScope(struct.enclosingType, struct.context, bindings);
@@ -717,7 +717,7 @@ public class AtAjAttributes {
}
if (fieldType.isInterface()) {
TypePattern parent = parseTypePattern(fieldType.getName(), struct);
- FormalBinding[] bindings = new org.aspectj.weaver.patterns.FormalBinding[0];
+ FormalBinding[] bindings = FormalBinding.NONE;
IScope binding = new BindingScope(struct.enclosingType, struct.context, bindings);
// first add the declare implements like
List<TypePattern> parents = new ArrayList<>(1);
@@ -970,7 +970,7 @@ public class AtAjAttributes {
}
// Create the declare parents that will add the interfaces to matching targets
- FormalBinding[] bindings = new org.aspectj.weaver.patterns.FormalBinding[0];
+ FormalBinding[] bindings = FormalBinding.NONE;
IScope binding = new BindingScope(struct.enclosingType, struct.context, bindings);
// how do we mark this as a decp due to decmixin?
DeclareParents dp = new DeclareParentsMixin(targetTypePattern, newParents);
@@ -990,7 +990,7 @@ public class AtAjAttributes {
// TODO check for overlapping interfaces. Eg. A implements I, I extends J - if they specify interfaces={I,J} we dont
// want to do any methods twice
ResolvedMember[] methods = typeForDelegation.getMethodsWithoutIterator(true, false, false).toArray(
- new ResolvedMember[0]);
+ ResolvedMember.NONE);
for (ResolvedMember resolvedMember : methods) {
ResolvedMember method = resolvedMember;
if (method.isAbstract()) {
@@ -1033,7 +1033,7 @@ public class AtAjAttributes {
if (argumentNames != null) {
struct.unparsedArgumentNames = argumentNames;
}
- FormalBinding[] bindings = new org.aspectj.weaver.patterns.FormalBinding[0];
+ FormalBinding[] bindings = FormalBinding.NONE;
try {
bindings = extractBindings(struct);
} catch (UnreadableDebugInfoException unreadableDebugInfoException) {
@@ -1082,7 +1082,7 @@ public class AtAjAttributes {
NameValuePair afterAdvice = getAnnotationElement(after, VALUE);
if (afterAdvice != null) {
// this/target/args binding
- FormalBinding[] bindings = new org.aspectj.weaver.patterns.FormalBinding[0];
+ FormalBinding[] bindings = FormalBinding.NONE;
String argumentNames = getArgNamesValue(after);
if (argumentNames != null) {
struct.unparsedArgumentNames = argumentNames;
@@ -1172,7 +1172,7 @@ public class AtAjAttributes {
// this/target/args binding
// exclude the return binding from the pointcut binding since it is
// an extraArg binding
- FormalBinding[] bindings = new org.aspectj.weaver.patterns.FormalBinding[0];
+ FormalBinding[] bindings = FormalBinding.NONE;
try {
bindings = (returned == null ? extractBindings(struct) : extractBindings(struct, returned));
} catch (UnreadableDebugInfoException unreadableDebugInfoException) {
@@ -1262,7 +1262,7 @@ public class AtAjAttributes {
// this/target/args binding
// exclude the throwned binding from the pointcut binding since it
// is an extraArg binding
- FormalBinding[] bindings = new org.aspectj.weaver.patterns.FormalBinding[0];
+ FormalBinding[] bindings = FormalBinding.NONE;
try {
bindings = (thrownFormal == null ? extractBindings(struct) : extractBindings(struct, thrownFormal));
} catch (UnreadableDebugInfoException unreadableDebugInfoException) {
@@ -1317,7 +1317,7 @@ public class AtAjAttributes {
if (argumentNames != null) {
struct.unparsedArgumentNames = argumentNames;
}
- FormalBinding[] bindings = new org.aspectj.weaver.patterns.FormalBinding[0];
+ FormalBinding[] bindings = FormalBinding.NONE;
try {
bindings = extractBindings(struct);
} catch (UnreadableDebugInfoException unreadableDebugInfoException) {
@@ -1579,7 +1579,7 @@ public class AtAjAttributes {
}
}
- return bindings.toArray(new FormalBinding[] {});
+ return bindings.toArray(FormalBinding.NONE);
}
// FIXME alex deal with exclude index
diff --git a/weaver/src/main/java/org/aspectj/weaver/bcel/BcelCflowCounterFieldAdder.java b/weaver/src/main/java/org/aspectj/weaver/bcel/BcelCflowCounterFieldAdder.java
index 586147827..3e50444d4 100644
--- a/weaver/src/main/java/org/aspectj/weaver/bcel/BcelCflowCounterFieldAdder.java
+++ b/weaver/src/main/java/org/aspectj/weaver/bcel/BcelCflowCounterFieldAdder.java
@@ -56,7 +56,7 @@ public class BcelCflowCounterFieldAdder extends BcelTypeMunger {
setup.append(fact.createNew(new ObjectType(NameMangler.CFLOW_COUNTER_TYPE)));
setup.append(InstructionFactory.createDup(1));
- setup.append(fact.createInvoke(NameMangler.CFLOW_COUNTER_TYPE, "<init>", Type.VOID, new Type[0], Constants.INVOKESPECIAL));
+ setup.append(fact.createInvoke(NameMangler.CFLOW_COUNTER_TYPE, "<init>", Type.VOID, Type.NO_ARGS, Constants.INVOKESPECIAL));
setup.append(Utility.createSet(fact, cflowCounterField));
clinit.getBody().insert(setup);
diff --git a/weaver/src/main/java/org/aspectj/weaver/bcel/BcelClassWeaver.java b/weaver/src/main/java/org/aspectj/weaver/bcel/BcelClassWeaver.java
index 3ffe74773..42679304b 100644
--- a/weaver/src/main/java/org/aspectj/weaver/bcel/BcelClassWeaver.java
+++ b/weaver/src/main/java/org/aspectj/weaver/bcel/BcelClassWeaver.java
@@ -1946,7 +1946,7 @@ class BcelClassWeaver implements IClassWeaver {
catchBlockForLiteralLoadingFail.append(InstructionFactory.createDup_1(1));
catchBlockForLiteralLoadingFail.append(InstructionFactory.SWAP);
catchBlockForLiteralLoadingFail.append(fact.createInvoke("java.lang.Throwable", "getMessage",
- Type.getType(String.class), new Type[] {}, Constants.INVOKEVIRTUAL));
+ Type.getType(String.class), Type.NO_ARGS, Constants.INVOKEVIRTUAL));
catchBlockForLiteralLoadingFail.append(fact.createInvoke("java.lang.NoClassDefFoundError", "<init>", Type.VOID,
new Type[] { Type.getType(String.class) }, Constants.INVOKESPECIAL));
catchBlockForLiteralLoadingFail.append(InstructionFactory.ATHROW);
diff --git a/weaver/src/main/java/org/aspectj/weaver/bcel/BcelField.java b/weaver/src/main/java/org/aspectj/weaver/bcel/BcelField.java
index 4428fdf42..37876a3cb 100644
--- a/weaver/src/main/java/org/aspectj/weaver/bcel/BcelField.java
+++ b/weaver/src/main/java/org/aspectj/weaver/bcel/BcelField.java
@@ -273,7 +273,7 @@ final class BcelField extends ResolvedMemberImpl {
GenericSignature.ClassSignature genericTypeSig = bcelObjectType.getGenericClassTypeSignature();
GenericSignature.FormalTypeParameter[] parentFormals = bcelObjectType.getAllFormals();
- GenericSignature.FormalTypeParameter[] typeVars = ((genericTypeSig == null) ? new GenericSignature.FormalTypeParameter[0]
+ GenericSignature.FormalTypeParameter[] typeVars = ((genericTypeSig == null) ? GenericSignature.FormalTypeParameter.NONE
: genericTypeSig.formalTypeParameters);
GenericSignature.FormalTypeParameter[] formals = new GenericSignature.FormalTypeParameter[parentFormals.length
+ typeVars.length];
diff --git a/weaver/src/main/java/org/aspectj/weaver/bcel/BcelMethod.java b/weaver/src/main/java/org/aspectj/weaver/bcel/BcelMethod.java
index abf1b3c1a..882548cbe 100644
--- a/weaver/src/main/java/org/aspectj/weaver/bcel/BcelMethod.java
+++ b/weaver/src/main/java/org/aspectj/weaver/bcel/BcelMethod.java
@@ -423,15 +423,13 @@ class BcelMethod extends ResolvedMemberImpl {
bitflags |= HAS_ANNOTATIONS;
}
- public static final AnnotationAJ[] NO_PARAMETER_ANNOTATIONS = new AnnotationAJ[] {};
-
public void addParameterAnnotation(int param, AnnotationAJ anno) {
ensureParameterAnnotationsRetrieved();
if (parameterAnnotations == NO_PARAMETER_ANNOTATIONXS) {
// First time we've added any, so lets set up the array
parameterAnnotations = new AnnotationAJ[getArity()][];
for (int i = 0; i < getArity(); i++) {
- parameterAnnotations[i] = NO_PARAMETER_ANNOTATIONS;
+ parameterAnnotations[i] = AnnotationAJ.EMPTY_ARRAY;
}
}
int existingCount = parameterAnnotations[param].length;
diff --git a/weaver/src/main/java/org/aspectj/weaver/bcel/BcelObjectType.java b/weaver/src/main/java/org/aspectj/weaver/bcel/BcelObjectType.java
index d1c4a9f42..7d471a6b6 100644
--- a/weaver/src/main/java/org/aspectj/weaver/bcel/BcelObjectType.java
+++ b/weaver/src/main/java/org/aspectj/weaver/bcel/BcelObjectType.java
@@ -398,7 +398,7 @@ public class BcelObjectType extends AbstractReferenceTypeDelegate {
if (pointcuts.size() == 0) {
this.pointcuts = ResolvedPointcutDefinition.NO_POINTCUTS;
} else {
- this.pointcuts = pointcuts.toArray(new ResolvedPointcutDefinition[0]);
+ this.pointcuts = pointcuts.toArray(ResolvedPointcutDefinition.NO_POINTCUTS);
}
resolveAnnotationDeclares(l);
@@ -459,7 +459,7 @@ public class BcelObjectType extends AbstractReferenceTypeDelegate {
* until *after* the pointcuts have been resolved.
*/
private void resolveAnnotationDeclares(List<AjAttribute> attributeList) {
- FormalBinding[] bindings = new org.aspectj.weaver.patterns.FormalBinding[0];
+ FormalBinding[] bindings = FormalBinding.NONE;
IScope bindingScope = new BindingScope(getResolvedTypeX(), getResolvedTypeX().getSourceContext(), bindings);
for (AjAttribute a : attributeList) {
if (a instanceof AjAttribute.DeclareAttribute) {
@@ -836,7 +836,7 @@ public class BcelObjectType extends AbstractReferenceTypeDelegate {
public GenericSignature.FormalTypeParameter[] getAllFormals() {
ensureGenericSignatureUnpacked();
if (formalsForResolution == null) {
- return new GenericSignature.FormalTypeParameter[0];
+ return FormalTypeParameter.NONE;
} else {
return formalsForResolution;
}
diff --git a/weaver/src/main/java/org/aspectj/weaver/bcel/BcelShadow.java b/weaver/src/main/java/org/aspectj/weaver/bcel/BcelShadow.java
index 4d2e2bc88..9640fe118 100644
--- a/weaver/src/main/java/org/aspectj/weaver/bcel/BcelShadow.java
+++ b/weaver/src/main/java/org/aspectj/weaver/bcel/BcelShadow.java
@@ -2047,7 +2047,7 @@ public class BcelShadow extends Shadow {
if (isPer) {
entrySuccessInstructions.append(fact.createInvoke(munger.getConcreteAspect().getName(),
- NameMangler.PERCFLOW_PUSH_METHOD, Type.VOID, new Type[] {}, Constants.INVOKESTATIC));
+ NameMangler.PERCFLOW_PUSH_METHOD, Type.VOID, Type.NO_ARGS, Constants.INVOKESTATIC));
} else {
BcelVar[] cflowStateVars = munger.getExposedStateAsBcelVars(false);
@@ -2059,7 +2059,7 @@ public class BcelShadow extends Shadow {
entrySuccessInstructions.append(Utility.createGet(fact, cflowField));
// arrayVar.appendLoad(entrySuccessInstructions, fact);
entrySuccessInstructions.append(fact.createInvoke(NameMangler.CFLOW_COUNTER_TYPE, "inc", Type.VOID,
- new Type[] {}, Constants.INVOKEVIRTUAL));
+ Type.NO_ARGS, Constants.INVOKEVIRTUAL));
} else {
BcelVar arrayVar = genTempVar(UnresolvedType.OBJECTARRAY);
@@ -2097,10 +2097,10 @@ public class BcelShadow extends Shadow {
exitInstructions.append(Utility.createGet(fact, cflowField));
if (munger.getKind() != AdviceKind.PerCflowEntry && munger.getKind() != AdviceKind.PerCflowBelowEntry
&& munger.getExposedStateAsBcelVars(false).length == 0) {
- exitInstructions.append(fact.createInvoke(NameMangler.CFLOW_COUNTER_TYPE, "dec", Type.VOID, new Type[] {},
+ exitInstructions.append(fact.createInvoke(NameMangler.CFLOW_COUNTER_TYPE, "dec", Type.VOID, Type.NO_ARGS,
Constants.INVOKEVIRTUAL));
} else {
- exitInstructions.append(fact.createInvoke(NameMangler.CFLOW_STACK_TYPE, "pop", Type.VOID, new Type[] {},
+ exitInstructions.append(fact.createInvoke(NameMangler.CFLOW_STACK_TYPE, "pop", Type.VOID, Type.NO_ARGS,
Constants.INVOKEVIRTUAL));
}
return exitInstructions;
diff --git a/weaver/src/main/java/org/aspectj/weaver/bcel/BcelTypeMunger.java b/weaver/src/main/java/org/aspectj/weaver/bcel/BcelTypeMunger.java
index fc2a2451a..9e56d9e88 100644
--- a/weaver/src/main/java/org/aspectj/weaver/bcel/BcelTypeMunger.java
+++ b/weaver/src/main/java/org/aspectj/weaver/bcel/BcelTypeMunger.java
@@ -783,7 +783,7 @@ public class BcelTypeMunger extends ConcreteTypeMunger {
Type fieldType = BcelWorld.makeBcelType(aspectType);
LazyMethodGen mg = new LazyMethodGen(Modifier.PUBLIC, fieldType, NameMangler.perObjectInterfaceGet(aspectType),
- new Type[0], new String[0], gen);
+ Type.NO_ARGS, new String[0], gen);
InstructionList il = new InstructionList();
InstructionFactory fact = gen.getFactory();
il.append(InstructionConstants.ALOAD_0);
@@ -832,7 +832,7 @@ public class BcelTypeMunger extends ConcreteTypeMunger {
// "public com_blah_SecurityAspect ajc$com_blah_SecurityAspect$localAspectOf()"
Type fieldType = BcelWorld.makeBcelType(aspectType);
LazyMethodGen mg = new LazyMethodGen(Modifier.PUBLIC | Modifier.STATIC, fieldType,
- NameMangler.perTypeWithinLocalAspectOf(aspectType), new Type[0], new String[0], gen);
+ NameMangler.perTypeWithinLocalAspectOf(aspectType), Type.NO_ARGS, new String[0], gen);
InstructionList il = new InstructionList();
// PTWIMPL ?? Should check if it is null and throw
// NoAspectBoundException
diff --git a/weaver/src/main/java/org/aspectj/weaver/bcel/LazyClassGen.java b/weaver/src/main/java/org/aspectj/weaver/bcel/LazyClassGen.java
index 4a0ed1358..90a8dadb2 100644
--- a/weaver/src/main/java/org/aspectj/weaver/bcel/LazyClassGen.java
+++ b/weaver/src/main/java/org/aspectj/weaver/bcel/LazyClassGen.java
@@ -990,7 +990,7 @@ public final class LazyClassGen {
return gen;
}
}
- LazyMethodGen clinit = new LazyMethodGen(Modifier.STATIC, Type.VOID, "<clinit>", new Type[0], NO_STRINGS, this);
+ LazyMethodGen clinit = new LazyMethodGen(Modifier.STATIC, Type.VOID, "<clinit>", Type.NO_ARGS, NO_STRINGS, this);
clinit.getBody().insert(InstructionConstants.RETURN);
methodGens.add(clinit);
return clinit;
diff --git a/weaver/src/main/java/org/aspectj/weaver/bcel/LazyMethodGen.java b/weaver/src/main/java/org/aspectj/weaver/bcel/LazyMethodGen.java
index 022345d40..fb8cf52a9 100644
--- a/weaver/src/main/java/org/aspectj/weaver/bcel/LazyMethodGen.java
+++ b/weaver/src/main/java/org/aspectj/weaver/bcel/LazyMethodGen.java
@@ -78,8 +78,6 @@ import org.aspectj.weaver.tools.Traceable;
*/
public final class LazyMethodGen implements Traceable {
- private static final AnnotationAJ[] NO_ANNOTATIONAJ = new AnnotationAJ[] {};
-
private int modifiers;
private Type returnType;
private final String name;
@@ -305,7 +303,7 @@ public final class LazyMethodGen implements Traceable {
newParameterAnnotations[i] = new AnnotationAJ[1];
newParameterAnnotations[i][0] = anno;
} else {
- newParameterAnnotations[i] = NO_ANNOTATIONAJ;
+ newParameterAnnotations[i] = AnnotationAJ.EMPTY_ARRAY;
}
}
} else {
@@ -336,7 +334,7 @@ public final class LazyMethodGen implements Traceable {
public AnnotationAJ[] getAnnotations() {
initialize();
if (memberView == null && newAnnotations!=null && newAnnotations.size()!=0) {
- return newAnnotations.toArray(new AnnotationAJ[0]);
+ return newAnnotations.toArray(AnnotationAJ.EMPTY_ARRAY);
}
return null;
}
@@ -618,7 +616,7 @@ public final class LazyMethodGen implements Traceable {
if (enclosingClass != null && enclosingClass.getType() != null) {
context = enclosingClass.getType().getSourceContext();
}
- List<AjAttribute> as = Utility.readAjAttributes(getClassName(), attributes.toArray(new Attribute[] {}), context, null, weaverVersion,
+ List<AjAttribute> as = Utility.readAjAttributes(getClassName(), attributes.toArray(Attribute.NoAttributes), context, null, weaverVersion,
new BcelConstantPoolReader(this.enclosingClass.getConstantPool()));
if (!as.isEmpty()) {
out.println(" " + as.get(0)); // XXX assuming exactly one
diff --git a/weaver/src/main/java/org/aspectj/weaver/bcel/TypeAnnotationAccessVar.java b/weaver/src/main/java/org/aspectj/weaver/bcel/TypeAnnotationAccessVar.java
index d982fd4b4..6fee85141 100644
--- a/weaver/src/main/java/org/aspectj/weaver/bcel/TypeAnnotationAccessVar.java
+++ b/weaver/src/main/java/org/aspectj/weaver/bcel/TypeAnnotationAccessVar.java
@@ -59,7 +59,7 @@ public class TypeAnnotationAccessVar extends BcelVar {
Type jlClass = BcelWorld.makeBcelType(UnresolvedType.JL_CLASS);
Type jlaAnnotation = BcelWorld.makeBcelType(UnresolvedType.ANNOTATION);
il.append(target.createLoad(fact));
- il.append(fact.createInvoke("java/lang/Object", "getClass", jlClass, new Type[] {}, Constants.INVOKEVIRTUAL));
+ il.append(fact.createInvoke("java/lang/Object", "getClass", jlClass, Type.NO_ARGS, Constants.INVOKEVIRTUAL));
il.append(fact.createConstant(new ObjectType(toType.getName())));
il.append(fact.createInvoke("java/lang/Class", "getAnnotation", jlaAnnotation, new Type[] { jlClass },
Constants.INVOKEVIRTUAL));
diff --git a/weaver/src/main/java/org/aspectj/weaver/reflect/Java15AnnotationFinder.java b/weaver/src/main/java/org/aspectj/weaver/reflect/Java15AnnotationFinder.java
index 6cfc4fb77..dfddd18da 100644
--- a/weaver/src/main/java/org/aspectj/weaver/reflect/Java15AnnotationFinder.java
+++ b/weaver/src/main/java/org/aspectj/weaver/reflect/Java15AnnotationFinder.java
@@ -20,6 +20,7 @@ import org.aspectj.apache.bcel.classfile.Attribute;
import org.aspectj.apache.bcel.classfile.JavaClass;
import org.aspectj.apache.bcel.classfile.LocalVariable;
import org.aspectj.apache.bcel.classfile.LocalVariableTable;
+import org.aspectj.apache.bcel.classfile.annotation.AnnotationGen;
import org.aspectj.apache.bcel.util.ClassLoaderRepository;
import org.aspectj.apache.bcel.util.NonCachingClassLoaderRepository;
import org.aspectj.apache.bcel.util.Repository;
@@ -124,7 +125,7 @@ public class Java15AnnotationFinder implements AnnotationFinder, ArgNameFinder {
// memory.
try {
JavaClass jc = bcelRepository.loadClass(onMember.getDeclaringClass());
- org.aspectj.apache.bcel.classfile.annotation.AnnotationGen[] anns = new org.aspectj.apache.bcel.classfile.annotation.AnnotationGen[0];
+ org.aspectj.apache.bcel.classfile.annotation.AnnotationGen[] anns = AnnotationGen.NO_ANNOTATIONS;
if (onMember instanceof Method) {
org.aspectj.apache.bcel.classfile.Method bcelMethod = jc.getMethod((Method) onMember);
if (bcelMethod == null) {
@@ -147,7 +148,7 @@ public class Java15AnnotationFinder implements AnnotationFinder, ArgNameFinder {
bcelRepository.clear();
// OPTIMIZE make constant 0 size array for sharing
if (anns == null)
- anns = new org.aspectj.apache.bcel.classfile.annotation.AnnotationGen[0];
+ anns = AnnotationGen.NO_ANNOTATIONS;
// convert to our Annotation type
for (org.aspectj.apache.bcel.classfile.annotation.AnnotationGen ann : anns) {
if (ann.getTypeSignature().equals(ofType.getSignature())) {
diff --git a/weaver/src/main/java/org/aspectj/weaver/reflect/Java15ReflectionBasedReferenceTypeDelegate.java b/weaver/src/main/java/org/aspectj/weaver/reflect/Java15ReflectionBasedReferenceTypeDelegate.java
index 2fccd1dd7..a9527b6f7 100644
--- a/weaver/src/main/java/org/aspectj/weaver/reflect/Java15ReflectionBasedReferenceTypeDelegate.java
+++ b/weaver/src/main/java/org/aspectj/weaver/reflect/Java15ReflectionBasedReferenceTypeDelegate.java
@@ -250,7 +250,7 @@ public class Java15ReflectionBasedReferenceTypeDelegate extends ReflectionBasedR
private ResolvedMember createGenericFieldMember(Field forField) {
ReflectionBasedResolvedMemberImpl ret = new ReflectionBasedResolvedMemberImpl(org.aspectj.weaver.Member.FIELD,
getGenericResolvedType(), forField.getModifiers(), typeConverter.fromType(forField.getType()), forField.getName(),
- new UnresolvedType[0], forField);
+ UnresolvedType.NONE, forField);
ret.setAnnotationFinder(this.annotationFinder);
ret.setGenericSignatureInformationProvider(new Java15GenericSignatureInformationProvider(this.getWorld()));
return ret;
diff --git a/weaver/src/main/java/org/aspectj/weaver/reflect/JavaLangTypeToResolvedTypeConverter.java b/weaver/src/main/java/org/aspectj/weaver/reflect/JavaLangTypeToResolvedTypeConverter.java
index 799dbdfdc..caf984821 100644
--- a/weaver/src/main/java/org/aspectj/weaver/reflect/JavaLangTypeToResolvedTypeConverter.java
+++ b/weaver/src/main/java/org/aspectj/weaver/reflect/JavaLangTypeToResolvedTypeConverter.java
@@ -94,7 +94,7 @@ public class JavaLangTypeToResolvedTypeConverter {
Type[] bounds = tv.getBounds();
ResolvedType[] resBounds = fromTypes(bounds);
ResolvedType upperBound = resBounds[0];
- ResolvedType[] additionalBounds = new ResolvedType[0];
+ ResolvedType[] additionalBounds = ResolvedType.EMPTY_RESOLVED_TYPE_ARRAY;
if (resBounds.length > 1) {
additionalBounds = new ResolvedType[resBounds.length - 1];
System.arraycopy(resBounds, 1, additionalBounds, 0, additionalBounds.length);