Index: src/org/aspectj/weaver/patterns/IfPointcut.java =================================================================== RCS file: /cvsroot/tools/org.aspectj/modules/weaver/src/org/aspectj/weaver/patterns/IfPointcut.java,v --- src/org/aspectj/weaver/patterns/IfPointcut.java 24 Oct 2006 12:42:58 -0000 1.41 +++ src/org/aspectj/weaver/patterns/IfPointcut.java 20 Mar 2008 16:07:57 -0000 @@ -218,10 +218,15 @@ args.add(shadow.getThisEnclosingJoinPointStaticPartVar()); } else { // we don't use i as JoinPoint.* can be anywhere in the signature in @style + ExposedState myState = new ExposedState(baseArgsCount); + // ??? we throw out the test that comes from this walk. All we want here + // is bindings for the arguments + residueSource.findResidue(shadow, myState); + Var v2 = myState.get(i); Var v = state.get(currentStateIndex++); - args.add(v); + args.add(v2); ret = Test.makeAnd(ret, - Test.makeInstanceof(v, + Test.makeInstanceof(v2, testMethod.getParameterTypes()[i].resolve(shadow.getIWorld()))); } } Index: src/org/aspectj/weaver/patterns/PointcutEvaluationExpenseComparator.java =================================================================== RCS file: /cvsroot/tools/org.aspectj/modules/weaver/src/org/aspectj/weaver/patterns/PointcutEvaluationExpenseComparator.java,v --- src/org/aspectj/weaver/patterns/PointcutEvaluationExpenseComparator.java 1 Jun 2006 09:52:42 -0000 1.3 +++ src/org/aspectj/weaver/patterns/PointcutEvaluationExpenseComparator.java 20 Mar 2008 16:07:57 -0000 @@ -99,7 +99,8 @@ if (p instanceof AnnotationPointcut) return ANNOTATION; if (p instanceof ArgsPointcut) return ARGS; if (p instanceof ArgsAnnotationPointcut) return AT_ARGS; - if (p instanceof CflowPointcut) return CFLOW; + if (p instanceof CflowPointcut || p instanceof ConcreteCflowPointcut) + return CFLOW; if (p instanceof HandlerPointcut) return HANDLER; if (p instanceof IfPointcut) return IF; if (p instanceof ThisOrTargetPointcut) return THIS_OR_TARGET;