aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--bcel-builder/src/org/aspectj/apache/bcel/classfile/ConstantPool.java21
-rw-r--r--bcel-builder/testdata/lambda.jarbin0 -> 663 bytes
-rwxr-xr-xbcel-builder/testdata/lambda/cpl.sh8
-rw-r--r--bcel-builder/testdata/lambda/one/Code.classbin0 -> 1001 bytes
-rw-r--r--bcel-builder/testdata/lambda/one/Code.java7
-rw-r--r--bcel-builder/testsrc/org/aspectj/apache/bcel/classfile/tests/AllTests.java1
-rw-r--r--bcel-builder/testsrc/org/aspectj/apache/bcel/classfile/tests/ConstantPoolToStringTest.java54
-rw-r--r--lib/asm/asm-6.0.jarbin0 -> 95209 bytes
-rw-r--r--lib/asm/asm-6.0.renamed.jarbin0 -> 95109 bytes
-rw-r--r--lib/asm/asm-6.0_ALPHA.jarbin55819 -> 0 bytes
-rw-r--r--lib/asm/asm-6.0_ALPHA.renamed.jarbin57750 -> 0 bytes
-rw-r--r--lib/asm/asm-6.0_BETA.jarbin56454 -> 0 bytes
-rw-r--r--lib/asm/asm-6.0_BETA.renamed.jarbin58155 -> 0 bytes
-rw-r--r--lib/asm/build.xml4
-rw-r--r--lib/asm/readme.txt1
-rw-r--r--lib/bcel/bcel-src.zipbin340657 -> 340811 bytes
-rw-r--r--lib/bcel/bcel-verifier-src.zipbin183443 -> 183443 bytes
-rw-r--r--lib/bcel/bcel-verifier.jarbin166985 -> 166985 bytes
-rw-r--r--lib/bcel/bcel.jarbin319691 -> 319932 bytes
-rw-r--r--weaver/.classpath2
20 files changed, 94 insertions, 4 deletions
diff --git a/bcel-builder/src/org/aspectj/apache/bcel/classfile/ConstantPool.java b/bcel-builder/src/org/aspectj/apache/bcel/classfile/ConstantPool.java
index be5b84564..0430e28ba 100644
--- a/bcel-builder/src/org/aspectj/apache/bcel/classfile/ConstantPool.java
+++ b/bcel-builder/src/org/aspectj/apache/bcel/classfile/ConstantPool.java
@@ -207,6 +207,26 @@ public class ConstantPool implements Node {
str = (constantToString(((ConstantCP) c).getClassIndex(), Constants.CONSTANT_Class) + "." + constantToString(
((ConstantCP) c).getNameAndTypeIndex(), Constants.CONSTANT_NameAndType));
break;
+
+ case Constants.CONSTANT_InvokeDynamic:
+ ConstantInvokeDynamic cID = ((ConstantInvokeDynamic)c);
+ return "#"+cID.getBootstrapMethodAttrIndex()+"."+constantToString(cID.getNameAndTypeIndex(), Constants.CONSTANT_NameAndType);
+
+ case Constants.CONSTANT_MethodHandle:
+ ConstantMethodHandle cMH = ((ConstantMethodHandle)c);
+ return cMH.getReferenceKind()+":"+constantToString(cMH.getReferenceIndex(),Constants.CONSTANT_Methodref);
+
+ case Constants.CONSTANT_MethodType:
+ ConstantMethodType cMT = (ConstantMethodType)c;
+ return constantToString(cMT.getDescriptorIndex(),Constants.CONSTANT_Utf8);
+
+ case Constants.CONSTANT_Module:
+ ConstantModule cM = (ConstantModule)c;
+ return "Module:"+constantToString(cM.getNameIndex(),Constants.CONSTANT_Utf8);
+
+ case Constants.CONSTANT_Package:
+ ConstantPackage cP = (ConstantPackage)c;
+ return "Package:"+constantToString(cP.getNameIndex(),Constants.CONSTANT_Utf8);
default: // Never reached
throw new RuntimeException("Unknown constant type " + c.tag);
@@ -254,6 +274,7 @@ public class ConstantPool implements Node {
return constantToString(getConstant(index));
}
+ @Override
public void accept(ClassVisitor v) {
v.visitConstantPool(this);
}
diff --git a/bcel-builder/testdata/lambda.jar b/bcel-builder/testdata/lambda.jar
new file mode 100644
index 000000000..d470673b7
--- /dev/null
+++ b/bcel-builder/testdata/lambda.jar
Binary files differ
diff --git a/bcel-builder/testdata/lambda/cpl.sh b/bcel-builder/testdata/lambda/cpl.sh
new file mode 100755
index 000000000..e59851298
--- /dev/null
+++ b/bcel-builder/testdata/lambda/cpl.sh
@@ -0,0 +1,8 @@
+
+# Use Java9 or later to compile this
+cd one
+javac Code.java
+
+jar -cvMf ../../lambda.jar Code.class
+rm Code.class
+cd ..
diff --git a/bcel-builder/testdata/lambda/one/Code.class b/bcel-builder/testdata/lambda/one/Code.class
new file mode 100644
index 000000000..4041bb1a7
--- /dev/null
+++ b/bcel-builder/testdata/lambda/one/Code.class
Binary files differ
diff --git a/bcel-builder/testdata/lambda/one/Code.java b/bcel-builder/testdata/lambda/one/Code.java
new file mode 100644
index 000000000..228136f8a
--- /dev/null
+++ b/bcel-builder/testdata/lambda/one/Code.java
@@ -0,0 +1,7 @@
+public class Code {
+ public static void main(String[] args) {
+ Runnable r = () -> { System.out.println("hello world!"); };
+ r.run();
+ }
+
+}
diff --git a/bcel-builder/testsrc/org/aspectj/apache/bcel/classfile/tests/AllTests.java b/bcel-builder/testsrc/org/aspectj/apache/bcel/classfile/tests/AllTests.java
index b12094ac2..440a3ee17 100644
--- a/bcel-builder/testsrc/org/aspectj/apache/bcel/classfile/tests/AllTests.java
+++ b/bcel-builder/testsrc/org/aspectj/apache/bcel/classfile/tests/AllTests.java
@@ -25,6 +25,7 @@ public class AllTests {
suite.addTestSuite(Fundamentals.class);
suite.addTestSuite(RuntimeVisibleParameterAnnotationAttributeTest.class);
suite.addTestSuite(AnnotationDefaultAttributeTest.class);
+ suite.addTestSuite(ConstantPoolToStringTest.class);
suite.addTestSuite(EnclosingMethodAttributeTest.class);
suite.addTestSuite(MethodAnnotationsTest.class);
suite.addTestSuite(RuntimeVisibleAnnotationAttributeTest.class);
diff --git a/bcel-builder/testsrc/org/aspectj/apache/bcel/classfile/tests/ConstantPoolToStringTest.java b/bcel-builder/testsrc/org/aspectj/apache/bcel/classfile/tests/ConstantPoolToStringTest.java
new file mode 100644
index 000000000..3a41c6c70
--- /dev/null
+++ b/bcel-builder/testsrc/org/aspectj/apache/bcel/classfile/tests/ConstantPoolToStringTest.java
@@ -0,0 +1,54 @@
+/* *******************************************************************
+ * Copyright (c) 2018 Contributors
+ * All rights reserved.
+ * This program and the accompanying materials are made available
+ * under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Andy Clement - initial implementation
+ * ******************************************************************/
+
+package org.aspectj.apache.bcel.classfile.tests;
+
+import org.aspectj.apache.bcel.classfile.ConstantPool;
+import org.aspectj.apache.bcel.classfile.JavaClass;
+import org.aspectj.apache.bcel.classfile.Method;
+import org.aspectj.apache.bcel.util.SyntheticRepository;
+
+public class ConstantPoolToStringTest extends BcelTestCase {
+
+ @Override
+ protected void setUp() throws Exception {
+ super.setUp();
+ }
+
+ public void testToStringLambdaElements() throws ClassNotFoundException {
+ SyntheticRepository repos = createRepos("lambda.jar");
+ JavaClass clazz = repos.loadClass("Code");
+ ConstantPool pool = clazz.getConstantPool();
+ Method[] methods = clazz.getMethods();
+ String codeString = methods[1].getCode().getCodeString();
+ assertEquals("Code(max_stack = 1, max_locals = 2, code_length = 13)\n" +
+ "0: invokedynamic #0.run ()Ljava/lang/Runnable; (2)\n" +
+ "5: astore_1\n" +
+ "6: aload_1\n" +
+ "7: invokeinterface java.lang.Runnable.run ()V (3) 1 0\n" +
+ "12: return\n",codeString);
+
+ // #20 = MethodHandle 6:#32 // REF_invokeStatic java/lang/invoke/LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
+ String cts = pool.constantToString(pool.getConstant(20));
+ assertEquals("6:java.lang.invoke.LambdaMetafactory.metafactory (Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;",cts);
+
+ // #21 = MethodType #10 // ()V
+ cts = pool.constantToString(pool.getConstant(21));
+ assertEquals("()V",cts);
+ }
+
+ @Override
+ protected void tearDown() throws Exception {
+ super.tearDown();
+ }
+
+}
diff --git a/lib/asm/asm-6.0.jar b/lib/asm/asm-6.0.jar
new file mode 100644
index 000000000..cf2de272c
--- /dev/null
+++ b/lib/asm/asm-6.0.jar
Binary files differ
diff --git a/lib/asm/asm-6.0.renamed.jar b/lib/asm/asm-6.0.renamed.jar
new file mode 100644
index 000000000..c84e3563a
--- /dev/null
+++ b/lib/asm/asm-6.0.renamed.jar
Binary files differ
diff --git a/lib/asm/asm-6.0_ALPHA.jar b/lib/asm/asm-6.0_ALPHA.jar
deleted file mode 100644
index 72fd5036f..000000000
--- a/lib/asm/asm-6.0_ALPHA.jar
+++ /dev/null
Binary files differ
diff --git a/lib/asm/asm-6.0_ALPHA.renamed.jar b/lib/asm/asm-6.0_ALPHA.renamed.jar
deleted file mode 100644
index 1ad8b789f..000000000
--- a/lib/asm/asm-6.0_ALPHA.renamed.jar
+++ /dev/null
Binary files differ
diff --git a/lib/asm/asm-6.0_BETA.jar b/lib/asm/asm-6.0_BETA.jar
deleted file mode 100644
index 6b2994def..000000000
--- a/lib/asm/asm-6.0_BETA.jar
+++ /dev/null
Binary files differ
diff --git a/lib/asm/asm-6.0_BETA.renamed.jar b/lib/asm/asm-6.0_BETA.renamed.jar
deleted file mode 100644
index 680ab7733..000000000
--- a/lib/asm/asm-6.0_BETA.renamed.jar
+++ /dev/null
Binary files differ
diff --git a/lib/asm/build.xml b/lib/asm/build.xml
index 5f9693b56..fdd569cce 100644
--- a/lib/asm/build.xml
+++ b/lib/asm/build.xml
@@ -4,8 +4,8 @@
<taskdef name="jarjar" classname="com.tonicsystems.jarjar.JarJarTask"/>
<target name="package" description="Jarjar asm-5.0.4.jar and prefix package name with aj">
- <jarjar destfile="asm-6.0_BETA.renamed.jar">
- <zipfileset src="asm-6.0_BETA.jar" excludes="module-info.class"/>
+ <jarjar destfile="asm-6.0.renamed.jar">
+ <zipfileset src="asm-6.0.jar" excludes="module-info.class"/>
<rule pattern="org.objectweb.asm.**" result="aj.org.objectweb.asm.@1"/>
</jarjar>
</target>
diff --git a/lib/asm/readme.txt b/lib/asm/readme.txt
deleted file mode 100644
index 99c076dd3..000000000
--- a/lib/asm/readme.txt
+++ /dev/null
@@ -1 +0,0 @@
-asm 2.0 is used by some tests
diff --git a/lib/bcel/bcel-src.zip b/lib/bcel/bcel-src.zip
index e620936d0..5a2fc5dc7 100644
--- a/lib/bcel/bcel-src.zip
+++ b/lib/bcel/bcel-src.zip
Binary files differ
diff --git a/lib/bcel/bcel-verifier-src.zip b/lib/bcel/bcel-verifier-src.zip
index ed37bdfa6..f0704546c 100644
--- a/lib/bcel/bcel-verifier-src.zip
+++ b/lib/bcel/bcel-verifier-src.zip
Binary files differ
diff --git a/lib/bcel/bcel-verifier.jar b/lib/bcel/bcel-verifier.jar
index 0153468a9..1f9edfddc 100644
--- a/lib/bcel/bcel-verifier.jar
+++ b/lib/bcel/bcel-verifier.jar
Binary files differ
diff --git a/lib/bcel/bcel.jar b/lib/bcel/bcel.jar
index acadafd3e..57f1b9c0a 100644
--- a/lib/bcel/bcel.jar
+++ b/lib/bcel/bcel.jar
Binary files differ
diff --git a/weaver/.classpath b/weaver/.classpath
index 78357b253..995d885a7 100644
--- a/weaver/.classpath
+++ b/weaver/.classpath
@@ -13,6 +13,6 @@
<classpathentry kind="lib" path="/lib/bcel/bcel.jar" sourcepath="/lib/bcel/bcel-src.zip"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7"/>
<classpathentry combineaccessrules="false" kind="src" path="/org.aspectj.matcher"/>
- <classpathentry kind="lib" path="/lib/asm/asm-6.0_BETA.renamed.jar"/>
+ <classpathentry kind="lib" path="/lib/asm/asm-6.0.renamed.jar"/>
<classpathentry kind="output" path="bin"/>
</classpath>