|
|
@@ -21,7 +21,7 @@ public class IRecord4ProxyDump implements Opcodes {
|
|
|
MethodVisitor methodVisitor;
|
|
|
AnnotationVisitor annotationVisitor0;
|
|
|
|
|
|
- classWriter.visit(V1_8, ACC_PUBLIC | ACC_SUPER, "net/ranides/assira/example/IRecord4Proxy", null, "java/lang/Object", new String[] { "net/ranides/assira/reflection/adapter/example/InnerDefs$IRecord3" });
|
|
|
+ classWriter.visit(V1_8, ACC_PUBLIC | ACC_SUPER, "net/ranides/assira/example/IRecord4Proxy", null, "java/lang/Object", new String[] { "net/ranides/assira/reflection/adapter/example/InnerDefs$IRecord3", "net/ranides/assira/reflection/asm/cg/CGAdapterWrapper" });
|
|
|
|
|
|
classWriter.visitSource("IRecord4Proxy.java", null);
|
|
|
|
|
|
@@ -34,7 +34,11 @@ public class IRecord4ProxyDump implements Opcodes {
|
|
|
classWriter.visitInnerClass("net/ranides/assira/reflection/adapter/example/InnerDefs$IRecord3", "net/ranides/assira/reflection/adapter/example/InnerDefs", "IRecord3", ACC_PUBLIC | ACC_STATIC | ACC_ABSTRACT | ACC_INTERFACE);
|
|
|
|
|
|
{
|
|
|
- fieldVisitor = classWriter.visitField(ACC_PRIVATE | ACC_FINAL, "that", "Lnet/ranides/assira/reflection/adapter/example/InnerDefs$MutableRecord;", null, null);
|
|
|
+ fieldVisitor = classWriter.visitField(ACC_PUBLIC | ACC_FINAL, "that", "Lnet/ranides/assira/reflection/adapter/example/InnerDefs$MutableRecord;", null, null);
|
|
|
+ fieldVisitor.visitEnd();
|
|
|
+ }
|
|
|
+ {
|
|
|
+ fieldVisitor = classWriter.visitField(ACC_PUBLIC | ACC_FINAL, "adapter1", "Ljava/util/function/Function;", null, null);
|
|
|
fieldVisitor.visitEnd();
|
|
|
}
|
|
|
{
|
|
|
@@ -50,32 +54,53 @@ public class IRecord4ProxyDump implements Opcodes {
|
|
|
methodVisitor.visitCode();
|
|
|
Label label0 = new Label();
|
|
|
methodVisitor.visitLabel(label0);
|
|
|
- methodVisitor.visitLineNumber(17, label0);
|
|
|
+ methodVisitor.visitLineNumber(19, label0);
|
|
|
methodVisitor.visitVarInsn(ALOAD, 0);
|
|
|
methodVisitor.visitMethodInsn(INVOKESPECIAL, "java/lang/Object", "<init>", "()V", false);
|
|
|
Label label1 = new Label();
|
|
|
methodVisitor.visitLabel(label1);
|
|
|
- methodVisitor.visitLineNumber(18, label1);
|
|
|
+ methodVisitor.visitLineNumber(17, label1);
|
|
|
methodVisitor.visitVarInsn(ALOAD, 0);
|
|
|
- methodVisitor.visitVarInsn(ALOAD, 1);
|
|
|
- methodVisitor.visitFieldInsn(PUTFIELD, "net/ranides/assira/example/IRecord4Proxy", "that", "Lnet/ranides/assira/reflection/adapter/example/InnerDefs$MutableRecord;");
|
|
|
+ methodVisitor.visitInsn(ACONST_NULL);
|
|
|
+ methodVisitor.visitFieldInsn(PUTFIELD, "net/ranides/assira/example/IRecord4Proxy", "adapter1", "Ljava/util/function/Function;");
|
|
|
Label label2 = new Label();
|
|
|
methodVisitor.visitLabel(label2);
|
|
|
- methodVisitor.visitLineNumber(19, label2);
|
|
|
- methodVisitor.visitInsn(RETURN);
|
|
|
+ methodVisitor.visitLineNumber(20, label2);
|
|
|
+ methodVisitor.visitVarInsn(ALOAD, 0);
|
|
|
+ methodVisitor.visitVarInsn(ALOAD, 1);
|
|
|
+ methodVisitor.visitFieldInsn(PUTFIELD, "net/ranides/assira/example/IRecord4Proxy", "that", "Lnet/ranides/assira/reflection/adapter/example/InnerDefs$MutableRecord;");
|
|
|
Label label3 = new Label();
|
|
|
methodVisitor.visitLabel(label3);
|
|
|
- methodVisitor.visitLocalVariable("this", "Lnet/ranides/assira/example/IRecord4Proxy;", null, label0, label3, 0);
|
|
|
- methodVisitor.visitLocalVariable("that", "Lnet/ranides/assira/reflection/adapter/example/InnerDefs$MutableRecord;", null, label0, label3, 1);
|
|
|
+ methodVisitor.visitLineNumber(21, label3);
|
|
|
+ methodVisitor.visitInsn(RETURN);
|
|
|
+ Label label4 = new Label();
|
|
|
+ methodVisitor.visitLabel(label4);
|
|
|
+ methodVisitor.visitLocalVariable("this", "Lnet/ranides/assira/example/IRecord4Proxy;", null, label0, label4, 0);
|
|
|
+ methodVisitor.visitLocalVariable("that", "Lnet/ranides/assira/reflection/adapter/example/InnerDefs$MutableRecord;", null, label0, label4, 1);
|
|
|
methodVisitor.visitMaxs(2, 2);
|
|
|
methodVisitor.visitEnd();
|
|
|
}
|
|
|
+ {
|
|
|
+ methodVisitor = classWriter.visitMethod(ACC_PUBLIC, "net_ranides_assira_cg_that", "()Ljava/lang/Object;", null, null);
|
|
|
+ methodVisitor.visitCode();
|
|
|
+ Label label0 = new Label();
|
|
|
+ methodVisitor.visitLabel(label0);
|
|
|
+ methodVisitor.visitLineNumber(25, label0);
|
|
|
+ methodVisitor.visitVarInsn(ALOAD, 0);
|
|
|
+ methodVisitor.visitFieldInsn(GETFIELD, "net/ranides/assira/example/IRecord4Proxy", "that", "Lnet/ranides/assira/reflection/adapter/example/InnerDefs$MutableRecord;");
|
|
|
+ methodVisitor.visitInsn(ARETURN);
|
|
|
+ Label label1 = new Label();
|
|
|
+ methodVisitor.visitLabel(label1);
|
|
|
+ methodVisitor.visitLocalVariable("this", "Lnet/ranides/assira/example/IRecord4Proxy;", null, label0, label1, 0);
|
|
|
+ methodVisitor.visitMaxs(1, 1);
|
|
|
+ methodVisitor.visitEnd();
|
|
|
+ }
|
|
|
{
|
|
|
methodVisitor = classWriter.visitMethod(ACC_PUBLIC, "getX", "()I", null, null);
|
|
|
methodVisitor.visitCode();
|
|
|
Label label0 = new Label();
|
|
|
methodVisitor.visitLabel(label0);
|
|
|
- methodVisitor.visitLineNumber(23, label0);
|
|
|
+ methodVisitor.visitLineNumber(30, label0);
|
|
|
methodVisitor.visitVarInsn(ALOAD, 0);
|
|
|
methodVisitor.visitFieldInsn(GETFIELD, "net/ranides/assira/example/IRecord4Proxy", "that", "Lnet/ranides/assira/reflection/adapter/example/InnerDefs$MutableRecord;");
|
|
|
methodVisitor.visitMethodInsn(INVOKEVIRTUAL, "net/ranides/assira/reflection/adapter/example/InnerDefs$MutableRecord", "getX", "()I", false);
|
|
|
@@ -91,7 +116,7 @@ public class IRecord4ProxyDump implements Opcodes {
|
|
|
methodVisitor.visitCode();
|
|
|
Label label0 = new Label();
|
|
|
methodVisitor.visitLabel(label0);
|
|
|
- methodVisitor.visitLineNumber(28, label0);
|
|
|
+ methodVisitor.visitLineNumber(35, label0);
|
|
|
methodVisitor.visitVarInsn(ALOAD, 0);
|
|
|
methodVisitor.visitFieldInsn(GETFIELD, "net/ranides/assira/example/IRecord4Proxy", "that", "Lnet/ranides/assira/reflection/adapter/example/InnerDefs$MutableRecord;");
|
|
|
methodVisitor.visitMethodInsn(INVOKEVIRTUAL, "net/ranides/assira/reflection/adapter/example/InnerDefs$MutableRecord", "getY", "()I", false);
|
|
|
@@ -107,7 +132,7 @@ public class IRecord4ProxyDump implements Opcodes {
|
|
|
methodVisitor.visitCode();
|
|
|
Label label0 = new Label();
|
|
|
methodVisitor.visitLabel(label0);
|
|
|
- methodVisitor.visitLineNumber(33, label0);
|
|
|
+ methodVisitor.visitLineNumber(40, label0);
|
|
|
methodVisitor.visitVarInsn(ALOAD, 0);
|
|
|
methodVisitor.visitFieldInsn(GETFIELD, "net/ranides/assira/example/IRecord4Proxy", "that", "Lnet/ranides/assira/reflection/adapter/example/InnerDefs$MutableRecord;");
|
|
|
methodVisitor.visitMethodInsn(INVOKEVIRTUAL, "net/ranides/assira/reflection/adapter/example/InnerDefs$MutableRecord", "area", "()I", false);
|
|
|
@@ -123,7 +148,7 @@ public class IRecord4ProxyDump implements Opcodes {
|
|
|
methodVisitor.visitCode();
|
|
|
Label label0 = new Label();
|
|
|
methodVisitor.visitLabel(label0);
|
|
|
- methodVisitor.visitLineNumber(38, label0);
|
|
|
+ methodVisitor.visitLineNumber(45, label0);
|
|
|
methodVisitor.visitVarInsn(ALOAD, 0);
|
|
|
methodVisitor.visitFieldInsn(GETFIELD, "net/ranides/assira/example/IRecord4Proxy", "that", "Lnet/ranides/assira/reflection/adapter/example/InnerDefs$MutableRecord;");
|
|
|
methodVisitor.visitVarInsn(ILOAD, 1);
|
|
|
@@ -141,7 +166,7 @@ public class IRecord4ProxyDump implements Opcodes {
|
|
|
methodVisitor.visitCode();
|
|
|
Label label0 = new Label();
|
|
|
methodVisitor.visitLabel(label0);
|
|
|
- methodVisitor.visitLineNumber(43, label0);
|
|
|
+ methodVisitor.visitLineNumber(50, label0);
|
|
|
methodVisitor.visitVarInsn(ALOAD, 0);
|
|
|
methodVisitor.visitFieldInsn(GETFIELD, "net/ranides/assira/example/IRecord4Proxy", "that", "Lnet/ranides/assira/reflection/adapter/example/InnerDefs$MutableRecord;");
|
|
|
methodVisitor.visitMethodInsn(INVOKEVIRTUAL, "net/ranides/assira/reflection/adapter/example/InnerDefs$MutableRecord", "stats", "()Lnet/ranides/assira/reflection/adapter/example/InnerDefs$RecordStats;", false);
|
|
|
@@ -157,7 +182,7 @@ public class IRecord4ProxyDump implements Opcodes {
|
|
|
methodVisitor.visitCode();
|
|
|
Label label0 = new Label();
|
|
|
methodVisitor.visitLabel(label0);
|
|
|
- methodVisitor.visitLineNumber(48, label0);
|
|
|
+ methodVisitor.visitLineNumber(55, label0);
|
|
|
methodVisitor.visitVarInsn(ALOAD, 0);
|
|
|
methodVisitor.visitFieldInsn(GETFIELD, "net/ranides/assira/example/IRecord4Proxy", "that", "Lnet/ranides/assira/reflection/adapter/example/InnerDefs$MutableRecord;");
|
|
|
methodVisitor.visitVarInsn(ALOAD, 1);
|
|
|
@@ -179,7 +204,7 @@ public class IRecord4ProxyDump implements Opcodes {
|
|
|
methodVisitor.visitCode();
|
|
|
Label label0 = new Label();
|
|
|
methodVisitor.visitLabel(label0);
|
|
|
- methodVisitor.visitLineNumber(52, label0);
|
|
|
+ methodVisitor.visitLineNumber(59, label0);
|
|
|
methodVisitor.visitVarInsn(ALOAD, 0);
|
|
|
methodVisitor.visitFieldInsn(GETFIELD, "net/ranides/assira/example/IRecord4Proxy", "that", "Lnet/ranides/assira/reflection/adapter/example/InnerDefs$MutableRecord;");
|
|
|
methodVisitor.visitVarInsn(ALOAD, 1);
|
|
|
@@ -206,7 +231,7 @@ public class IRecord4ProxyDump implements Opcodes {
|
|
|
methodVisitor.visitCode();
|
|
|
Label label0 = new Label();
|
|
|
methodVisitor.visitLabel(label0);
|
|
|
- methodVisitor.visitLineNumber(56, label0);
|
|
|
+ methodVisitor.visitLineNumber(63, label0);
|
|
|
methodVisitor.visitVarInsn(ALOAD, 0);
|
|
|
methodVisitor.visitFieldInsn(GETFIELD, "net/ranides/assira/example/IRecord4Proxy", "that", "Lnet/ranides/assira/reflection/adapter/example/InnerDefs$MutableRecord;");
|
|
|
methodVisitor.visitVarInsn(ALOAD, 0);
|
|
|
@@ -234,7 +259,7 @@ public class IRecord4ProxyDump implements Opcodes {
|
|
|
methodVisitor.visitCode();
|
|
|
Label label0 = new Label();
|
|
|
methodVisitor.visitLabel(label0);
|
|
|
- methodVisitor.visitLineNumber(60, label0);
|
|
|
+ methodVisitor.visitLineNumber(67, label0);
|
|
|
methodVisitor.visitInsn(ICONST_0);
|
|
|
methodVisitor.visitIntInsn(NEWARRAY, T_INT);
|
|
|
methodVisitor.visitInsn(ARETURN);
|
|
|
@@ -250,7 +275,7 @@ public class IRecord4ProxyDump implements Opcodes {
|
|
|
methodVisitor.visitCode();
|
|
|
Label label0 = new Label();
|
|
|
methodVisitor.visitLabel(label0);
|
|
|
- methodVisitor.visitLineNumber(64, label0);
|
|
|
+ methodVisitor.visitLineNumber(71, label0);
|
|
|
methodVisitor.visitInsn(ICONST_0);
|
|
|
methodVisitor.visitTypeInsn(ANEWARRAY, "java/lang/Float");
|
|
|
methodVisitor.visitInsn(ARETURN);
|
|
|
@@ -266,7 +291,7 @@ public class IRecord4ProxyDump implements Opcodes {
|
|
|
methodVisitor.visitCode();
|
|
|
Label label0 = new Label();
|
|
|
methodVisitor.visitLabel(label0);
|
|
|
- methodVisitor.visitLineNumber(68, label0);
|
|
|
+ methodVisitor.visitLineNumber(75, label0);
|
|
|
methodVisitor.visitIntInsn(BIPUSH, 33);
|
|
|
methodVisitor.visitMethodInsn(INVOKESTATIC, "java/lang/Integer", "valueOf", "(I)Ljava/lang/Integer;", false);
|
|
|
methodVisitor.visitInsn(ARETURN);
|
|
|
@@ -282,7 +307,7 @@ public class IRecord4ProxyDump implements Opcodes {
|
|
|
methodVisitor.visitCode();
|
|
|
Label label0 = new Label();
|
|
|
methodVisitor.visitLabel(label0);
|
|
|
- methodVisitor.visitLineNumber(76, label0);
|
|
|
+ methodVisitor.visitLineNumber(83, label0);
|
|
|
methodVisitor.visitFieldInsn(GETSTATIC, "net/ranides/assira/example/IRecord4Proxy", "ARGS1", "Lnet/ranides/assira/reflection/IMethod;");
|
|
|
methodVisitor.visitVarInsn(ALOAD, 0);
|
|
|
methodVisitor.visitFieldInsn(GETFIELD, "net/ranides/assira/example/IRecord4Proxy", "that", "Lnet/ranides/assira/reflection/adapter/example/InnerDefs$MutableRecord;");
|
|
|
@@ -317,7 +342,7 @@ public class IRecord4ProxyDump implements Opcodes {
|
|
|
methodVisitor.visitCode();
|
|
|
Label label0 = new Label();
|
|
|
methodVisitor.visitLabel(label0);
|
|
|
- methodVisitor.visitLineNumber(81, label0);
|
|
|
+ methodVisitor.visitLineNumber(88, label0);
|
|
|
methodVisitor.visitFieldInsn(GETSTATIC, "net/ranides/assira/example/ExampleSupport", "METHODS", "[Lnet/ranides/assira/reflection/IMethod;");
|
|
|
methodVisitor.visitIntInsn(SIPUSH, 192);
|
|
|
methodVisitor.visitInsn(AALOAD);
|
|
|
@@ -354,7 +379,7 @@ public class IRecord4ProxyDump implements Opcodes {
|
|
|
methodVisitor.visitCode();
|
|
|
Label label0 = new Label();
|
|
|
methodVisitor.visitLabel(label0);
|
|
|
- methodVisitor.visitLineNumber(85, label0);
|
|
|
+ methodVisitor.visitLineNumber(92, label0);
|
|
|
methodVisitor.visitFieldInsn(GETSTATIC, "net/ranides/assira/example/ExampleSupport", "METHODS", "[Lnet/ranides/assira/reflection/IMethod;");
|
|
|
methodVisitor.visitIntInsn(SIPUSH, 192);
|
|
|
methodVisitor.visitInsn(AALOAD);
|
|
|
@@ -393,7 +418,7 @@ public class IRecord4ProxyDump implements Opcodes {
|
|
|
methodVisitor.visitCode();
|
|
|
Label label0 = new Label();
|
|
|
methodVisitor.visitLabel(label0);
|
|
|
- methodVisitor.visitLineNumber(90, label0);
|
|
|
+ methodVisitor.visitLineNumber(97, label0);
|
|
|
methodVisitor.visitVarInsn(ALOAD, 0);
|
|
|
methodVisitor.visitFieldInsn(GETFIELD, "net/ranides/assira/example/IRecord4Proxy", "that", "Lnet/ranides/assira/reflection/adapter/example/InnerDefs$MutableRecord;");
|
|
|
methodVisitor.visitVarInsn(ALOAD, 1);
|
|
|
@@ -408,19 +433,98 @@ public class IRecord4ProxyDump implements Opcodes {
|
|
|
methodVisitor.visitMaxs(3, 3);
|
|
|
methodVisitor.visitEnd();
|
|
|
}
|
|
|
+ {
|
|
|
+ methodVisitor = classWriter.visitMethod(ACC_PUBLIC, "complex_adapt", "(Ljava/util/List;Ljava/util/Map;)Ljava/lang/String;", "(Ljava/util/List<Ljava/lang/String;>;Ljava/util/Map<Ljava/lang/String;Ljava/lang/Number;>;)Ljava/lang/String;", new String[] { "java/lang/NumberFormatException", "java/lang/IllegalStateException" });
|
|
|
+ methodVisitor.visitCode();
|
|
|
+ Label label0 = new Label();
|
|
|
+ methodVisitor.visitLabel(label0);
|
|
|
+ methodVisitor.visitLineNumber(101, label0);
|
|
|
+ methodVisitor.visitVarInsn(ALOAD, 0);
|
|
|
+ methodVisitor.visitFieldInsn(GETFIELD, "net/ranides/assira/example/IRecord4Proxy", "adapter1", "Ljava/util/function/Function;");
|
|
|
+ methodVisitor.visitVarInsn(ALOAD, 0);
|
|
|
+ methodVisitor.visitFieldInsn(GETFIELD, "net/ranides/assira/example/IRecord4Proxy", "that", "Lnet/ranides/assira/reflection/adapter/example/InnerDefs$MutableRecord;");
|
|
|
+ methodVisitor.visitVarInsn(ALOAD, 1);
|
|
|
+ methodVisitor.visitVarInsn(ALOAD, 2);
|
|
|
+ methodVisitor.visitMethodInsn(INVOKEVIRTUAL, "net/ranides/assira/reflection/adapter/example/InnerDefs$MutableRecord", "complex", "(Ljava/util/List;Ljava/util/Map;)Ljava/lang/String;", false);
|
|
|
+ methodVisitor.visitMethodInsn(INVOKEINTERFACE, "java/util/function/Function", "apply", "(Ljava/lang/Object;)Ljava/lang/Object;", true);
|
|
|
+ methodVisitor.visitTypeInsn(CHECKCAST, "java/lang/String");
|
|
|
+ methodVisitor.visitInsn(ARETURN);
|
|
|
+ Label label1 = new Label();
|
|
|
+ methodVisitor.visitLabel(label1);
|
|
|
+ methodVisitor.visitLocalVariable("this", "Lnet/ranides/assira/example/IRecord4Proxy;", null, label0, label1, 0);
|
|
|
+ methodVisitor.visitLocalVariable("list", "Ljava/util/List;", "Ljava/util/List<Ljava/lang/String;>;", label0, label1, 1);
|
|
|
+ methodVisitor.visitLocalVariable("map", "Ljava/util/Map;", "Ljava/util/Map<Ljava/lang/String;Ljava/lang/Number;>;", label0, label1, 2);
|
|
|
+ methodVisitor.visitMaxs(4, 3);
|
|
|
+ methodVisitor.visitEnd();
|
|
|
+ }
|
|
|
+ {
|
|
|
+ methodVisitor = classWriter.visitMethod(ACC_PUBLIC, "doSomething", "(Ljava/lang/String;ILnet/ranides/assira/example/IRecord4Proxy;Ljava/util/List;)V", "(Ljava/lang/String;ILnet/ranides/assira/example/IRecord4Proxy;Ljava/util/List<Ljava/lang/String;>;)V", null);
|
|
|
+ methodVisitor.visitCode();
|
|
|
+ Label label0 = new Label();
|
|
|
+ methodVisitor.visitLabel(label0);
|
|
|
+ methodVisitor.visitLineNumber(105, label0);
|
|
|
+ methodVisitor.visitVarInsn(ALOAD, 0);
|
|
|
+ methodVisitor.visitFieldInsn(GETFIELD, "net/ranides/assira/example/IRecord4Proxy", "that", "Lnet/ranides/assira/reflection/adapter/example/InnerDefs$MutableRecord;");
|
|
|
+ methodVisitor.visitVarInsn(ALOAD, 1);
|
|
|
+ methodVisitor.visitVarInsn(ILOAD, 2);
|
|
|
+ methodVisitor.visitVarInsn(ALOAD, 3);
|
|
|
+ methodVisitor.visitVarInsn(ALOAD, 4);
|
|
|
+ methodVisitor.visitMethodInsn(INVOKEVIRTUAL, "net/ranides/assira/reflection/adapter/example/InnerDefs$MutableRecord", "doSomething", "(Ljava/lang/String;ILjava/lang/Object;Ljava/util/List;)V", false);
|
|
|
+ Label label1 = new Label();
|
|
|
+ methodVisitor.visitLabel(label1);
|
|
|
+ methodVisitor.visitLineNumber(106, label1);
|
|
|
+ methodVisitor.visitInsn(RETURN);
|
|
|
+ Label label2 = new Label();
|
|
|
+ methodVisitor.visitLabel(label2);
|
|
|
+ methodVisitor.visitLocalVariable("this", "Lnet/ranides/assira/example/IRecord4Proxy;", null, label0, label2, 0);
|
|
|
+ methodVisitor.visitLocalVariable("a", "Ljava/lang/String;", null, label0, label2, 1);
|
|
|
+ methodVisitor.visitLocalVariable("b", "I", null, label0, label2, 2);
|
|
|
+ methodVisitor.visitLocalVariable("c", "Lnet/ranides/assira/example/IRecord4Proxy;", null, label0, label2, 3);
|
|
|
+ methodVisitor.visitLocalVariable("d", "Ljava/util/List;", "Ljava/util/List<Ljava/lang/String;>;", label0, label2, 4);
|
|
|
+ methodVisitor.visitMaxs(5, 5);
|
|
|
+ methodVisitor.visitEnd();
|
|
|
+ }
|
|
|
+ {
|
|
|
+ methodVisitor = classWriter.visitMethod(ACC_PUBLIC, "doSomething_unwrap", "(Ljava/lang/String;ILnet/ranides/assira/example/IRecord4Proxy;Ljava/util/List;)V", "(Ljava/lang/String;ILnet/ranides/assira/example/IRecord4Proxy;Ljava/util/List<Ljava/lang/String;>;)V", null);
|
|
|
+ methodVisitor.visitCode();
|
|
|
+ Label label0 = new Label();
|
|
|
+ methodVisitor.visitLabel(label0);
|
|
|
+ methodVisitor.visitLineNumber(109, label0);
|
|
|
+ methodVisitor.visitVarInsn(ALOAD, 0);
|
|
|
+ methodVisitor.visitFieldInsn(GETFIELD, "net/ranides/assira/example/IRecord4Proxy", "that", "Lnet/ranides/assira/reflection/adapter/example/InnerDefs$MutableRecord;");
|
|
|
+ methodVisitor.visitVarInsn(ALOAD, 1);
|
|
|
+ methodVisitor.visitVarInsn(ILOAD, 2);
|
|
|
+ methodVisitor.visitVarInsn(ALOAD, 3);
|
|
|
+ methodVisitor.visitMethodInsn(INVOKEVIRTUAL, "net/ranides/assira/example/IRecord4Proxy", "net_ranides_assira_cg_that", "()Ljava/lang/Object;", false);
|
|
|
+ methodVisitor.visitVarInsn(ALOAD, 4);
|
|
|
+ methodVisitor.visitMethodInsn(INVOKEVIRTUAL, "net/ranides/assira/reflection/adapter/example/InnerDefs$MutableRecord", "doSomething", "(Ljava/lang/String;ILjava/lang/Object;Ljava/util/List;)V", false);
|
|
|
+ Label label1 = new Label();
|
|
|
+ methodVisitor.visitLabel(label1);
|
|
|
+ methodVisitor.visitLineNumber(110, label1);
|
|
|
+ methodVisitor.visitInsn(RETURN);
|
|
|
+ Label label2 = new Label();
|
|
|
+ methodVisitor.visitLabel(label2);
|
|
|
+ methodVisitor.visitLocalVariable("this", "Lnet/ranides/assira/example/IRecord4Proxy;", null, label0, label2, 0);
|
|
|
+ methodVisitor.visitLocalVariable("a", "Ljava/lang/String;", null, label0, label2, 1);
|
|
|
+ methodVisitor.visitLocalVariable("b", "I", null, label0, label2, 2);
|
|
|
+ methodVisitor.visitLocalVariable("c", "Lnet/ranides/assira/example/IRecord4Proxy;", null, label0, label2, 3);
|
|
|
+ methodVisitor.visitLocalVariable("d", "Ljava/util/List;", "Ljava/util/List<Ljava/lang/String;>;", label0, label2, 4);
|
|
|
+ methodVisitor.visitMaxs(5, 5);
|
|
|
+ methodVisitor.visitEnd();
|
|
|
+ }
|
|
|
{
|
|
|
methodVisitor = classWriter.visitMethod(ACC_PUBLIC, "toString", "()Ljava/lang/String;", null, null);
|
|
|
methodVisitor.visitCode();
|
|
|
Label label0 = new Label();
|
|
|
methodVisitor.visitLabel(label0);
|
|
|
- methodVisitor.visitLineNumber(95, label0);
|
|
|
+ methodVisitor.visitLineNumber(114, label0);
|
|
|
methodVisitor.visitVarInsn(ALOAD, 0);
|
|
|
methodVisitor.visitFieldInsn(GETFIELD, "net/ranides/assira/example/IRecord4Proxy", "that", "Lnet/ranides/assira/reflection/adapter/example/InnerDefs$MutableRecord;");
|
|
|
methodVisitor.visitMethodInsn(INVOKEVIRTUAL, "net/ranides/assira/reflection/adapter/example/InnerDefs$MutableRecord", "toString", "()Ljava/lang/String;", false);
|
|
|
methodVisitor.visitVarInsn(ASTORE, 1);
|
|
|
Label label1 = new Label();
|
|
|
methodVisitor.visitLabel(label1);
|
|
|
- methodVisitor.visitLineNumber(96, label1);
|
|
|
+ methodVisitor.visitLineNumber(115, label1);
|
|
|
methodVisitor.visitTypeInsn(NEW, "java/lang/StringBuilder");
|
|
|
methodVisitor.visitInsn(DUP);
|
|
|
methodVisitor.visitIntInsn(BIPUSH, 24);
|
|
|
@@ -448,13 +552,13 @@ public class IRecord4ProxyDump implements Opcodes {
|
|
|
methodVisitor.visitCode();
|
|
|
Label label0 = new Label();
|
|
|
methodVisitor.visitLabel(label0);
|
|
|
- methodVisitor.visitLineNumber(71, label0);
|
|
|
+ methodVisitor.visitLineNumber(78, label0);
|
|
|
methodVisitor.visitLdcInsn(Type.getType("Lnet/ranides/assira/reflection/adapter/example/InnerDefs$Record;"));
|
|
|
methodVisitor.visitMethodInsn(INVOKESTATIC, "net/ranides/assira/reflection/IClass", "typeinfo", "(Ljava/lang/Class;)Lnet/ranides/assira/reflection/IClass;", true);
|
|
|
methodVisitor.visitFieldInsn(PUTSTATIC, "net/ranides/assira/example/IRecord4Proxy", "I_CLASS", "Lnet/ranides/assira/reflection/IClass;");
|
|
|
Label label1 = new Label();
|
|
|
methodVisitor.visitLabel(label1);
|
|
|
- methodVisitor.visitLineNumber(73, label1);
|
|
|
+ methodVisitor.visitLineNumber(80, label1);
|
|
|
methodVisitor.visitFieldInsn(GETSTATIC, "net/ranides/assira/example/IRecord4Proxy", "I_CLASS", "Lnet/ranides/assira/reflection/IClass;");
|
|
|
methodVisitor.visitLdcInsn("args1");
|
|
|
methodVisitor.visitIntInsn(BIPUSH, 11);
|