]> source.dussan.org Git - aspectj.git/commitdiff
Updates to better cope with future JDKs
authorAndy Clement <aclement@pivotal.io>
Thu, 9 Nov 2017 21:14:02 +0000 (13:14 -0800)
committerAndy Clement <aclement@pivotal.io>
Thu, 9 Nov 2017 21:14:02 +0000 (13:14 -0800)
The version handling in LangUtil has been overhauled
to cope better with post 1.8 releases (JDK9 and JDK10 or 18.3
or whatever they call it). As part of this moved
to treating JDK9 as '9' rather than '1.9'. Also removed
duplicate version processing logic and had that defer to
the one place in LangUtil where we now deal with it.

Includes some generics tidyup in ajdoc. More ajdoc work
is necessary for Java10 because it removes the standard doclet
(old style). However trying to invoke the internal Javadoc
handler in Java10 is failing due to module visibility rules.

27 files changed:
ajdoc/src/org/aspectj/tools/ajdoc/HtmlDecorator.java
ajdoc/src/org/aspectj/tools/ajdoc/JavadocRunner.java
ajdoc/src/org/aspectj/tools/ajdoc/Main.java
ajdoc/src/org/aspectj/tools/ajdoc/StructureUtil.java
ajdoc/testsrc/org/aspectj/tools/ajdoc/AjdocTestCase.java
ajdoc/testsrc/org/aspectj/tools/ajdoc/CoverageTestCase.java
org.aspectj.matcher/src/org/aspectj/weaver/World.java
testing/newsrc/org/aspectj/testing/AjcTest.java
testing/newsrc/org/aspectj/testing/OutputSpec.java
tests/src/org/aspectj/systemtest/ajc150/ajc150.xml
tests/src/org/aspectj/systemtest/ajc154/ajc154.xml
tests/src/org/aspectj/systemtest/ajc1611/newfeatures-tests.xml
tests/src/org/aspectj/systemtest/ajc1612/ajc1612.xml
tests/src/org/aspectj/systemtest/ajc169/intertype.xml
tests/src/org/aspectj/systemtest/ajc170/ajc170.xml
tests/src/org/aspectj/systemtest/ajc173/ajc173.xml
tests/src/org/aspectj/systemtest/ajc190/Ajc190Tests.java
tests/src/org/aspectj/systemtest/ajc190/ajc190_from150.xml
util/src/org/aspectj/util/LangUtil.java
weaver/testdata/StaticTjpBeforeHelloWorld.1.9.txt [deleted file]
weaver/testdata/StaticTjpBeforeHelloWorld.9.0.txt [new file with mode: 0644]
weaver/testdata/TjpAround2HelloWorld.1.9.txt [deleted file]
weaver/testdata/TjpAround2HelloWorld.9.0.txt [new file with mode: 0644]
weaver/testdata/TjpAroundHelloWorld.1.9.txt [deleted file]
weaver/testdata/TjpAroundHelloWorld.9.0.txt [new file with mode: 0644]
weaver/testdata/TjpBeforeHelloWorld.1.9.txt [deleted file]
weaver/testdata/TjpBeforeHelloWorld.9.0.txt [new file with mode: 0644]

