//Annotated trace of AjBuildManager

//Annotated trace of AjBuildManager.batchBuild... for "ajc Hello.java"

ajdtcore::Entering execution(boolean org.aspectj.ajdt.internal.core.builder.AjBuildManager.batchBuild(

AjBuildConfig, IMessageHandler))

arguments (org.aspectj.ajdt.internal.core.builder.AjBuildConfig@b1b4c3,MessageHandler: no messages)

ajdtcore::Entering execution(boolean org.aspectj.ajdt.internal.core.builder.AjBuildManager.doBuild(

AjBuildConfig, IMessageHandler, boolean))

arguments (org.aspectj.ajdt.internal.core.builder.AjBuildConfig@b1b4c3,MessageHandler: no messages,true)

// create an AjState instance to hold state associated with the build

ajdtcore::Entering execution(org.aspectj.ajdt.internal.core.builder.AjState(AjBuildManager))

arguments (AjBuildManager())

ajdtcore::Exiting execution(org.aspectj.ajdt.internal.core.builder.AjState(AjBuildManager))

// could we do an incremental build if we wanted to...

ajdtcore::Entering execution(boolean org.aspectj.ajdt.internal.core.builder.AjState.prepareForNextBuild(

AjBuildConfig))

arguments (org.aspectj.ajdt.internal.core.builder.AjBuildConfig@b1b4c3)

ajdtcore::Exiting execution(boolean org.aspectj.ajdt.internal.core.builder.AjState.prepareForNextBuild(

AjBuildConfig))

return: false

// check that aspectjrt.jar is present on the classpath and has the right version

ajdtcore::Entering execution(String org.aspectj.ajdt.internal.core.builder.AjBuildManager.checkRtJar(AjBuildConfig))

arguments (org.aspectj.ajdt.internal.core.builder.AjBuildConfig@b1b4c3)

ajdtcore::Exiting execution(String org.aspectj.ajdt.internal.core.builder.AjBuildManager.checkRtJar(AjBuildConfig))

return: null

// remember the build configuration

ajdtcore::Entering execution(void org.aspectj.ajdt.internal.core.builder.AjBuildManager.setBuildConfig(

AjBuildConfig))

arguments (org.aspectj.ajdt.internal.core.builder.AjBuildConfig@b1b4c3)

ajdtcore::Exiting execution(void org.aspectj.ajdt.internal.core.builder.AjBuildManager.setBuildConfig(

AjBuildConfig))

return: null

// set up a new, empty structure model ready to receive the results of the compilation

ajdtcore::Entering execution(void org.aspectj.ajdt.internal.core.builder.AjBuildManager.setupModel()) arguments ()

asm::Entering execution(StructureModel org.aspectj.asm.StructureModelManager.getStructureModel()) arguments ()

asm::Exiting execution(StructureModel org.aspectj.asm.StructureModelManager.getStructureModel())

return: org.aspectj.asm.StructureModel@122cdb6

// if there is a .lst file specified, make that the root (there isn't in this case)

ajdtcore::Entering execution(File org.aspectj.ajdt.internal.core.builder.AjBuildConfig.getConfigFile())

arguments ()

// create a new ProgramElementNode for the root of the structure model

asm::Entering execution(org.aspectj.asm.ProgramElementNode(String, ProgramElementNode.Kind, List))

arguments (<root>,java source file,[])

asm::Exiting execution(org.aspectj.asm.ProgramElementNode(String, ProgramElementNode.Kind, List))

asm::Entering execution(void org.aspectj.asm.StructureModel.setRoot(StructureNode)) arguments (<root>)

asm::Exiting execution(void org.aspectj.asm.StructureModel.setRoot(StructureNode)) return: null

// give it an empty file map

asm::Entering execution(void org.aspectj.asm.StructureModel.setFileMap(HashMap)) arguments ({})

asm::Exiting execution(void org.aspectj.asm.StructureModel.setFileMap(HashMap)) return: null

// remember the model we just created

ajdtcore::Entering execution(void org.aspectj.ajdt.internal.core.builder.AjBuildManager.setStructureModel(

StructureModel))

arguments (org.aspectj.asm.StructureModel@122cdb6)

ajdtcore::Exiting execution(void org.aspectj.ajdt.internal.core.builder.AjBuildManager.setStructureModel(

StructureModel))

return: null

ajdtcore::Exiting execution(void org.aspectj.ajdt.internal.core.builder.AjBuildManager.setupModel()) return: null

// create a new BCEL World to use for the batch compile

ajdtcore::Entering execution(void org.aspectj.ajdt.internal.core.builder.AjBuildManager.initBcelWorld(

IMessageHandler))

arguments (MessageHandler: no messages)

// get the classpath

ajdtcore::Entering execution(List org.aspectj.ajdt.internal.core.builder.AjBuildConfig.getClasspath()) arguments ()

