From: acolyer Date: Thu, 24 Jul 2003 09:23:01 +0000 (+0000) Subject: annotated traces of ajc compilations X-Git-Tag: V1_1_1~207 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=fc3423e80f0640cd1e72e0f8f0efddc98f86793a;p=aspectj.git annotated traces of ajc compilations --- diff --git a/docs/developer/traces/ajc_batchBuild_annotated.htm b/docs/developer/traces/ajc_batchBuild_annotated.htm new file mode 100644 index 000000000..50f1062c8 --- /dev/null +++ b/docs/developer/traces/ajc_batchBuild_annotated.htm @@ -0,0 +1,2188 @@ + + + + + + + + +//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

+ +
+ + + + diff --git a/docs/developer/traces/ajc_hello_annotated.htm b/docs/developer/traces/ajc_hello_annotated.htm new file mode 100644 index 000000000..d4577f302 --- /dev/null +++ b/docs/developer/traces/ajc_hello_annotated.htm @@ -0,0 +1,951 @@ + + + + + + + + +ajc command line, annotated trace + + + + + + + +
+ +

This is an annotated trace of an ajc compilation of +HelloWorld (no aspects involved).

+ +

 

+ +

ajdtcore::Entering execution(void +org.aspectj.tools.ajc.Main.main(String[]))

