On 19 July 2010 23:48, Emond Papegaaij <[email protected]> wrote: > I wonder, what does the AspectJ compiler need all that information for? > Currently, it seems it stores a complete representation of the classes in the > typeMap, including all constantpool entries. Isn't it possible to drop part of > this information, for example information like the LineNumberTable and > LocalVariableTable or maybe even string constants? Although these structures > are not really large, it could save another 100M, especially when you also > drop the constant pool entries used by these tables.
Indeed it keeps a lot of information, that is partly due to the initial design of AspectJ never taking into account large projects or even incremental compilation. Over time areas of the compiler are revisited over and over as we gradually improve things. (the original AspectJ didn't allow you to compile more than one project in the same JVM, imagine how that would work in eclipse - you'd only be allowed one AspectJ project in your workspace). My list of tasks is quite large and I get to things when I can... The linenumbertables and localvariabletables and code elements cannot all be dropped, for example if inlining around advice we want that information for the target, so it isn't as easy as throwing everything out. And when incrementally compiling we need to recover state because we won't be recompiling everything, only part of the application, and that will have dependencies on what we did previously. Recovering out of the bin folder where we previously compiled to is part of the solution but sometimes we want the interim form, the shape of the class after compilation and before weaving, and that form of the class is not always available from disk. I know what to do, I just have to find the time. Andy _______________________________________________ aspectj-users mailing list [email protected] https://dev.eclipse.org/mailman/listinfo/aspectj-users