ajdtcore::Exiting execution(List org.aspectj.ajdt.internal.core.builder.AjBuildConfig.getClasspath()) return:

[C:\ColyerRoot\Programs\SunJDK141\jre\lib\rt.jar, ...,

C:\ColyerRoot\Programs\aspectj1.1b4\lib\aspectjrt.jar]

// create the BcelWorld

weaver::Entering execution(org.aspectj.weaver.bcel.BcelWorld(List, IMessageHandler))

arguments ([C:\ColyerRoot\Programs\SunJDK141\jre\lib\rt.jar, ...

C:\ColyerRoot\Programs\aspectj1.1b4\lib\aspectjrt.jar],MessageHandler: no messages)

// superclass constructor creates a new org.aspectj.weaver.CrosscuttingMembersSet - this is a key data structure

// initialise a ClassPathManager

weaver::Entering execution(org.aspectj.weaver.bcel.ClassPathManager(List, IMessageHandler))

arguments ([C:\ColyerRoot\Programs\SunJDK141\jre\lib\rt.jar,

C:\ColyerRoot\Programs\SunJDK141\jre\lib\i18n.jar,

C:\ColyerRoot\Programs\SunJDK141\jre\lib\sunrsasign.jar,

C:\ColyerRoot\Programs\SunJDK141\jre\lib\jsse.jar,

C:\ColyerRoot\Programs\SunJDK141\jre\lib\jce.jar,

C:\ColyerRoot\Programs\SunJDK141\jre\lib\charsets.jar,

C:\ColyerRoot\Programs\SunJDK141\jre\classes,

C:\ColyerRoot\Programs\SunJDK141\jre\lib\ext\aspectjrt.jar,

C:\ColyerRoot\Programs\SunJDK141\jre\lib\ext\dnsns.jar,

C:\ColyerRoot\Programs\SunJDK141\jre\lib\ext\ldapsec.jar,

C:\ColyerRoot\Programs\SunJDK141\jre\lib\ext\localedata.jar,

C:\ColyerRoot\Programs\SunJDK141\jre\lib\ext\sunjce_provider.jar,

c:\ColyerRoot\Programs\aspectj1.1\lib\aspectjtools_g.jar,

c:\ColyerRoot\Programs\aspectj1.1\lib\aspectjtools.jar,

c:\ColyerRoot\Programs\aspectj1.1\lib\log4j-1.2.7.jar,

c:\ColyerRoot\Programs\aspectj1.1\lib, .,

C:\ColyerRoot\Programs\aspectj1.1b4\lib\aspectjrt.jar],MessageHandler: no messages)

// for each entry... validate and add

weaver::Entering execution(void org.aspectj.weaver.bcel.ClassPathManager.addPath(String, IMessageHandler))

arguments (C:\ColyerRoot\Programs\SunJDK141\jre\lib\rt.jar,MessageHandler: no messages)

weaver::Exiting execution(void org.aspectj.weaver.bcel.ClassPathManager.addPath(String, IMessageHandler))

return: null

weaver::Exiting execution(org.aspectj.weaver.bcel.ClassPathManager(List, IMessageHandler))

weaver::Exiting execution(org.aspectj.weaver.bcel.BcelWorld(List, IMessageHandler))

// set the XnoInline option

ajdtcore::Entering execution(boolean org.aspectj.ajdt.internal.core.builder.AjBuildConfig.isXnoInline())

arguments ()

ajdtcore::Exiting execution(boolean org.aspectj.ajdt.internal.core.builder.AjBuildConfig.isXnoInline())

return: false

weaver::Entering execution(void org.aspectj.weaver.World.setXnoInline(boolean)) arguments (false)

weaver::Exiting execution(void org.aspectj.weaver.World.setXnoInline(boolean)) return: null

// create a new BcelWeaver for the world

weaver::Entering execution(org.aspectj.weaver.bcel.BcelWeaver(BcelWorld)) arguments (BcelWorld())

weaver::Entering execution(CrosscuttingMembersSet org.aspectj.weaver.World.getCrosscuttingMembersSet())

arguments ()

weaver::Exiting execution(CrosscuttingMembersSet org.aspectj.weaver.World.getCrosscuttingMembersSet())

return: org.aspectj.weaver.CrosscuttingMembersSet@1f3aa07

weaver::Exiting execution(org.aspectj.weaver.bcel.BcelWeaver(BcelWorld))

// add each library in the aspectpath to the weaver (none in this case) using BcelWeaver.addLibraryJarFile

ajdtcore::Entering execution(List org.aspectj.ajdt.internal.core.builder.AjBuildConfig.getAspectpath())

arguments ()

ajdtcore::Exiting execution(List org.aspectj.ajdt.internal.core.builder.AjBuildConfig.getAspectpath()) return: []