index f873c3e55bc6379765d81530b6bea2c38fcf3a95..ec492fce978ff0fee677c2c9eefbf962b3574a0a 100644 (file)
@@ -48,7 +48,7 @@ class HtmlDecorator {
        private static final String ITD_FIELD_SUMMARY = "Inter-Type Field Summary";
        private static final String ITD_CONSTRUCTOR_SUMMARY = "Inter-Type Constructor Summary";
 
-       static List visibleFileList = new ArrayList();
+       static List<String> visibleFileList = new ArrayList<String>();
        static Hashtable declIDTable = null;
        static File rootDir = null;
        static String docVisibilityModifier;
@@ -291,22 +291,22 @@ class HtmlDecorator {
        }
 
        static void addAspectDocumentation(IProgramElement node, StringBuffer fileBuffer, int index) {
-               List pointcuts = new ArrayList();
-               List advice = new ArrayList();
-               List declares = new ArrayList();
-               List methodsDeclaredOn = StructureUtil.getDeclareInterTypeTargets(node, IProgramElement.Kind.INTER_TYPE_METHOD);
+               List<IProgramElement> pointcuts = new ArrayList<IProgramElement>();
+               List<IProgramElement> advice = new ArrayList<IProgramElement>();
+               List<IProgramElement> declares = new ArrayList<IProgramElement>();
+               List<IProgramElement> methodsDeclaredOn = StructureUtil.getDeclareInterTypeTargets(node, IProgramElement.Kind.INTER_TYPE_METHOD);
                if (methodsDeclaredOn != null && !methodsDeclaredOn.isEmpty()) {
                        insertDeclarationsSummary(fileBuffer, methodsDeclaredOn, ITD_METHOD_SUMMARY, index);
                }
-               List fieldsDeclaredOn = StructureUtil.getDeclareInterTypeTargets(node, IProgramElement.Kind.INTER_TYPE_FIELD);
+               List<IProgramElement> fieldsDeclaredOn = StructureUtil.getDeclareInterTypeTargets(node, IProgramElement.Kind.INTER_TYPE_FIELD);
                if (fieldsDeclaredOn != null && !fieldsDeclaredOn.isEmpty()) {
                        insertDeclarationsSummary(fileBuffer, fieldsDeclaredOn, ITD_FIELD_SUMMARY, index);
                }
-               List constDeclaredOn = StructureUtil.getDeclareInterTypeTargets(node, IProgramElement.Kind.INTER_TYPE_CONSTRUCTOR);
+               List<IProgramElement> constDeclaredOn = StructureUtil.getDeclareInterTypeTargets(node, IProgramElement.Kind.INTER_TYPE_CONSTRUCTOR);
                if (fieldsDeclaredOn != null && !constDeclaredOn.isEmpty()) {
                        insertDeclarationsSummary(fileBuffer, constDeclaredOn, ITD_CONSTRUCTOR_SUMMARY, index);
                }
-               for (Iterator it = node.getChildren().iterator(); it.hasNext();) {
+               for (Iterator<IProgramElement> it = node.getChildren().iterator(); it.hasNext();) {
                        IProgramElement member = (IProgramElement) it.next();
                        if (member.getKind().equals(IProgramElement.Kind.POINTCUT)) {
                                pointcuts.add(member);
@@ -329,17 +329,17 @@ class HtmlDecorator {
                        insertDeclarationsDetails(fileBuffer, advice, ADVICE_DETAIL, index);
                }
                // add the 'aspect declarations' information against the type
-               List parentsDeclaredOn = StructureUtil.getDeclareInterTypeTargets(node, IProgramElement.Kind.DECLARE_PARENTS);
+               List<IProgramElement> parentsDeclaredOn = StructureUtil.getDeclareInterTypeTargets(node, IProgramElement.Kind.DECLARE_PARENTS);
                if (parentsDeclaredOn != null && parentsDeclaredOn.size() > 0) {
                        decorateDocWithRel(node, fileBuffer, index, parentsDeclaredOn, HtmlRelationshipKind.ASPECT_DECLARATIONS);
                }
                // add the 'annotated by' information against the type
-               List annotatedBy = StructureUtil.getTargets(node, IRelationship.Kind.DECLARE_INTER_TYPE, "annotated by");
+               List<String> annotatedBy = StructureUtil.getTargets(node, IRelationship.Kind.DECLARE_INTER_TYPE, "annotated by");
                if (annotatedBy != null && annotatedBy.size() > 0) {
                        decorateDocWithRel(node, fileBuffer, index, annotatedBy, HtmlRelationshipKind.ANNOTATED_BY);
                }
                // add the 'advised by' information against the type
-               List advisedBy = StructureUtil.getTargets(node, IRelationship.Kind.ADVICE);
+               List<String> advisedBy = StructureUtil.getTargets(node, IRelationship.Kind.ADVICE);
                if (advisedBy != null && advisedBy.size() > 0) {
                        decorateDocWithRel(node, fileBuffer, index, advisedBy, HtmlRelationshipKind.ADVISED_BY);
                }
@@ -621,16 +621,16 @@ class HtmlDecorator {
        }
 
        static void decorateMemberDocumentation(IProgramElement node, StringBuffer fileContentsBuffer, int index) {
-               List targets = StructureUtil.getTargets(node, IRelationship.Kind.ADVICE);
+               List<String> targets = StructureUtil.getTargets(node, IRelationship.Kind.ADVICE);
                decorateDocWithRel(node, fileContentsBuffer, index, targets, HtmlRelationshipKind.ADVISED_BY);
 
-               List warnings = StructureUtil.getTargets(node, IRelationship.Kind.DECLARE, "matches declare");
+               List<String> warnings = StructureUtil.getTargets(node, IRelationship.Kind.DECLARE, "matches declare");
                decorateDocWithRel(node, fileContentsBuffer, index, warnings, HtmlRelationshipKind.MATCHES_DECLARE);
 
-               List softenedBy = StructureUtil.getTargets(node, IRelationship.Kind.DECLARE, "softened by");
+               List<String> softenedBy = StructureUtil.getTargets(node, IRelationship.Kind.DECLARE, "softened by");
                decorateDocWithRel(node, fileContentsBuffer, index, softenedBy, HtmlRelationshipKind.SOFTENED_BY);
 
-               List annotatedBy = StructureUtil.getTargets(node, IRelationship.Kind.DECLARE_INTER_TYPE, "annotated by");
+               List<String> annotatedBy = StructureUtil.getTargets(node, IRelationship.Kind.DECLARE_INTER_TYPE, "annotated by");
                decorateDocWithRel(node, fileContentsBuffer, index, annotatedBy, HtmlRelationshipKind.ANNOTATED_BY);
        }
 
index b0ab3cd21501f7ce746b85f13ca687356b85079e..37b727175b9d35f979d6870a955d623c7590e6ba 100644 (file)
 
 package org.aspectj.tools.ajdoc;
 
+import java.io.IOException;
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 
+import org.aspectj.util.LangUtil;
+
 /**
  * @author Mik Kersten
  */
@@ -62,7 +65,12 @@ class JavadocRunner {
                // defaultSecurityManager.checkPermission( permission, context );
                // }
                // } );
-
+               
+               // Need to do something different on Java > 9 due to removal of standard doclet I think
+//             if (LangUtil.is19VMOrGreater()) {
+//                     // Not visible according to module rules...
+//                     clazz = Class.forName("jdk.javadoc.internal.tool.Main");
+//             }
                try {
                        // for JDK 1.4 and above call the execute method...
                        Class jdMainClass = com.sun.tools.javadoc.Main.class;
index 5c9047dcb982a7bdc9014451c3aefab7d84e3bca..e8f1472b5f674042477e285024ebc9c81a253b50 100644 (file)
@@ -47,24 +47,24 @@ public class Main implements Config {
        private static final String FAIL_MESSAGE = "> compile failed, exiting ajdoc";
 
        /** Command line options. */
-       static Vector options;
+       static Vector<String> options;
 
        /** Options to pass to ajc. */
-       static Vector ajcOptions;
+       static Vector<String> ajcOptions;
 
        /** All of the files to be processed by ajdoc. */
-       static Vector filenames;
+       static Vector<String> filenames;
 
        /** List of files to pass to javadoc. */
-       static Vector fileList;
+       static Vector<String> fileList;
 
        /** List of packages to pass to javadoc. */
-       static Vector packageList;
+       static Vector<String> packageList;
 
        /** Default to package visiblity. */
        static String docModifier = "package";
 
-       static Vector sourcepath;
+       static Vector<String> sourcepath;
 
        static boolean verboseMode = false;
        static boolean packageMode = false;
@@ -85,13 +85,13 @@ public class Main implements Config {
        private static String outputWorkingDir = Config.WORKING_DIR;
 
        public static void clearState() {
-               options = new Vector();
-               ajcOptions = new Vector();
-               filenames = new Vector();
-               fileList = new Vector();
-               packageList = new Vector();
+               options = new Vector<String>();
+               ajcOptions = new Vector<String>();
+               filenames = new Vector<String>();
+               fileList = new Vector<String>();
+               packageList = new Vector<String>();
                docModifier = "package";
-               sourcepath = new Vector();
+               sourcepath = new Vector<String>();
                verboseMode = false;
                packageMode = false;
                rootDir = null;
@@ -169,7 +169,7 @@ public class Main implements Config {
         * package-summary properly.
         */
        private static void packageHTML(AsmManager model, File[] inputFiles) throws IOException {
-               ArrayList dirList = new ArrayList();
+               ArrayList<String> dirList = new ArrayList<String>();
                for (int i = 0; i < inputFiles.length; i++) {
                        String packageName = StructureUtil.getPackageDeclarationFromFile(model, inputFiles[i]);
                        // Only copy the package.html file once.
@@ -192,7 +192,7 @@ public class Main implements Config {
                                String pathName = outputWorkingDir + File.separator + packageName.replace('.', File.separatorChar);
                                File packageDir = new File(pathName);
                                if (!packageDir.exists()) {
-                                       dirList.add(packageDir);
+                                       dirList.add(packageName);
                                        continue;
                                }
                                packageName = packageName.replace('.', '/'); // !!!
@@ -273,7 +273,6 @@ public class Main implements Config {
                                javadocargs[options.size() + k] = StructureUtil.translateAjPathName(signatureFiles[k].getCanonicalPath());
                        }
                }
-
                JavadocRunner.callJavadoc(javadocargs);
        }
 
@@ -345,8 +344,8 @@ public class Main implements Config {
                }
        }
 
-       static Vector getSourcePath() {
-               Vector sourcePath = new Vector();
+       static Vector<String> getSourcePath() {
+               Vector<String> sourcePath = new Vector<String>();
                boolean found = false;
                for (int i = 0; i < options.size(); i++) {
                        String currOption = (String) options.elementAt(i);
@@ -455,14 +454,14 @@ public class Main implements Config {
                                String line = "";
                                line = br.readLine();
                                StringTokenizer st = new StringTokenizer(line, " ");
-                               List argList = new ArrayList();
+                               List<String> argList = new ArrayList<String>();
                                while (st.hasMoreElements()) {
-                                       argList.add(st.nextElement());
+                                       argList.add(st.nextToken());
                                }
                                // System.err.println(argList);
                                args = new String[argList.size()];
                                int counter = 0;
-                               for (Iterator it = argList.iterator(); it.hasNext();) {
+                               for (Iterator<String> it = argList.iterator(); it.hasNext();) {
                                        args[counter] = (String) it.next();
                                        counter++;
                                }
@@ -474,7 +473,7 @@ public class Main implements Config {
                                ioe.printStackTrace();
                        }
                }
-               List vargs = new LinkedList(Arrays.asList(args));
+               List<String> vargs = new LinkedList<String>(Arrays.asList(args));
                vargs.add("-Xset:minimalModel=false");
                parseArgs(vargs, new File(".")); // !!!
 
@@ -488,7 +487,7 @@ public class Main implements Config {
                arg = arg + File.pathSeparator; // makes things easier for ourselves
                StringTokenizer tokenizer = new StringTokenizer(arg, File.pathSeparator);
                while (tokenizer.hasMoreElements()) {
-                       sourcepath.addElement(tokenizer.nextElement());
+                       sourcepath.addElement(tokenizer.nextToken());
                }
        }
 
@@ -705,7 +704,7 @@ public class Main implements Config {
        }
 
        static void expandAtSignFile(String filename, File currentWorkingDir) {
-               List result = new LinkedList();
+               List<String> result = new LinkedList<String>();
 
                File atFile = qualifiedFile(filename, currentWorkingDir);
                String atFileParent = atFile.getParent();
@@ -730,6 +729,7 @@ public class Main implements Config {
                                        continue;
                                result.add(line);
                        }
+                       stream.close();
                } catch (IOException e) {
                        System.err.println("Error while reading the @ file " + atFile.getPath() + ".\n" + e);
                        System.exit(-1);
index 6f9ad7790af592b34ef644076e664e6d6cccec7f..3d866b625fbe0ca14c5fcdbd836bf1b426401d54 100644 (file)
@@ -31,7 +31,7 @@ public class StructureUtil {
         * 
         * @return null if a relationship of that kind is not found
         */
-       public static List /* String */getTargets(IProgramElement node, IRelationship.Kind kind) {
+       public static List<String> getTargets(IProgramElement node, IRelationship.Kind kind) {
                return getTargets(node, kind, null);
        }
 
@@ -41,21 +41,21 @@ public class StructureUtil {
         * 
         * @return null if a relationship of that kind is not found
         */
-       public static List /* String */getTargets(IProgramElement node, IRelationship.Kind kind, String relName) {
-               List relations = new ArrayList();
-               List rels = node.getModel().getRelationshipMap().get(node);
+       public static List<String> getTargets(IProgramElement node, IRelationship.Kind kind, String relName) {
+               List<IRelationship> relations = new ArrayList<IRelationship>();
+               List<IRelationship> rels = node.getModel().getRelationshipMap().get(node);
                if (rels != null) {
                        relations.addAll(rels);
                }
-               for (Iterator iter = node.getChildren().iterator(); iter.hasNext();) {
+               for (Iterator<IProgramElement> iter = node.getChildren().iterator(); iter.hasNext();) {
                        IProgramElement child = (IProgramElement) iter.next();
                        // if we're not a type, or if we are and the child is code, then
                        // we want to get the relationships for this child - this means that the
                        // correct relationships appear against the type in the ajdoc
                        if (!node.getKind().isType() || child.getKind().equals(IProgramElement.Kind.CODE)) {
-                               List childRelations = node.getModel().getRelationshipMap().get(child);
+                               List<IRelationship> childRelations = node.getModel().getRelationshipMap().get(child);
                                if (childRelations != null) {
-                                       for (Iterator iterator = childRelations.iterator(); iterator.hasNext();) {
+                                       for (Iterator<IRelationship> iterator = childRelations.iterator(); iterator.hasNext();) {
                                                IRelationship rel = (IRelationship) iterator.next();
                                                if (!relations.contains(rel)) {
                                                        relations.add(rel);
@@ -66,13 +66,12 @@ public class StructureUtil {
                }
                if (relations == null || relations.isEmpty())
                        return null;
-               List targets = new ArrayList();
-               for (Iterator it = relations.iterator(); it.hasNext();) {
+               List<String> targets = new ArrayList<String>();
+               for (Iterator<IRelationship> it = relations.iterator(); it.hasNext();) {
                        IRelationship rtn = (IRelationship) it.next();
                        if (rtn.getKind().equals(kind) && ((relName != null && relName.equals(rtn.getName())) || relName == null)) {
-                               List targs = rtn.getTargets();
-                               for (Iterator iter = targs.iterator(); iter.hasNext();) {
-                                       String element = (String) iter.next();
+                               List<String> targs = rtn.getTargets();
+                               for (String element: targs) {
                                        if (!targets.contains(element)) {
                                                targets.add(element);
                                        }
@@ -82,14 +81,13 @@ public class StructureUtil {
                return targets;
        }
 
-       static List /* IProgramElement */getDeclareInterTypeTargets(IProgramElement node, IProgramElement.Kind kind) {
-               List targets = new ArrayList();
-               List stringTargets = StructureUtil.getTargets(node, IRelationship.Kind.DECLARE_INTER_TYPE);
+       static List<IProgramElement> getDeclareInterTypeTargets(IProgramElement node, IProgramElement.Kind kind) {
+               List<IProgramElement> targets = new ArrayList<IProgramElement>();
+               List<String> stringTargets = StructureUtil.getTargets(node, IRelationship.Kind.DECLARE_INTER_TYPE);
                if (stringTargets == null) {
                        return null;
                }
-               for (Iterator iter = stringTargets.iterator(); iter.hasNext();) {
-                       String element = (String) iter.next();
+               for (String element: stringTargets) {
                        IProgramElement ipe = node.getModel().getHierarchy().findElementForHandle(element);
                        if (ipe != null && ipe.getKind().equals(kind)) {
                                targets.add(ipe);
@@ -98,13 +96,12 @@ public class StructureUtil {
                return targets;
        }
 
-       public static List/* String */getDeclareTargets(IProgramElement node) {
-               List relations = node.getModel().getRelationshipMap().get(node);
-               List targets = null;
+       public static List<String> getDeclareTargets(IProgramElement node) {
+               List<IRelationship> relations = node.getModel().getRelationshipMap().get(node);
+               List<String> targets = null;
                if (relations == null)
                        return null;
-               for (Iterator it = relations.iterator(); it.hasNext();) {
-                       IRelationship rtn = (IRelationship) it.next();
+               for (IRelationship rtn: relations) {
                        if (rtn.getKind().isDeclareKind()) {
                                targets = rtn.getTargets();
                        }
index afe288a3b30712b7ba0d6335293da2ba876987aa..ea9a8187547905db18d46ef2e7446cbedbf7e756 100644 (file)
@@ -198,8 +198,10 @@ public class AjdocTestCase extends TestCase {
                        !sourceLevel.equals("1.6") && 
                        !sourceLevel.equals("1.7") && 
                        !sourceLevel.equals("1.8") && 
-                       !sourceLevel.equals("1.9")) {
-                       fail("need to pass ajdoc '1.3' > '1.9' as the source level");
+                       !sourceLevel.equals("1.9") &&
+                       !sourceLevel.startsWith("9") &&
+                       !sourceLevel.startsWith("10")) {
+                       fail("need to pass suitable version to ajdoc as the source level");
                }
                if (inputFiles.length == 0) {
                        fail("need to pass some files into ajdoc");
index 70aa02b226f058b6d620c5ea7ce5df5cb8992129..af9ab0ed976578d262a047438c9c7c401eca1ae6 100644 (file)
@@ -55,7 +55,7 @@ public class CoverageTestCase extends AjdocTestCase {
         */
     public void testCoveragePublicMode() throws Exception {
        File[] files = {file3,file9};
-       runAjdoc("public","1.6",files);
+       runAjdoc("public","9",files);
         
         // have passed the "public" modifier as well as
         // one public and one package visible class. There
index 8af6cc528f79991614ce8ad54f83396fbd06e8eb..99f1e5e111bc57fb6c8352315a97ba6cf076f752 100644 (file)
@@ -462,6 +462,9 @@ public abstract class World implements Dump.INode {
                } else if (ty.isGenericType()) {
                        // ======= generic types ======================
                        ResolvedType rt = resolveGenericTypeFor(ty, false);
+                       if (rt.isMissing()) {
+                               return rt;
+                       }
                        ReferenceType genericType = (ReferenceType) rt;
                        return genericType;
 
index 29d3d178604949b65ed53caff4327e1e0d11fb05..2cc45063642944f309e68a11ccc75adab1ce49c2 100644 (file)
@@ -12,6 +12,7 @@ import java.util.ArrayList;
 import java.util.List;
 
 import org.aspectj.tools.ajc.AjcTestCase;
+import org.aspectj.util.LangUtil;
 
 /**
  * @author Adrian Colyer
@@ -28,32 +29,12 @@ public class AjcTest {
        private static boolean is19VMOrGreater = false;
        
        static { // matching logic is also in org.aspectj.util.LangUtil
-        String vm = System.getProperty("java.version"); // JLS 20.18.7
-        if (vm==null) vm = System.getProperty("java.runtime.version");
-               if (vm==null) vm = System.getProperty("java.vm.version");
-               if (vm.startsWith("1.3")) {
-                       is14VMOrGreater = false;
-               } else if (vm.startsWith("1.5")) {
-                       is15VMOrGreater = true;
-               } else if (vm.startsWith("1.6")) {
-                       is15VMOrGreater = true;
-                       is16VMOrGreater = true;
-               } else if (vm.startsWith("1.7")) {
-                       is15VMOrGreater = true;
-                       is16VMOrGreater = true;
-                       is17VMOrGreater = true;
-               } else if (vm.startsWith("1.8")) {
-                       is15VMOrGreater = true;
-                       is16VMOrGreater = true;
-                       is17VMOrGreater = true;
-                       is18VMOrGreater = true;
-               } else if (vm.startsWith("1.9") || vm.startsWith("9")) {
-                       is15VMOrGreater = true;
-                       is16VMOrGreater = true;
-                       is17VMOrGreater = true;
-                       is18VMOrGreater = true;
-                       is19VMOrGreater = true;
-               }
+               is14VMOrGreater = LangUtil.is14VMOrGreater();
+               is15VMOrGreater = LangUtil.is15VMOrGreater();
+               is16VMOrGreater = LangUtil.is16VMOrGreater();
+               is17VMOrGreater = LangUtil.is17VMOrGreater();
+               is18VMOrGreater = LangUtil.is18VMOrGreater();
+               is19VMOrGreater = LangUtil.is19VMOrGreater();
        }
 
        private List<ITestStep> testSteps = new ArrayList<ITestStep>();
index 4f978f6b630c8899d347276cce1e9d0272071f03..9eab46098431d08f297104a34511f69665a98452 100644 (file)
@@ -23,11 +23,31 @@ public class OutputSpec {
        private List<String> expectedOutputLines = new ArrayList<String>();
 
        public void addLine(OutputLine line) {
-               if (line.getVm() == null || line.getVm().contains(LangUtil.getVmVersionString())) {
+               if (line.getVm() == null || matchesThisVm(line.getVm())) {
                        expectedOutputLines.add(line.getText());
                }
        }
        
+       /**
+        * For a test output line that has specified a vm version, check if it matches the vm we are running on.
+        * vm might be "1.2,1.3,1.4,1.5" or simply "9" or it may be a version with a '+' suffix indicating that
+        * level or later, e.g. "9+" should be ok on Java 10
+        * @return true if the current vm version matches the spec
+        */
+       private boolean matchesThisVm(String vm) {
+               // vm might be 1.2, 1.3, 1.4, 1.5 or 1.9 possibly with a '+' in there
+               // For now assume + is attached to there only being one version, like "9+"
+               if (vm.contains(LangUtil.getVmVersionString())) {
+                       return true;
+               }
+               if (vm.endsWith("+")) {
+                       double vmVersion = LangUtil.getVmVersion();
+                       double vmSpecified = Double.parseDouble(vm.substring(0,vm.length()-1));
+                       return vmVersion >= vmSpecified;
+               }
+               return false;
+       }
+
        public void matchAgainst(String output) {
                matchAgainst(output, "yes");
        }
index cf75f74263ea9190458a443e9ce57f4e009b3993..d0da94ec9d869f5461f9c425b2df7a49cdb84ab4 100644 (file)
               <line text="1 @Foo()"/>
               <line text="1 @Foo()"/>
               <line text="1 @Classified(classification=TOP-SECRET)" vm="1.5,1.6,1.7,1.8"/>
-              <line text="1 @Classified(classification=&quot;TOP-SECRET&quot;)" vm="1.9"/>
+              <line text="1 @Classified(classification=&quot;TOP-SECRET&quot;)" vm="9+"/>
               <line text="This information is TOP-SECRET"/>
               <line text="Entering critical join point with priority 3"/>
               <line text="Entering critical join point with reflectively obtained priority 3"/>
        <stdout>
          <line text="target-ok an X execution(void X.foo())"/>
          <line text="@this-ok @MyAnnotation(value=my-value) execution(void X.foo())" vm="1.5,1.6,1.7,1.8"/>
-         <line text="@this-ok @MyAnnotation(value=&quot;my-value&quot;) execution(void X.foo())" vm="1.9"/>
+         <line text="@this-ok @MyAnnotation(value=&quot;my-value&quot;) execution(void X.foo())" vm="9+"/>
          <line text="@target-ok @MyAnnotation(value=my-value) execution(void X.foo())" vm="1.5,1.6,1.7,1.8"/>
-         <line text="@target-ok @MyAnnotation(value=&quot;my-value&quot;) execution(void X.foo())" vm="1.9"/>
+         <line text="@target-ok @MyAnnotation(value=&quot;my-value&quot;) execution(void X.foo())" vm="9+"/>
          <line text="@within-ok @MyAnnotation(value=my-value) execution(void X.foo())" vm="1.5,1.6,1.7,1.8"/>
-         <line text="@within-ok @MyAnnotation(value=&quot;my-value&quot;) execution(void X.foo())" vm="1.9"/>
+         <line text="@within-ok @MyAnnotation(value=&quot;my-value&quot;) execution(void X.foo())" vm="9+"/>
          <line text="cflow-ok an X a Y set(Y X.y)"/>
          <line text="@annotation-ok-sub @MyAnnotation(value=bar) execution(void X.bar())" vm="1.5,1.6,1.7,1.8"/>
-         <line text="@annotation-ok-sub @MyAnnotation(value=&quot;bar&quot;) execution(void X.bar())" vm="1.9"/>
+         <line text="@annotation-ok-sub @MyAnnotation(value=&quot;bar&quot;) execution(void X.bar())" vm="9+"/>
          <line text="@annotation-ok @MyAnnotation(value=bar) execution(void X.bar())" vm="1.5,1.6,1.7,1.8"/>
-         <line text="@annotation-ok @MyAnnotation(value=&quot;bar&quot;) execution(void X.bar())" vm="1.9"/>
+         <line text="@annotation-ok @MyAnnotation(value=&quot;bar&quot;) execution(void X.bar())" vm="9+"/>
          <line text="target-ok an X execution(void X.bar())"/>
          <line text="@this-ok @MyAnnotation(value=my-value) execution(void X.bar())" vm="1.5,1.6,1.7,1.8"/>
-         <line text="@this-ok @MyAnnotation(value=&quot;my-value&quot;) execution(void X.bar())" vm="1.9"/>
+         <line text="@this-ok @MyAnnotation(value=&quot;my-value&quot;) execution(void X.bar())" vm="9+"/>
          <line text="@target-ok @MyAnnotation(value=my-value) execution(void X.bar())" vm="1.5,1.6,1.7,1.8"/>
-         <line text="@target-ok @MyAnnotation(value=&quot;my-value&quot;) execution(void X.bar())" vm="1.9"/>
+         <line text="@target-ok @MyAnnotation(value=&quot;my-value&quot;) execution(void X.bar())" vm="9+"/>
          <line text="@within-ok @MyAnnotation(value=my-value) execution(void X.bar())" vm="1.5,1.6,1.7,1.8"/>
-         <line text="@within-ok @MyAnnotation(value=&quot;my-value&quot;) execution(void X.bar())" vm="1.9"/>
+         <line text="@within-ok @MyAnnotation(value=&quot;my-value&quot;) execution(void X.bar())" vm="9+"/>
          <line text="@args-ok @MyAnnotation(value=my-value) execution(void Y.foo(X))" vm="1.5,1.6,1.7,1.8"/>
-         <line text="@args-ok @MyAnnotation(value=&quot;my-value&quot;) execution(void Y.foo(X))" vm="1.9"/>
+         <line text="@args-ok @MyAnnotation(value=&quot;my-value&quot;) execution(void Y.foo(X))" vm="9+"/>
          <line text="args-ok an X execution(void Y.foo(X))"/>
          <line text="this-ok a Y execution(void Y.foo(X))"/>
          <line text="@this-ok @MyAnnotation(value=on Y) execution(void Y.foo(X))" vm="1.5,1.6,1.7,1.8"/>
-         <line text="@this-ok @MyAnnotation(value=&quot;on Y&quot;) execution(void Y.foo(X))" vm="1.9"/>
+         <line text="@this-ok @MyAnnotation(value=&quot;on Y&quot;) execution(void Y.foo(X))" vm="9+"/>
          <line text="@target-ok @MyAnnotation(value=on Y) execution(void Y.foo(X))" vm="1.5,1.6,1.7,1.8"/>
-         <line text="@target-ok @MyAnnotation(value=&quot;on Y&quot;) execution(void Y.foo(X))" vm="1.9"/>
+         <line text="@target-ok @MyAnnotation(value=&quot;on Y&quot;) execution(void Y.foo(X))" vm="9+"/>
          <line text="@within-ok @MyAnnotation(value=on Y) execution(void Y.foo(X))" vm="1.5,1.6,1.7,1.8"/>
-         <line text="@within-ok @MyAnnotation(value=&quot;on Y&quot;) execution(void Y.foo(X))" vm="1.9"/>
+         <line text="@within-ok @MyAnnotation(value=&quot;on Y&quot;) execution(void Y.foo(X))" vm="9+"/>
          <line text="@annotation-ok-sub @MyAnnotation(value=my-value) execution(X Y.bar())" vm="1.5,1.6,1.7,1.8"/>
-         <line text="@annotation-ok-sub @MyAnnotation(value=&quot;my-value&quot;) execution(X Y.bar())" vm="1.9"/>
+         <line text="@annotation-ok-sub @MyAnnotation(value=&quot;my-value&quot;) execution(X Y.bar())" vm="9+"/>
          <line text="@annotation-ok @MyAnnotation(value=my-value) execution(X Y.bar())" vm="1.5,1.6,1.7,1.8"/>
-         <line text="@annotation-ok @MyAnnotation(value=&quot;my-value&quot;) execution(X Y.bar())" vm="1.9"/>
+         <line text="@annotation-ok @MyAnnotation(value=&quot;my-value&quot;) execution(X Y.bar())" vm="9+"/>
          <line text="this-ok a Y execution(X Y.bar())"/>
          <line text="@this-ok @MyAnnotation(value=on Y) execution(X Y.bar())" vm="1.5,1.6,1.7,1.8"/> 
-         <line text="@this-ok @MyAnnotation(value=&quot;on Y&quot;) execution(X Y.bar())" vm="1.9"/> 
+         <line text="@this-ok @MyAnnotation(value=&quot;on Y&quot;) execution(X Y.bar())" vm="9+"/> 
          <line text="@target-ok @MyAnnotation(value=on Y) execution(X Y.bar())" vm="1.5,1.6,1.7,1.8"/>
-         <line text="@target-ok @MyAnnotation(value=&quot;on Y&quot;) execution(X Y.bar())" vm="1.9"/>
+         <line text="@target-ok @MyAnnotation(value=&quot;on Y&quot;) execution(X Y.bar())" vm="9+"/>
          <line text="@within-ok @MyAnnotation(value=on Y) execution(X Y.bar())" vm="1.5,1.6,1.7,1.8"/>
-         <line text="@within-ok @MyAnnotation(value=&quot;on Y&quot;) execution(X Y.bar())" vm="1.9"/>
+         <line text="@within-ok @MyAnnotation(value=&quot;on Y&quot;) execution(X Y.bar())" vm="9+"/>
          <line text="@withincode-ok @MyAnnotation(value=my-value) get(X Y.x)" vm="1.5,1.6,1.7,1.8"/>
-         <line text="@withincode-ok @MyAnnotation(value=&quot;my-value&quot;) get(X Y.x)" vm="1.9"/>
+         <line text="@withincode-ok @MyAnnotation(value=&quot;my-value&quot;) get(X Y.x)" vm="9+"/>
        </stdout>
      </run>
    </ajc-test>
index a3297e68c514751aa346580d04cc82f3b702798e..9cb0eae8766f13f73aae1f3a6df2f481c3325717 100644 (file)
@@ -28,7 +28,7 @@
      <run class="c.d.DistantResource">
      <stdout>
        <line text="Annotation is @a.b.SimpleAnnotation(classname=oranges)" vm="1.2,1.3,1.4,1.5,1.6,1.7,1.8"/>
-       <line text="Annotation is @a.b.SimpleAnnotation(classname=&quot;oranges&quot;)" vm="1.9"/>
+       <line text="Annotation is @a.b.SimpleAnnotation(classname=&quot;oranges&quot;)" vm="9+"/>
      </stdout>
      </run>
    </ajc-test>
@@ -41,7 +41,7 @@
       <run class="c.d.DistantResource">
      <stdout>       
        <line text="Annotation is @a.b.SimpleAnnotation(classname=oranges)" vm="1.2,1.3,1.4,1.5,1.6,1.7,1.8"/>
-       <line text="Annotation is @a.b.SimpleAnnotation(classname=&quot;oranges&quot;)" vm="1.9"/>
+       <line text="Annotation is @a.b.SimpleAnnotation(classname=&quot;oranges&quot;)" vm="9+"/>
      </stdout>
      </run>
    </ajc-test>
@@ -54,7 +54,7 @@
      <run class="c.d.DistantResource">
      <stdout>
        <line text="Annotation is @e.f.SimpleAnnotation2(classname=oranges)" vm="1.2,1.3,1.4,1.5,1.6,1.7,1.8"/>
-       <line text="Annotation is @e.f.SimpleAnnotation2(classname=&quot;oranges&quot;)" vm="1.9"/>       
+       <line text="Annotation is @e.f.SimpleAnnotation2(classname=&quot;oranges&quot;)" vm="9+"/>       
      </stdout>
      </run>
    </ajc-test>
@@ -67,7 +67,7 @@
      <run class="c.d.DistantResource">
      <stdout>
        <line text="Annotation is @e.f.SimpleAnnotation2(classname=oranges)" vm="1.2,1.3,1.4,1.5,1.6,1.7,1.8"/>
-       <line text="Annotation is @e.f.SimpleAnnotation2(classname=&quot;oranges&quot;)" vm="1.9"/>       
+       <line text="Annotation is @e.f.SimpleAnnotation2(classname=&quot;oranges&quot;)" vm="9+"/>       
      </stdout>
      </run>
    </ajc-test>
@@ -81,7 +81,7 @@
      <run class="c.d.DistantResource">
      <stdout>
        <line text="Annotation is @e.f.SimpleAnnotation2(classname=oranges)" vm="1.2,1.3,1.4,1.5,1.6,1.7,1.8"/>
-       <line text="Annotation is @e.f.SimpleAnnotation2(classname=&quot;oranges&quot;)" vm="1.9"/>       
+       <line text="Annotation is @e.f.SimpleAnnotation2(classname=&quot;oranges&quot;)" vm="9+"/>       
      </stdout>
      </run>
    </ajc-test>
@@ -96,7 +96,7 @@
      <run class="c.d.DistantResource">
      <stdout>
        <line text="Annotation is @e.f.SimpleAnnotation2(classname=oranges)" vm="1.2,1.3,1.4,1.5,1.6,1.7,1.8"/>
-       <line text="Annotation is @e.f.SimpleAnnotation2(classname=&quot;oranges&quot;)" vm="1.9"/>              
+       <line text="Annotation is @e.f.SimpleAnnotation2(classname=&quot;oranges&quot;)" vm="9+"/>              
      </stdout>
      </run>
    </ajc-test>
index 0a8105df7a3b223da9b3ddee2da1b85f3f8ac92b..91404263330c31a28d1b1adb7cc634262116f28b 100644 (file)
     <stdout>
     <line text="i does not have Anno"/>
     <line text="j has Banno:@Banno(hoo=abc)" vm="1.2,1.3,1.4,1.5,1.6,1.7,1.8"/>
-    <line text="j has Banno:@Banno(hoo=&quot;abc&quot;)" vm="1.9"/>
+    <line text="j has Banno:@Banno(hoo=&quot;abc&quot;)" vm="9+"/>
     <line text="j does not have Anno"/>
     </stdout></run>
   </ajc-test>
index 8011cd68fef5eedf47b5cea88910660e5eb1284d..38f46c7d6ac6a27cdedf9f3cf8df5645e6a7f43b 100644 (file)
 <run class="AnnoBinding2">
 <stdout>
 <line text="get(int AnnoBinding2.field1) @Marker(message=foo)" vm="1.2,1.3,1.4,1.5,1.6,1.7,1.8"/>
-<line text="get(int AnnoBinding2.field1) @Marker(message=&quot;foo&quot;)" vm="1.9"/>
+<line text="get(int AnnoBinding2.field1) @Marker(message=&quot;foo&quot;)" vm="9+"/>
 <line text="get(int AnnoBinding2.field2) @Marker(message=bar)" vm="1.2,1.3,1.4,1.5,1.6,1.7,1.8"/>
-<line text="get(int AnnoBinding2.field2) @Marker(message=&quot;bar&quot;)" vm="1.9"/>
+<line text="get(int AnnoBinding2.field2) @Marker(message=&quot;bar&quot;)" vm="9+"/>
 <line text="2 ajc$anno$NNN fields"/>
 </stdout>
 </run>
index f9c788b0c130685eae795b1834dcf432d9fa6d65..75846b05c64c2428a6c7b711b9080dcd6120490e 100644 (file)
@@ -71,7 +71,7 @@
        <stdout>
        <line text="wibble"/>
        <line text="@a.b.c.RelatedType(value=class a.b.c.Vote$_$choice)" vm="1.2,1.3,1.4,1.5,1.6,1.7,1.8"/>
-       <line text="@a.b.c.RelatedType(value=a.b.c.Vote$_$choice.class)" vm="1.9"/>
+       <line text="@a.b.c.RelatedType(value=a.b.c.Vote$_$choice.class)" vm="9+"/>
        </stdout>
      </run>
    </ajc-test>
@@ -82,7 +82,7 @@
        <stdout>
        <line text="wibble"/>
        <line text="@a.b.c.RelatedType(value=class a.b.c.Vote$_$choice)" vm="1.2,1.3,1.4,1.5,1.6,1.7,1.8"/>
-       <line text="@a.b.c.RelatedType(value=a.b.c.Vote$_$choice.class)" vm="1.9"/>
+       <line text="@a.b.c.RelatedType(value=a.b.c.Vote$_$choice.class)" vm="9+"/>
        </stdout>
      </run>
    </ajc-test>
@@ -93,7 +93,7 @@
        <stdout>
        <line text="wibble"/>
        <line text="@a.b.c.RelatedType(value=class a.b.c.Vote$_$choice)" vm="1.2,1.3,1.4,1.5,1.6,1.7,1.8"/>
-       <line text="@a.b.c.RelatedType(value=a.b.c.Vote$_$choice.class)" vm="1.9"/>
+       <line text="@a.b.c.RelatedType(value=a.b.c.Vote$_$choice.class)" vm="9+"/>
        </stdout>
      </run>
    </ajc-test>
        <stdout>
        <line text="wibble"/>
        <line text="@a.b.c.RelatedType(value=class a.b.c.Vote$_$choice)" vm="1.2,1.3,1.4,1.5,1.6,1.7,1.8"/>
-       <line text="@a.b.c.RelatedType(value=a.b.c.Vote$_$choice.class)" vm="1.9"/>
+       <line text="@a.b.c.RelatedType(value=a.b.c.Vote$_$choice.class)" vm="9+"/>
        </stdout>
      </run>
    </ajc-test>
        <stdout>
        <line text="wibble"/>
        <line text="@a.b.c.RelatedType(value=class a.b.c.Vote$_$choice)" vm="1.2,1.3,1.4,1.5,1.6,1.7,1.8"/>
-       <line text="@a.b.c.RelatedType(value=a.b.c.Vote$_$choice.class)" vm="1.9"/>
+       <line text="@a.b.c.RelatedType(value=a.b.c.Vote$_$choice.class)" vm="9+"/>
        </stdout>
      </run>
    </ajc-test>
        <stdout>
        <line text="wibble"/>
        <line text="@a.b.c.RelatedType(value=class a.b.c.Vote$_$choice)" vm="1.2,1.3,1.4,1.5,1.6,1.7,1.8"/>
-       <line text="@a.b.c.RelatedType(value=a.b.c.Vote$_$choice.class)" vm="1.9"/>
+       <line text="@a.b.c.RelatedType(value=a.b.c.Vote$_$choice.class)" vm="9+"/>
        </stdout>
      </run>
    </ajc-test>
        <stdout>
        <line text="wibble"/>
        <line text="@a.b.c.RelatedType(value=class a.b.c.Vote$_)" vm="1.2,1.3,1.4,1.5,1.6,1.7,1.8"/>
-       <line text="@a.b.c.RelatedType(value=a.b.c.Vote$_.class)" vm="1.9"/>
+       <line text="@a.b.c.RelatedType(value=a.b.c.Vote$_.class)" vm="9+"/>
        </stdout>
      </run>
    </ajc-test>
index 241ad3867652c4fcd4bafdee73700476b35583af..e379d6cabf574f24d6fd11e53861e99efd0067e8 100644 (file)
            <line text="Annotation count is 4"/>
            <line text="@AnnoBoolean(value=true, zzz=false)"/>
            <line text="@AnnoClass(value=class java.lang.Integer, ccc=class java.lang.String)" vm="1.2,1.3,1.4,1.5,1.6,1.7,1.8"/>
-           <line text="@AnnoClass(value=java.lang.Integer.class, ccc=java.lang.String.class)" vm="1.9"/>
+           <line text="@AnnoClass(value=java.lang.Integer.class, ccc=java.lang.String.class)" vm="9+"/>
            <line text="@AnnoLong(value=999, jjj=111)"/>
            <line text="@AnnoString(value=set from xml, sss=xyz)" vm="1.2,1.3,1.4,1.5,1.6,1.7,1.8"/>
-           <line text="@AnnoString(value=&quot;set from xml&quot;, sss=&quot;xyz&quot;)" vm="1.9"/>
+           <line text="@AnnoString(value=&quot;set from xml&quot;, sss=&quot;xyz&quot;)" vm="9+"/>
            <line text="Annotations on field2? true"/>
            <line text="Annotation count is 1"/>
            <line text="@AnnoClass(value=class java.lang.String, ccc=class java.lang.String)"  vm="1.2,1.3,1.4,1.5,1.6,1.7,1.8"/>
-           <line text="@AnnoClass(value=java.lang.String.class, ccc=java.lang.String.class)" vm="1.9"/>
+           <line text="@AnnoClass(value=java.lang.String.class, ccc=java.lang.String.class)" vm="9+"/>
        </stdout>
      </run>
    </ajc-test>
            <line text="Annotations on field1? true"/>
            <line text="Annotation count is 4"/>
            <line text="@AnnoChar(value=z, ccc=a)" vm="1.2,1.3,1.4,1.5,1.6,1.7,1.8"/>
-           <line text="@AnnoChar(value='z', ccc='a')" vm="1.9"/>
+           <line text="@AnnoChar(value='z', ccc='a')" vm="9+"/>
            <line text="@AnnoDouble(value=99.0, ddd=3.0)"/>
            <line text="@AnnoFloat(value=6.0, fff=4.0)" vm="1.2,1.3,1.4,1.5,1.6,1.7,1.8"/>
-           <line text="@AnnoFloat(value=6.0f, fff=4.0f)" vm="1.9"/>
+           <line text="@AnnoFloat(value=6.0f, fff=4.0f)" vm="9+"/>
            <line text="@AnnoShort(value=8, sss=3)"/>
            <line text="Annotations on field2? true"/>
            <line text="Annotation count is 2"/>
            <line text="Annotations on field1? true"/>
            <line text="Annotation count is 1"/>
            <line text="@Annot(a=a, fred=false, value=abc)" vm="1.2,1.3,1.4,1.5,1.6,1.7,1.8"/>
-           <line text="@Annot(a='a', fred=false, value=&quot;abc&quot;)" vm="1.9"/>
+           <line text="@Annot(a='a', fred=false, value=&quot;abc&quot;)" vm="9+"/>
        </stdout>
      </run>
    </ajc-test>
            <line text="Annotations on field1? true"/>
            <line text="Annotation count is 1"/>
            <line text="@Annot(a=a, fred=false, value=abc)" vm="1.4,1.5,1.6,1.7,1.8"/>
-           <line text="@Annot(a='a', fred=false, value=&quot;abc&quot;)" vm="1.9"/>
+           <line text="@Annot(a='a', fred=false, value=&quot;abc&quot;)" vm="9+"/>
        </stdout>
      </run>
    </ajc-test>
index 4a784fff86588029b5371e90b611107a8ce8d862..398fae62fb571d0bb8a5a550f5d99f43c99e816a 100644 (file)
@@ -10,7 +10,7 @@
                <run class="Hello">
                <stdout>
                <line text="@MyAnnotation(dummy1=, dummy2=korte)" vm="1.2,1.3,1.4,1.5,1.6,1.7,1.8"/>
-               <line text="@MyAnnotation(dummy1=&quot;&quot;, dummy2=&quot;korte&quot;)" vm="1.9"/>
+               <line text="@MyAnnotation(dummy1=&quot;&quot;, dummy2=&quot;korte&quot;)" vm="9+"/>
                </stdout>
                </run>
        </ajc-test>
index 26d0905e88929b387249e986d43f3db44bf7dc1c..607f723fcc46605f170401057a238abab8ad491c 100644 (file)
@@ -21,10 +21,6 @@ import junit.framework.Test;
  */
 public class Ajc190Tests extends org.aspectj.testing.XMLBasedAjcTestCase {
 
-       public void testVarious_SettingFinalStatic() {
-               runTest("setting static final outside clinit");
-       }
-
        public void testAnnotMethodHasMember_pr156962_1() { // From similar in Ajc153Tests
                runTest("Test Annot Method Has Member 1");
        }
index 41a75c0aeb34e25ff54382a4f21381997f4af2e5..24d6839285a92b9df87e0f8da35bd51a43d7dff7 100644 (file)
               <line text="1 @Foo()"/>
               <line text="1 @Foo()"/>
               <line text="1 @Classified(classification=TOP-SECRET)" vm="1.2,1.3,1.4,1.5,1.6,1.7,1.8"/>
-              <line text="1 @Classified(classification=&quot;TOP-SECRET&quot;)" vm="1.9"/>
+              <line text="1 @Classified(classification=&quot;TOP-SECRET&quot;)" vm="9+"/>
               <line text="This information is TOP-SECRET"/>
               <line text="Entering critical join point with priority 3"/>
               <line text="Entering critical join point with reflectively obtained priority 3"/>
index 08c2da43a0d6d70c572f5147b885346995e346f8..ff6c7246c37e4495a811fe4f0dd98c651dec32b6 100644 (file)
@@ -49,6 +49,10 @@ public class LangUtil {
                return Double.toString(vmVersion);
        }
        
+       public static double getVmVersion() {
+               return vmVersion;
+       }
+       
        static {
                StringWriter buf = new StringWriter();
                PrintWriter writer = new PrintWriter(buf);
@@ -66,6 +70,8 @@ public class LangUtil {
        }
 
        static {
+               // http://www.oracle.com/technetwork/java/javase/versioning-naming-139433.html
+               // http://openjdk.java.net/jeps/223 "New Version-String Scheme"
                try {
                        String vm = System.getProperty("java.version"); // JLS 20.18.7
                        if (vm == null) {
@@ -80,17 +86,21 @@ public class LangUtil {
                                                .printStackTrace(System.err);
                                vmVersion = 1.5;
                        } else {
-                               if (vm.startsWith("9")) {
-                                       // JDK 9 beta 99 starts using 9-ea as the version string.
-                                       vmVersion = 1.9;
-                               } else {
-                                       try {
-                                               String versionString = vm.substring(0, 3);
-                                               Double temp = new Double(Double.parseDouble(versionString));
-                                               vmVersion = temp.doubleValue();
-                                       } catch (Exception e) {
-                                               vmVersion = 1.4;
+                               // Version: [1-9][0-9]*((\.0)*\.[1-9][0-9]*)* 
+                               // Care about the first set of digits and second set if first digit is 1
+                               try {
+                                       List<Integer> numbers = getFirstNumbers(vm);
+                                       if (numbers.get(0) == 1) {
+                                               // Old school for 1.0 > 1.8
+                                               vmVersion = numbers.get(0)+(numbers.get(1)/10d);
+                                       } else {
+                                               // numbers.get(0) is the major version (9 and above)
+                                               // Note here the number will be 9 (or 10), *not* 1.9 or 1.10
+                                               vmVersion = numbers.get(0);
                                        }
+                               } catch (Throwable t) {
+                                       // Give up
+                                       vmVersion = 1.5;
                                }
                        }
                } catch (Throwable t) {
@@ -100,6 +110,19 @@ public class LangUtil {
                        vmVersion = 1.5;
                }
        }
+       
+       private static List<Integer> getFirstNumbers(String vm) {
+               List<Integer> result = new ArrayList<Integer>();
+               StringTokenizer st = new StringTokenizer(vm,".-_");
+               try {
+                       result.add(Integer.parseInt(st.nextToken()));
+                       result.add(Integer.parseInt(st.nextToken()));
+               } catch (Exception e) {
+                       // NoSuchElementException if no more tokens
+                       // NumberFormatException if not a number
+               }
+               return result;
+       }
 
        public static boolean is13VMOrGreater() {
                return 1.3 <= vmVersion;
@@ -126,7 +149,7 @@ public class LangUtil {
        }
        
        public static boolean is19VMOrGreater() {
-               return 1.9 <= vmVersion;
+               return 9 <= vmVersion;
        }
 
        /**
diff --git a/weaver/testdata/StaticTjpBeforeHelloWorld.1.9.txt b/weaver/testdata/StaticTjpBeforeHelloWorld.1.9.txt
deleted file mode 100644 (file)
index 72ec8a0..0000000
+++ /dev/null
@@ -1,103 +0,0 @@
-public class HelloWorld extends java.lang.Object:
-  private static org.aspectj.lang.JoinPoint$StaticPart ajc$tjp_0 [Synthetic]
-  private static org.aspectj.lang.JoinPoint$StaticPart ajc$tjp_1 [Synthetic]
-  private static org.aspectj.lang.JoinPoint$StaticPart ajc$tjp_2 [Synthetic]
-  private static org.aspectj.lang.JoinPoint$StaticPart ajc$tjp_3 [Synthetic]
-  public void <init>():
-                    ALOAD_0     // LHelloWorld; this   (line 5)
-                    INVOKESPECIAL java.lang.Object.<init> ()V
-    constructor-execution(void HelloWorld.<init>())
-    |               GETSTATIC HelloWorld.ajc$tjp_0 Lorg/aspectj/lang/JoinPoint$StaticPart;
-    |               INVOKESTATIC Aspect.ajc_before (Lorg/aspectj/lang/JoinPoint$StaticPart;)V
-    |               RETURN
-    constructor-execution(void HelloWorld.<init>())
-  end public void <init>()
-
-  public static void main(String[]):
-    method-execution(void HelloWorld.main(java.lang.String[]))
-    |               GETSTATIC HelloWorld.ajc$tjp_3 Lorg/aspectj/lang/JoinPoint$StaticPart;   (line 8)
-    |               INVOKESTATIC Aspect.ajc_before (Lorg/aspectj/lang/JoinPoint$StaticPart;)V
-    | field-get(java.io.PrintStream java.lang.System.out)
-    | |             GETSTATIC HelloWorld.ajc$tjp_1 Lorg/aspectj/lang/JoinPoint$StaticPart;
-    | |             INVOKESTATIC Aspect.ajc_before (Lorg/aspectj/lang/JoinPoint$StaticPart;)V
-    | |             GETSTATIC java.lang.System.out Ljava/io/PrintStream;
-    | field-get(java.io.PrintStream java.lang.System.out)
-    |               LDC "hello world"   (line 9)
-    | method-call(void java.io.PrintStream.println(java.lang.String))
-    | |             GETSTATIC HelloWorld.ajc$tjp_2 Lorg/aspectj/lang/JoinPoint$StaticPart;
-    | |             INVOKESTATIC Aspect.ajc_before (Lorg/aspectj/lang/JoinPoint$StaticPart;)V
-    | |             INVOKEVIRTUAL java.io.PrintStream.println (Ljava/lang/String;)V
-    | method-call(void java.io.PrintStream.println(java.lang.String))
-    |               RETURN   (line 11)
-    method-execution(void HelloWorld.main(java.lang.String[]))
-  end public static void main(String[])
-
-  static void <clinit>():
-                    INVOKESTATIC HelloWorld.ajc$preClinit ()V
-    staticinitialization(void HelloWorld.<clinit>())
-    |               RETURN
-    staticinitialization(void HelloWorld.<clinit>())
-  end static void <clinit>()
-
-  private static void ajc$preClinit():
-                    NEW org.aspectj.runtime.reflect.Factory
-                    DUP
-                    LDC "HelloWorld.java"
-                    LDC "HelloWorld"
-                    INVOKESTATIC java.lang.Class.forName (Ljava/lang/String;)Ljava/lang/Class;
-                    INVOKESPECIAL org.aspectj.runtime.reflect.Factory.<init> (Ljava/lang/String;Ljava/lang/Class;)V
-                    ASTORE_0
-                    ALOAD_0
-                    LDC "constructor-execution"
-                    ALOAD_0
-                    LDC "1"
-                    LDC "HelloWorld"
-                    LDC ""
-                    LDC ""
-                    LDC ""
-                    INVOKEVIRTUAL org.aspectj.runtime.reflect.Factory.makeConstructorSig (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lorg/aspectj/lang/reflect/ConstructorSignature;
-                    ICONST_5
-                    INVOKEVIRTUAL org.aspectj.runtime.reflect.Factory.makeSJP (Ljava/lang/String;Lorg/aspectj/lang/Signature;I)Lorg/aspectj/lang/JoinPoint$StaticPart;
-                    PUTSTATIC HelloWorld.ajc$tjp_0 Lorg/aspectj/lang/JoinPoint$StaticPart;
-                    ALOAD_0
-                    LDC "field-get"
-                    ALOAD_0
-                    LDC "19"
-                    LDC "out"
-                    LDC "java.lang.System"
-                    LDC "java.io.PrintStream"
-                    INVOKEVIRTUAL org.aspectj.runtime.reflect.Factory.makeFieldSig (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lorg/aspectj/lang/reflect/FieldSignature;
-                    BIPUSH 8
-                    INVOKEVIRTUAL org.aspectj.runtime.reflect.Factory.makeSJP (Ljava/lang/String;Lorg/aspectj/lang/Signature;I)Lorg/aspectj/lang/JoinPoint$StaticPart;
-                    PUTSTATIC HelloWorld.ajc$tjp_1 Lorg/aspectj/lang/JoinPoint$StaticPart;
-                    ALOAD_0
-                    LDC "method-call"
-                    ALOAD_0
-                    LDC "1"
-                    LDC "println"
-                    LDC "java.io.PrintStream"
-                    LDC "java.lang.String"
-                    LDC "x"
-                    LDC ""
-                    LDC "void"
-                    INVOKEVIRTUAL org.aspectj.runtime.reflect.Factory.makeMethodSig (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lorg/aspectj/lang/reflect/MethodSignature;
-                    BIPUSH 9
-                    INVOKEVIRTUAL org.aspectj.runtime.reflect.Factory.makeSJP (Ljava/lang/String;Lorg/aspectj/lang/Signature;I)Lorg/aspectj/lang/JoinPoint$StaticPart;
-                    PUTSTATIC HelloWorld.ajc$tjp_2 Lorg/aspectj/lang/JoinPoint$StaticPart;
-                    ALOAD_0
-                    LDC "method-execution"
-                    ALOAD_0
-                    LDC "9"
-                    LDC "main"
-                    LDC "HelloWorld"
-                    LDC "[Ljava.lang.String;"
-                    LDC "args"
-                    LDC ""
-                    LDC "void"
-                    INVOKEVIRTUAL org.aspectj.runtime.reflect.Factory.makeMethodSig (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lorg/aspectj/lang/reflect/MethodSignature;
-                    BIPUSH 8
-                    INVOKEVIRTUAL org.aspectj.runtime.reflect.Factory.makeSJP (Ljava/lang/String;Lorg/aspectj/lang/Signature;I)Lorg/aspectj/lang/JoinPoint$StaticPart;
-                    PUTSTATIC HelloWorld.ajc$tjp_3 Lorg/aspectj/lang/JoinPoint$StaticPart;
-                    RETURN
-  end private static void ajc$preClinit()
-end public class HelloWorld
diff --git a/weaver/testdata/StaticTjpBeforeHelloWorld.9.0.txt b/weaver/testdata/StaticTjpBeforeHelloWorld.9.0.txt
new file mode 100644 (file)
index 0000000..72ec8a0
--- /dev/null
@@ -0,0 +1,103 @@
+public class HelloWorld extends java.lang.Object:
+  private static org.aspectj.lang.JoinPoint$StaticPart ajc$tjp_0 [Synthetic]
+  private static org.aspectj.lang.JoinPoint$StaticPart ajc$tjp_1 [Synthetic]
+  private static org.aspectj.lang.JoinPoint$StaticPart ajc$tjp_2 [Synthetic]
+  private static org.aspectj.lang.JoinPoint$StaticPart ajc$tjp_3 [Synthetic]
+  public void <init>():
+                    ALOAD_0     // LHelloWorld; this   (line 5)
+                    INVOKESPECIAL java.lang.Object.<init> ()V
+    constructor-execution(void HelloWorld.<init>())
+    |               GETSTATIC HelloWorld.ajc$tjp_0 Lorg/aspectj/lang/JoinPoint$StaticPart;
+    |               INVOKESTATIC Aspect.ajc_before (Lorg/aspectj/lang/JoinPoint$StaticPart;)V
+    |               RETURN
+    constructor-execution(void HelloWorld.<init>())
+  end public void <init>()
+
+  public static void main(String[]):
+    method-execution(void HelloWorld.main(java.lang.String[]))
+    |               GETSTATIC HelloWorld.ajc$tjp_3 Lorg/aspectj/lang/JoinPoint$StaticPart;   (line 8)
+    |               INVOKESTATIC Aspect.ajc_before (Lorg/aspectj/lang/JoinPoint$StaticPart;)V
+    | field-get(java.io.PrintStream java.lang.System.out)
+    | |             GETSTATIC HelloWorld.ajc$tjp_1 Lorg/aspectj/lang/JoinPoint$StaticPart;
+    | |             INVOKESTATIC Aspect.ajc_before (Lorg/aspectj/lang/JoinPoint$StaticPart;)V
+    | |             GETSTATIC java.lang.System.out Ljava/io/PrintStream;
+    | field-get(java.io.PrintStream java.lang.System.out)
+    |               LDC "hello world"   (line 9)
+    | method-call(void java.io.PrintStream.println(java.lang.String))
+    | |             GETSTATIC HelloWorld.ajc$tjp_2 Lorg/aspectj/lang/JoinPoint$StaticPart;
+    | |             INVOKESTATIC Aspect.ajc_before (Lorg/aspectj/lang/JoinPoint$StaticPart;)V
+    | |             INVOKEVIRTUAL java.io.PrintStream.println (Ljava/lang/String;)V
+    | method-call(void java.io.PrintStream.println(java.lang.String))
+    |               RETURN   (line 11)
+    method-execution(void HelloWorld.main(java.lang.String[]))
+  end public static void main(String[])
+
+  static void <clinit>():
+                    INVOKESTATIC HelloWorld.ajc$preClinit ()V
+    staticinitialization(void HelloWorld.<clinit>())
+    |               RETURN
+    staticinitialization(void HelloWorld.<clinit>())
+  end static void <clinit>()
+
+  private static void ajc$preClinit():
+                    NEW org.aspectj.runtime.reflect.Factory
+                    DUP
+                    LDC "HelloWorld.java"
+                    LDC "HelloWorld"
+                    INVOKESTATIC java.lang.Class.forName (Ljava/lang/String;)Ljava/lang/Class;
+                    INVOKESPECIAL org.aspectj.runtime.reflect.Factory.<init> (Ljava/lang/String;Ljava/lang/Class;)V
+                    ASTORE_0
+                    ALOAD_0
+                    LDC "constructor-execution"
+                    ALOAD_0
+                    LDC "1"
+                    LDC "HelloWorld"
+                    LDC ""
+                    LDC ""
+                    LDC ""
+                    INVOKEVIRTUAL org.aspectj.runtime.reflect.Factory.makeConstructorSig (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lorg/aspectj/lang/reflect/ConstructorSignature;
+                    ICONST_5
+                    INVOKEVIRTUAL org.aspectj.runtime.reflect.Factory.makeSJP (Ljava/lang/String;Lorg/aspectj/lang/Signature;I)Lorg/aspectj/lang/JoinPoint$StaticPart;
+                    PUTSTATIC HelloWorld.ajc$tjp_0 Lorg/aspectj/lang/JoinPoint$StaticPart;
+                    ALOAD_0
+                    LDC "field-get"
+                    ALOAD_0
+                    LDC "19"
+                    LDC "out"
+                    LDC "java.lang.System"
+                    LDC "java.io.PrintStream"
+                    INVOKEVIRTUAL org.aspectj.runtime.reflect.Factory.makeFieldSig (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lorg/aspectj/lang/reflect/FieldSignature;
+                    BIPUSH 8
+                    INVOKEVIRTUAL org.aspectj.runtime.reflect.Factory.makeSJP (Ljava/lang/String;Lorg/aspectj/lang/Signature;I)Lorg/aspectj/lang/JoinPoint$StaticPart;
+                    PUTSTATIC HelloWorld.ajc$tjp_1 Lorg/aspectj/lang/JoinPoint$StaticPart;
+                    ALOAD_0
+                    LDC "method-call"
+                    ALOAD_0
+                    LDC "1"
+                    LDC "println"
+                    LDC "java.io.PrintStream"
+                    LDC "java.lang.String"
+                    LDC "x"
+                    LDC ""
+                    LDC "void"
+                    INVOKEVIRTUAL org.aspectj.runtime.reflect.Factory.makeMethodSig (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lorg/aspectj/lang/reflect/MethodSignature;
+                    BIPUSH 9
+                    INVOKEVIRTUAL org.aspectj.runtime.reflect.Factory.makeSJP (Ljava/lang/String;Lorg/aspectj/lang/Signature;I)Lorg/aspectj/lang/JoinPoint$StaticPart;
+                    PUTSTATIC HelloWorld.ajc$tjp_2 Lorg/aspectj/lang/JoinPoint$StaticPart;
+                    ALOAD_0
+                    LDC "method-execution"
+                    ALOAD_0
+                    LDC "9"
+                    LDC "main"
+                    LDC "HelloWorld"
+                    LDC "[Ljava.lang.String;"
+                    LDC "args"
+                    LDC ""
+                    LDC "void"
+                    INVOKEVIRTUAL org.aspectj.runtime.reflect.Factory.makeMethodSig (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lorg/aspectj/lang/reflect/MethodSignature;
+                    BIPUSH 8
+                    INVOKEVIRTUAL org.aspectj.runtime.reflect.Factory.makeSJP (Ljava/lang/String;Lorg/aspectj/lang/Signature;I)Lorg/aspectj/lang/JoinPoint$StaticPart;
+                    PUTSTATIC HelloWorld.ajc$tjp_3 Lorg/aspectj/lang/JoinPoint$StaticPart;
+                    RETURN
+  end private static void ajc$preClinit()
+end public class HelloWorld
diff --git a/weaver/testdata/TjpAround2HelloWorld.1.9.txt b/weaver/testdata/TjpAround2HelloWorld.1.9.txt
deleted file mode 100644 (file)
index 242d2be..0000000
+++ /dev/null
@@ -1,505 +0,0 @@
-public class HelloWorld extends java.lang.Object:
-  private static org.aspectj.lang.JoinPoint$StaticPart ajc$tjp_0 [Synthetic]
-  private static org.aspectj.lang.JoinPoint$StaticPart ajc$tjp_1 [Synthetic]
-  private static org.aspectj.lang.JoinPoint$StaticPart ajc$tjp_2 [Synthetic]
-  private static org.aspectj.lang.JoinPoint$StaticPart ajc$tjp_3 [Synthetic]
-  public void <init>():
-                    ALOAD_0     // LHelloWorld; ajc$this   (line 5)
-                    INVOKESPECIAL java.lang.Object.<init> ()V
-                    GETSTATIC HelloWorld.ajc$tjp_0 Lorg/aspectj/lang/JoinPoint$StaticPart;
-                    ALOAD_0
-                    ALOAD_0
-                    INVOKESTATIC org.aspectj.runtime.reflect.Factory.makeJP (Lorg/aspectj/lang/JoinPoint$StaticPart;Ljava/lang/Object;Ljava/lang/Object;)Lorg/aspectj/lang/JoinPoint;
-                    ASTORE_1
-    constructor-execution(void HelloWorld.<init>())
-    |               ICONST_2
-    |               ANEWARRAY java.lang.Object
-    |               ASTORE_3
-    |               ALOAD_3
-    |               ICONST_0
-    |               ALOAD_0
-    |               AASTORE
-    |               ALOAD_3
-    |               ICONST_1
-    |               ALOAD_1
-    |               AASTORE
-    |               NEW HelloWorld$AjcClosure3
-    |               DUP
-    |               ALOAD_3
-    |               INVOKESPECIAL HelloWorld$AjcClosure3.<init> ([Ljava/lang/Object;)V
-    |               ALOAD_1
-    |               INVOKESTATIC Aspect.ajc_around (Lorg/aspectj/runtime/internal/AroundClosure;Lorg/aspectj/lang/JoinPoint;)Ljava/lang/Object;
-    |               POP
-    |               RETURN
-    constructor-execution(void HelloWorld.<init>())
-  end public void <init>()
-
-  public static void main(String[]):
-                    ALOAD_0
-                    ASTORE 9
-                    GETSTATIC HelloWorld.ajc$tjp_3 Lorg/aspectj/lang/JoinPoint$StaticPart;
-                    ACONST_NULL
-                    ACONST_NULL
-                    ALOAD 9
-                    INVOKESTATIC org.aspectj.runtime.reflect.Factory.makeJP (Lorg/aspectj/lang/JoinPoint$StaticPart;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Lorg/aspectj/lang/JoinPoint;
-                    ASTORE 10
-    method-execution(void HelloWorld.main(java.lang.String[]))
-    |               ICONST_2   (line 8)
-    |               ANEWARRAY java.lang.Object
-    |               ASTORE 12
-    |               ALOAD 12
-    |               ICONST_0
-    |               ALOAD 9
-    |               AASTORE
-    |               ALOAD 12
-    |               ICONST_1
-    |               ALOAD 10
-    |               AASTORE
-    |               NEW HelloWorld$AjcClosure15
-    |               DUP
-    |               ALOAD 12
-    |               INVOKESPECIAL HelloWorld$AjcClosure15.<init> ([Ljava/lang/Object;)V
-    |               ALOAD 10
-    |               INVOKESTATIC Aspect.ajc_around (Lorg/aspectj/runtime/internal/AroundClosure;Lorg/aspectj/lang/JoinPoint;)Ljava/lang/Object;
-    |               POP
-    |               RETURN
-    method-execution(void HelloWorld.main(java.lang.String[]))
-  end public static void main(String[])
-
-  static void <clinit>():
-                    INVOKESTATIC HelloWorld.ajc$preClinit ()V
-    staticinitialization(void HelloWorld.<clinit>())
-    |               RETURN
-    staticinitialization(void HelloWorld.<clinit>())
-  end static void <clinit>()
-
-  static final void init$_aroundBody0(HelloWorld, org.aspectj.lang.JoinPoint):
-                    RETURN   (line 5)
-  end static final void init$_aroundBody0(HelloWorld, org.aspectj.lang.JoinPoint)
-
-  static final void init$_aroundBody2(HelloWorld, org.aspectj.lang.JoinPoint):
-                    ICONST_2
-                    ANEWARRAY java.lang.Object
-                    ASTORE_2
-                    ALOAD_2
-                    ICONST_0
-                    ALOAD_0
-                    AASTORE
-                    ALOAD_2
-                    ICONST_1
-                    ALOAD_1
-                    AASTORE
-                    NEW HelloWorld$AjcClosure1
-                    DUP
-                    ALOAD_2
-                    INVOKESPECIAL HelloWorld$AjcClosure1.<init> ([Ljava/lang/Object;)V
-                    ALOAD_1
-                    INVOKESTATIC Aspect.ajc_around (Lorg/aspectj/runtime/internal/AroundClosure;Lorg/aspectj/lang/JoinPoint;)Ljava/lang/Object;
-                    POP
-                    RETURN
-  end static final void init$_aroundBody2(HelloWorld, org.aspectj.lang.JoinPoint)
-
-  static final java.io.PrintStream out_aroundBody4(org.aspectj.lang.JoinPoint):
-                    GETSTATIC java.lang.System.out Ljava/io/PrintStream;   (line 8)
-                    ARETURN
-  end static final java.io.PrintStream out_aroundBody4(org.aspectj.lang.JoinPoint)
-
-  static final java.io.PrintStream out_aroundBody6(org.aspectj.lang.JoinPoint):
-                    ICONST_1
-                    ANEWARRAY java.lang.Object
-                    ASTORE_1
-                    ALOAD_1
-                    ICONST_0
-                    ALOAD_0
-                    AASTORE
-                    NEW HelloWorld$AjcClosure5
-                    DUP
-                    ALOAD_1
-                    INVOKESPECIAL HelloWorld$AjcClosure5.<init> ([Ljava/lang/Object;)V
-                    ALOAD_0
-                    INVOKESTATIC Aspect.ajc_around (Lorg/aspectj/runtime/internal/AroundClosure;Lorg/aspectj/lang/JoinPoint;)Ljava/lang/Object;
-                    CHECKCAST java.io.PrintStream
-                    ARETURN
-  end static final java.io.PrintStream out_aroundBody6(org.aspectj.lang.JoinPoint)
-
-  static final void println_aroundBody8(java.io.PrintStream, String, org.aspectj.lang.JoinPoint):
-                    ALOAD_0
-                    ALOAD_1
-                    INVOKEVIRTUAL java.io.PrintStream.println (Ljava/lang/String;)V   (line 9)
-                    RETURN
-  end static final void println_aroundBody8(java.io.PrintStream, String, org.aspectj.lang.JoinPoint)
-
-  static final void println_aroundBody10(java.io.PrintStream, String, org.aspectj.lang.JoinPoint):
-                    ICONST_3
-                    ANEWARRAY java.lang.Object
-                    ASTORE_3
-                    ALOAD_3
-                    ICONST_0
-                    ALOAD_0
-                    AASTORE
-                    ALOAD_3
-                    ICONST_1
-                    ALOAD_1
-                    AASTORE
-                    ALOAD_3
-                    ICONST_2
-                    ALOAD_2
-                    AASTORE
-                    NEW HelloWorld$AjcClosure9
-                    DUP
-                    ALOAD_3
-                    INVOKESPECIAL HelloWorld$AjcClosure9.<init> ([Ljava/lang/Object;)V
-                    ALOAD_2
-                    INVOKESTATIC Aspect.ajc_around (Lorg/aspectj/runtime/internal/AroundClosure;Lorg/aspectj/lang/JoinPoint;)Ljava/lang/Object;
-                    POP
-                    RETURN
-  end static final void println_aroundBody10(java.io.PrintStream, String, org.aspectj.lang.JoinPoint)
-
-  static final void main_aroundBody12(String[], org.aspectj.lang.JoinPoint):
-                    GETSTATIC HelloWorld.ajc$tjp_1 Lorg/aspectj/lang/JoinPoint$StaticPart;
-                    ACONST_NULL
-                    ACONST_NULL
-                    INVOKESTATIC org.aspectj.runtime.reflect.Factory.makeJP (Lorg/aspectj/lang/JoinPoint$StaticPart;Ljava/lang/Object;Ljava/lang/Object;)Lorg/aspectj/lang/JoinPoint;
-                    ASTORE_2
-    field-get(java.io.PrintStream java.lang.System.out)
-    |               ICONST_1
-    |               ANEWARRAY java.lang.Object
-    |               ASTORE 4
-    |               ALOAD 4
-    |               ICONST_0
-    |               ALOAD_2
-    |               AASTORE
-    |               NEW HelloWorld$AjcClosure7
-    |               DUP
-    |               ALOAD 4
-    |               INVOKESPECIAL HelloWorld$AjcClosure7.<init> ([Ljava/lang/Object;)V
-    |               ALOAD_2
-    |               INVOKESTATIC Aspect.ajc_around (Lorg/aspectj/runtime/internal/AroundClosure;Lorg/aspectj/lang/JoinPoint;)Ljava/lang/Object;
-    |               CHECKCAST java.io.PrintStream
-    field-get(java.io.PrintStream java.lang.System.out)
-                    LDC "hello world"   (line 9)
-                    ASTORE 6
-                    ASTORE 8
-                    GETSTATIC HelloWorld.ajc$tjp_2 Lorg/aspectj/lang/JoinPoint$StaticPart;
-                    ACONST_NULL
-                    ALOAD 8
-                    ALOAD 6
-                    INVOKESTATIC org.aspectj.runtime.reflect.Factory.makeJP (Lorg/aspectj/lang/JoinPoint$StaticPart;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Lorg/aspectj/lang/JoinPoint;
-                    ASTORE 10
-    method-call(void java.io.PrintStream.println(java.lang.String))
-    |               ICONST_3
-    |               ANEWARRAY java.lang.Object
-    |               ASTORE 12
-    |               ALOAD 12
-    |               ICONST_0
-    |               ALOAD 8
-    |               AASTORE
-    |               ALOAD 12
-    |               ICONST_1
-    |               ALOAD 6
-    |               AASTORE
-    |               ALOAD 12
-    |               ICONST_2
-    |               ALOAD 10
-    |               AASTORE
-    |               NEW HelloWorld$AjcClosure11
-    |               DUP
-    |               ALOAD 12
-    |               INVOKESPECIAL HelloWorld$AjcClosure11.<init> ([Ljava/lang/Object;)V
-    |               ALOAD 10
-    |               INVOKESTATIC Aspect.ajc_around (Lorg/aspectj/runtime/internal/AroundClosure;Lorg/aspectj/lang/JoinPoint;)Ljava/lang/Object;
-    |               POP
-    method-call(void java.io.PrintStream.println(java.lang.String))
-                    RETURN   (line 11)
-  end static final void main_aroundBody12(String[], org.aspectj.lang.JoinPoint)
-
-  static final void main_aroundBody14(String[], org.aspectj.lang.JoinPoint):
-                    ICONST_2   (line 8)
-                    ANEWARRAY java.lang.Object
-                    ASTORE_2
-                    ALOAD_2
-                    ICONST_0
-                    ALOAD_0
-                    AASTORE
-                    ALOAD_2
-                    ICONST_1
-                    ALOAD_1
-                    AASTORE
-                    NEW HelloWorld$AjcClosure13
-                    DUP
-                    ALOAD_2
-                    INVOKESPECIAL HelloWorld$AjcClosure13.<init> ([Ljava/lang/Object;)V
-                    ALOAD_1
-                    INVOKESTATIC Aspect.ajc_around (Lorg/aspectj/runtime/internal/AroundClosure;Lorg/aspectj/lang/JoinPoint;)Ljava/lang/Object;
-                    POP
-                    RETURN
-  end static final void main_aroundBody14(String[], org.aspectj.lang.JoinPoint)
-
-  private static void ajc$preClinit():
-                    NEW org.aspectj.runtime.reflect.Factory
-                    DUP
-                    LDC "HelloWorld.java"
-                    LDC "HelloWorld"
-                    INVOKESTATIC java.lang.Class.forName (Ljava/lang/String;)Ljava/lang/Class;
-                    INVOKESPECIAL org.aspectj.runtime.reflect.Factory.<init> (Ljava/lang/String;Ljava/lang/Class;)V
-                    ASTORE_0
-                    ALOAD_0
-                    LDC "constructor-execution"
-                    ALOAD_0
-                    LDC "1"
-                    LDC "HelloWorld"
-                    LDC ""
-                    LDC ""
-                    LDC ""
-                    INVOKEVIRTUAL org.aspectj.runtime.reflect.Factory.makeConstructorSig (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lorg/aspectj/lang/reflect/ConstructorSignature;
-                    ICONST_5
-                    INVOKEVIRTUAL org.aspectj.runtime.reflect.Factory.makeSJP (Ljava/lang/String;Lorg/aspectj/lang/Signature;I)Lorg/aspectj/lang/JoinPoint$StaticPart;
-                    PUTSTATIC HelloWorld.ajc$tjp_0 Lorg/aspectj/lang/JoinPoint$StaticPart;
-                    ALOAD_0
-                    LDC "field-get"
-                    ALOAD_0
-                    LDC "19"
-                    LDC "out"
-                    LDC "java.lang.System"
-                    LDC "java.io.PrintStream"
-                    INVOKEVIRTUAL org.aspectj.runtime.reflect.Factory.makeFieldSig (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lorg/aspectj/lang/reflect/FieldSignature;
-                    BIPUSH 8
-                    INVOKEVIRTUAL org.aspectj.runtime.reflect.Factory.makeSJP (Ljava/lang/String;Lorg/aspectj/lang/Signature;I)Lorg/aspectj/lang/JoinPoint$StaticPart;
-                    PUTSTATIC HelloWorld.ajc$tjp_1 Lorg/aspectj/lang/JoinPoint$StaticPart;
-                    ALOAD_0
-                    LDC "method-call"
-                    ALOAD_0
-                    LDC "1"
-                    LDC "println"
-                    LDC "java.io.PrintStream"
-                    LDC "java.lang.String"
-                    LDC "x"
-                    LDC ""
-                    LDC "void"
-                    INVOKEVIRTUAL org.aspectj.runtime.reflect.Factory.makeMethodSig (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lorg/aspectj/lang/reflect/MethodSignature;
-                    BIPUSH 9
-                    INVOKEVIRTUAL org.aspectj.runtime.reflect.Factory.makeSJP (Ljava/lang/String;Lorg/aspectj/lang/Signature;I)Lorg/aspectj/lang/JoinPoint$StaticPart;
-                    PUTSTATIC HelloWorld.ajc$tjp_2 Lorg/aspectj/lang/JoinPoint$StaticPart;
-                    ALOAD_0
-                    LDC "method-execution"
-                    ALOAD_0
-                    LDC "9"
-                    LDC "main"
-                    LDC "HelloWorld"
-                    LDC "[Ljava.lang.String;"
-                    LDC "args"
-                    LDC ""
-                    LDC "void"
-                    INVOKEVIRTUAL org.aspectj.runtime.reflect.Factory.makeMethodSig (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lorg/aspectj/lang/reflect/MethodSignature;
-                    BIPUSH 8
-                    INVOKEVIRTUAL org.aspectj.runtime.reflect.Factory.makeSJP (Ljava/lang/String;Lorg/aspectj/lang/Signature;I)Lorg/aspectj/lang/JoinPoint$StaticPart;
-                    PUTSTATIC HelloWorld.ajc$tjp_3 Lorg/aspectj/lang/JoinPoint$StaticPart;
-                    RETURN
-  end private static void ajc$preClinit()
-end public class HelloWorld
-
-public class HelloWorld$AjcClosure1 extends org.aspectj.runtime.internal.AroundClosure:
-  public void <init>(Object[]):
-                    ALOAD_0
-                    ALOAD_1
-                    INVOKESPECIAL org.aspectj.runtime.internal.AroundClosure.<init> ([Ljava/lang/Object;)V
-                    RETURN
-  end public void <init>(Object[])
-
-  public Object run(Object[]):
-                    ALOAD_0
-                    GETFIELD org.aspectj.runtime.internal.AroundClosure.state [Ljava/lang/Object;
-                    ASTORE_2
-                    ALOAD_2
-                    ICONST_0
-                    AALOAD
-                    CHECKCAST HelloWorld
-                    ALOAD_2
-                    ICONST_1
-                    AALOAD
-                    CHECKCAST org.aspectj.lang.JoinPoint
-                    INVOKESTATIC HelloWorld.init$_aroundBody0 (LHelloWorld;Lorg/aspectj/lang/JoinPoint;)V
-                    ACONST_NULL
-                    ARETURN
-  end public Object run(Object[])
-end public class HelloWorld$AjcClosure1
-
-public class HelloWorld$AjcClosure3 extends org.aspectj.runtime.internal.AroundClosure:
-  public void <init>(Object[]):
-                    ALOAD_0
-                    ALOAD_1
-                    INVOKESPECIAL org.aspectj.runtime.internal.AroundClosure.<init> ([Ljava/lang/Object;)V
-                    RETURN
-  end public void <init>(Object[])
-
-  public Object run(Object[]):
-                    ALOAD_0
-                    GETFIELD org.aspectj.runtime.internal.AroundClosure.state [Ljava/lang/Object;
-                    ASTORE_2
-                    ALOAD_2
-                    ICONST_0
-                    AALOAD
-                    CHECKCAST HelloWorld
-                    ALOAD_2
-                    ICONST_1
-                    AALOAD
-                    CHECKCAST org.aspectj.lang.JoinPoint
-                    INVOKESTATIC HelloWorld.init$_aroundBody2 (LHelloWorld;Lorg/aspectj/lang/JoinPoint;)V
-                    ACONST_NULL
-                    ARETURN
-  end public Object run(Object[])
-end public class HelloWorld$AjcClosure3
-
-public class HelloWorld$AjcClosure5 extends org.aspectj.runtime.internal.AroundClosure:
-  public void <init>(Object[]):
-                    ALOAD_0
-                    ALOAD_1
-                    INVOKESPECIAL org.aspectj.runtime.internal.AroundClosure.<init> ([Ljava/lang/Object;)V
-                    RETURN
-  end public void <init>(Object[])
-
-  public Object run(Object[]):
-                    ALOAD_0
-                    GETFIELD org.aspectj.runtime.internal.AroundClosure.state [Ljava/lang/Object;
-                    ASTORE_2
-                    ALOAD_2
-                    ICONST_0
-                    AALOAD
-                    CHECKCAST org.aspectj.lang.JoinPoint
-                    INVOKESTATIC HelloWorld.out_aroundBody4 (Lorg/aspectj/lang/JoinPoint;)Ljava/io/PrintStream;
-                    ARETURN
-  end public Object run(Object[])
-end public class HelloWorld$AjcClosure5
-
-public class HelloWorld$AjcClosure7 extends org.aspectj.runtime.internal.AroundClosure:
-  public void <init>(Object[]):
-                    ALOAD_0
-                    ALOAD_1
-                    INVOKESPECIAL org.aspectj.runtime.internal.AroundClosure.<init> ([Ljava/lang/Object;)V
-                    RETURN
-  end public void <init>(Object[])
-
-  public Object run(Object[]):
-                    ALOAD_0
-                    GETFIELD org.aspectj.runtime.internal.AroundClosure.state [Ljava/lang/Object;
-                    ASTORE_2
-                    ALOAD_2
-                    ICONST_0
-                    AALOAD
-                    CHECKCAST org.aspectj.lang.JoinPoint
-                    INVOKESTATIC HelloWorld.out_aroundBody6 (Lorg/aspectj/lang/JoinPoint;)Ljava/io/PrintStream;
-                    ARETURN
-  end public Object run(Object[])
-end public class HelloWorld$AjcClosure7
-
-public class HelloWorld$AjcClosure9 extends org.aspectj.runtime.internal.AroundClosure:
-  public void <init>(Object[]):
-                    ALOAD_0
-                    ALOAD_1
-                    INVOKESPECIAL org.aspectj.runtime.internal.AroundClosure.<init> ([Ljava/lang/Object;)V
-                    RETURN
-  end public void <init>(Object[])
-
-  public Object run(Object[]):
-                    ALOAD_0
-                    GETFIELD org.aspectj.runtime.internal.AroundClosure.state [Ljava/lang/Object;
-                    ASTORE_2
-                    ALOAD_2
-                    ICONST_0
-                    AALOAD
-                    CHECKCAST java.io.PrintStream
-                    ALOAD_2
-                    ICONST_1
-                    AALOAD
-                    CHECKCAST java.lang.String
-                    ALOAD_2
-                    ICONST_2
-                    AALOAD
-                    CHECKCAST org.aspectj.lang.JoinPoint
-                    INVOKESTATIC HelloWorld.println_aroundBody8 (Ljava/io/PrintStream;Ljava/lang/String;Lorg/aspectj/lang/JoinPoint;)V
-                    ACONST_NULL
-                    ARETURN
-  end public Object run(Object[])
-end public class HelloWorld$AjcClosure9
-
-public class HelloWorld$AjcClosure11 extends org.aspectj.runtime.internal.AroundClosure:
-  public void <init>(Object[]):
-                    ALOAD_0
-                    ALOAD_1
-                    INVOKESPECIAL org.aspectj.runtime.internal.AroundClosure.<init> ([Ljava/lang/Object;)V
-                    RETURN
-  end public void <init>(Object[])
-
-  public Object run(Object[]):
-                    ALOAD_0
-                    GETFIELD org.aspectj.runtime.internal.AroundClosure.state [Ljava/lang/Object;
-                    ASTORE_2
-                    ALOAD_2
-                    ICONST_0
-                    AALOAD
-                    CHECKCAST java.io.PrintStream
-                    ALOAD_2
-                    ICONST_1
-                    AALOAD
-                    CHECKCAST java.lang.String
-                    ALOAD_2
-                    ICONST_2
-                    AALOAD
-                    CHECKCAST org.aspectj.lang.JoinPoint
-                    INVOKESTATIC HelloWorld.println_aroundBody10 (Ljava/io/PrintStream;Ljava/lang/String;Lorg/aspectj/lang/JoinPoint;)V
-                    ACONST_NULL
-                    ARETURN
-  end public Object run(Object[])
-end public class HelloWorld$AjcClosure11
-
-public class HelloWorld$AjcClosure13 extends org.aspectj.runtime.internal.AroundClosure:
-  public void <init>(Object[]):
-                    ALOAD_0
-                    ALOAD_1
-                    INVOKESPECIAL org.aspectj.runtime.internal.AroundClosure.<init> ([Ljava/lang/Object;)V
-                    RETURN
-  end public void <init>(Object[])
-
-  public Object run(Object[]):
-                    ALOAD_0
-                    GETFIELD org.aspectj.runtime.internal.AroundClosure.state [Ljava/lang/Object;
-                    ASTORE_2
-                    ALOAD_2
-                    ICONST_0
-                    AALOAD
-                    CHECKCAST [Ljava.lang.String;
-                    ALOAD_2
-                    ICONST_1
-                    AALOAD
-                    CHECKCAST org.aspectj.lang.JoinPoint
-                    INVOKESTATIC HelloWorld.main_aroundBody12 ([Ljava/lang/String;Lorg/aspectj/lang/JoinPoint;)V
-                    ACONST_NULL
-                    ARETURN
-  end public Object run(Object[])
-end public class HelloWorld$AjcClosure13
-
-public class HelloWorld$AjcClosure15 extends org.aspectj.runtime.internal.AroundClosure:
-  public void <init>(Object[]):
-                    ALOAD_0
-                    ALOAD_1
-                    INVOKESPECIAL org.aspectj.runtime.internal.AroundClosure.<init> ([Ljava/lang/Object;)V
-                    RETURN
-  end public void <init>(Object[])
-
-  public Object run(Object[]):
-                    ALOAD_0
-                    GETFIELD org.aspectj.runtime.internal.AroundClosure.state [Ljava/lang/Object;
-                    ASTORE_2
-                    ALOAD_2
-                    ICONST_0
-                    AALOAD
-                    CHECKCAST [Ljava.lang.String;
-                    ALOAD_2
-                    ICONST_1
-                    AALOAD
-                    CHECKCAST org.aspectj.lang.JoinPoint
-                    INVOKESTATIC HelloWorld.main_aroundBody14 ([Ljava/lang/String;Lorg/aspectj/lang/JoinPoint;)V
-                    ACONST_NULL
-                    ARETURN
-  end public Object run(Object[])
-end public class HelloWorld$AjcClosure15
diff --git a/weaver/testdata/TjpAround2HelloWorld.9.0.txt b/weaver/testdata/TjpAround2HelloWorld.9.0.txt
new file mode 100644 (file)
index 0000000..242d2be
--- /dev/null
@@ -0,0 +1,505 @@
+public class HelloWorld extends java.lang.Object:
+  private static org.aspectj.lang.JoinPoint$StaticPart ajc$tjp_0 [Synthetic]
+  private static org.aspectj.lang.JoinPoint$StaticPart ajc$tjp_1 [Synthetic]
+  private static org.aspectj.lang.JoinPoint$StaticPart ajc$tjp_2 [Synthetic]
+  private static org.aspectj.lang.JoinPoint$StaticPart ajc$tjp_3 [Synthetic]
+  public void <init>():
+                    ALOAD_0     // LHelloWorld; ajc$this   (line 5)
+                    INVOKESPECIAL java.lang.Object.<init> ()V
+                    GETSTATIC HelloWorld.ajc$tjp_0 Lorg/aspectj/lang/JoinPoint$StaticPart;
+                    ALOAD_0
+                    ALOAD_0
+                    INVOKESTATIC org.aspectj.runtime.reflect.Factory.makeJP (Lorg/aspectj/lang/JoinPoint$StaticPart;Ljava/lang/Object;Ljava/lang/Object;)Lorg/aspectj/lang/JoinPoint;
+                    ASTORE_1
+    constructor-execution(void HelloWorld.<init>())
+    |               ICONST_2
+    |               ANEWARRAY java.lang.Object
+    |               ASTORE_3
+    |               ALOAD_3
+    |               ICONST_0
+    |               ALOAD_0
+    |               AASTORE
+    |               ALOAD_3
+    |               ICONST_1
+    |               ALOAD_1
+    |               AASTORE
+    |               NEW HelloWorld$AjcClosure3
+    |               DUP
+    |               ALOAD_3
+    |               INVOKESPECIAL HelloWorld$AjcClosure3.<init> ([Ljava/lang/Object;)V
+    |               ALOAD_1
+    |               INVOKESTATIC Aspect.ajc_around (Lorg/aspectj/runtime/internal/AroundClosure;Lorg/aspectj/lang/JoinPoint;)Ljava/lang/Object;
+    |               POP
+    |               RETURN
+    constructor-execution(void HelloWorld.<init>())
+  end public void <init>()
+
+  public static void main(String[]):
+                    ALOAD_0
+                    ASTORE 9
+                    GETSTATIC HelloWorld.ajc$tjp_3 Lorg/aspectj/lang/JoinPoint$StaticPart;
+                    ACONST_NULL
+                    ACONST_NULL
+                    ALOAD 9
+                    INVOKESTATIC org.aspectj.runtime.reflect.Factory.makeJP (Lorg/aspectj/lang/JoinPoint$StaticPart;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Lorg/aspectj/lang/JoinPoint;
+                    ASTORE 10
+    method-execution(void HelloWorld.main(java.lang.String[]))
+    |               ICONST_2   (line 8)
+    |               ANEWARRAY java.lang.Object
+    |               ASTORE 12
+    |               ALOAD 12
+    |               ICONST_0
+    |               ALOAD 9
+    |               AASTORE
+    |               ALOAD 12
+    |               ICONST_1
+    |               ALOAD 10
+    |               AASTORE
+    |               NEW HelloWorld$AjcClosure15
+    |               DUP
+    |               ALOAD 12
+    |               INVOKESPECIAL HelloWorld$AjcClosure15.<init> ([Ljava/lang/Object;)V
+    |               ALOAD 10
+    |               INVOKESTATIC Aspect.ajc_around (Lorg/aspectj/runtime/internal/AroundClosure;Lorg/aspectj/lang/JoinPoint;)Ljava/lang/Object;
+    |               POP
+    |               RETURN
+    method-execution(void HelloWorld.main(java.lang.String[]))
+  end public static void main(String[])
+
+  static void <clinit>():
+                    INVOKESTATIC HelloWorld.ajc$preClinit ()V
+    staticinitialization(void HelloWorld.<clinit>())
+    |               RETURN
+    staticinitialization(void HelloWorld.<clinit>())
+  end static void <clinit>()
+
+  static final void init$_aroundBody0(HelloWorld, org.aspectj.lang.JoinPoint):
+                    RETURN   (line 5)
+  end static final void init$_aroundBody0(HelloWorld, org.aspectj.lang.JoinPoint)
+
+  static final void init$_aroundBody2(HelloWorld, org.aspectj.lang.JoinPoint):
+                    ICONST_2
+                    ANEWARRAY java.lang.Object
+                    ASTORE_2
+                    ALOAD_2
+                    ICONST_0
+                    ALOAD_0
+                    AASTORE
+                    ALOAD_2
+                    ICONST_1
+                    ALOAD_1
+                    AASTORE
+                    NEW HelloWorld$AjcClosure1
+                    DUP
+                    ALOAD_2
+                    INVOKESPECIAL HelloWorld$AjcClosure1.<init> ([Ljava/lang/Object;)V
+                    ALOAD_1
+                    INVOKESTATIC Aspect.ajc_around (Lorg/aspectj/runtime/internal/AroundClosure;Lorg/aspectj/lang/JoinPoint;)Ljava/lang/Object;
+                    POP
+                    RETURN
+  end static final void init$_aroundBody2(HelloWorld, org.aspectj.lang.JoinPoint)
+
+  static final java.io.PrintStream out_aroundBody4(org.aspectj.lang.JoinPoint):
+                    GETSTATIC java.lang.System.out Ljava/io/PrintStream;   (line 8)
+                    ARETURN
+  end static final java.io.PrintStream out_aroundBody4(org.aspectj.lang.JoinPoint)
+
+  static final java.io.PrintStream out_aroundBody6(org.aspectj.lang.JoinPoint):
+                    ICONST_1
+                    ANEWARRAY java.lang.Object
+                    ASTORE_1
+                    ALOAD_1
+                    ICONST_0
+                    ALOAD_0
+                    AASTORE
+                    NEW HelloWorld$AjcClosure5
+                    DUP
+                    ALOAD_1
+                    INVOKESPECIAL HelloWorld$AjcClosure5.<init> ([Ljava/lang/Object;)V
+                    ALOAD_0
+                    INVOKESTATIC Aspect.ajc_around (Lorg/aspectj/runtime/internal/AroundClosure;Lorg/aspectj/lang/JoinPoint;)Ljava/lang/Object;
+                    CHECKCAST java.io.PrintStream
+                    ARETURN
+  end static final java.io.PrintStream out_aroundBody6(org.aspectj.lang.JoinPoint)
+
+  static final void println_aroundBody8(java.io.PrintStream, String, org.aspectj.lang.JoinPoint):
+                    ALOAD_0
+                    ALOAD_1
+                    INVOKEVIRTUAL java.io.PrintStream.println (Ljava/lang/String;)V   (line 9)
+                    RETURN
+  end static final void println_aroundBody8(java.io.PrintStream, String, org.aspectj.lang.JoinPoint)
+
+  static final void println_aroundBody10(java.io.PrintStream, String, org.aspectj.lang.JoinPoint):
+                    ICONST_3
+                    ANEWARRAY java.lang.Object
+                    ASTORE_3
+                    ALOAD_3
+                    ICONST_0
+                    ALOAD_0
+                    AASTORE
+                    ALOAD_3
+                    ICONST_1
+                    ALOAD_1
+                    AASTORE
+                    ALOAD_3
+                    ICONST_2
+                    ALOAD_2
+                    AASTORE
+                    NEW HelloWorld$AjcClosure9
+                    DUP
+                    ALOAD_3
+                    INVOKESPECIAL HelloWorld$AjcClosure9.<init> ([Ljava/lang/Object;)V
+                    ALOAD_2
+                    INVOKESTATIC Aspect.ajc_around (Lorg/aspectj/runtime/internal/AroundClosure;Lorg/aspectj/lang/JoinPoint;)Ljava/lang/Object;
+                    POP
+                    RETURN
+  end static final void println_aroundBody10(java.io.PrintStream, String, org.aspectj.lang.JoinPoint)
+
+  static final void main_aroundBody12(String[], org.aspectj.lang.JoinPoint):
+                    GETSTATIC HelloWorld.ajc$tjp_1 Lorg/aspectj/lang/JoinPoint$StaticPart;
+                    ACONST_NULL
+                    ACONST_NULL
+                    INVOKESTATIC org.aspectj.runtime.reflect.Factory.makeJP (Lorg/aspectj/lang/JoinPoint$StaticPart;Ljava/lang/Object;Ljava/lang/Object;)Lorg/aspectj/lang/JoinPoint;
+                    ASTORE_2
+    field-get(java.io.PrintStream java.lang.System.out)
+    |               ICONST_1
+    |               ANEWARRAY java.lang.Object
+    |               ASTORE 4
+    |               ALOAD 4
+    |               ICONST_0
+    |               ALOAD_2
+    |               AASTORE
+    |               NEW HelloWorld$AjcClosure7
+    |               DUP
+    |               ALOAD 4
+    |               INVOKESPECIAL HelloWorld$AjcClosure7.<init> ([Ljava/lang/Object;)V
+    |               ALOAD_2
+    |               INVOKESTATIC Aspect.ajc_around (Lorg/aspectj/runtime/internal/AroundClosure;Lorg/aspectj/lang/JoinPoint;)Ljava/lang/Object;
+    |               CHECKCAST java.io.PrintStream
+    field-get(java.io.PrintStream java.lang.System.out)
+                    LDC "hello world"   (line 9)
+                    ASTORE 6
+                    ASTORE 8
+                    GETSTATIC HelloWorld.ajc$tjp_2 Lorg/aspectj/lang/JoinPoint$StaticPart;
+                    ACONST_NULL
+                    ALOAD 8
+                    ALOAD 6
+                    INVOKESTATIC org.aspectj.runtime.reflect.Factory.makeJP (Lorg/aspectj/lang/JoinPoint$StaticPart;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Lorg/aspectj/lang/JoinPoint;
+                    ASTORE 10
+    method-call(void java.io.PrintStream.println(java.lang.String))
+    |               ICONST_3
+    |               ANEWARRAY java.lang.Object
+    |               ASTORE 12
+    |               ALOAD 12
+    |               ICONST_0
+    |               ALOAD 8
+    |               AASTORE
+    |               ALOAD 12
+    |               ICONST_1
+    |               ALOAD 6
+    |               AASTORE
+    |               ALOAD 12
+    |               ICONST_2
+    |               ALOAD 10
+    |               AASTORE
+    |               NEW HelloWorld$AjcClosure11
+    |               DUP
+    |               ALOAD 12
+    |               INVOKESPECIAL HelloWorld$AjcClosure11.<init> ([Ljava/lang/Object;)V
+    |               ALOAD 10
+    |               INVOKESTATIC Aspect.ajc_around (Lorg/aspectj/runtime/internal/AroundClosure;Lorg/aspectj/lang/JoinPoint;)Ljava/lang/Object;
+    |               POP
+    method-call(void java.io.PrintStream.println(java.lang.String))
+                    RETURN   (line 11)
+  end static final void main_aroundBody12(String[], org.aspectj.lang.JoinPoint)
+
+  static final void main_aroundBody14(String[], org.aspectj.lang.JoinPoint):
+                    ICONST_2   (line 8)
+                    ANEWARRAY java.lang.Object
+                    ASTORE_2
+                    ALOAD_2
+                    ICONST_0
+                    ALOAD_0
+                    AASTORE
+                    ALOAD_2
+                    ICONST_1
+                    ALOAD_1
+                    AASTORE
+                    NEW HelloWorld$AjcClosure13
+                    DUP
+                    ALOAD_2
+                    INVOKESPECIAL HelloWorld$AjcClosure13.<init> ([Ljava/lang/Object;)V
+                    ALOAD_1
+                    INVOKESTATIC Aspect.ajc_around (Lorg/aspectj/runtime/internal/AroundClosure;Lorg/aspectj/lang/JoinPoint;)Ljava/lang/Object;
+                    POP
+                    RETURN
+  end static final void main_aroundBody14(String[], org.aspectj.lang.JoinPoint)
+
+  private static void ajc$preClinit():
+                    NEW org.aspectj.runtime.reflect.Factory
+                    DUP
+                    LDC "HelloWorld.java"
+                    LDC "HelloWorld"
+                    INVOKESTATIC java.lang.Class.forName (Ljava/lang/String;)Ljava/lang/Class;
+                    INVOKESPECIAL org.aspectj.runtime.reflect.Factory.<init> (Ljava/lang/String;Ljava/lang/Class;)V
+                    ASTORE_0
+                    ALOAD_0
+                    LDC "constructor-execution"
+                    ALOAD_0
+                    LDC "1"
+                    LDC "HelloWorld"
+                    LDC ""
+                    LDC ""
+                    LDC ""
+                    INVOKEVIRTUAL org.aspectj.runtime.reflect.Factory.makeConstructorSig (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lorg/aspectj/lang/reflect/ConstructorSignature;
+                    ICONST_5
+                    INVOKEVIRTUAL org.aspectj.runtime.reflect.Factory.makeSJP (Ljava/lang/String;Lorg/aspectj/lang/Signature;I)Lorg/aspectj/lang/JoinPoint$StaticPart;
+                    PUTSTATIC HelloWorld.ajc$tjp_0 Lorg/aspectj/lang/JoinPoint$StaticPart;
+                    ALOAD_0
+                    LDC "field-get"
+                    ALOAD_0
+                    LDC "19"
+                    LDC "out"
+                    LDC "java.lang.System"
+                    LDC "java.io.PrintStream"
+                    INVOKEVIRTUAL org.aspectj.runtime.reflect.Factory.makeFieldSig (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lorg/aspectj/lang/reflect/FieldSignature;
+                    BIPUSH 8
+                    INVOKEVIRTUAL org.aspectj.runtime.reflect.Factory.makeSJP (Ljava/lang/String;Lorg/aspectj/lang/Signature;I)Lorg/aspectj/lang/JoinPoint$StaticPart;
+                    PUTSTATIC HelloWorld.ajc$tjp_1 Lorg/aspectj/lang/JoinPoint$StaticPart;
+                    ALOAD_0
+                    LDC "method-call"
+                    ALOAD_0
+                    LDC "1"
+                    LDC "println"
+                    LDC "java.io.PrintStream"
+                    LDC "java.lang.String"
+                    LDC "x"
+                    LDC ""
+                    LDC "void"
+                    INVOKEVIRTUAL org.aspectj.runtime.reflect.Factory.makeMethodSig (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lorg/aspectj/lang/reflect/MethodSignature;
+                    BIPUSH 9
+                    INVOKEVIRTUAL org.aspectj.runtime.reflect.Factory.makeSJP (Ljava/lang/String;Lorg/aspectj/lang/Signature;I)Lorg/aspectj/lang/JoinPoint$StaticPart;
+                    PUTSTATIC HelloWorld.ajc$tjp_2 Lorg/aspectj/lang/JoinPoint$StaticPart;
+                    ALOAD_0
+                    LDC "method-execution"
+                    ALOAD_0
+                    LDC "9"
+                    LDC "main"
+                    LDC "HelloWorld"
+                    LDC "[Ljava.lang.String;"
+                    LDC "args"
+                    LDC ""
+                    LDC "void"
+                    INVOKEVIRTUAL org.aspectj.runtime.reflect.Factory.makeMethodSig (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lorg/aspectj/lang/reflect/MethodSignature;
+                    BIPUSH 8
+                    INVOKEVIRTUAL org.aspectj.runtime.reflect.Factory.makeSJP (Ljava/lang/String;Lorg/aspectj/lang/Signature;I)Lorg/aspectj/lang/JoinPoint$StaticPart;
+                    PUTSTATIC HelloWorld.ajc$tjp_3 Lorg/aspectj/lang/JoinPoint$StaticPart;
+                    RETURN
+  end private static void ajc$preClinit()
+end public class HelloWorld
+
+public class HelloWorld$AjcClosure1 extends org.aspectj.runtime.internal.AroundClosure:
+  public void <init>(Object[]):
+                    ALOAD_0
+                    ALOAD_1
+                    INVOKESPECIAL org.aspectj.runtime.internal.AroundClosure.<init> ([Ljava/lang/Object;)V
+                    RETURN
+  end public void <init>(Object[])
+
+  public Object run(Object[]):
+                    ALOAD_0
+                    GETFIELD org.aspectj.runtime.internal.AroundClosure.state [Ljava/lang/Object;
+                    ASTORE_2
+                    ALOAD_2
+                    ICONST_0
+                    AALOAD
+                    CHECKCAST HelloWorld
+                    ALOAD_2
+                    ICONST_1
+                    AALOAD
+                    CHECKCAST org.aspectj.lang.JoinPoint
+                    INVOKESTATIC HelloWorld.init$_aroundBody0 (LHelloWorld;Lorg/aspectj/lang/JoinPoint;)V
+                    ACONST_NULL
+                    ARETURN
+  end public Object run(Object[])
+end public class HelloWorld$AjcClosure1
+
+public class HelloWorld$AjcClosure3 extends org.aspectj.runtime.internal.AroundClosure:
+  public void <init>(Object[]):
+                    ALOAD_0
+                    ALOAD_1
+                    INVOKESPECIAL org.aspectj.runtime.internal.AroundClosure.<init> ([Ljava/lang/Object;)V
+                    RETURN
+  end public void <init>(Object[])
+
+  public Object run(Object[]):
+                    ALOAD_0
+                    GETFIELD org.aspectj.runtime.internal.AroundClosure.state [Ljava/lang/Object;
+                    ASTORE_2
+                    ALOAD_2
+                    ICONST_0
+                    AALOAD
+                    CHECKCAST HelloWorld
+                    ALOAD_2
+                    ICONST_1
+                    AALOAD
+                    CHECKCAST org.aspectj.lang.JoinPoint
+                    INVOKESTATIC HelloWorld.init$_aroundBody2 (LHelloWorld;Lorg/aspectj/lang/JoinPoint;)V
+                    ACONST_NULL
+                    ARETURN
+  end public Object run(Object[])
+end public class HelloWorld$AjcClosure3
+
+public class HelloWorld$AjcClosure5 extends org.aspectj.runtime.internal.AroundClosure:
+  public void <init>(Object[]):
+                    ALOAD_0
+                    ALOAD_1
+                    INVOKESPECIAL org.aspectj.runtime.internal.AroundClosure.<init> ([Ljava/lang/Object;)V
+                    RETURN
+  end public void <init>(Object[])
+
+  public Object run(Object[]):
+                    ALOAD_0
+                    GETFIELD org.aspectj.runtime.internal.AroundClosure.state [Ljava/lang/Object;
+                    ASTORE_2
+                    ALOAD_2
+                    ICONST_0
+                    AALOAD
+                    CHECKCAST org.aspectj.lang.JoinPoint
+                    INVOKESTATIC HelloWorld.out_aroundBody4 (Lorg/aspectj/lang/JoinPoint;)Ljava/io/PrintStream;
+                    ARETURN
+  end public Object run(Object[])
+end public class HelloWorld$AjcClosure5
+
+public class HelloWorld$AjcClosure7 extends org.aspectj.runtime.internal.AroundClosure:
+  public void <init>(Object[]):
+                    ALOAD_0
+                    ALOAD_1
+                    INVOKESPECIAL org.aspectj.runtime.internal.AroundClosure.<init> ([Ljava/lang/Object;)V
+                    RETURN
+  end public void <init>(Object[])
+
+  public Object run(Object[]):
+                    ALOAD_0
+                    GETFIELD org.aspectj.runtime.internal.AroundClosure.state [Ljava/lang/Object;
+                    ASTORE_2
+                    ALOAD_2
+                    ICONST_0
+                    AALOAD
+                    CHECKCAST org.aspectj.lang.JoinPoint
+                    INVOKESTATIC HelloWorld.out_aroundBody6 (Lorg/aspectj/lang/JoinPoint;)Ljava/io/PrintStream;
+                    ARETURN
+  end public Object run(Object[])
+end public class HelloWorld$AjcClosure7
+
+public class HelloWorld$AjcClosure9 extends org.aspectj.runtime.internal.AroundClosure:
+  public void <init>(Object[]):
+                    ALOAD_0
+                    ALOAD_1
+                    INVOKESPECIAL org.aspectj.runtime.internal.AroundClosure.<init> ([Ljava/lang/Object;)V
+                    RETURN
+  end public void <init>(Object[])
+
+  public Object run(Object[]):
+                    ALOAD_0
+                    GETFIELD org.aspectj.runtime.internal.AroundClosure.state [Ljava/lang/Object;
+                    ASTORE_2
+                    ALOAD_2
+                    ICONST_0
+                    AALOAD
+                    CHECKCAST java.io.PrintStream
+                    ALOAD_2
+                    ICONST_1
+                    AALOAD
+                    CHECKCAST java.lang.String
+                    ALOAD_2
+                    ICONST_2
+                    AALOAD
+                    CHECKCAST org.aspectj.lang.JoinPoint
+                    INVOKESTATIC HelloWorld.println_aroundBody8 (Ljava/io/PrintStream;Ljava/lang/String;Lorg/aspectj/lang/JoinPoint;)V
+                    ACONST_NULL
+                    ARETURN
+  end public Object run(Object[])
+end public class HelloWorld$AjcClosure9
+
+public class HelloWorld$AjcClosure11 extends org.aspectj.runtime.internal.AroundClosure:
+  public void <init>(Object[]):
+                    ALOAD_0
+                    ALOAD_1
+                    INVOKESPECIAL org.aspectj.runtime.internal.AroundClosure.<init> ([Ljava/lang/Object;)V
+                    RETURN
+  end public void <init>(Object[])
+
+  public Object run(Object[]):
+                    ALOAD_0
+                    GETFIELD org.aspectj.runtime.internal.AroundClosure.state [Ljava/lang/Object;
+                    ASTORE_2
+                    ALOAD_2
+                    ICONST_0
+                    AALOAD
+                    CHECKCAST java.io.PrintStream
+                    ALOAD_2
+                    ICONST_1
+                    AALOAD
+                    CHECKCAST java.lang.String
+                    ALOAD_2
+                    ICONST_2
+                    AALOAD
+                    CHECKCAST org.aspectj.lang.JoinPoint
+                    INVOKESTATIC HelloWorld.println_aroundBody10 (Ljava/io/PrintStream;Ljava/lang/String;Lorg/aspectj/lang/JoinPoint;)V
+                    ACONST_NULL
+                    ARETURN
+  end public Object run(Object[])
+end public class HelloWorld$AjcClosure11
+
+public class HelloWorld$AjcClosure13 extends org.aspectj.runtime.internal.AroundClosure:
+  public void <init>(Object[]):
+                    ALOAD_0
+                    ALOAD_1
+                    INVOKESPECIAL org.aspectj.runtime.internal.AroundClosure.<init> ([Ljava/lang/Object;)V
+                    RETURN
+  end public void <init>(Object[])
+
+  public Object run(Object[]):
+                    ALOAD_0
+                    GETFIELD org.aspectj.runtime.internal.AroundClosure.state [Ljava/lang/Object;
+                    ASTORE_2
+                    ALOAD_2
+                    ICONST_0
+                    AALOAD
+                    CHECKCAST [Ljava.lang.String;
+                    ALOAD_2
+                    ICONST_1
+                    AALOAD
+                    CHECKCAST org.aspectj.lang.JoinPoint
+                    INVOKESTATIC HelloWorld.main_aroundBody12 ([Ljava/lang/String;Lorg/aspectj/lang/JoinPoint;)V
+                    ACONST_NULL
+                    ARETURN
+  end public Object run(Object[])
+end public class HelloWorld$AjcClosure13
+
+public class HelloWorld$AjcClosure15 extends org.aspectj.runtime.internal.AroundClosure:
+  public void <init>(Object[]):
+                    ALOAD_0
+                    ALOAD_1
+                    INVOKESPECIAL org.aspectj.runtime.internal.AroundClosure.<init> ([Ljava/lang/Object;)V
+                    RETURN
+  end public void <init>(Object[])
+
+  public Object run(Object[]):
+                    ALOAD_0
+                    GETFIELD org.aspectj.runtime.internal.AroundClosure.state [Ljava/lang/Object;
+                    ASTORE_2
+                    ALOAD_2
+                    ICONST_0
+                    AALOAD
+                    CHECKCAST [Ljava.lang.String;
+                    ALOAD_2
+                    ICONST_1
+                    AALOAD
+                    CHECKCAST org.aspectj.lang.JoinPoint
+                    INVOKESTATIC HelloWorld.main_aroundBody14 ([Ljava/lang/String;Lorg/aspectj/lang/JoinPoint;)V
+                    ACONST_NULL
+                    ARETURN
+  end public Object run(Object[])
+end public class HelloWorld$AjcClosure15
diff --git a/weaver/testdata/TjpAroundHelloWorld.1.9.txt b/weaver/testdata/TjpAroundHelloWorld.1.9.txt
deleted file mode 100644 (file)
index 65abd2e..0000000
+++ /dev/null
@@ -1,314 +0,0 @@
-public class HelloWorld extends java.lang.Object:
-  private static org.aspectj.lang.JoinPoint$StaticPart ajc$tjp_0 [Synthetic]
-  private static org.aspectj.lang.JoinPoint$StaticPart ajc$tjp_1 [Synthetic]
-  private static org.aspectj.lang.JoinPoint$StaticPart ajc$tjp_2 [Synthetic]
-  private static org.aspectj.lang.JoinPoint$StaticPart ajc$tjp_3 [Synthetic]
-  public void <init>():
-                    ALOAD_0     // LHelloWorld; ajc$this   (line 5)
-                    INVOKESPECIAL java.lang.Object.<init> ()V
-                    GETSTATIC HelloWorld.ajc$tjp_0 Lorg/aspectj/lang/JoinPoint$StaticPart;
-                    ALOAD_0
-                    ALOAD_0
-                    INVOKESTATIC org.aspectj.runtime.reflect.Factory.makeJP (Lorg/aspectj/lang/JoinPoint$StaticPart;Ljava/lang/Object;Ljava/lang/Object;)Lorg/aspectj/lang/JoinPoint;
-                    ASTORE_1
-    constructor-execution(void HelloWorld.<init>())
-    |               ICONST_2
-    |               ANEWARRAY java.lang.Object
-    |               ASTORE_2
-    |               ALOAD_2
-    |               ICONST_0
-    |               ALOAD_0
-    |               AASTORE
-    |               ALOAD_2
-    |               ICONST_1
-    |               ALOAD_1
-    |               AASTORE
-    |               NEW HelloWorld$AjcClosure1
-    |               DUP
-    |               ALOAD_2
-    |               INVOKESPECIAL HelloWorld$AjcClosure1.<init> ([Ljava/lang/Object;)V
-    |               ALOAD_1
-    |               INVOKESTATIC Aspect.ajc_around (Lorg/aspectj/runtime/internal/AroundClosure;Lorg/aspectj/lang/JoinPoint;)Ljava/lang/Object;
-    |               POP
-    |               RETURN
-    constructor-execution(void HelloWorld.<init>())
-  end public void <init>()
-
-  public static void main(String[]):
-                    ALOAD_0
-                    ASTORE 7
-                    GETSTATIC HelloWorld.ajc$tjp_3 Lorg/aspectj/lang/JoinPoint$StaticPart;
-                    ACONST_NULL
-                    ACONST_NULL
-                    ALOAD 7
-                    INVOKESTATIC org.aspectj.runtime.reflect.Factory.makeJP (Lorg/aspectj/lang/JoinPoint$StaticPart;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Lorg/aspectj/lang/JoinPoint;
-                    ASTORE 8
-    method-execution(void HelloWorld.main(java.lang.String[]))
-    |               ICONST_2   (line 8)
-    |               ANEWARRAY java.lang.Object
-    |               ASTORE 9
-    |               ALOAD 9
-    |               ICONST_0
-    |               ALOAD 7
-    |               AASTORE
-    |               ALOAD 9
-    |               ICONST_1
-    |               ALOAD 8
-    |               AASTORE
-    |               NEW HelloWorld$AjcClosure7
-    |               DUP
-    |               ALOAD 9
-    |               INVOKESPECIAL HelloWorld$AjcClosure7.<init> ([Ljava/lang/Object;)V
-    |               ALOAD 8
-    |               INVOKESTATIC Aspect.ajc_around (Lorg/aspectj/runtime/internal/AroundClosure;Lorg/aspectj/lang/JoinPoint;)Ljava/lang/Object;
-    |               POP
-    |               RETURN
-    method-execution(void HelloWorld.main(java.lang.String[]))
-  end public static void main(String[])
-
-  static void <clinit>():
-                    INVOKESTATIC HelloWorld.ajc$preClinit ()V
-    staticinitialization(void HelloWorld.<clinit>())
-    |               RETURN
-    staticinitialization(void HelloWorld.<clinit>())
-  end static void <clinit>()
-
-  static final void init$_aroundBody0(HelloWorld, org.aspectj.lang.JoinPoint):
-                    RETURN   (line 5)
-  end static final void init$_aroundBody0(HelloWorld, org.aspectj.lang.JoinPoint)
-
-  static final java.io.PrintStream out_aroundBody2(org.aspectj.lang.JoinPoint):
-                    GETSTATIC java.lang.System.out Ljava/io/PrintStream;   (line 8)
-                    ARETURN
-  end static final java.io.PrintStream out_aroundBody2(org.aspectj.lang.JoinPoint)
-
-  static final void println_aroundBody4(java.io.PrintStream, String, org.aspectj.lang.JoinPoint):
-                    ALOAD_0
-                    ALOAD_1
-                    INVOKEVIRTUAL java.io.PrintStream.println (Ljava/lang/String;)V   (line 9)
-                    RETURN
-  end static final void println_aroundBody4(java.io.PrintStream, String, org.aspectj.lang.JoinPoint)
-
-  static final void main_aroundBody6(String[], org.aspectj.lang.JoinPoint):
-                    GETSTATIC HelloWorld.ajc$tjp_1 Lorg/aspectj/lang/JoinPoint$StaticPart;
-                    ACONST_NULL
-                    ACONST_NULL
-                    INVOKESTATIC org.aspectj.runtime.reflect.Factory.makeJP (Lorg/aspectj/lang/JoinPoint$StaticPart;Ljava/lang/Object;Ljava/lang/Object;)Lorg/aspectj/lang/JoinPoint;
-                    ASTORE_2
-    field-get(java.io.PrintStream java.lang.System.out)
-    |               ICONST_1
-    |               ANEWARRAY java.lang.Object
-    |               ASTORE 4
-    |               ALOAD 4
-    |               ICONST_0
-    |               ALOAD_2
-    |               AASTORE
-    |               NEW HelloWorld$AjcClosure3
-    |               DUP
-    |               ALOAD 4
-    |               INVOKESPECIAL HelloWorld$AjcClosure3.<init> ([Ljava/lang/Object;)V
-    |               ALOAD_2
-    |               INVOKESTATIC Aspect.ajc_around (Lorg/aspectj/runtime/internal/AroundClosure;Lorg/aspectj/lang/JoinPoint;)Ljava/lang/Object;
-    |               CHECKCAST java.io.PrintStream
-    field-get(java.io.PrintStream java.lang.System.out)
-                    LDC "hello world"   (line 9)
-                    ASTORE 6
-                    ASTORE 8
-                    GETSTATIC HelloWorld.ajc$tjp_2 Lorg/aspectj/lang/JoinPoint$StaticPart;
-                    ACONST_NULL
-                    ALOAD 8
-                    ALOAD 6
-                    INVOKESTATIC org.aspectj.runtime.reflect.Factory.makeJP (Lorg/aspectj/lang/JoinPoint$StaticPart;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Lorg/aspectj/lang/JoinPoint;
-                    ASTORE 10
-    method-call(void java.io.PrintStream.println(java.lang.String))
-    |               ICONST_3
-    |               ANEWARRAY java.lang.Object
-    |               ASTORE 12
-    |               ALOAD 12
-    |               ICONST_0
-    |               ALOAD 8
-    |               AASTORE
-    |               ALOAD 12
-    |               ICONST_1
-    |               ALOAD 6
-    |               AASTORE
-    |               ALOAD 12
-    |               ICONST_2
-    |               ALOAD 10
-    |               AASTORE
-    |               NEW HelloWorld$AjcClosure5
-    |               DUP
-    |               ALOAD 12
-    |               INVOKESPECIAL HelloWorld$AjcClosure5.<init> ([Ljava/lang/Object;)V
-    |               ALOAD 10
-    |               INVOKESTATIC Aspect.ajc_around (Lorg/aspectj/runtime/internal/AroundClosure;Lorg/aspectj/lang/JoinPoint;)Ljava/lang/Object;
-    |               POP
-    method-call(void java.io.PrintStream.println(java.lang.String))
-                    RETURN   (line 11)
-  end static final void main_aroundBody6(String[], org.aspectj.lang.JoinPoint)
-
-  private static void ajc$preClinit():
-                    NEW org.aspectj.runtime.reflect.Factory
-                    DUP
-                    LDC "HelloWorld.java"
-                    LDC "HelloWorld"
-                    INVOKESTATIC java.lang.Class.forName (Ljava/lang/String;)Ljava/lang/Class;
-                    INVOKESPECIAL org.aspectj.runtime.reflect.Factory.<init> (Ljava/lang/String;Ljava/lang/Class;)V
-                    ASTORE_0
-                    ALOAD_0
-                    LDC "constructor-execution"
-                    ALOAD_0
-                    LDC "1"
-                    LDC "HelloWorld"
-                    LDC ""
-                    LDC ""
-                    LDC ""
-                    INVOKEVIRTUAL org.aspectj.runtime.reflect.Factory.makeConstructorSig (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lorg/aspectj/lang/reflect/ConstructorSignature;
-                    ICONST_5
-                    INVOKEVIRTUAL org.aspectj.runtime.reflect.Factory.makeSJP (Ljava/lang/String;Lorg/aspectj/lang/Signature;I)Lorg/aspectj/lang/JoinPoint$StaticPart;
-                    PUTSTATIC HelloWorld.ajc$tjp_0 Lorg/aspectj/lang/JoinPoint$StaticPart;
-                    ALOAD_0
-                    LDC "field-get"
-                    ALOAD_0
-                    LDC "19"
-                    LDC "out"
-                    LDC "java.lang.System"
-                    LDC "java.io.PrintStream"
-                    INVOKEVIRTUAL org.aspectj.runtime.reflect.Factory.makeFieldSig (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lorg/aspectj/lang/reflect/FieldSignature;
-                    BIPUSH 8
-                    INVOKEVIRTUAL org.aspectj.runtime.reflect.Factory.makeSJP (Ljava/lang/String;Lorg/aspectj/lang/Signature;I)Lorg/aspectj/lang/JoinPoint$StaticPart;
-                    PUTSTATIC HelloWorld.ajc$tjp_1 Lorg/aspectj/lang/JoinPoint$StaticPart;
-                    ALOAD_0
-                    LDC "method-call"
-                    ALOAD_0
-                    LDC "1"
-                    LDC "println"
-                    LDC "java.io.PrintStream"
-                    LDC "java.lang.String"
-                    LDC "x"
-                    LDC ""
-                    LDC "void"
-                    INVOKEVIRTUAL org.aspectj.runtime.reflect.Factory.makeMethodSig (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lorg/aspectj/lang/reflect/MethodSignature;
-                    BIPUSH 9
-                    INVOKEVIRTUAL org.aspectj.runtime.reflect.Factory.makeSJP (Ljava/lang/String;Lorg/aspectj/lang/Signature;I)Lorg/aspectj/lang/JoinPoint$StaticPart;
-                    PUTSTATIC HelloWorld.ajc$tjp_2 Lorg/aspectj/lang/JoinPoint$StaticPart;
-                    ALOAD_0
-                    LDC "method-execution"
-                    ALOAD_0
-                    LDC "9"
-                    LDC "main"
-                    LDC "HelloWorld"
-                    LDC "[Ljava.lang.String;"
-                    LDC "args"
-                    LDC ""
-                    LDC "void"
-                    INVOKEVIRTUAL org.aspectj.runtime.reflect.Factory.makeMethodSig (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lorg/aspectj/lang/reflect/MethodSignature;
-                    BIPUSH 8
-                    INVOKEVIRTUAL org.aspectj.runtime.reflect.Factory.makeSJP (Ljava/lang/String;Lorg/aspectj/lang/Signature;I)Lorg/aspectj/lang/JoinPoint$StaticPart;
-                    PUTSTATIC HelloWorld.ajc$tjp_3 Lorg/aspectj/lang/JoinPoint$StaticPart;
-                    RETURN
-  end private static void ajc$preClinit()
-end public class HelloWorld
-
-public class HelloWorld$AjcClosure1 extends org.aspectj.runtime.internal.AroundClosure:
-  public void <init>(Object[]):
-                    ALOAD_0
-                    ALOAD_1
-                    INVOKESPECIAL org.aspectj.runtime.internal.AroundClosure.<init> ([Ljava/lang/Object;)V
-                    RETURN
-  end public void <init>(Object[])
-
-  public Object run(Object[]):
-                    ALOAD_0
-                    GETFIELD org.aspectj.runtime.internal.AroundClosure.state [Ljava/lang/Object;
-                    ASTORE_2
-                    ALOAD_2
-                    ICONST_0
-                    AALOAD
-                    CHECKCAST HelloWorld
-                    ALOAD_2
-                    ICONST_1
-                    AALOAD
-                    CHECKCAST org.aspectj.lang.JoinPoint
-                    INVOKESTATIC HelloWorld.init$_aroundBody0 (LHelloWorld;Lorg/aspectj/lang/JoinPoint;)V
-                    ACONST_NULL
-                    ARETURN
-  end public Object run(Object[])
-end public class HelloWorld$AjcClosure1
-
-public class HelloWorld$AjcClosure3 extends org.aspectj.runtime.internal.AroundClosure:
-  public void <init>(Object[]):
-                    ALOAD_0
-                    ALOAD_1
-                    INVOKESPECIAL org.aspectj.runtime.internal.AroundClosure.<init> ([Ljava/lang/Object;)V
-                    RETURN
-  end public void <init>(Object[])
-
-  public Object run(Object[]):
-                    ALOAD_0
-                    GETFIELD org.aspectj.runtime.internal.AroundClosure.state [Ljava/lang/Object;
-                    ASTORE_2
-                    ALOAD_2
-                    ICONST_0
-                    AALOAD
-                    CHECKCAST org.aspectj.lang.JoinPoint
-                    INVOKESTATIC HelloWorld.out_aroundBody2 (Lorg/aspectj/lang/JoinPoint;)Ljava/io/PrintStream;
-                    ARETURN
-  end public Object run(Object[])
-end public class HelloWorld$AjcClosure3
-
-public class HelloWorld$AjcClosure5 extends org.aspectj.runtime.internal.AroundClosure:
-  public void <init>(Object[]):
-                    ALOAD_0
-                    ALOAD_1
-                    INVOKESPECIAL org.aspectj.runtime.internal.AroundClosure.<init> ([Ljava/lang/Object;)V
-                    RETURN
-  end public void <init>(Object[])
-
-  public Object run(Object[]):
-                    ALOAD_0
-                    GETFIELD org.aspectj.runtime.internal.AroundClosure.state [Ljava/lang/Object;
-                    ASTORE_2
-                    ALOAD_2
-                    ICONST_0
-                    AALOAD
-                    CHECKCAST java.io.PrintStream
-                    ALOAD_2
-                    ICONST_1
-                    AALOAD
-                    CHECKCAST java.lang.String
-                    ALOAD_2
-                    ICONST_2
-                    AALOAD
-                    CHECKCAST org.aspectj.lang.JoinPoint
-                    INVOKESTATIC HelloWorld.println_aroundBody4 (Ljava/io/PrintStream;Ljava/lang/String;Lorg/aspectj/lang/JoinPoint;)V
-                    ACONST_NULL
-                    ARETURN
-  end public Object run(Object[])
-end public class HelloWorld$AjcClosure5
-
-public class HelloWorld$AjcClosure7 extends org.aspectj.runtime.internal.AroundClosure:
-  public void <init>(Object[]):
-                    ALOAD_0
-                    ALOAD_1
-                    INVOKESPECIAL org.aspectj.runtime.internal.AroundClosure.<init> ([Ljava/lang/Object;)V
-                    RETURN
-  end public void <init>(Object[])
-
-  public Object run(Object[]):
-                    ALOAD_0
-                    GETFIELD org.aspectj.runtime.internal.AroundClosure.state [Ljava/lang/Object;
-                    ASTORE_2
-                    ALOAD_2
-                    ICONST_0
-                    AALOAD
-                    CHECKCAST [Ljava.lang.String;
-                    ALOAD_2
-                    ICONST_1
-                    AALOAD
-                    CHECKCAST org.aspectj.lang.JoinPoint
-                    INVOKESTATIC HelloWorld.main_aroundBody6 ([Ljava/lang/String;Lorg/aspectj/lang/JoinPoint;)V
-                    ACONST_NULL
-                    ARETURN
-  end public Object run(Object[])
-end public class HelloWorld$AjcClosure7
diff --git a/weaver/testdata/TjpAroundHelloWorld.9.0.txt b/weaver/testdata/TjpAroundHelloWorld.9.0.txt
new file mode 100644 (file)
index 0000000..65abd2e
--- /dev/null
@@ -0,0 +1,314 @@
+public class HelloWorld extends java.lang.Object:
+  private static org.aspectj.lang.JoinPoint$StaticPart ajc$tjp_0 [Synthetic]
+  private static org.aspectj.lang.JoinPoint$StaticPart ajc$tjp_1 [Synthetic]
+  private static org.aspectj.lang.JoinPoint$StaticPart ajc$tjp_2 [Synthetic]
+  private static org.aspectj.lang.JoinPoint$StaticPart ajc$tjp_3 [Synthetic]
+  public void <init>():
+                    ALOAD_0     // LHelloWorld; ajc$this   (line 5)
+                    INVOKESPECIAL java.lang.Object.<init> ()V
+                    GETSTATIC HelloWorld.ajc$tjp_0 Lorg/aspectj/lang/JoinPoint$StaticPart;
+                    ALOAD_0
+                    ALOAD_0
+                    INVOKESTATIC org.aspectj.runtime.reflect.Factory.makeJP (Lorg/aspectj/lang/JoinPoint$StaticPart;Ljava/lang/Object;Ljava/lang/Object;)Lorg/aspectj/lang/JoinPoint;
+                    ASTORE_1
+    constructor-execution(void HelloWorld.<init>())
+    |               ICONST_2
+    |               ANEWARRAY java.lang.Object
+    |               ASTORE_2
+    |               ALOAD_2
+    |               ICONST_0
+    |               ALOAD_0
+    |               AASTORE
+    |               ALOAD_2
+    |               ICONST_1
+    |               ALOAD_1
+    |               AASTORE
+    |               NEW HelloWorld$AjcClosure1
+    |               DUP
+    |               ALOAD_2
+    |               INVOKESPECIAL HelloWorld$AjcClosure1.<init> ([Ljava/lang/Object;)V
+    |               ALOAD_1
+    |               INVOKESTATIC Aspect.ajc_around (Lorg/aspectj/runtime/internal/AroundClosure;Lorg/aspectj/lang/JoinPoint;)Ljava/lang/Object;
+    |               POP
+    |               RETURN
+    constructor-execution(void HelloWorld.<init>())
+  end public void <init>()
+
+  public static void main(String[]):
+                    ALOAD_0
+                    ASTORE 7
+                    GETSTATIC HelloWorld.ajc$tjp_3 Lorg/aspectj/lang/JoinPoint$StaticPart;
+                    ACONST_NULL
+                    ACONST_NULL
+                    ALOAD 7
+                    INVOKESTATIC org.aspectj.runtime.reflect.Factory.makeJP (Lorg/aspectj/lang/JoinPoint$StaticPart;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Lorg/aspectj/lang/JoinPoint;
+                    ASTORE 8
+    method-execution(void HelloWorld.main(java.lang.String[]))
+    |               ICONST_2   (line 8)
+    |               ANEWARRAY java.lang.Object
+    |               ASTORE 9
+    |               ALOAD 9
+    |               ICONST_0
+    |               ALOAD 7
+    |               AASTORE
+    |               ALOAD 9
+    |               ICONST_1
+    |               ALOAD 8
+    |               AASTORE
+    |               NEW HelloWorld$AjcClosure7
+    |               DUP
+    |               ALOAD 9
+    |               INVOKESPECIAL HelloWorld$AjcClosure7.<init> ([Ljava/lang/Object;)V
+    |               ALOAD 8
+    |               INVOKESTATIC Aspect.ajc_around (Lorg/aspectj/runtime/internal/AroundClosure;Lorg/aspectj/lang/JoinPoint;)Ljava/lang/Object;
+    |               POP
+    |               RETURN
+    method-execution(void HelloWorld.main(java.lang.String[]))
+  end public static void main(String[])
+
+  static void <clinit>():
+                    INVOKESTATIC HelloWorld.ajc$preClinit ()V
+    staticinitialization(void HelloWorld.<clinit>())
+    |               RETURN
+    staticinitialization(void HelloWorld.<clinit>())
+  end static void <clinit>()
+
+  static final void init$_aroundBody0(HelloWorld, org.aspectj.lang.JoinPoint):
+                    RETURN   (line 5)
+  end static final void init$_aroundBody0(HelloWorld, org.aspectj.lang.JoinPoint)
+
+  static final java.io.PrintStream out_aroundBody2(org.aspectj.lang.JoinPoint):
+                    GETSTATIC java.lang.System.out Ljava/io/PrintStream;   (line 8)
+                    ARETURN
+  end static final java.io.PrintStream out_aroundBody2(org.aspectj.lang.JoinPoint)
+
+  static final void println_aroundBody4(java.io.PrintStream, String, org.aspectj.lang.JoinPoint):
+                    ALOAD_0
+                    ALOAD_1
+                    INVOKEVIRTUAL java.io.PrintStream.println (Ljava/lang/String;)V   (line 9)
+                    RETURN
+  end static final void println_aroundBody4(java.io.PrintStream, String, org.aspectj.lang.JoinPoint)
+
+  static final void main_aroundBody6(String[], org.aspectj.lang.JoinPoint):
+                    GETSTATIC HelloWorld.ajc$tjp_1 Lorg/aspectj/lang/JoinPoint$StaticPart;
+                    ACONST_NULL
+                    ACONST_NULL
+                    INVOKESTATIC org.aspectj.runtime.reflect.Factory.makeJP (Lorg/aspectj/lang/JoinPoint$StaticPart;Ljava/lang/Object;Ljava/lang/Object;)Lorg/aspectj/lang/JoinPoint;
+                    ASTORE_2
+    field-get(java.io.PrintStream java.lang.System.out)
+    |               ICONST_1
+    |               ANEWARRAY java.lang.Object
+    |               ASTORE 4
+    |               ALOAD 4
+    |               ICONST_0
+    |               ALOAD_2
+    |               AASTORE
+    |               NEW HelloWorld$AjcClosure3
+    |               DUP
+    |               ALOAD 4
+    |               INVOKESPECIAL HelloWorld$AjcClosure3.<init> ([Ljava/lang/Object;)V
+    |               ALOAD_2
+    |               INVOKESTATIC Aspect.ajc_around (Lorg/aspectj/runtime/internal/AroundClosure;Lorg/aspectj/lang/JoinPoint;)Ljava/lang/Object;
+    |               CHECKCAST java.io.PrintStream
+    field-get(java.io.PrintStream java.lang.System.out)
+                    LDC "hello world"   (line 9)
+                    ASTORE 6
+                    ASTORE 8
+                    GETSTATIC HelloWorld.ajc$tjp_2 Lorg/aspectj/lang/JoinPoint$StaticPart;
+                    ACONST_NULL
+                    ALOAD 8
+                    ALOAD 6
+                    INVOKESTATIC org.aspectj.runtime.reflect.Factory.makeJP (Lorg/aspectj/lang/JoinPoint$StaticPart;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Lorg/aspectj/lang/JoinPoint;
+                    ASTORE 10
+    method-call(void java.io.PrintStream.println(java.lang.String))
+    |               ICONST_3
+    |               ANEWARRAY java.lang.Object
+    |               ASTORE 12
+    |               ALOAD 12
+    |               ICONST_0
+    |               ALOAD 8
+    |               AASTORE
+    |               ALOAD 12
+    |               ICONST_1
+    |               ALOAD 6
+    |               AASTORE
+    |               ALOAD 12
+    |               ICONST_2
+    |               ALOAD 10
+    |               AASTORE
+    |               NEW HelloWorld$AjcClosure5
+    |               DUP
+    |               ALOAD 12
+    |               INVOKESPECIAL HelloWorld$AjcClosure5.<init> ([Ljava/lang/Object;)V
+    |               ALOAD 10
+    |               INVOKESTATIC Aspect.ajc_around (Lorg/aspectj/runtime/internal/AroundClosure;Lorg/aspectj/lang/JoinPoint;)Ljava/lang/Object;
+    |               POP
+    method-call(void java.io.PrintStream.println(java.lang.String))
+                    RETURN   (line 11)
+  end static final void main_aroundBody6(String[], org.aspectj.lang.JoinPoint)
+
+  private static void ajc$preClinit():
+                    NEW org.aspectj.runtime.reflect.Factory
+                    DUP
+                    LDC "HelloWorld.java"
+                    LDC "HelloWorld"
+                    INVOKESTATIC java.lang.Class.forName (Ljava/lang/String;)Ljava/lang/Class;
+                    INVOKESPECIAL org.aspectj.runtime.reflect.Factory.<init> (Ljava/lang/String;Ljava/lang/Class;)V
+                    ASTORE_0
+                    ALOAD_0
+                    LDC "constructor-execution"
+                    ALOAD_0
+                    LDC "1"
+                    LDC "HelloWorld"
+                    LDC ""
+                    LDC ""
+                    LDC ""
+                    INVOKEVIRTUAL org.aspectj.runtime.reflect.Factory.makeConstructorSig (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lorg/aspectj/lang/reflect/ConstructorSignature;
+                    ICONST_5
+                    INVOKEVIRTUAL org.aspectj.runtime.reflect.Factory.makeSJP (Ljava/lang/String;Lorg/aspectj/lang/Signature;I)Lorg/aspectj/lang/JoinPoint$StaticPart;
+                    PUTSTATIC HelloWorld.ajc$tjp_0 Lorg/aspectj/lang/JoinPoint$StaticPart;
+                    ALOAD_0
+                    LDC "field-get"
+                    ALOAD_0
+                    LDC "19"
+                    LDC "out"
+                    LDC "java.lang.System"
+                    LDC "java.io.PrintStream"
+                    INVOKEVIRTUAL org.aspectj.runtime.reflect.Factory.makeFieldSig (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lorg/aspectj/lang/reflect/FieldSignature;
+                    BIPUSH 8
+                    INVOKEVIRTUAL org.aspectj.runtime.reflect.Factory.makeSJP (Ljava/lang/String;Lorg/aspectj/lang/Signature;I)Lorg/aspectj/lang/JoinPoint$StaticPart;
+                    PUTSTATIC HelloWorld.ajc$tjp_1 Lorg/aspectj/lang/JoinPoint$StaticPart;
+                    ALOAD_0
+                    LDC "method-call"
+                    ALOAD_0
+                    LDC "1"
+                    LDC "println"
+                    LDC "java.io.PrintStream"
+                    LDC "java.lang.String"
+                    LDC "x"
+                    LDC ""
+                    LDC "void"
+                    INVOKEVIRTUAL org.aspectj.runtime.reflect.Factory.makeMethodSig (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lorg/aspectj/lang/reflect/MethodSignature;
+                    BIPUSH 9
+                    INVOKEVIRTUAL org.aspectj.runtime.reflect.Factory.makeSJP (Ljava/lang/String;Lorg/aspectj/lang/Signature;I)Lorg/aspectj/lang/JoinPoint$StaticPart;
+                    PUTSTATIC HelloWorld.ajc$tjp_2 Lorg/aspectj/lang/JoinPoint$StaticPart;
+                    ALOAD_0
+                    LDC "method-execution"
+                    ALOAD_0
+                    LDC "9"
+                    LDC "main"
+                    LDC "HelloWorld"
+                    LDC "[Ljava.lang.String;"
+                    LDC "args"
+                    LDC ""
+                    LDC "void"
+                    INVOKEVIRTUAL org.aspectj.runtime.reflect.Factory.makeMethodSig (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lorg/aspectj/lang/reflect/MethodSignature;
+                    BIPUSH 8
+                    INVOKEVIRTUAL org.aspectj.runtime.reflect.Factory.makeSJP (Ljava/lang/String;Lorg/aspectj/lang/Signature;I)Lorg/aspectj/lang/JoinPoint$StaticPart;
+                    PUTSTATIC HelloWorld.ajc$tjp_3 Lorg/aspectj/lang/JoinPoint$StaticPart;
+                    RETURN
+  end private static void ajc$preClinit()
+end public class HelloWorld
+
+public class HelloWorld$AjcClosure1 extends org.aspectj.runtime.internal.AroundClosure:
+  public void <init>(Object[]):
+                    ALOAD_0
+                    ALOAD_1
+                    INVOKESPECIAL org.aspectj.runtime.internal.AroundClosure.<init> ([Ljava/lang/Object;)V
+                    RETURN
+  end public void <init>(Object[])
+
+  public Object run(Object[]):
+                    ALOAD_0
+                    GETFIELD org.aspectj.runtime.internal.AroundClosure.state [Ljava/lang/Object;
+                    ASTORE_2
+                    ALOAD_2
+                    ICONST_0
+                    AALOAD
+                    CHECKCAST HelloWorld
+                    ALOAD_2
+                    ICONST_1
+                    AALOAD
+                    CHECKCAST org.aspectj.lang.JoinPoint
+                    INVOKESTATIC HelloWorld.init$_aroundBody0 (LHelloWorld;Lorg/aspectj/lang/JoinPoint;)V
+                    ACONST_NULL
+                    ARETURN
+  end public Object run(Object[])
+end public class HelloWorld$AjcClosure1
+
+public class HelloWorld$AjcClosure3 extends org.aspectj.runtime.internal.AroundClosure:
+  public void <init>(Object[]):
+                    ALOAD_0
+                    ALOAD_1
+                    INVOKESPECIAL org.aspectj.runtime.internal.AroundClosure.<init> ([Ljava/lang/Object;)V
+                    RETURN
+  end public void <init>(Object[])
+
+  public Object run(Object[]):
+                    ALOAD_0
+                    GETFIELD org.aspectj.runtime.internal.AroundClosure.state [Ljava/lang/Object;
+                    ASTORE_2
+                    ALOAD_2
+                    ICONST_0
+                    AALOAD
+                    CHECKCAST org.aspectj.lang.JoinPoint
+                    INVOKESTATIC HelloWorld.out_aroundBody2 (Lorg/aspectj/lang/JoinPoint;)Ljava/io/PrintStream;
+                    ARETURN
+  end public Object run(Object[])
+end public class HelloWorld$AjcClosure3
+
+public class HelloWorld$AjcClosure5 extends org.aspectj.runtime.internal.AroundClosure:
+  public void <init>(Object[]):
+                    ALOAD_0
+                    ALOAD_1
+                    INVOKESPECIAL org.aspectj.runtime.internal.AroundClosure.<init> ([Ljava/lang/Object;)V
+                    RETURN
+  end public void <init>(Object[])
+
+  public Object run(Object[]):
+                    ALOAD_0
+                    GETFIELD org.aspectj.runtime.internal.AroundClosure.state [Ljava/lang/Object;
+                    ASTORE_2
+                    ALOAD_2
+                    ICONST_0
+                    AALOAD
+                    CHECKCAST java.io.PrintStream
+                    ALOAD_2
+                    ICONST_1
+                    AALOAD
+                    CHECKCAST java.lang.String
+                    ALOAD_2
+                    ICONST_2
+                    AALOAD
+                    CHECKCAST org.aspectj.lang.JoinPoint
+                    INVOKESTATIC HelloWorld.println_aroundBody4 (Ljava/io/PrintStream;Ljava/lang/String;Lorg/aspectj/lang/JoinPoint;)V
+                    ACONST_NULL
+                    ARETURN
+  end public Object run(Object[])
+end public class HelloWorld$AjcClosure5
+
+public class HelloWorld$AjcClosure7 extends org.aspectj.runtime.internal.AroundClosure:
+  public void <init>(Object[]):
+                    ALOAD_0
+                    ALOAD_1
+                    INVOKESPECIAL org.aspectj.runtime.internal.AroundClosure.<init> ([Ljava/lang/Object;)V
+                    RETURN
+  end public void <init>(Object[])
+
+  public Object run(Object[]):
+                    ALOAD_0
+                    GETFIELD org.aspectj.runtime.internal.AroundClosure.state [Ljava/lang/Object;
+                    ASTORE_2
+                    ALOAD_2
+                    ICONST_0
+                    AALOAD
+                    CHECKCAST [Ljava.lang.String;
+                    ALOAD_2
+                    ICONST_1
+                    AALOAD
+                    CHECKCAST org.aspectj.lang.JoinPoint
+                    INVOKESTATIC HelloWorld.main_aroundBody6 ([Ljava/lang/String;Lorg/aspectj/lang/JoinPoint;)V
+                    ACONST_NULL
+                    ARETURN
+  end public Object run(Object[])
+end public class HelloWorld$AjcClosure7
diff --git a/weaver/testdata/TjpBeforeHelloWorld.1.9.txt b/weaver/testdata/TjpBeforeHelloWorld.1.9.txt
deleted file mode 100644 (file)
index 0c34c3b..0000000
+++ /dev/null
@@ -1,131 +0,0 @@
-public class HelloWorld extends java.lang.Object:
-  private static org.aspectj.lang.JoinPoint$StaticPart ajc$tjp_0 [Synthetic]
-  private static org.aspectj.lang.JoinPoint$StaticPart ajc$tjp_1 [Synthetic]
-  private static org.aspectj.lang.JoinPoint$StaticPart ajc$tjp_2 [Synthetic]
-  private static org.aspectj.lang.JoinPoint$StaticPart ajc$tjp_3 [Synthetic]
-  public void <init>():
-                    ALOAD_0     // LHelloWorld; this   (line 5)
-                    INVOKESPECIAL java.lang.Object.<init> ()V
-                    GETSTATIC HelloWorld.ajc$tjp_0 Lorg/aspectj/lang/JoinPoint$StaticPart;
-                    ALOAD_0
-                    ALOAD_0
-                    INVOKESTATIC org.aspectj.runtime.reflect.Factory.makeJP (Lorg/aspectj/lang/JoinPoint$StaticPart;Ljava/lang/Object;Ljava/lang/Object;)Lorg/aspectj/lang/JoinPoint;
-                    ASTORE_1
-    constructor-execution(void HelloWorld.<init>())
-    |               ALOAD_1
-    |               INVOKESTATIC Aspect.ajc_before (Lorg/aspectj/lang/JoinPoint;)V
-    |               RETURN
-    constructor-execution(void HelloWorld.<init>())
-  end public void <init>()
-
-  public static void main(String[]):
-                    ALOAD_0
-                    ASTORE 6
-                    GETSTATIC HelloWorld.ajc$tjp_3 Lorg/aspectj/lang/JoinPoint$StaticPart;
-                    ACONST_NULL
-                    ACONST_NULL
-                    ALOAD 6
-                    INVOKESTATIC org.aspectj.runtime.reflect.Factory.makeJP (Lorg/aspectj/lang/JoinPoint$StaticPart;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Lorg/aspectj/lang/JoinPoint;
-                    ASTORE 5
-    method-execution(void HelloWorld.main(java.lang.String[]))
-    |               ALOAD 5   (line 8)
-    |               INVOKESTATIC Aspect.ajc_before (Lorg/aspectj/lang/JoinPoint;)V
-    |               GETSTATIC HelloWorld.ajc$tjp_1 Lorg/aspectj/lang/JoinPoint$StaticPart;
-    |               ACONST_NULL
-    |               ACONST_NULL
-    |               INVOKESTATIC org.aspectj.runtime.reflect.Factory.makeJP (Lorg/aspectj/lang/JoinPoint$StaticPart;Ljava/lang/Object;Ljava/lang/Object;)Lorg/aspectj/lang/JoinPoint;
-    |               ASTORE_1
-    | field-get(java.io.PrintStream java.lang.System.out)
-    | |             ALOAD_1
-    | |             INVOKESTATIC Aspect.ajc_before (Lorg/aspectj/lang/JoinPoint;)V
-    | |             GETSTATIC java.lang.System.out Ljava/io/PrintStream;
-    | field-get(java.io.PrintStream java.lang.System.out)
-    |               LDC "hello world"   (line 9)
-    |               ASTORE_3
-    |               ASTORE 4
-    |               GETSTATIC HelloWorld.ajc$tjp_2 Lorg/aspectj/lang/JoinPoint$StaticPart;
-    |               ACONST_NULL
-    |               ALOAD 4
-    |               ALOAD_3
-    |               INVOKESTATIC org.aspectj.runtime.reflect.Factory.makeJP (Lorg/aspectj/lang/JoinPoint$StaticPart;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Lorg/aspectj/lang/JoinPoint;
-    |               ASTORE_2
-    | method-call(void java.io.PrintStream.println(java.lang.String))
-    | |             ALOAD_2
-    | |             INVOKESTATIC Aspect.ajc_before (Lorg/aspectj/lang/JoinPoint;)V
-    | |             ALOAD 4
-    | |             ALOAD_3
-    | |             INVOKEVIRTUAL java.io.PrintStream.println (Ljava/lang/String;)V
-    | method-call(void java.io.PrintStream.println(java.lang.String))
-    |               RETURN   (line 11)
-    method-execution(void HelloWorld.main(java.lang.String[]))
-  end public static void main(String[])
-
-  static void <clinit>():
-                    INVOKESTATIC HelloWorld.ajc$preClinit ()V
-    staticinitialization(void HelloWorld.<clinit>())
-    |               RETURN
-    staticinitialization(void HelloWorld.<clinit>())
-  end static void <clinit>()
-
-  private static void ajc$preClinit():
-                    NEW org.aspectj.runtime.reflect.Factory
-                    DUP
-                    LDC "HelloWorld.java"
-                    LDC "HelloWorld"
-                    INVOKESTATIC java.lang.Class.forName (Ljava/lang/String;)Ljava/lang/Class;
-                    INVOKESPECIAL org.aspectj.runtime.reflect.Factory.<init> (Ljava/lang/String;Ljava/lang/Class;)V
-                    ASTORE_0
-                    ALOAD_0
-                    LDC "constructor-execution"
-                    ALOAD_0
-                    LDC "1"
-                    LDC "HelloWorld"
-                    LDC ""
-                    LDC ""
-                    LDC ""
-                    INVOKEVIRTUAL org.aspectj.runtime.reflect.Factory.makeConstructorSig (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lorg/aspectj/lang/reflect/ConstructorSignature;
-                    ICONST_5
-                    INVOKEVIRTUAL org.aspectj.runtime.reflect.Factory.makeSJP (Ljava/lang/String;Lorg/aspectj/lang/Signature;I)Lorg/aspectj/lang/JoinPoint$StaticPart;
-                    PUTSTATIC HelloWorld.ajc$tjp_0 Lorg/aspectj/lang/JoinPoint$StaticPart;
-                    ALOAD_0
-                    LDC "field-get"
-                    ALOAD_0
-                    LDC "19"
-                    LDC "out"
-                    LDC "java.lang.System"
-                    LDC "java.io.PrintStream"
-                    INVOKEVIRTUAL org.aspectj.runtime.reflect.Factory.makeFieldSig (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lorg/aspectj/lang/reflect/FieldSignature;
-                    BIPUSH 8
-                    INVOKEVIRTUAL org.aspectj.runtime.reflect.Factory.makeSJP (Ljava/lang/String;Lorg/aspectj/lang/Signature;I)Lorg/aspectj/lang/JoinPoint$StaticPart;
-                    PUTSTATIC HelloWorld.ajc$tjp_1 Lorg/aspectj/lang/JoinPoint$StaticPart;
-                    ALOAD_0
-                    LDC "method-call"
-                    ALOAD_0
-                    LDC "1"
-                    LDC "println"
-                    LDC "java.io.PrintStream"
-                    LDC "java.lang.String"
-                    LDC "x"
-                    LDC ""
-                    LDC "void"
-                    INVOKEVIRTUAL org.aspectj.runtime.reflect.Factory.makeMethodSig (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lorg/aspectj/lang/reflect/MethodSignature;
-                    BIPUSH 9
-                    INVOKEVIRTUAL org.aspectj.runtime.reflect.Factory.makeSJP (Ljava/lang/String;Lorg/aspectj/lang/Signature;I)Lorg/aspectj/lang/JoinPoint$StaticPart;
-                    PUTSTATIC HelloWorld.ajc$tjp_2 Lorg/aspectj/lang/JoinPoint$StaticPart;
-                    ALOAD_0
-                    LDC "method-execution"
-                    ALOAD_0
-                    LDC "9"
-                    LDC "main"
-                    LDC "HelloWorld"
-                    LDC "[Ljava.lang.String;"
-                    LDC "args"
-                    LDC ""
-                    LDC "void"
-                    INVOKEVIRTUAL org.aspectj.runtime.reflect.Factory.makeMethodSig (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lorg/aspectj/lang/reflect/MethodSignature;
-                    BIPUSH 8
-                    INVOKEVIRTUAL org.aspectj.runtime.reflect.Factory.makeSJP (Ljava/lang/String;Lorg/aspectj/lang/Signature;I)Lorg/aspectj/lang/JoinPoint$StaticPart;
-                    PUTSTATIC HelloWorld.ajc$tjp_3 Lorg/aspectj/lang/JoinPoint$StaticPart;
-                    RETURN
-  end private static void ajc$preClinit()
-end public class HelloWorld
diff --git a/weaver/testdata/TjpBeforeHelloWorld.9.0.txt b/weaver/testdata/TjpBeforeHelloWorld.9.0.txt
new file mode 100644 (file)
index 0000000..0c34c3b
--- /dev/null
@@ -0,0 +1,131 @@
+public class HelloWorld extends java.lang.Object:
+  private static org.aspectj.lang.JoinPoint$StaticPart ajc$tjp_0 [Synthetic]
+  private static org.aspectj.lang.JoinPoint$StaticPart ajc$tjp_1 [Synthetic]
+  private static org.aspectj.lang.JoinPoint$StaticPart ajc$tjp_2 [Synthetic]
+  private static org.aspectj.lang.JoinPoint$StaticPart ajc$tjp_3 [Synthetic]
+  public void <init>():
+                    ALOAD_0     // LHelloWorld; this   (line 5)
+                    INVOKESPECIAL java.lang.Object.<init> ()V
+                    GETSTATIC HelloWorld.ajc$tjp_0 Lorg/aspectj/lang/JoinPoint$StaticPart;
+                    ALOAD_0
+                    ALOAD_0
+                    INVOKESTATIC org.aspectj.runtime.reflect.Factory.makeJP (Lorg/aspectj/lang/JoinPoint$StaticPart;Ljava/lang/Object;Ljava/lang/Object;)Lorg/aspectj/lang/JoinPoint;
+                    ASTORE_1
+    constructor-execution(void HelloWorld.<init>())
+    |               ALOAD_1
+    |               INVOKESTATIC Aspect.ajc_before (Lorg/aspectj/lang/JoinPoint;)V
+    |               RETURN
+    constructor-execution(void HelloWorld.<init>())
+  end public void <init>()
+
+  public static void main(String[]):
+                    ALOAD_0
+                    ASTORE 6
+                    GETSTATIC HelloWorld.ajc$tjp_3 Lorg/aspectj/lang/JoinPoint$StaticPart;
+                    ACONST_NULL
+                    ACONST_NULL
+                    ALOAD 6
+                    INVOKESTATIC org.aspectj.runtime.reflect.Factory.makeJP (Lorg/aspectj/lang/JoinPoint$StaticPart;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Lorg/aspectj/lang/JoinPoint;
+                    ASTORE 5
+    method-execution(void HelloWorld.main(java.lang.String[]))
+    |               ALOAD 5   (line 8)
+    |               INVOKESTATIC Aspect.ajc_before (Lorg/aspectj/lang/JoinPoint;)V
+    |               GETSTATIC HelloWorld.ajc$tjp_1 Lorg/aspectj/lang/JoinPoint$StaticPart;
+    |               ACONST_NULL
+    |               ACONST_NULL
+    |               INVOKESTATIC org.aspectj.runtime.reflect.Factory.makeJP (Lorg/aspectj/lang/JoinPoint$StaticPart;Ljava/lang/Object;Ljava/lang/Object;)Lorg/aspectj/lang/JoinPoint;
+    |               ASTORE_1
+    | field-get(java.io.PrintStream java.lang.System.out)
+    | |             ALOAD_1
+    | |             INVOKESTATIC Aspect.ajc_before (Lorg/aspectj/lang/JoinPoint;)V
+    | |             GETSTATIC java.lang.System.out Ljava/io/PrintStream;
+    | field-get(java.io.PrintStream java.lang.System.out)
+    |               LDC "hello world"   (line 9)
+    |               ASTORE_3
+    |               ASTORE 4
+    |               GETSTATIC HelloWorld.ajc$tjp_2 Lorg/aspectj/lang/JoinPoint$StaticPart;
+    |               ACONST_NULL
+    |               ALOAD 4
+    |               ALOAD_3
+    |               INVOKESTATIC org.aspectj.runtime.reflect.Factory.makeJP (Lorg/aspectj/lang/JoinPoint$StaticPart;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Lorg/aspectj/lang/JoinPoint;
+    |               ASTORE_2
+    | method-call(void java.io.PrintStream.println(java.lang.String))
+    | |             ALOAD_2
+    | |             INVOKESTATIC Aspect.ajc_before (Lorg/aspectj/lang/JoinPoint;)V
+    | |             ALOAD 4
+    | |             ALOAD_3
+    | |             INVOKEVIRTUAL java.io.PrintStream.println (Ljava/lang/String;)V
+    | method-call(void java.io.PrintStream.println(java.lang.String))
+    |               RETURN   (line 11)
+    method-execution(void HelloWorld.main(java.lang.String[]))
+  end public static void main(String[])
+
+  static void <clinit>():
+                    INVOKESTATIC HelloWorld.ajc$preClinit ()V
+    staticinitialization(void HelloWorld.<clinit>())
+    |               RETURN
+    staticinitialization(void HelloWorld.<clinit>())
+  end static void <clinit>()
+
+  private static void ajc$preClinit():
+                    NEW org.aspectj.runtime.reflect.Factory
+                    DUP
+                    LDC "HelloWorld.java"
+                    LDC "HelloWorld"
+                    INVOKESTATIC java.lang.Class.forName (Ljava/lang/String;)Ljava/lang/Class;
+                    INVOKESPECIAL org.aspectj.runtime.reflect.Factory.<init> (Ljava/lang/String;Ljava/lang/Class;)V
+                    ASTORE_0
+                    ALOAD_0
+                    LDC "constructor-execution"
+                    ALOAD_0
+                    LDC "1"
+                    LDC "HelloWorld"
+                    LDC ""
+                    LDC ""
+                    LDC ""
+                    INVOKEVIRTUAL org.aspectj.runtime.reflect.Factory.makeConstructorSig (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lorg/aspectj/lang/reflect/ConstructorSignature;
+                    ICONST_5
+                    INVOKEVIRTUAL org.aspectj.runtime.reflect.Factory.makeSJP (Ljava/lang/String;Lorg/aspectj/lang/Signature;I)Lorg/aspectj/lang/JoinPoint$StaticPart;
+                    PUTSTATIC HelloWorld.ajc$tjp_0 Lorg/aspectj/lang/JoinPoint$StaticPart;
+                    ALOAD_0
+                    LDC "field-get"
+                    ALOAD_0
+                    LDC "19"
+                    LDC "out"
+                    LDC "java.lang.System"
+                    LDC "java.io.PrintStream"
+                    INVOKEVIRTUAL org.aspectj.runtime.reflect.Factory.makeFieldSig (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lorg/aspectj/lang/reflect/FieldSignature;
+                    BIPUSH 8
+                    INVOKEVIRTUAL org.aspectj.runtime.reflect.Factory.makeSJP (Ljava/lang/String;Lorg/aspectj/lang/Signature;I)Lorg/aspectj/lang/JoinPoint$StaticPart;
+                    PUTSTATIC HelloWorld.ajc$tjp_1 Lorg/aspectj/lang/JoinPoint$StaticPart;
+                    ALOAD_0
+                    LDC "method-call"
+                    ALOAD_0
+                    LDC "1"
+                    LDC "println"
+                    LDC "java.io.PrintStream"
+                    LDC "java.lang.String"
+                    LDC "x"
+                    LDC ""
+                    LDC "void"
+                    INVOKEVIRTUAL org.aspectj.runtime.reflect.Factory.makeMethodSig (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lorg/aspectj/lang/reflect/MethodSignature;
+                    BIPUSH 9
+                    INVOKEVIRTUAL org.aspectj.runtime.reflect.Factory.makeSJP (Ljava/lang/String;Lorg/aspectj/lang/Signature;I)Lorg/aspectj/lang/JoinPoint$StaticPart;
+                    PUTSTATIC HelloWorld.ajc$tjp_2 Lorg/aspectj/lang/JoinPoint$StaticPart;
+                    ALOAD_0
+                    LDC "method-execution"
+                    ALOAD_0
+                    LDC "9"
+                    LDC "main"
+                    LDC "HelloWorld"
+                    LDC "[Ljava.lang.String;"
+                    LDC "args"
+                    LDC ""
+                    LDC "void"
+                    INVOKEVIRTUAL org.aspectj.runtime.reflect.Factory.makeMethodSig (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lorg/aspectj/lang/reflect/MethodSignature;
+                    BIPUSH 8
+                    INVOKEVIRTUAL org.aspectj.runtime.reflect.Factory.makeSJP (Ljava/lang/String;Lorg/aspectj/lang/Signature;I)Lorg/aspectj/lang/JoinPoint$StaticPart;
+                    PUTSTATIC HelloWorld.ajc$tjp_3 Lorg/aspectj/lang/JoinPoint$StaticPart;
+                    RETURN
+  end private static void ajc$preClinit()
+end public class HelloWorld