Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [aspectj-users] semantics of cflow

"Jie" == Jie Ouyang <ouyang.jie@xxxxxxxxx> writes:

	Jie> It is easy to understand the semantics of cflow( call (void
	Jie> foo.bar())), but what about cflow(cflow( call (void foo.bar())))?

"Within the control flow of" is an inherently transitive property --- that is,
if point A is within the control flow of point B, and B is within the control
flow of point C, then necessarily, A must be within the control flow of C.

A good analogy might be to compare "cflow" with >= (greater-than-or-equal-to).

That is, if a number A >= B and B >= C, then necessarily, A >= C.  If I already
have a description:

  all the numbers >= C

and I compare that to:

  all the numbers >= B,
  where B is any number >= C

I find that the two descriptions yield the same set of numbers.

Bringing this back to AspectJ: the first description is akin to cflow(X), and
the second is akin to cflow(cflow(X)).  It seems to me that the join points
matched by cflow(cflow(X)) must be identical to the join points matched by
cflow(X).

I admit I haven't *tested* cflow(cflow(...)) with an AspectJ compiler, so I
could be wrong --- I leave the actual testing as an exercise for the reader
:-).

Happy hacking ---

Eric.

-- 
-------------------------------------------------------------------------------
Eric Eide <eeide@xxxxxxxxxxx>  .         University of Utah School of Computing
http://www.cs.utah.edu/~eeide/ . +1 (801) 585-5512 voice, +1 (801) 581-5843 FAX


Back to the top