//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