+ +

                   +arguments ([Ljava.lang.String;@1ac1fe4)

+ +

 

+ +

  // ---------------------------------------------------------------------------

+ +

  // create an ajc.Main instance...

+ +

  // +---------------------------------------------------------------------------

+ +

  +ajdtcore::Entering execution(org.aspectj.tools.ajc.Main()) arguments ()

+ +

 

+ +

    // command controller is used for repeated compilations +in incremental mode

+ +

   

+ +

    +ajdtcore::Entering +execution(org.aspectj.tools.ajc.Main.CommandController()) arguments ()

+ +

    +ajdtcore::Exiting execution(org.aspectj.tools.ajc.Main.CommandController())

+ +

   

+ +

    // message handler is used to accumulate +messages resulting from the compilation

+ +

 

+ +

    +bridge::Entering execution(org.aspectj.bridge.MessageHandler(boolean)) +arguments (true)

+ +

      +bridge::Entering execution(void org.aspectj.bridge.MessageHandler.init(boolean)) +arguments (true)

+ +

      +bridge::Exiting execution(void +org.aspectj.bridge.MessageHandler.init(boolean)) return: null

+ +

    bridge::Exiting +execution(org.aspectj.bridge.MessageHandler(boolean))\
+
+

+ +

  ajdtcore::Exiting +execution(org.aspectj.tools.ajc.Main())

+ +

 

+ +

  // +----------------------------------------------------------------------------

+ +

  // run it!

+ +

  // +----------------------------------------------------------------------------

+ +

  +ajdtcore::Entering execution(void org.aspectj.tools.ajc.Main.runMain(String[], +boolean))

+ +

                     +arguments ([Ljava.lang.String;@1ac1fe4,true)

+ +

 

+ +

    // set message +verboseness according to presence of -verbose arg

+ +

 

+ +

    // run

+ +

    // -------------

+ +

    +ajdtcore::Entering execution(void org.aspectj.tools.ajc.Main.run(String[], +IMessageHolder))

+ +

                       +arguments ([Ljava.lang.String;@1ac1fe4,MessageHandler: no messages)

+ +

 

+ +

      // initialise the command controller - +strips out any incremental compilation options, leaving rest intact

+ +

      +ajdtcore::Entering execution(String[] +org.aspectj.tools.ajc.Main.CommandController.init(String[], +IMessageHandler))   

+ +

                         +arguments ([Ljava.lang.String;@1ac1fe4,MessageHandler: no messages)

+ +

 

+ +

      // create a command object for +compilation (an ICommand)

+ +

      +bridge::Entering execution(ICommand +org.aspectj.bridge.ReflectionFactory.makeCommand(String, IMessageHandler))

+ +

                       +arguments (org.aspectj.ajdt.ajc.AjdtCommand,MessageHandler: no messages)

+ +

        ajdtcore::Entering +execution(org.aspectj.ajdt.ajc.AjdtCommand()) arguments ()

+ +

        +ajdtcore::Exiting execution(org.aspectj.ajdt.ajc.AjdtCommand())

+ +

        ...

+ +

      +bridge::Exiting execution(ICommand +org.aspectj.bridge.ReflectionFactory.makeCommand(String, IMessageHandler))

+ +

                      +return: org.aspectj.ajdt.ajc.AjdtCommand@11c8a71

+ +

 

+ +

      // +----------------------------------------------------------------------------------------------------

+ +

      // run the command... all the +command-line args except verbosity and incremental options are passed in

+ +

      // +----------------------------------------------------------------------------------------------------

+ +

      +ajdtcore::Entering execution(boolean +org.aspectj.ajdt.ajc.AjdtCommand.runCommand(String[], IMessageHandler))

+ +

                         +arguments ([Ljava.lang.String;@1ac1fe4,MessageHandler: no messages)

+ +

     

+ +

 

+ +

      // create a build manager that sends messages to the given +message holder

+ +

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

+ +

                         +arguments (MessageHandler: no messages)

+ +

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

+ +

 

+ +

 

+ +

      // call do-command - this handles both one-off and incremental +(repeat) compiles

+ +

      ajdtcore::Entering +execution(boolean org.aspectj.ajdt.ajc.AjdtCommand.doCommand(IMessageHandler, +boolean))

+ +

                         +arguments (MessageHandler: no +messages,false)

+ +

 

+ +

          // create build configuration object for this build by +parsing command-line arguments

+ +

          +ajdtcore::Entering execution(AjBuildConfig +org.aspectj.ajdt.ajc.AjdtCommand.genBuildConfig(String[],

+ +

                                         CountingMessageHandler)) +

+ +

                             arguments +([Ljava.lang.String;@76cbf7,MessageHandler: no messages)

+ +

 

+ +

            // create a build +arg parser, this is actually a subclass of the eclipse batch compiler

+ +

            // which is org.eclipse.jdt.internal.compiler.batch.Main

+ +

            +ajdtcore::Entering execution(org.aspectj.ajdt.ajc.BuildArgParser()) arguments ()

+ +

            +ajdtcore::Exiting execution(org.aspectj.ajdt.ajc.BuildArgParser())

+ +

 

+ +

            // ask the parser +to create the build configuration object

+ +

            +ajdtcore::Entering execution(AjBuildConfig +org.aspectj.ajdt.ajc.BuildArgParser.genBuildConfig(

+ +

                                          +String[], IMessageHandler))

+ +

                               arguments +([Ljava.lang.String;@76cbf7,MessageHandler: no messages)

+ +

 

+ +

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

+ +

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

+ +

              ajdtcore::Entering +execution(org.aspectj.ajdt.ajc.BuildArgParser.AjcConfigParser(

+ +

                                    BuildArgParser, AjBuildConfig, +IMessageHandler))

+ +

                                 arguments (org.aspectj.ajdt.ajc.BuildArgParser@126804e,

+ +

                                            org.aspectj.ajdt.internal.core.builder.AjBuildConfig@b1b4c3,

+ +

                                            +MessageHandler: no messages)

+ +

              ajdtcore::Exiting +execution(org.aspectj.ajdt.ajc.BuildArgParser.AjcConfigParser(

+ +

                                            BuildArgParser, +AjBuildConfig, IMessageHandler))

+ +

              +util::Entering execution(void +org.aspectj.util.ConfigParser.parseCommandLine(String[]))

+ +

                             arguments +([Ljava.lang.String;@76cbf7)

+ +

                // build a linked list of +arguments and then...

+ +

                util::Entering execution(void +org.aspectj.util.ConfigParser.parseArgs(LinkedList))

+ +

                               arguments +([org.aspectj.util.ConfigParser$Arg@72ffb])

+ +

                // ajc options +are handled by BuildArgParser.AjcConfigParser.parseOption

+ +

                // all other args (source +files, lst files, imported argfiles) are handled in ConfigParser superclass

+ +

                +util::Exiting execution(void +org.aspectj.util.ConfigParser.parseArgs(LinkedList)) return: null

+ +

              +util::Exiting execution(void +org.aspectj.util.ConfigParser.parseCommandLine(String[])) return: null

+ +

 

+ +

              // get +the list of files to be compiled

+ +

              util::Entering execution(List +org.aspectj.util.ConfigParser.getFiles()) arguments ()

+ +

              util::Exiting execution(List +org.aspectj.util.ConfigParser.getFiles()) return:

+ +

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

+ +

 

+ +

              // get any remaining arguments... +these will be passed up to the eclipse batch compiler

+ +

              ajdtcore::Entering execution(List +org.aspectj.ajdt.ajc.BuildArgParser.AjcConfigParser.getUnparsedArgs())

+ +

                                 arguments ()

+ +

              +ajdtcore::Exiting execution(List +org.aspectj.ajdt.ajc.BuildArgParser.AjcConfigParser.getUnparsedArgs())

+ +

                                return: []

+ +

 

+ +

              // configure the batch compiler +(superclass) with any as yet unparsed args

+ +

              +jdtcore::Entering execution(void +org.eclipse.jdt.internal.compiler.batch.Main.configure(String[]))

+ +

                                arguments +([Ljava.lang.String;@1df38fd)

+ +

              +jdtcore::Exiting execution(void +org.eclipse.jdt.internal.compiler.batch.Main.configure(String[]))

+ +

                               return: null

+ +

 

+ +

              // tell the AjBuildConfig what it has to +build

+ +

              +ajdtcore::Entering execution(void +org.aspectj.ajdt.internal.core.builder.AjBuildConfig.setFiles(List))

+ +

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

+ +

              +ajdtcore::Exiting execution(void +org.aspectj.ajdt.internal.core.builder.AjBuildConfig.setFiles(List))

+ +

                                return: null

+ +

 

+ +

              // calculate the +classpath for compilation

+ +

              +ajdtcore::Entering execution(List +org.aspectj.ajdt.ajc.BuildArgParser.getClasspath(

+ +

                                                   +BuildArgParser.AjcConfigParser))

+ +

                                 arguments +(org.aspectj.ajdt.ajc.BuildArgParser$AjcConfigParser@126e85f)

+ +

              ...

+ +

              +ajdtcore::Exiting execution(List +org.aspectj.ajdt.ajc.BuildArgParser.getClasspath(

+ +

                                            +BuildArgParser.AjcConfigParser))

+ +

                                return:

+ +

                       [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]

+ +

 

+ +

              // tell the build config what we +learnt...

+ +

              ajdtcore::Entering execution(void +org.aspectj.ajdt.internal.core.builder.AjBuildConfig.setClasspath(List))

+ +

                                 arguments (...)

+ +

              +ajdtcore::Exiting execution(void +org.aspectj.ajdt.internal.core.builder.AjBuildConfig.setClasspath(List))

+ +

                                return: null

+ +

 

+ +

              // ensure we always generate +debug info at this phase

+ +

              +ajdtcore::Entering execution(void +org.aspectj.ajdt.ajc.BuildArgParser.setDebugOptions()) arguments ()

+ +

              +ajdtcore::Exiting execution(void +org.aspectj.ajdt.ajc.BuildArgParser.setDebugOptions()) return: null

+ +

 

+ +

              // give the build config the java options +that were parsed by the eclipse batch compiler

+ +

              +ajdtcore::Entering execution(void +org.aspectj.ajdt.internal.core.builder.AjBuildConfig.setJavaOptions(Map))

+ +

                       arguments ( {org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=ignore, +

+ +

                                    +org.eclipse.jdt.core.compiler.compliance=1.3,

+ +

                                    +org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled, +

+ +

                                    +org.eclipse.jdt.core.compiler.codegen.unusedLocal=optimize out,

+ +

                                    +org.eclipse.jdt.core.compiler.problem.deprecation=ignore,                                                

+ +

                                    +org.eclipse.jdt.core.compiler.problem.

+ +

                                               +unusedParameterWhenImplementingAbstract=disabled,

+ +

                                    +org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore, +

+ +

                                    +org.eclipse.jdt.core.compiler.problem.unusedLocal=ignore,

+ +

                                    +org.eclipse.jdt.core.compiler.problem.unusedImport=ignore,

+ +

                                    org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=ignore, +

+ +

                                    +org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore,

+ +

                                    +org.eclipse.jdt.core.compiler.debug.localVariable=generate,

+ +

                                    +org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=ignore, +

+ +

                                    +org.eclipse.jdt.core.compiler.debug.sourceFile=generate,

+ +

                                    org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=ignore, +

+ +

                                    +org.eclipse.jdt.core.compiler.debug.lineNumber=generate,

+ +

                                    +org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore,

+ +

                                    +org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=ignore,

+ +

                                    +org.eclipse.jdt.core.compiler.problem.assertIdentifier=ignore,

+ +

                                    org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=ignore, +

+ +

                                    +org.eclipse.jdt.core.compiler.problem.invalidImport=error,

+ +

                                    +org.eclipse.jdt.core.compiler.problem.unreachableCode=error,

+ +

                                    +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.1,

+ +

                                    +org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=ignore, +

+ +

                                    org.eclipse.jdt.core.compiler.source=1.3})

+ +

              +ajdtcore::Exiting execution(void +org.aspectj.ajdt.internal.core.builder.AjBuildConfig.setJavaOptions(Map))

+ +

                                return: null

+ +

 

+ +

            +ajdtcore::Exiting execution(AjBuildConfig +org.aspectj.ajdt.ajc.BuildArgParser.genBuildConfig(

+ +

                                                         +String[], IMessageHandler))

+ +

                              return: +org.aspectj.ajdt.internal.core.builder.AjBuildConfig@b1b4c3

+ +

 

+ +

         ajdtcore::Exiting execution(AjBuildConfig +org.aspectj.ajdt.ajc.AjdtCommand.genBuildConfig(

+ +

                                       String[], +CountingMessageHandler))

+ +

                           +return: org.aspectj.ajdt.internal.core.builder.AjBuildConfig@b1b4c3

+ +

 

+ +

 

+ +

         // +------------------------------------------------------------------------------------------

+ +

         // here we go... kick off a batch +build, if we were in incremental mode this would be a call

+ +

         // to AjBuildManager.incrementalBuild() +instead

+ +

         // +------------------------------------------------------------------------------------------

+ +

         +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)

+ +

 

+ +

            // *********************************************

+ +

            // what happens here is captured separately!!

+ +

            // see ajc_batchBuild_annotated.htm

+ +

            // *********************************************

+ +

 

+ +

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

+ +

                                                +AjBuildConfig, IMessageHandler))

+ +

                           +return: true

+ +

 

+ +

       +ajdtcore::Exiting execution(boolean +org.aspectj.ajdt.ajc.AjdtCommand.doCommand(IMessageHandler, boolean))

+ +

                         +return: true

+ +

     +ajdtcore::Exiting execution(boolean +org.aspectj.ajdt.ajc.AjdtCommand.runCommand(String[], IMessageHandler))

+ +

                       +return: true

+ +

 

+ +

     // and we're back in Main.run()...

+ +

     // report the results of the compilation

+ +

     +ajdtcore::Entering execution(boolean +org.aspectj.tools.ajc.Main.report(boolean, IMessageHolder))

+ +

               +arguments (true,MessageHandler: no messages)

+ +

     +ajdtcore::Exiting execution(boolean org.aspectj.tools.ajc.Main.report(boolean, +IMessageHolder))

+ +

               +return: true

+ +

 

+ +

   +ajdtcore::Exiting execution(void +org.aspectj.tools.ajc.Main.run(String[], IMessageHolder)) return: null

+ +

 

+ +

ajdtcore::Entering execution(void +org.aspectj.tools.ajc.Main.systemExit(IMessageHolder))

+ +

                   +arguments (MessageHandler: no messages)

+ +

 

+ +

// its all over!

+ +
+ + + +