]> source.dussan.org Git - aspectj.git/commit
partial fix for bug 61568.
authoracolyer <acolyer>
Wed, 15 Dec 2004 20:51:01 +0000 (20:51 +0000)
committeracolyer <acolyer>
Wed, 15 Dec 2004 20:51:01 +0000 (20:51 +0000)
commit1b6e9edfacf5f3d2732d164b15bc26022835c6ac
tree120b839c6f1760e266f56acf6aea89723d7b1f07
parent1575a175b511eadbae03fc760b0cd20edde6ae4e
partial fix for bug 61568.
These changes are both (a) a performance optimization, and (b) an
improvement on the binding across || rules that we implemented in
1.2.1.
Instead of saying the the first binding in a left-to-right traversal of the
pointcuts DNF is the one that you get (too much to ask users to do DNF
rewriting in their heads), this version implements the rule that every
|| branch in the DNF must bind all formals, and if two || branches can have
any join points in common (can match join points of the same kind), then
both must bind all formals identically.

So it allows things like execution(* *(..)) && args(x) || call(* *(..)) && this(x)
which previously we used to forbid.

But primarily it turned out to be a performance optimization.
50 files changed:
tests/bugs/DisjunctVarBinding.java
tests/bugs/DisjunctVarBinding_3.java
tests/src/org/aspectj/systemtest/ajc120/ajc120-tests.xml
tests/src/org/aspectj/systemtest/ajc121/ajc121-tests.xml
tests/src/org/aspectj/systemtest/ajc150/VarargsTests.java
weaver/src/org/aspectj/weaver/Advice.java
weaver/src/org/aspectj/weaver/Shadow.java
weaver/src/org/aspectj/weaver/ShadowMunger.java
weaver/src/org/aspectj/weaver/WeaverMessages.java
weaver/src/org/aspectj/weaver/bcel/BcelWeaver.java
weaver/src/org/aspectj/weaver/patterns/AndPointcut.java
weaver/src/org/aspectj/weaver/patterns/AndTypePattern.java
weaver/src/org/aspectj/weaver/patterns/AnnotationPatternList.java
weaver/src/org/aspectj/weaver/patterns/AnnotationPointcut.java
weaver/src/org/aspectj/weaver/patterns/ArgsAnnotationPointcut.java
weaver/src/org/aspectj/weaver/patterns/ArgsPointcut.java
weaver/src/org/aspectj/weaver/patterns/BindingTypePattern.java
weaver/src/org/aspectj/weaver/patterns/CflowPointcut.java
weaver/src/org/aspectj/weaver/patterns/ConcreteCflowPointcut.java
weaver/src/org/aspectj/weaver/patterns/ExactTypePattern.java
weaver/src/org/aspectj/weaver/patterns/HandlerPointcut.java
weaver/src/org/aspectj/weaver/patterns/IfPointcut.java
weaver/src/org/aspectj/weaver/patterns/KindedPointcut.java
weaver/src/org/aspectj/weaver/patterns/NameBindingPointcut.java
weaver/src/org/aspectj/weaver/patterns/NotPointcut.java
weaver/src/org/aspectj/weaver/patterns/NotTypePattern.java
weaver/src/org/aspectj/weaver/patterns/OrPointcut.java
weaver/src/org/aspectj/weaver/patterns/OrTypePattern.java
weaver/src/org/aspectj/weaver/patterns/PerCflow.java
weaver/src/org/aspectj/weaver/patterns/PerFromSuper.java
weaver/src/org/aspectj/weaver/patterns/PerObject.java
weaver/src/org/aspectj/weaver/patterns/PerSingleton.java
weaver/src/org/aspectj/weaver/patterns/Pointcut.java
weaver/src/org/aspectj/weaver/patterns/PointcutEvaluationExpenseComparator.java [new file with mode: 0644]
weaver/src/org/aspectj/weaver/patterns/PointcutRewriter.java [new file with mode: 0644]
weaver/src/org/aspectj/weaver/patterns/ReferencePointcut.java
weaver/src/org/aspectj/weaver/patterns/SignaturePattern.java
weaver/src/org/aspectj/weaver/patterns/ThisOrTargetAnnotationPointcut.java
weaver/src/org/aspectj/weaver/patterns/ThisOrTargetPointcut.java
weaver/src/org/aspectj/weaver/patterns/ThrowsPattern.java
weaver/src/org/aspectj/weaver/patterns/TypePattern.java
weaver/src/org/aspectj/weaver/patterns/WildTypePattern.java
weaver/src/org/aspectj/weaver/patterns/WithinAnnotationPointcut.java
weaver/src/org/aspectj/weaver/patterns/WithinCodeAnnotationPointcut.java
weaver/src/org/aspectj/weaver/patterns/WithinPointcut.java
weaver/src/org/aspectj/weaver/patterns/WithincodePointcut.java
weaver/src/org/aspectj/weaver/weaver-messages.properties
weaver/testsrc/org/aspectj/weaver/patterns/PatternsTests.java
weaver/testsrc/org/aspectj/weaver/patterns/PointcutRewriterTest.java [new file with mode: 0644]
weaver/testsrc/org/aspectj/weaver/patterns/PointcutTestCase.java