From 13050957b1ceba3ddcfe7a87bf5e9e03777aa3ac Mon Sep 17 00:00:00 2001 From: jhugunin Date: Tue, 31 Dec 2002 19:11:48 +0000 Subject: [PATCH] added information about proceed to around advice attribute --- .../compiler/ast/AdviceDeclaration.java | 25 +++- .../compiler/lookup/EclipseAdvice.java | 9 +- .../compiler/lookup/EclipseWorld.java | 9 +- weaver/src/org/aspectj/weaver/Advice.java | 43 ++++--- .../src/org/aspectj/weaver/AjAttribute.java | 118 ++++++++++++++---- weaver/src/org/aspectj/weaver/IntMap.java | 2 +- .../org/aspectj/weaver/ResolvedMember.java | 21 +++- .../weaver/ResolvedPointcutDefinition.java | 2 +- weaver/src/org/aspectj/weaver/TypeX.java | 2 +- weaver/src/org/aspectj/weaver/World.java | 15 ++- .../org/aspectj/weaver/bcel/BcelAdvice.java | 31 +++-- .../org/aspectj/weaver/bcel/BcelWorld.java | 12 +- .../weaver/patterns/CflowPointcut.java | 2 +- .../weaver/patterns/WildTypePattern.java | 4 +- .../weaver/patterns/WithinPointcut.java | 4 + weaver/testdata/dummyAspect.jar | Bin 589 -> 589 bytes weaver/testdata/megatrace.jar | Bin 4858 -> 4895 bytes weaver/testdata/megatraceNoweave.jar | Bin 2649 -> 2696 bytes weaver/testdata/tracing.jar | Bin 2213 -> 2268 bytes .../weaver/bcel/PointcutResidueTestCase.java | 4 +- 20 files changed, 213 insertions(+), 90 deletions(-) diff --git a/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/ast/AdviceDeclaration.java b/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/ast/AdviceDeclaration.java index 65bf5c352..15e28461f 100644 --- a/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/ast/AdviceDeclaration.java +++ b/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/ast/AdviceDeclaration.java @@ -43,11 +43,16 @@ public class AdviceDeclaration extends MethodDeclaration { public Argument extraArgument; public AdviceKind kind; - private int extraArgumentFlags = 0; public MethodBinding proceedMethodBinding; + public boolean proceedInInners; + public ResolvedMember[] proceedCallSignatures; + public boolean[] formalsUnchangedToProceed; + public TypeX[] declaredExceptions; + + public AdviceDeclaration(CompilationResult result, AdviceKind kind) { super(result); this.returnType = TypeReference.baseTypeReference(T_void, 0); @@ -63,8 +68,15 @@ public class AdviceDeclaration extends MethodDeclaration { } public AjAttribute makeAttribute() { - return new AjAttribute.AdviceAttribute(kind, pointcutDesignator.getPointcut(), - extraArgumentFlags, sourceStart, sourceEnd, null); + if (kind == AdviceKind.Around) { + return new AjAttribute.AdviceAttribute(kind, pointcutDesignator.getPointcut(), + extraArgumentFlags, sourceStart, sourceEnd, null, + proceedInInners, proceedCallSignatures, formalsUnchangedToProceed, + declaredExceptions); + } else { + return new AjAttribute.AdviceAttribute(kind, pointcutDesignator.getPointcut(), + extraArgumentFlags, sourceStart, sourceEnd, null); + } } public void resolveStatements(ClassScope upperScope) { @@ -88,6 +100,13 @@ public class AdviceDeclaration extends MethodDeclaration { if (kind == AdviceKind.Around && binding != null) { + //XXX set these correctly + proceedInInners = false; + proceedCallSignatures = new ResolvedMember[0]; + formalsUnchangedToProceed = new boolean[baseArgumentCount]; + declaredExceptions = new TypeX[0]; + + ReferenceBinding[] exceptions = new ReferenceBinding[] { upperScope.getJavaLangThrowable() }; proceedMethodBinding = new MethodBinding(Modifier.STATIC, diff --git a/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/lookup/EclipseAdvice.java b/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/lookup/EclipseAdvice.java index 41cab4c62..f2d750031 100644 --- a/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/lookup/EclipseAdvice.java +++ b/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/lookup/EclipseAdvice.java @@ -19,14 +19,9 @@ import org.aspectj.weaver.patterns.Pointcut; public class EclipseAdvice extends Advice { - public EclipseAdvice( - AdviceKind kind, - Pointcut pointcut, - Member signature, - int extraParameterFlags, - int start, int end, ISourceContext context) { + public EclipseAdvice(AjAttribute.AdviceAttribute attribute, Pointcut pointcut, Member signature) { - super(kind, pointcut, signature, extraParameterFlags, start, end, context); + super(attribute, pointcut, signature); } diff --git a/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/lookup/EclipseWorld.java b/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/lookup/EclipseWorld.java index 272127064..c5ebf3dee 100644 --- a/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/lookup/EclipseWorld.java +++ b/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/lookup/EclipseWorld.java @@ -50,10 +50,13 @@ public class EclipseWorld extends World { setMessageHandler(handler); } - public Advice concreteAdvice(AdviceKind kind, Pointcut p, Member m, int extraMods, - int start, int end, ISourceContext context) + public Advice concreteAdvice( + AjAttribute.AdviceAttribute attribute, + Pointcut pointcut, + Member signature) { - return new EclipseAdvice(kind, p, m, extraMods, start, end, context); + //System.err.println("concrete advice: " + signature + " context " + sourceContext); + return new EclipseAdvice(attribute, pointcut, signature); } public ConcreteTypeMunger concreteTypeMunger( diff --git a/weaver/src/org/aspectj/weaver/Advice.java b/weaver/src/org/aspectj/weaver/Advice.java index e903b6c42..b6714333f 100644 --- a/weaver/src/org/aspectj/weaver/Advice.java +++ b/weaver/src/org/aspectj/weaver/Advice.java @@ -21,10 +21,10 @@ import org.aspectj.weaver.patterns.*; public abstract class Advice extends ShadowMunger { - protected AdviceKind kind; + AjAttribute.AdviceAttribute attribute; // the pointcut field is ignored + + protected AdviceKind kind; // alias of attribute.getKind() protected Member signature; - protected int extraParameterFlags; - protected int lexicalPosition; // not necessarily declaring aspect, this is a semantics change from 1.0 protected ResolvedTypeX concreteAspect; // null until after concretize @@ -73,14 +73,12 @@ public abstract class Advice extends ShadowMunger { } - public Advice(AdviceKind kind, Pointcut pointcut, Member signature, - int extraParameterFlags, int start, int end, ISourceContext sourceContext) + public Advice(AjAttribute.AdviceAttribute attribute, Pointcut pointcut, Member signature) { - super(pointcut, start, end, sourceContext); - this.kind = kind; + super(pointcut, attribute.getStart(), attribute.getEnd(), attribute.getSourceContext()); + this.attribute = attribute; + this.kind = attribute.getKind(); // alias this.signature = signature; - this.extraParameterFlags = extraParameterFlags; - this.lexicalPosition = start; //XXX should go away } @@ -143,11 +141,15 @@ public abstract class Advice extends ShadowMunger { } public boolean hasExtraParameter() { - return (extraParameterFlags & ExtraArgument) != 0; + return (getExtraParameterFlags() & ExtraArgument) != 0; + } + + protected int getExtraParameterFlags() { + return attribute.getExtraParameterFlags(); } protected int getExtraParameterCount() { - return countOnes(extraParameterFlags & ParameterMask); + return countOnes(getExtraParameterFlags() & ParameterMask); } public static int countOnes(int bits) { @@ -160,7 +162,7 @@ public abstract class Advice extends ShadowMunger { } public int getBaseParameterCount() { - return signature.getParameterTypes().length - getExtraParameterCount(); + return getSignature().getParameterTypes().length - getExtraParameterCount(); } public TypeX getExtraParameterType() { @@ -173,10 +175,10 @@ public abstract class Advice extends ShadowMunger { } protected String extraParametersToString() { - if (extraParameterFlags == 0) { + if (getExtraParameterFlags() == 0) { return ""; } else { - return "(extraFlags: " + extraParameterFlags + ")"; + return "(extraFlags: " + getExtraParameterFlags() + ")"; } } @@ -197,7 +199,7 @@ public abstract class Advice extends ShadowMunger { p.state = Pointcut.CONCRETE; } - Advice munger = world.concreteAdvice(kind, p, signature, extraParameterFlags, start, end, sourceContext); + Advice munger = world.concreteAdvice(attribute, p, signature); munger.concreteAspect = fromType; //System.err.println("concretizing here " + p + " with clause " + clause); return munger; @@ -218,8 +220,9 @@ public abstract class Advice extends ShadowMunger { public boolean equals(Object other) { if (! (other instanceof Advice)) return false; Advice o = (Advice) other; - return o.kind == kind && o.pointcut.equals(pointcut) && o.signature.equals(signature) && - o.extraParameterFlags == extraParameterFlags; + return o.attribute.equals(attribute) + && o.pointcut.equals(pointcut) + && o.signature.equals(signature); } private volatile int hashCode = 0; public int hashCode() { @@ -243,9 +246,11 @@ public abstract class Advice extends ShadowMunger { public static final int ParameterMask = 0xf; public static final int CanInline = 0x40; - + + + // for testing only public void setLexicalPosition(int lexicalPosition) { - this.lexicalPosition = lexicalPosition; + start = lexicalPosition; } public ResolvedTypeX getConcreteAspect() { diff --git a/weaver/src/org/aspectj/weaver/AjAttribute.java b/weaver/src/org/aspectj/weaver/AjAttribute.java index 864513371..85e0195a4 100644 --- a/weaver/src/org/aspectj/weaver/AjAttribute.java +++ b/weaver/src/org/aspectj/weaver/AjAttribute.java @@ -185,7 +185,7 @@ public abstract class AjAttribute { } public void write(DataOutputStream s) throws IOException { s.writeUTF(sourceFileName); - FileUtil.writeIntArray(s, lineBreaks); + FileUtil.writeIntArray(lineBreaks, s); } public static SourceContextAttribute read(DataInputStream s) throws IOException { @@ -249,51 +249,101 @@ public abstract class AjAttribute { private AdviceKind kind; private Pointcut pointcut; - private int extraArgumentFlags; + private int extraParameterFlags; private int start; private int end; private ISourceContext sourceContext; + // these are only used by around advice + private boolean proceedInInners; + private ResolvedMember[] proceedCallSignatures; // size == # of proceed calls in body + private boolean[] formalsUnchangedToProceed; // size == formals.size + private TypeX[] declaredExceptions; + /** * @param lexicalPosition must be greater than the lexicalPosition * of any advice declared before this one in an aspect, otherwise, * it can be any value. */ - public AdviceAttribute(AdviceKind kind, Pointcut pointcut, int extraArgumentFlags, int start, int end, ISourceContext sourceContext) { + public AdviceAttribute(AdviceKind kind, Pointcut pointcut, int extraArgumentFlags, + int start, int end, ISourceContext sourceContext) { + this.kind = kind; + this.pointcut = pointcut; + this.extraParameterFlags = extraArgumentFlags; + this.start = start; + this.end = end; + this.sourceContext = sourceContext; + + //XXX put this back when testing works better (or fails better) + //if (kind == AdviceKind.Around) throw new IllegalArgumentException("not for around"); + } + + public AdviceAttribute(AdviceKind kind, Pointcut pointcut, int extraArgumentFlags, + int start, int end, ISourceContext sourceContext, + boolean proceedInInners, ResolvedMember[] proceedCallSignatures, + boolean[] formalsUnchangedToProceed, TypeX[] declaredExceptions) { this.kind = kind; this.pointcut = pointcut; - this.extraArgumentFlags = extraArgumentFlags; + this.extraParameterFlags = extraArgumentFlags; this.start = start; this.end = end; this.sourceContext = sourceContext; + + if (kind != AdviceKind.Around) throw new IllegalArgumentException("only for around"); + + this.proceedInInners = proceedInInners; + this.proceedCallSignatures = proceedCallSignatures; + this.formalsUnchangedToProceed = formalsUnchangedToProceed; + this.declaredExceptions = declaredExceptions; } public static AdviceAttribute read(DataInputStream s, ISourceContext context) throws IOException { - return new AdviceAttribute( - AdviceKind.read(s), - Pointcut.read(s, context), - s.readByte(), - s.readInt(), s.readInt(), context); + AdviceKind kind = AdviceKind.read(s); + if (kind == AdviceKind.Around) { + return new AdviceAttribute( + kind, + Pointcut.read(s, context), + s.readByte(), + s.readInt(), s.readInt(), context, + s.readBoolean(), + ResolvedMember.readResolvedMemberArray(s, context), + FileUtil.readBooleanArray(s), + TypeX.readArray(s)); + } else { + return new AdviceAttribute( + kind, + Pointcut.read(s, context), + s.readByte(), + s.readInt(), s.readInt(), context); + } } public void write(DataOutputStream s) throws IOException { kind.write(s); pointcut.write(s); - s.writeByte(extraArgumentFlags); + s.writeByte(extraParameterFlags); s.writeInt(start); s.writeInt(end); + + if (kind == AdviceKind.Around) { + s.writeBoolean(proceedInInners); + ResolvedMember.writeArray(proceedCallSignatures, s); + FileUtil.writeBooleanArray(formalsUnchangedToProceed, s); + TypeX.writeArray(declaredExceptions, s); + } } + public Advice reify(Member signature, World world) { - return world.concreteAdvice(kind, pointcut, signature, extraArgumentFlags, start, end, sourceContext); + return world.concreteAdvice(this, pointcut, signature); } public String toString() { return "AdviceAttribute(" + kind + ", " + pointcut + ", " + - extraArgumentFlags + ", " + start+")"; + extraParameterFlags + ", " + start+")"; } - public int getExtraArgumentFlags() { - return extraArgumentFlags; + public int getExtraParameterFlags() { + return extraParameterFlags; } public AdviceKind getKind() { @@ -304,6 +354,34 @@ public abstract class AjAttribute { return pointcut; } + public TypeX[] getDeclaredExceptions() { + return declaredExceptions; + } + + public boolean[] getFormalsUnchangedToProceed() { + return formalsUnchangedToProceed; + } + + public ResolvedMember[] getProceedCallSignatures() { + return proceedCallSignatures; + } + + public boolean isProceedInInners() { + return proceedInInners; + } + + public int getEnd() { + return end; + } + + public ISourceContext getSourceContext() { + return sourceContext; + } + + public int getStart() { + return start; + } + } public static class Aspect extends AjAttribute { @@ -339,10 +417,7 @@ public abstract class AjAttribute { this.accessedMembers = accessedMembers; } public void write(DataOutputStream s) throws IOException { - s.writeInt(accessedMembers.length); - for (int i = 0, len = accessedMembers.length; i < len; i++) { - accessedMembers[i].write(s); - } + ResolvedMember.writeArray(accessedMembers, s); } public ResolvedMember[] getAccessedMembers() { @@ -350,12 +425,7 @@ public abstract class AjAttribute { } public static PrivilegedAttribute read(DataInputStream s, ISourceContext context) throws IOException { - int len = s.readInt(); - ResolvedMember[] members = new ResolvedMember[len]; - for (int i=0; i < len; i++) { - members[i] = ResolvedMember.readResolvedMember(s, context); - } - return new PrivilegedAttribute(members); + return new PrivilegedAttribute(ResolvedMember.readResolvedMemberArray(s, context)); } } diff --git a/weaver/src/org/aspectj/weaver/IntMap.java b/weaver/src/org/aspectj/weaver/IntMap.java index 7a12bf0f6..a1b24d382 100644 --- a/weaver/src/org/aspectj/weaver/IntMap.java +++ b/weaver/src/org/aspectj/weaver/IntMap.java @@ -54,7 +54,7 @@ public class IntMap { } public Member getAdviceSignature() { - if (enclosingAdvice instanceof Advice) return ((Advice)enclosingAdvice).signature; + if (enclosingAdvice instanceof Advice) return ((Advice)enclosingAdvice).getSignature(); else return null; } diff --git a/weaver/src/org/aspectj/weaver/ResolvedMember.java b/weaver/src/org/aspectj/weaver/ResolvedMember.java index 4851f9174..6469ee5f2 100644 --- a/weaver/src/org/aspectj/weaver/ResolvedMember.java +++ b/weaver/src/org/aspectj/weaver/ResolvedMember.java @@ -92,12 +92,20 @@ public class ResolvedMember extends Member implements IHasPosition { s.writeInt(modifiers); s.writeUTF(getName()); s.writeUTF(getSignature()); - TypeX.write(getExceptions(), s); + TypeX.writeArray(getExceptions(), s); s.writeInt(getStart()); s.writeInt(getEnd()); } + + public static void writeArray(ResolvedMember[] members, DataOutputStream s) throws IOException { + s.writeInt(members.length); + for (int i = 0, len = members.length; i < len; i++) { + members[i].write(s); + } + } + public static ResolvedMember readResolvedMember(DataInputStream s, ISourceContext sourceContext) throws IOException { ResolvedMember m = new ResolvedMember(Kind.read(s), TypeX.read(s), s.readInt(), s.readUTF(), s.readUTF()); @@ -108,6 +116,17 @@ public class ResolvedMember extends Member implements IHasPosition { return m; } + public static ResolvedMember[] readResolvedMemberArray(DataInputStream s, ISourceContext context) throws IOException { + int len = s.readInt(); + ResolvedMember[] members = new ResolvedMember[len]; + for (int i=0; i < len; i++) { + members[i] = ResolvedMember.readResolvedMember(s, context); + } + return members; + } + + + public ResolvedMember resolve(World world) { return this; } diff --git a/weaver/src/org/aspectj/weaver/ResolvedPointcutDefinition.java b/weaver/src/org/aspectj/weaver/ResolvedPointcutDefinition.java index 5dfc055d8..49cec0f61 100644 --- a/weaver/src/org/aspectj/weaver/ResolvedPointcutDefinition.java +++ b/weaver/src/org/aspectj/weaver/ResolvedPointcutDefinition.java @@ -46,7 +46,7 @@ public class ResolvedPointcutDefinition extends ResolvedMember { getDeclaringType().write(s); s.writeInt(getModifiers()); s.writeUTF(getName()); - TypeX.write(getParameterTypes(), s); + TypeX.writeArray(getParameterTypes(), s); pointcut.write(s); } diff --git a/weaver/src/org/aspectj/weaver/TypeX.java b/weaver/src/org/aspectj/weaver/TypeX.java index 7d5c46fd4..42cc3b09c 100644 --- a/weaver/src/org/aspectj/weaver/TypeX.java +++ b/weaver/src/org/aspectj/weaver/TypeX.java @@ -599,7 +599,7 @@ public class TypeX { } } - public static void write(TypeX[] types, DataOutputStream s) throws IOException { + public static void writeArray(TypeX[] types, DataOutputStream s) throws IOException { int len = types.length; s.writeShort(len); for (int i=0; i < len; i++) { diff --git a/weaver/src/org/aspectj/weaver/World.java b/weaver/src/org/aspectj/weaver/World.java index d31b9e7a4..4ed8abb49 100644 --- a/weaver/src/org/aspectj/weaver/World.java +++ b/weaver/src/org/aspectj/weaver/World.java @@ -177,8 +177,7 @@ public abstract class World { public ResolvedTypeX resolveObjectType(TypeX ty) { return ResolvedTypeX.MISSING; } - public Advice concreteAdvice(AdviceKind kind, Pointcut p, Member m, int extraMods, - int start, int end, ISourceContext context) { + public Advice concreteAdvice(AjAttribute.AdviceAttribute attribute, Pointcut p, Member m) { throw new RuntimeException("unimplemented"); } public ConcreteTypeMunger concreteTypeMunger(ResolvedTypeMunger munger, ResolvedTypeX aspectType) { @@ -188,11 +187,9 @@ public abstract class World { public abstract Advice concreteAdvice( - AdviceKind kind, - Pointcut p, - Member signature, - int extraParameterFlags, - int start, int end, ISourceContext context); + AjAttribute.AdviceAttribute attribute, + Pointcut pointcut, + Member signature); public final Advice concreteAdvice( AdviceKind kind, @@ -201,7 +198,9 @@ public abstract class World { int extraParameterFlags, IHasSourceLocation loc) { - return concreteAdvice(kind, p, signature, extraParameterFlags, loc.getStart(), loc.getEnd(), loc.getSourceContext()); + AjAttribute.AdviceAttribute attribute = + new AjAttribute.AdviceAttribute(kind, p, extraParameterFlags, loc.getStart(), loc.getEnd(), loc.getSourceContext()); + return concreteAdvice(attribute, p, signature); } diff --git a/weaver/src/org/aspectj/weaver/bcel/BcelAdvice.java b/weaver/src/org/aspectj/weaver/bcel/BcelAdvice.java index e6ff472ee..e27102cfa 100644 --- a/weaver/src/org/aspectj/weaver/bcel/BcelAdvice.java +++ b/weaver/src/org/aspectj/weaver/bcel/BcelAdvice.java @@ -28,12 +28,23 @@ public class BcelAdvice extends Advice { private Test pointcutTest; private ExposedState exposedState; + public BcelAdvice( + AjAttribute.AdviceAttribute attribute, + Pointcut pointcut, + Member signature, + ResolvedTypeX concreteAspect) + { + super(attribute, pointcut, signature); + this.concreteAspect = concreteAspect; + } + + // !!! only used for testing public BcelAdvice(AdviceKind kind, Pointcut pointcut, Member signature, int extraArgumentFlags, int start, int end, ISourceContext sourceContext, ResolvedTypeX concreteAspect) { - super(kind, pointcut, signature, extraArgumentFlags, start, end, sourceContext); - this.concreteAspect = concreteAspect; + this(new AjAttribute.AdviceAttribute(kind, pointcut, extraArgumentFlags, start, end, sourceContext), + pointcut, signature, concreteAspect); } // ---- implementations of ShadowMunger's methods @@ -61,15 +72,15 @@ public class BcelAdvice extends Advice { pointcutTest = getPointcut().findResidue(shadow, exposedState); // make sure thisJoinPoint parameters are initialized - if ((extraParameterFlags & ThisJoinPointStaticPart) != 0) { + if ((getExtraParameterFlags() & ThisJoinPointStaticPart) != 0) { ((BcelShadow)shadow).getThisJoinPointStaticPartVar(); } - if ((extraParameterFlags & ThisJoinPoint) != 0) { + if ((getExtraParameterFlags() & ThisJoinPoint) != 0) { ((BcelShadow)shadow).getThisJoinPointVar(); } - if ((extraParameterFlags & ThisEnclosingJoinPointStaticPart) != 0) { + if ((getExtraParameterFlags() & ThisEnclosingJoinPointStaticPart) != 0) { ((BcelShadow)shadow).getThisEnclosingJoinPointStaticPartVar(); } } @@ -214,16 +225,16 @@ public class BcelAdvice extends Advice { // handle thisJoinPoint parameters // these need to be in that same order as parameters in // org.aspectj.ajdt.internal.compiler.ast.AdviceDeclaration - if ((extraParameterFlags & ThisJoinPointStaticPart) != 0) { + if ((getExtraParameterFlags() & ThisJoinPointStaticPart) != 0) { shadow.getThisJoinPointStaticPartBcelVar().appendLoad(il, fact); } - if ((extraParameterFlags & ThisJoinPoint) != 0) { + if ((getExtraParameterFlags() & ThisJoinPoint) != 0) { shadow.getThisJoinPointBcelVar().appendLoad(il, fact); } - if ((extraParameterFlags & ThisEnclosingJoinPointStaticPart) != 0) { + if ((getExtraParameterFlags() & ThisEnclosingJoinPointStaticPart) != 0) { shadow.getThisEnclosingJoinPointStaticPartBcelVar().appendLoad(il, fact); } @@ -289,9 +300,9 @@ public class BcelAdvice extends Advice { if (declaringAspect == o_declaringAspect) { if (kind.isAfter() || o.kind.isAfter()) { - return this.lexicalPosition < o.lexicalPosition ? -1: +1; + return this.getStart() < o.getStart() ? -1: +1; } else { - return this.lexicalPosition < o.lexicalPosition ? +1: -1; + return this.getStart()< o.getStart() ? +1: -1; } } else if (declaringAspect.isAssignableFrom(o_declaringAspect)) { return -1; diff --git a/weaver/src/org/aspectj/weaver/bcel/BcelWorld.java b/weaver/src/org/aspectj/weaver/bcel/BcelWorld.java index 1ff0c4e34..6b6987e16 100644 --- a/weaver/src/org/aspectj/weaver/bcel/BcelWorld.java +++ b/weaver/src/org/aspectj/weaver/bcel/BcelWorld.java @@ -106,7 +106,7 @@ public class BcelWorld extends World { Pointcut p = pointcut.resolve(new SimpleScope(this, bindings)); - return concreteAdvice(kind, p, m, extraFlag, 0, 0, null); + return new BcelAdvice(kind, p, m, extraFlag, 0, 0, null, null); } private String[] parseIds(String str) { @@ -297,14 +297,12 @@ public class BcelWorld extends World { } public Advice concreteAdvice( - AdviceKind kind, - Pointcut p, - Member signature, - int extraParameterFlags, - int start, int end, ISourceContext sourceContext) + AjAttribute.AdviceAttribute attribute, + Pointcut pointcut, + Member signature) { //System.err.println("concrete advice: " + signature + " context " + sourceContext); - return new BcelAdvice(kind, p, signature, extraParameterFlags, start, end, sourceContext, null); + return new BcelAdvice(attribute, pointcut, signature, null); } public ConcreteTypeMunger concreteTypeMunger( diff --git a/weaver/src/org/aspectj/weaver/patterns/CflowPointcut.java b/weaver/src/org/aspectj/weaver/patterns/CflowPointcut.java index 39566938d..7eeb58629 100644 --- a/weaver/src/org/aspectj/weaver/patterns/CflowPointcut.java +++ b/weaver/src/org/aspectj/weaver/patterns/CflowPointcut.java @@ -55,7 +55,7 @@ public class CflowPointcut extends Pointcut { s.writeByte(Pointcut.CFLOW); entry.write(s); s.writeBoolean(isBelow); - FileUtil.writeIntArray(s, freeVars); + FileUtil.writeIntArray(freeVars, s); writeLocation(s); } public static Pointcut read(DataInputStream s, ISourceContext context) throws IOException { diff --git a/weaver/src/org/aspectj/weaver/patterns/WildTypePattern.java b/weaver/src/org/aspectj/weaver/patterns/WildTypePattern.java index c12c0e8dc..4eef87f66 100644 --- a/weaver/src/org/aspectj/weaver/patterns/WildTypePattern.java +++ b/weaver/src/org/aspectj/weaver/patterns/WildTypePattern.java @@ -433,8 +433,8 @@ public class WildTypePattern extends TypePattern { s.writeInt(dim); //??? storing this information with every type pattern is wasteful of .class // file size. Storing it on enclosing types would be more efficient - FileUtil.writeStringArray(s, knownMatches); - FileUtil.writeStringArray(s, importedPrefixes); + FileUtil.writeStringArray(knownMatches, s); + FileUtil.writeStringArray(importedPrefixes, s); writeLocation(s); } diff --git a/weaver/src/org/aspectj/weaver/patterns/WithinPointcut.java b/weaver/src/org/aspectj/weaver/patterns/WithinPointcut.java index 7e8663ca2..81c6bfcd4 100644 --- a/weaver/src/org/aspectj/weaver/patterns/WithinPointcut.java +++ b/weaver/src/org/aspectj/weaver/patterns/WithinPointcut.java @@ -28,6 +28,10 @@ public class WithinPointcut extends Pointcut { public FuzzyBoolean match(Shadow shadow) { TypeX enclosingType = shadow.getEnclosingType(); +// if (shadow.getKind() == Shadow.FieldSet) { +// System.err.println("within?" + type + " matches " + enclosingType + " on " + shadow); +// } + while (enclosingType != null) { if (type.matchesStatically(shadow.getIWorld().resolve(enclosingType))) { return FuzzyBoolean.YES; diff --git a/weaver/testdata/dummyAspect.jar b/weaver/testdata/dummyAspect.jar index 5cadbea53213818a1e79fb944dda8935b0fc4ad9..784a3b611f19fcdcc97e313a39ebf6b39e50394b 100644 GIT binary patch delta 30 jcmX@ha+ZZRz?+#xgnp delta 30 jcmX@ha+ZZRz?+#xgnN&d54hdaCETp6h;o=f&?jpL4G7tMlUXLp)!C$-;!1hMfxhtGpfapD@V)?8@v{ zW^(`f6kw>E;Rj`>z`rE;-Jquzk&u9}W}z%x;7wa2bwl1-&K_^{2 zJ$U=3DLCypsj>alt5=5yvy|P#Wku2sc$cxMVNw4_WxS<#w#~T>kP|K>4;vBJ={3K{ zi)^*zn7_ohTl&n`#D=L0W3mQF-Q(!Xj@Q4mXHzpnPA-f@G+>p+Oc*K66#4V+;uX*- zl}r7$^y1-yf$v}o)>w<0u!GQ&&m?VmkprYir=z12ZJ&8(jbWv|e!k{vL4I(E=%ZC# z!KRmEwR)Erhlbs0RH5Y<&5LS-bm`kBHn)6j^}j<@Ej%YmhGxEShZf}UIoI4o^naae$T1L#`k;F zh!PG;yulvh5WEMGc5n&^66*FiuY56W!`L>?(*nm62{V>Olr0sG+%ISft+-nwUMj^# zXH8uP-F2XH;!Prhn}KVy8tJ2y=sef#@+wtc-7>D{(hdWAo|ns7{S(g_3>RkgrPD?e zZBM>0h-{(K>BjGFGP)99asTxBAhLCPkpWPeIJoJ*&0iCgp$ES= z9*cZtK>D=L6Ih}_5wOB@u5?B5tx=nfpXe5E%MV}iFcz0SZ3D~*A)TBZIlwC2ooaHl zoN%PUWRC%FK50cP#9aKiwjnD@;y4gy$Rng8p&0KxUr*Y;?Xy&F-p<!A0dTmCE8Lo*siV#J;a8bQE<@dMrEKKOYcre=5 z7eqxBOG8Cv!TA68$c3u}acjsq>LZe&G4d>?x7kD;IWLc4nZ!^-oJ4;ahC)vRy4BBu zqMjc={DXoU6I4C3t1}vc=dw!7xP)=XARZva$8&yO;yYzHxApYtcGDN_vl(FaRGv4j zOFp_c)#nZxW0%TfG~r02Ux4mt?)_AIW@26Dxg-{p;QLTUk`z%$-n zHP;!$B*6EWK8CI;Cs`Eh!T48?l-oaY15e-!84ZtlUwyX}R=$HyIZ^JuY%|BlsQndi zvq$w?q?Fx{e%p7warkvLTzRV0-F!r*F4GaO6(<)d=aXUbF-*h9(Xpx@3hm;uNuiTT~^A`sWW0H4p$J?}2`eMpcH>fG_b&Nv|1YACYrrn5U9A%ac=O zVvzKzt&L4^w1tZo`ytL1Z?TzrmV#&B@^ZCHpj+Yigw_qRdgofu3TK_eth$SjE(LwLNTes2tLTj>0+#`8` zO!jj-oP0VjGR5%?iAyp)n9dIYM6KfQ5?I}6I&4v(h>A^cpLj1=YUjd{t^q|)0!5**m%dft>kKc+d8l9ltG9(8Ui@DFW5 zqAQKp_BA$Uh@54P_0?Q>)KVHJ-( zJ|}}GsLDe_>tX0*d6SY(YN7K&K-cvOwQMwYj z&}!6qBO5bH!viTLLlxWJk%6dEt)A>C`kBP~t0$;8Qk&6j2nCZ;f1E55WkB^zi?)u# zy>{pu6Vbw6@wFDJuoZZ)ICGfoC>=QgfST|%DHNkgwv#Esjo%)UnnmkJ1 zaywTu`1<^gaKl>oNT4RSurisH@|El8CF`MV9`uSd;7qqpwO|h0w)JjtUTru{>^R$$ zuC<(1dldWrs@v2N0yXXW;!E7&+m%%B+2cu#z0Q;MnI8vs&C+!)MP@lFla&T72L@tf zYo|3HZTG{cWQ?0Hx7^{6{vtY5rp(Qjs7^1JaUTeh?3yrYxZ&d_JFNg8na?9J-TNk^ zeeug6;O=BjHEdTEDIBRr=#X4zLyAumKXTLZjwYKpf`0Db=NFRX;G=|FwxdSO6QU9m z<1&xD>>?nQ=3)?`|X@)gLwRF1&6*9c=D8dJL9@iBKhOip2)$ zC7|c1i=1gd7aP-llwpl4xa7Ulhz8zBYqKv#Y}!$5%dJ;G6>J2~-Nv}8RND_dIjtuc zbP`-HI$IL*trR;67ZfZoSVC4h$75^7#5kQWUlZn;j!&G|!11jPW6zsoA(Aa_iNrV?46VS~fJ-60W#NaA zfL5-xCnPf+1&i&O^`mD`?}PG>SYE0(6VwCVf)uki+7cx7->oIN)Zi-@GiA1wqBCpq zKWZV*`C3pR7X;S4ucedU2NwmMR|H(TlVT2|+Tai3)hagh=JxY`Vhne4X^+Itg=#(y zuUW4Qn-O1XnW|kV8YPCz_S!Ey?}f)7p=V1YAR+k&;fgyfex|qLLk#((KQ70s=aPjz z;i2!T*DLZK-~L={79aBT9CedF<@(}!g5PY%p*y)4pPrB}#^z`GwVG2o#Rd2~B?vQL z!E0Acck3gyUuAR%X1-|fp19jd+U7p1E`q6Rx4(yM#$S$+s2Q({_KH~QyDK0j8$hkz ze(E!UMf4usTkMxT8ujAebBO0<_5 z+~XP49UfI@$c{v+Nd(>uo2)~Beu9>C*SOK*?H)-`lUZ#o)4fxW08I1|?YB8OinjrrFWKMu#r_Ghd77h-3@L0ANFBvzL5rqJK<{{g8sxFG-l delta 3067 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 diff --git a/weaver/testdata/megatraceNoweave.jar b/weaver/testdata/megatraceNoweave.jar index 86df6e86d26080e8e2e11fb2081095732d1c6cb6..fcf480940144bbe2bbc206e9252235e6649dbff6 100644 GIT binary patch delta 2367 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 Q`CmeYGmM;7f6y=X5ABUW)&Kwi diff --git a/weaver/testdata/tracing.jar b/weaver/testdata/tracing.jar index ed778dde5539d5dc6ea8087e33eb8a7c4b3e5a55..c3f5201332c1a3bf44549313a9b764dd2b422cb5 100644 GIT binary patch delta 2170 zcmV-=2!;2h5!?|CP)h>@6aWYS2mowbpOFn9e@$-`M-YAOne~2n2*v>$0){1Vz$VU) zNPq;}A+e2-f|d`lh{#bc?b%+tH|yzDPp?1z2sd)bnL{v=jbbUeamXLa0Vz=3Gs0_m z!b-K%)%~jK)$5x1=f6Myf`>10hoN|H`?2PcD1tE*vZcpxnzy5guFwq`uXcn{@sDw0 ze|Q`ThH^cNnPn)=MI9MSbBn>7oO;6GFRCVCDmFYl3Q$3*f&mOM9Iwk*-0!Wg2>qC^ zbO<<7R}t?#;aXZh+Z>#8IRhNGkv@hguUV4`!??}MTSn+d!t``Z>?Sfc6E`UG@?^cu zH+b0L@oM;Br7a>edvwPVJ)`t$jVE35f7`W9!8e4i%{Mos?Qr-YqOqMAv0lU|HK=-q z;Z&MVs_>zfv1u4B`1)*s(>PPc7(QVb?Ta>qSzYM0T0$3bjv)|R(#%w=o6@XROE^#Y z`WdHq;%8g0Rxpl>qz3PHMcibV&S`GyNOW3_7=4Bbo8fc1C8N?ahLe*=BM5sLf0GtF z#qe=XdqsRflhU;toj9PuA!^g8F)(Fs@CYf=N(<7elifeNIPpm#;Rt!V7QdSf9#>6#-pCOEus$B+*bRa`N^tQbI#J5iz+r^%j7HY zlY2A_Hv$)lst~7ym^*|Y%{s5_;Jeo-_|LuPsc%12hmd2gE-* zHVXK`(VfSFYyRMq=oEY}e^{Pg1@8ko-X*I$v4DHbb3_XT_)R4Zn17&f-U`2v39?6I ztt?9mi?%nPy~o`qKf==DOi1%AyNL)lmHsv966LUeDtWtUYLU_+G$JugZg`mJ=xW&i z!nm;kE|5vG4%zQy|B}6N<=MbHP)i30prrPPX9EBLZUz7VP)h>@2^0Vb00;nVTc4AF z10H`(Q(ILSeoj6}h_OJRw6qmzr8ES{El6vHT1!)~Y6`T$b~-Mc%gq694EJVkPJnJ) zIBuMA;a||5D_a+|e$?sOap6iw7miz9_!HFU+=PUWYp0HP=E?bZ&pGe&KJR^1i=mfo`*84KB+S*OP<( z+~B!!fy3$ieiqZ(ZJ+C{X3c7a<5G50nj6x~&J;InOYY%axLZ|nJ%%pQb!&>})sKI( zU1QO+9aT`CG}ot-=tfUFQaDUT(oxcz8i?ZvNd>Hqp^vL7dZO&?W5^Y@vr2|Z9LI?S zj^R0amRpuq;XojbpiR%MImJfM7MEU5=NX>S2+#0pjOs5Y*s4LDGH1RrQkr! z^>eA@2uAe@V*+vI)@=ek>4Q7C*1%c4mU%uFAVkG;Eh&phyogf?gfL05<(93uw?TSf z(^hMm`FVjZp74&jTNzUSFFG<&o@9w6X16R^QMT(;cM8B~y|m`Jo4R;oxF~ihPjn#A}{q~d9ZcHUHgDVMKMvmeh&~AL01a1c8?SI!**Y280 zPYi4EUlTYUM4_3#*Dv-M^?a*{zspr1AfeFgG2 z#*x8Ru#ILOp#45OAw0w1q(7YfTcQlXFJTk<#{R{M_j&7s>zV9vJd)J02;y#CyIMwi8h>Cx(&oUZCr0CiT zBGPga)WdJY@5GP9AA0Zix`SPh=JElR(psHQ4PGamuQ7Bdm41NC=r*$3m>{{4hd4LC zV|t0Ev8HM4UQ@&YeyIA`F5zVo?_lqF&V`Vnb;`Hu@Ol{<RwP(n!Wkt^kU>Y{8Z zoZz=`0zH(9uk9YGE>KimHJu|7N_8ikDeRZ4m-bk*!u9i(pQeA7a8bFRPZK;pCFf;GI#;lm8vv0UGLp$g+~~>Ut_aWR9TCED-0#8s%R?H zsCw48(YjxJ=DLu8Jh4D1;!ENY@tF9NAu=+-G7z_kkBLu-&xp^7Ul~+4F-h<(482c$ zNPL8XRwwiiP)jEV2;n&x$ae$)0AmRN08mQ-0u%rg00;mG0Bl>IEuf_Khi3x-0B(~s w2reINTc0iAIT*-y1ONbI2><{K0000000000000000HTwD2p$Gf2mk;809olBfB*mh delta 2114 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 diff --git a/weaver/testsrc/org/aspectj/weaver/bcel/PointcutResidueTestCase.java b/weaver/testsrc/org/aspectj/weaver/bcel/PointcutResidueTestCase.java index 7dafd2f9b..e2fd9dd87 100644 --- a/weaver/testsrc/org/aspectj/weaver/bcel/PointcutResidueTestCase.java +++ b/weaver/testsrc/org/aspectj/weaver/bcel/PointcutResidueTestCase.java @@ -183,7 +183,7 @@ public class PointcutResidueTestCase extends WeaveTestCase { )); ShadowMunger pp = - world.concreteAdvice( + new BcelAdvice( AdviceKind.Before, rp, Member.method( @@ -193,7 +193,7 @@ public class PointcutResidueTestCase extends WeaveTestCase { Member.typesToSignature( ResolvedTypeX.VOID, TypeX.forNames(formalTypes))), - 0, -1, -1, null); + 0, -1, -1, null, null); ResolvedTypeX inAspect = world.resolve("Aspect"); CrosscuttingMembers xcut = new CrosscuttingMembers(inAspect); -- 2.39.5