[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[ews.eclipse.technology.aspectj] Re: Status and future plans for AspectJ/AJDT? (mustang support in particular)

Andy,

I'd be interested to know about your findings about Java6 class file format changes. More specifically how are you going to calculate or update ClassMapTable data structures that are added for bytecode version 50. Basic idea is that for each conditional branch you have to provide state information for local variables as well as stack state. There is some optimization can be used to compress such info (e.g. use delta from previous stack frame).
So, when method bytecode is changed by AJ weaver, and when bytecode version is 50+, stack map frames has to be recalculated if woven code changed or added new variables or stack frames or introduced new conditional branches or try catch blocks. You can, of course downgrade bytecode version to 49 (Java 5 level) to fall back to old verifier and this would not make much of the difference (unless someone will use undocumented jvm options to force use of new verifier) since there are no new features introduced in Java 6.


By the way, if there are plans to migrate AJ code to use ASM for bytecode manipulation? It has been suggested some time ago and decision been postponed till AJ 5 release.

  regards,
  Eugene

PS: While working on Java 6 support in ASM framework we did some research around partial stack map updates and implemented incremental transformer for LocalVariableSorter adapter (which allows to introduce new variables and renumber existing vars). We also have option to recalculate stack map info from scratch and to expand packed frames.


Andy Clement wrote:

...

And i'll take the AspectJ question. When Eclipse 3.2 is 'complete' we will upgrade AspectJ to be based on that level of the compiler. At that point we will pick up their support for jsr202 (class file format changes) and jsr269 (annotation processing spec). I know support for the former is already in the 3.2 milestones, but I don't think full support for jsr269 is (feel free to correct me if I'm wrong??). There will be an outstanding question about the class file format changes and our weaver which I've not tackled yet.

Aim for the next few days is AspectJ1.5.1 - I have one more incremental compilation bug to fix before it ships. As Matt says, the main focus right now is that we want to scale up and build larger projects, in shorter time and using less memory - and 1.5.1 (and accompanying AJDT) is a first step towards that, requiring half the memory that 1.5.0 did under Eclipse.

Andy.