// configure the lint options

ajdtcore::Entering execution(String org.aspectj.ajdt.internal.core.builder.AjBuildConfig.getLintMode())

arguments ()

ajdtcore::Exiting execution(String org.aspectj.ajdt.internal.core.builder.AjBuildConfig.getLintMode())

return: default

ajdtcore::Entering execution(String org.aspectj.ajdt.internal.core.builder.AjBuildConfig.getLintMode())

arguments ()

ajdtcore::Exiting execution(String org.aspectj.ajdt.internal.core.builder.AjBuildConfig.getLintMode())

return: default

weaver::Entering execution(Lint org.aspectj.weaver.World.getLint()) arguments ()

weaver::Exiting execution(Lint org.aspectj.weaver.World.getLint()) return: org.aspectj.weaver.Lint@c832d2

weaver::Entering execution(void org.aspectj.weaver.Lint.loadDefaultProperties()) arguments ()

weaver::Exiting execution(void org.aspectj.weaver.Lint.loadDefaultProperties()) return: null

ajdtcore::Entering execution(File org.aspectj.ajdt.internal.core.builder.AjBuildConfig.getLintSpecFile())

arguments ()

ajdtcore::Exiting execution(File org.aspectj.ajdt.internal.core.builder.AjBuildConfig.getLintSpecFile())

return: null

// add each library in the injars to the weaver (none in this case) using BcelWeaver.addJarFile

ajdtcore::Entering execution(List org.aspectj.ajdt.internal.core.builder.AjBuildConfig.getInJars()) arguments ()

ajdtcore::Exiting execution(List org.aspectj.ajdt.internal.core.builder.AjBuildConfig.getInJars()) return: []

// attempt to resolve "org.aspectj.lang.JoinPoint" to verify that all is well in the world

weaver::Entering execution(ResolvedTypeX org.aspectj.weaver.World.resolve(String))

arguments (org.aspectj.lang.JoinPoint)

weaver::Entering execution(TypeX org.aspectj.weaver.TypeX.forName(String))

arguments (org.aspectj.lang.JoinPoint)

// convert to signature string

weaver::Entering execution(String org.aspectj.weaver.TypeX.nameToSignature(String))

arguments (org.aspectj.lang.JoinPoint)

weaver::Exiting execution(String org.aspectj.weaver.TypeX.nameToSignature(String))

return: Lorg/aspectj/lang/JoinPoint;

// get the type for this signature, it's either a primitive, array, or an object

weaver::Entering execution(TypeX org.aspectj.weaver.TypeX.forSignature(String))

arguments (Lorg/aspectj/lang/JoinPoint;)

// its an object signature, create a new TypeX to hold it

weaver::Entering execution(org.aspectj.weaver.TypeX(String)) arguments (Lorg/aspectj/lang/JoinPoint;)

weaver::Exiting execution(org.aspectj.weaver.TypeX(String))

weaver::Exiting execution(TypeX org.aspectj.weaver.TypeX.forSignature(String))

return: org.aspectj.lang.JoinPoint

weaver::Exiting execution(TypeX org.aspectj.weaver.TypeX.forName(String)) return: org.aspectj.lang.JoinPoint

// now we have a TypeX, resolve it

weaver::Entering execution(ResolvedTypeX org.aspectj.weaver.World.resolve(TypeX))

arguments (org.aspectj.lang.JoinPoint)

weaver::Entering execution(ResolvedTypeX org.aspectj.weaver.World.resolve(TypeX, boolean))

arguments (org.aspectj.lang.JoinPoint,false)

// get the signature

weaver::Entering execution(String org.aspectj.weaver.TypeX.getSignature()) arguments ()

weaver::Exiting execution(String org.aspectj.weaver.TypeX.getSignature())

return: Lorg/aspectj/lang/JoinPoint;

// its not in our typeMap, so better look for it

weaver::Entering execution(ResolvedTypeX org.aspectj.weaver.World.resolveObjectType(TypeX))

arguments (org.aspectj.lang.JoinPoint)

// create a resolved type name

weaver::Entering execution(org.aspectj.weaver.ResolvedTypeX.Name(String, World))

arguments (Lorg/aspectj/lang/JoinPoint;,BcelWorld())

weaver::Exiting execution(org.aspectj.weaver.ResolvedTypeX.Name(String, World))

// and resolve it

weaver::Entering execution(ResolvedTypeX.ConcreteName org.aspectj.weaver.bcel.BcelWorld.resolveObjectType(

ResolvedTypeX.Name))

arguments (org.aspectj.lang.JoinPoint)

// look up the class in the classpath

weaver::Entering execution(JavaClass org.aspectj.weaver.bcel.BcelWorld.lookupJavaClass(

ClassPathManager, String))

