[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [aspectj-dev] Question about aspectj weaver
- From: Ivica Aracic <ivica.aracic@xxxxxxxxxxxx>
- Date: Thu, 28 Aug 2003 17:02:08 +0200
- Delivered-to: firstname.lastname@example.org
- User-agent: Mutt/1.4.1i
Thank you for your answer Jim.
I was all the time in misbelief that aspectj weaver is using ASM and
StructureModelUtil (used by GUIs for Outline Views) for weaving the class
I hope I've interpreted your answer correctly:
The aspectj weaver is working with pointcuts declared as .class attributes
and advices declared as common java method following special naming
On Fri, Aug 08, 2003 at 02:30:36PM -0700, Jim Hugunin wrote:
> Ivica Aracic wrote:
> >I have a question about the aspectj weaver:
> >What does the weaver take as input?
> >How does it know where to insert the advices?
> This question deserves a paper to answer it. For now, you'll have to
> settle for the following short answer.
> Each piece of advice in an aspect is associated with a pointcut. This
> pointcut is stored in an attribute on the methods corresponding to each
> piece of advice. Before weaving, all of these pieces of advice are
> gathered into one large list.
> Each .class file is woven independently. A .class file is woven by the
> following steps:
> 1. Collect all of the joinpoint shadows in the .class file. For every
> dynamic joinpoint in the AspectJ language model, there is a
> corresponding static shadow of that joinpoint in the bytecode. For
> example, every method call joinpoint has an INVOKE bytecode as its
> static shadow. Some joinpoints (such as initialization) have much more
> complicated static shadows.
> 2. Each piece of advice is matched to each static shadow. There are
> three results possible from this match.
> a. Never matches -- in which case nothing is done to the shadow
> b. Always matches -- in which case the advice is woven into this
> joinpoint shadow
> c. Sometimes matches -- in which case the advice is woven into the
> shadow along with the minimal dynamic tests to determine if any
> particular joinpoint in the actual running program matches the advice.
> The simplest example of sometimes matches is when the pointcut uses
> 3. If any advice matched any static shadows in the .class file, then the
> transformed .class file is written out, otherwise it is left unchanged.
> See org.aspectj.weaver.bcel.BcelClassWeaver and BcelShadow for the two
> primary classes involved in this process.
> Note: This explanation ignores the implementations of inter-type
> declarations completely. It also ignores performance optimizations such
> as fast-match that speed up the weaving process.
> aspectj-dev mailing list
ICQ 58372826 (macross)