arguments (C:\ColyerRoot\Programs\SunJDK141\jre\lib\rt.jar;...

// find the file that defines the type

weaver::Entering execution(ClassPathManager.ClassFile org.aspectj.weaver.bcel.ClassPathManager.find(

TypeX))

arguments (org.aspectj.lang.JoinPoint)

// look in the jars on the classpath...

weaver::Entering execution(ClassPathManager.ClassFile

org.aspectj.weaver.bcel.ClassPathManager.ZipFileEntry.find(String))

arguments (org.aspectj.lang.JoinPoint)

weaver::Exiting execution(ClassPathManager.ClassFile

org.aspectj.weaver.bcel.ClassPathManager.ZipFileEntry.find(String))

return: null

...

weaver::Entering execution(ClassPathManager.ClassFile

org.aspectj.weaver.bcel.ClassPathManager.ZipFileEntry.find(String))

arguments (org.aspectj.lang.JoinPoint)

weaver::Exiting execution(ClassPathManager.ClassFile

org.aspectj.weaver.bcel.ClassPathManager.ZipFileEntry.find(String))

return: org.aspectj.weaver.bcel.ClassPathManager$ZipEntryClassFile@139eeda

weaver::Exiting execution(ClassPathManager.ClassFile

org.aspectj.weaver.bcel.ClassPathManager.find(TypeX))

return: org.aspectj.weaver.bcel.ClassPathManager$ZipEntryClassFile@139eeda

// get the input stream and file path

weaver::Entering execution(InputStream

org.aspectj.weaver.bcel.ClassPathManager.ZipEntryClassFile.getInputStream())

arguments ()

weaver::Exiting execution(InputStream

org.aspectj.weaver.bcel.ClassPathManager.ZipEntryClassFile.getInputStream())

return: java.util.zip.ZipFile$1@1b4fad5

weaver::Entering execution(String org.aspectj.weaver.bcel.ClassPathManager.ZipEntryClassFile.getPath())

arguments ()

weaver::Exiting execution(String org.aspectj.weaver.bcel.ClassPathManager.ZipEntryClassFile.getPath())

return: org/aspectj/lang/JoinPoint.class

// use bcel.classfile.ClassParser to parse the file and return a BCEL JavaClass

weaver::Exiting execution(JavaClass org.aspectj.weaver.bcel.BcelWorld.lookupJavaClass(

ClassPathManager, String))

return: public abstract interface org.aspectj.lang.JoinPoint extends java.lang.Object

filename org/aspectj/lang/JoinPoint.class
compiled from JoinPoint.java
compiler version 46.0
access flags 1537
constant pool 62 entries
ACC_SUPER flag false
Attribute(s):
SourceFile(JoinPoint.java)
InnerClass:public static abstract

org.aspectj.lang.JoinPoint$StaticPart("org.aspectj.lang.JoinPoint",

"StaticPart")
11 fields:
public static final String METHOD_EXECUTION = "method-execution"
public static final String METHOD_CALL = "method-call"
public static final String CONSTRUCTOR_EXECUTION = "constructor-execution"
public static final String CONSTRUCTOR_CALL = "constructor-call"
public static final String FIELD_GET = "field-get"
public static final String FIELD_SET = "field-set"
public static final String STATICINITIALIZATION = "staticinitialization"
public static final String PREINTIALIZATION = "preinitialization"
public static final String INITIALIZATION = "initialization"
public static final String EXCEPTION_HANDLER = "exception-handler"
public static final String ADVICE_EXECUTION = "advice-execution"
10 methods:
public abstract String toString()
public abstract String toShortString()
public abstract String toLongString()
public abstract Object getThis()
public abstract Object getTarget()
public abstract Object[] getArgs()
public abstract org.aspectj.lang.Signature getSignature()
public abstract org.aspectj.lang.reflect.SourceLocation getSourceLocation()
public abstract String getKind()
public abstract org.aspectj.lang.JoinPoint$StaticPart getStaticPart()

// make the JavaClass into a ResolvedTypeX.ConcreteName...

weaver::Entering execution(BcelObjectType org.aspectj.weaver.bcel.BcelWorld.makeBcelObjectType(

ResolvedTypeX.Name, JavaClass, boolean))

arguments (org.aspectj.lang.JoinPoint,public abstract interface ...

weaver::Entering execution(org.aspectj.weaver.ResolvedTypeX.ConcreteName(ResolvedTypeX.Name, boolean))

arguments (org.aspectj.lang.JoinPoint,false)

weaver::Exiting execution(org.aspectj.weaver.ResolvedTypeX.ConcreteName(ResolvedTypeX.Name, boolean))

weaver::Entering execution(org.aspectj.weaver.bcel.BcelObjectType(

ResolvedTypeX.Name, JavaClass, boolean))

arguments (org.aspectj.lang.JoinPoint,public abstract interface …

// remember the source context (file name, enclosing type, package name)

weaver::Entering execution(org.aspectj.weaver.bcel.BcelSourceContext(BcelObjectType))

arguments (org.aspectj.weaver.bcel.BcelObjectType@12a0f6c)

weaver::Exiting execution(org.aspectj.weaver.bcel.BcelSourceContext(BcelObjectType))

weaver::Entering execution(void org.aspectj.weaver.ResolvedTypeX.Name.setSourceContext(

ISourceContext))

arguments (org.aspectj.weaver.bcel.BcelSourceContext@5a9de6)

weaver::Exiting execution(void org.aspectj.weaver.ResolvedTypeX.Name.setSourceContext(

ISourceContext))

return: null

// decode pointcuts, type mungers, declares, ... stored as attributes in the class file

weaver::Entering execution(void org.aspectj.weaver.bcel.BcelObjectType.unpackAspectAttributes())

arguments ()

weaver::Entering execution(List org.aspectj.weaver.bcel.BcelAttributes.readAjAttributes(

Attribute[], ISourceContext))

arguments

([Lorg.apache.bcel.classfile.Attribute;@1c9a690,

org.aspectj.weaver.bcel.BcelSourceContext@5a9de6)

weaver::Exiting execution(List org.aspectj.weaver.bcel.BcelAttributes.readAjAttributes(

Attribute[], ISourceContext))

return: []

weaver::Exiting execution(void org.aspectj.weaver.bcel.BcelObjectType.unpackAspectAttributes())

return: null

weaver::Exiting execution(org.aspectj.weaver.bcel.BcelObjectType(

ResolvedTypeX.Name, JavaClass, boolean))

// point the name to its resolved, concrete name

weaver::Entering execution(void org.aspectj.weaver.ResolvedTypeX.Name.setDelegate(

ResolvedTypeX.ConcreteName))

arguments (org.aspectj.weaver.bcel.BcelObjectType@12a0f6c)

weaver::Exiting execution(void org.aspectj.weaver.ResolvedTypeX.Name.setDelegate(

ResolvedTypeX.ConcreteName))

return: null

weaver::Exiting execution(BcelObjectType org.aspectj.weaver.bcel.BcelWorld.makeBcelObjectType(

ResolvedTypeX.Name, JavaClass, boolean))

return: org.aspectj.weaver.bcel.BcelObjectType@12a0f6c

weaver::Exiting execution(ResolvedTypeX.ConcreteName org.aspectj.weaver.bcel.BcelWorld.resolveObjectType(

ResolvedTypeX.Name))

return: org.aspectj.weaver.bcel.BcelObjectType@12a0f6c

weaver::Exiting execution(ResolvedTypeX org.aspectj.weaver.World.resolveObjectType(TypeX))

return: org.aspectj.lang.JoinPoint

weaver::Exiting execution(ResolvedTypeX org.aspectj.weaver.World.resolve(TypeX, boolean))

return: org.aspectj.lang.JoinPoint

weaver::Exiting execution(ResolvedTypeX org.aspectj.weaver.World.resolve(TypeX))

return: org.aspectj.lang.JoinPoint

weaver::Exiting execution(ResolvedTypeX org.aspectj.weaver.World.resolve(String))

return: org.aspectj.lang.JoinPoint

// we now exit initBcelWorld and are going back to doBuild...

ajdtcore::Exiting execution(void org.aspectj.ajdt.internal.core.builder.AjBuildManager.initBcelWorld(

IMessageHandler))

return: null

// do we need to build a structure model?

ajdtcore::Entering execution(boolean org.aspectj.ajdt.internal.core.builder.AjBuildConfig.isEmacsSymMode())

arguments ()

ajdtcore::Exiting execution(boolean org.aspectj.ajdt.internal.core.builder.AjBuildConfig.isEmacsSymMode())

return: false

ajdtcore::Entering execution(boolean org.aspectj.ajdt.internal.core.builder.AjBuildConfig.isGenerateModelMode())

arguments ()

ajdtcore::Exiting execution(boolean org.aspectj.ajdt.internal.core.builder.AjBuildConfig.isGenerateModelMode())

return: false

// get the list of files to compile

ajdtcore::Entering execution(List org.aspectj.ajdt.internal.core.builder.AjBuildConfig.getFiles()) arguments ()

ajdtcore::Exiting execution(List org.aspectj.ajdt.internal.core.builder.AjBuildConfig.getFiles())

return: [C:\Documents and Settings\colyer\Hello.java]

// here we go! perform the compilation...

ajdtcore::Entering execution(void org.aspectj.ajdt.internal.core.builder.AjBuildManager.performCompilation(List))

arguments ([C:\Documents and Settings\colyer\Hello.java])

// =======================================================================================

// details of compilation step in separate annotated trace

// =======================================================================================

ajdtcore::Exiting execution(void org.aspectj.ajdt.internal.core.builder.AjBuildManager.performCompilation(List))

return: null

// record the fact that the compile succeeded

ajdtcore::Entering execution(void org.aspectj.ajdt.internal.core.builder.AjState.successfulCompile(AjBuildConfig))

arguments (org.aspectj.ajdt.internal.core.builder.AjBuildConfig@b1b4c3)

ajdtcore::Exiting execution(void org.aspectj.ajdt.internal.core.builder.AjState.successfulCompile(AjBuildConfig))

return: null

// perform any weaving and output the classfiles to disk

ajdtcore::Entering execution(boolean org.aspectj.ajdt.internal.core.builder.AjBuildManager.

weaveAndGenerateClassFiles())

arguments ()

// add any aspect class files in AjState to the weaver

ajdtcore::Entering execution(void org.aspectj.ajdt.internal.core.builder.AjBuildManager.

addAspectClassFilesToWeaver(List))

arguments ([UnwovenClassFile(C:\Documents and Settings\colyer\Hello.class, Hello)])

weaver::Entering execution(void org.aspectj.weaver.bcel.BcelWeaver.addClassFile(UnwovenClassFile))

arguments (UnwovenClassFile(C:\Documents and Settings\colyer\Hello.class, Hello))

weaver::Entering execution(BcelObjectType org.aspectj.weaver.bcel.BcelWorld.addSourceObjectType(JavaClass))

arguments (public class Hello extends java.lang.Object …
// resolve the type (as before) and add to the type map

// ...

weaver::Exiting execution(BcelObjectType org.aspectj.weaver.bcel.BcelWorld.addSourceObjectType(JavaClass))

return: org.aspectj.weaver.bcel.BcelObjectType@f1fad1

weaver::Exiting execution(void org.aspectj.weaver.bcel.BcelWeaver.addClassFile(UnwovenClassFile)) return: null

ajdtcore::Exiting execution(void org.aspectj.ajdt.internal.core.builder.AjBuildManager.

addAspectClassFilesToWeaver(List)) return: null

weaver::Entering execution(Collection org.aspectj.weaver.bcel.BcelWeaver.weave()) arguments ()

weaver::Entering execution(void org.aspectj.weaver.bcel.BcelWeaver.prepareForWeave()) arguments ()

// get each class and resolve it

weaver::Entering execution(String org.aspectj.weaver.bcel.UnwovenClassFile.getClassName()) arguments ()

weaver::Exiting execution(String org.aspectj.weaver.bcel.UnwovenClassFile.getClassName()) return: Hello

weaver::Entering execution(ResolvedTypeX org.aspectj.weaver.World.resolve(String)) arguments (Hello)

weaver::Exiting execution(ResolvedTypeX org.aspectj.weaver.World.resolve(String)) return: Hello

// if this class is an aspect, we may need to reweave the world

weaver::Entering execution(boolean org.aspectj.weaver.ResolvedTypeX.Name.isAspect()) arguments ()

weaver::Entering execution(boolean org.aspectj.weaver.bcel.BcelObjectType.isAspect()) arguments ()

weaver::Exiting execution(boolean org.aspectj.weaver.bcel.BcelObjectType.isAspect()) return: false

weaver::Exiting execution(boolean org.aspectj.weaver.ResolvedTypeX.Name.isAspect()) return: false

// get the list of entities to weave with

weaver::Entering execution(List org.aspectj.weaver.CrosscuttingMembersSet.getShadowMungers()) arguments ()

weaver::Exiting execution(List org.aspectj.weaver.CrosscuttingMembersSet.getShadowMungers()) return: []

weaver::Entering execution(List org.aspectj.weaver.CrosscuttingMembersSet.getTypeMungers()) arguments ()

weaver::Exiting execution(List org.aspectj.weaver.CrosscuttingMembersSet.getTypeMungers()) return: []

weaver::Entering execution(List org.aspectj.weaver.CrosscuttingMembersSet.getDeclareParents()) arguments ()

weaver::Exiting execution(List org.aspectj.weaver.CrosscuttingMembersSet.getDeclareParents()) return: []

weaver::Exiting execution(void org.aspectj.weaver.bcel.BcelWeaver.prepareForWeave()) return: null

// for each file to be woven, reset its BcelObjectType state

weaver::Entering execution(ResolvedTypeX org.aspectj.weaver.World.resolve(String)) arguments (Hello)

weaver::Exiting execution(ResolvedTypeX org.aspectj.weaver.World.resolve(String)) return: Hello

weaver::Entering execution(BcelObjectType org.aspectj.weaver.bcel.BcelWorld.getBcelObjectType(ResolvedTypeX))

arguments (Hello)

weaver::Exiting execution(BcelObjectType org.aspectj.weaver.bcel.BcelWorld.getBcelObjectType(ResolvedTypeX))

return: org.aspectj.weaver.bcel.BcelObjectType@f1fad1

weaver::Entering execution(void org.aspectj.weaver.bcel.BcelObjectType.resetState()) arguments ()

// set all member lists to null, then...

weaver::Entering execution(void org.aspectj.weaver.bcel.BcelObjectType.unpackAspectAttributes()) arguments ()

weaver::Exiting execution(void org.aspectj.weaver.bcel.BcelObjectType.unpackAspectAttributes()) return: null

weaver::Exiting execution(void org.aspectj.weaver.bcel.BcelObjectType.resetState()) return: null

// first pass over all files, calling weave on their resolved types - generates list of applicable

// inter-type mungers

weaver::Entering execution(String org.aspectj.weaver.bcel.UnwovenClassFile.getClassName()) arguments ()

weaver::Exiting execution(String org.aspectj.weaver.bcel.UnwovenClassFile.getClassName()) return: Hello

weaver::Entering execution(ResolvedTypeX org.aspectj.weaver.World.resolve(String)) arguments (Hello)

weaver::Exiting execution(ResolvedTypeX org.aspectj.weaver.World.resolve(String)) return: Hello

weaver::Entering execution(void org.aspectj.weaver.bcel.BcelWeaver.weave(ResolvedTypeX)) arguments (Hello)

weaver::Entering execution(void org.aspectj.weaver.ResolvedTypeX.clearInterTypeMungers()) arguments ()

weaver::Exiting execution(void org.aspectj.weaver.ResolvedTypeX.clearInterTypeMungers()) return: null

// process any declare parents (none in this case),

// then go through list of inter-type mungers seeing if they match on this type

// add all matching inter-type mungers to the list for this type

weaver::Exiting execution(void org.aspectj.weaver.bcel.BcelWeaver.weave(ResolvedTypeX)) return: null

// second pass, weaving into aspects...

weaver::Entering execution(String org.aspectj.weaver.bcel.UnwovenClassFile.getClassName()) arguments ()

weaver::Exiting execution(String org.aspectj.weaver.bcel.UnwovenClassFile.getClassName()) return: Hello

weaver::Entering execution(ResolvedTypeX org.aspectj.weaver.World.resolve(String)) arguments (Hello)

weaver::Exiting execution(ResolvedTypeX org.aspectj.weaver.World.resolve(String)) return: Hello

weaver::Entering execution(BcelObjectType org.aspectj.weaver.bcel.BcelWorld.getBcelObjectType(ResolvedTypeX))

arguments (Hello)

weaver::Exiting execution(BcelObjectType org.aspectj.weaver.bcel.BcelWorld.getBcelObjectType(ResolvedTypeX))

return: org.aspectj.weaver.bcel.BcelObjectType@f1fad1

weaver::Entering execution(boolean org.aspectj.weaver.bcel.BcelObjectType.isAspect()) arguments ()

// not an aspect in this case so we do nothing

weaver::Exiting execution(boolean org.aspectj.weaver.bcel.BcelObjectType.isAspect()) return: false

// third pass, weaving into non-aspects...

weaver::Entering execution(String org.aspectj.weaver.bcel.UnwovenClassFile.getClassName()) arguments ()

weaver::Exiting execution(String org.aspectj.weaver.bcel.UnwovenClassFile.getClassName()) return: Hello

weaver::Entering execution(ResolvedTypeX org.aspectj.weaver.World.resolve(String)) arguments (Hello)

weaver::Exiting execution(ResolvedTypeX org.aspectj.weaver.World.resolve(String)) return: Hello

weaver::Entering execution(BcelObjectType org.aspectj.weaver.bcel.BcelWorld.getBcelObjectType(ResolvedTypeX))

arguments (Hello)

weaver::Exiting execution(BcelObjectType org.aspectj.weaver.bcel.BcelWorld.getBcelObjectType(ResolvedTypeX))

return: org.aspectj.weaver.bcel.BcelObjectType@f1fad1

weaver::Entering execution(boolean org.aspectj.weaver.bcel.BcelObjectType.isAspect()) arguments ()

// not an aspect so weave...

weaver::Exiting execution(boolean org.aspectj.weaver.bcel.BcelObjectType.isAspect()) return: false

weaver::Entering execution(LazyClassGen org.aspectj.weaver.bcel.BcelWeaver.weave(UnwovenClassFile, BcelObjectType))

arguments (UnwovenClassFile(C:\Documents and Settings\colyer\Hello.class,

Hello),org.aspectj.weaver.bcel.BcelObjectType@f1fad1)

weaver::Entering execution(LazyClassGen org.aspectj.weaver.bcel.BcelWeaver.weave(

UnwovenClassFile, BcelObjectType, boolean))

arguments (UnwovenClassFile(C:\Documents and Settings\colyer\Hello.class,

Hello),org.aspectj.weaver.bcel.BcelObjectType@f1fad1,true)

// is this an ajc generated type? (has $ajc in name)

weaver::Entering execution(boolean org.aspectj.weaver.bcel.BcelObjectType.isSynthetic()) arguments ()

weaver::Exiting execution(boolean org.aspectj.weaver.bcel.BcelObjectType.isSynthetic()) return: false

// get the JavaClass

weaver::Entering execution(JavaClass org.aspectj.weaver.bcel.BcelObjectType.getJavaClass()) arguments ()

weaver::Exiting execution(JavaClass org.aspectj.weaver.bcel.BcelObjectType.getJavaClass())

return: public class Hello extends java.lang.Object …
// get the set of shadow mungers that may match

weaver::Entering execution(List org.aspectj.weaver.bcel.BcelWeaver.fastMatch(List, ResolvedTypeX))

arguments ([],Hello)

weaver::Exiting execution(List org.aspectj.weaver.bcel.BcelWeaver.fastMatch(List, ResolvedTypeX)) return: []

// get the set of inter-type mungers defined for the type

weaver::Entering execution(List org.aspectj.weaver.ResolvedTypeX.getInterTypeMungers()) arguments ()

weaver::Exiting execution(List org.aspectj.weaver.ResolvedTypeX.getInterTypeMungers()) return: []

// if there were either shadow or inter-type mungers matching, we would call BcelClassWeaver.weave at this

// point, but there aren't for compiling hello world.

// dump out the class file

weaver::Entering execution(void org.aspectj.weaver.bcel.BcelWeaver.dumpUnchanged(UnwovenClassFile))

arguments (UnwovenClassFile(C:\Documents and Settings\colyer\Hello.class, Hello))

weaver::Entering execution(void org.aspectj.weaver.bcel.UnwovenClassFile.writeUnchangedBytes()) arguments ()

weaver::Entering execution(byte[] org.aspectj.weaver.bcel.UnwovenClassFile.getBytes()) arguments ()

weaver::Exiting execution(byte[] org.aspectj.weaver.bcel.UnwovenClassFile.getBytes()) return: [B@15b55bc

weaver::Entering execution(void org.aspectj.weaver.bcel.UnwovenClassFile.writeWovenBytes(byte[], List))

arguments ([B@15b55bc,[])

weaver::Entering execution(void org.aspectj.weaver.bcel.UnwovenClassFile.writeChildClasses(List))

arguments ([])

weaver::Entering execution(void org.aspectj.weaver.bcel.UnwovenClassFile.deleteAllChildClasses())

arguments ()

weaver::Exiting execution(void org.aspectj.weaver.bcel.UnwovenClassFile.deleteAllChildClasses())

return: null

weaver::Exiting execution(void org.aspectj.weaver.bcel.UnwovenClassFile.writeChildClasses(List))

return: null

util::Entering execution(BufferedOutputStream org.aspectj.util.FileUtil.makeOutputStream(File))

arguments (C:\Documents and Settings\colyer\Hello.class)

util::Exiting execution(BufferedOutputStream org.aspectj.util.FileUtil.makeOutputStream(File))

return: java.io.BufferedOutputStream@8c858a

weaver::Exiting execution(void org.aspectj.weaver.bcel.UnwovenClassFile.writeWovenBytes(byte[], List))

return: null

weaver::Exiting execution(void org.aspectj.weaver.bcel.UnwovenClassFile.writeUnchangedBytes()) return: null

weaver::Exiting execution(void org.aspectj.weaver.bcel.BcelWeaver.dumpUnchanged(UnwovenClassFile)) return: null

weaver::Exiting execution(LazyClassGen org.aspectj.weaver.bcel.BcelWeaver.weave(

UnwovenClassFile, BcelObjectType)) return: null

weaver::Exiting execution(Collection org.aspectj.weaver.bcel.BcelWeaver.weave()) return: [Hello]

ajdtcore::Exiting execution(boolean org.aspectj.ajdt.internal.core.builder.AjBuildManager.

weaveAndGenerateClassFiles()) return: true

// should we generate structure model?

ajdtcore::Entering execution(boolean org.aspectj.ajdt.internal.core.builder.AjBuildConfig.isGenerateModelMode())

arguments ()

ajdtcore::Exiting execution(boolean org.aspectj.ajdt.internal.core.builder.AjBuildConfig.isGenerateModelMode())

return: false

ajdtcore::Exiting execution(boolean org.aspectj.ajdt.internal.core.builder.AjBuildManager.doBuild(

AjBuildConfig, IMessageHandler, boolean)) return: true

ajdtcore::Exiting execution(boolean org.aspectj.ajdt.internal.core.builder.AjBuildManager.batchBuild(

AjBuildConfig, IMessageHandler)) return: true