Skip to content

Instantly share code, notes, and snippets.

@lptr
Created August 27, 2021 11:29
Show Gist options
  • Save lptr/cd7c9e149e2db5d2c92df2cb6d709728 to your computer and use it in GitHub Desktop.
Save lptr/cd7c9e149e2db5d2c92df2cb6d709728 to your computer and use it in GitHub Desktop.
--- DynamicGroovyClient-old-filtered.asm 2021-08-27 13:28:20.000000000 +0200
+++ DynamicGroovyClient-new-filtered.asm 2021-08-27 13:28:20.000000000 +0200
@@ -1,6 +1,6 @@
Classfile /Users/lptr/Temp/DynamicGroovyCompare/DynamicGroovyClient.class
- Last modified Aug 27, 2021; size 2928 bytes
- MD5 checksum b70eced31eca179e5aff0a332c561ba9
+ Last modified Aug 27, 2021; size 3479 bytes
+ MD5 checksum a109548ecd53febc31a5f00b75cb2971
Compiled from "DynamicGroovyClient.groovy"
public class org.gradle.demo.api.evolution.DynamicGroovyClient implements groovy.lang.GroovyObject
minor version: 0
@@ -8,7 +8,7 @@
flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: #_ // org/gradle/demo/api/evolution/DynamicGroovyClient
super_class: #_ // java/lang/Object
- interfaces: 1, fields: 4, methods: 10, attributes: 1
+ interfaces: 1, fields: 5, methods: 12, attributes: 1
Constant pool:
#_ = Utf8 org/gradle/demo/api/evolution/DynamicGroovyClient
#_ = Class #_ // org/gradle/demo/api/evolution/DynamicGroovyClient
@@ -42,8 +42,10 @@
#_ = Utf8 Lorg/gradle/demo/api/evolution/DynamicGroovyClient;
#_ = Utf8 main
#_ = Integer 0
- #_ = Utf8 org/gradle/demo/api/evolution/Server
- #_ = Class #_ // org/gradle/demo/api/evolution/Server
+ #_ = Utf8 $get$$class$org$gradle$demo$api$evolution$Server
+ #_ = Utf8 ()Ljava/lang/Class;
+ #_ = NameAndType #_:#_ // $get$$class$org$gradle$demo$api$evolution$Server:()Ljava/lang/Class;
+ #_ = Methodref #_.#_ // org/gradle/demo/api/evolution/DynamicGroovyClient.$get$$class$org$gradle$demo$api$evolution$Server:()Ljava/lang/Class;
#_ = Utf8 org/codehaus/groovy/runtime/callsite/CallSite
#_ = Class #_ // org/codehaus/groovy/runtime/callsite/CallSite
#_ = Utf8 callConstructor
@@ -62,18 +64,19 @@
#_ = Utf8 doSet
#_ = Utf8 (Ljava/lang/Object;)V
#_ = Integer 4
+ #_ = Integer 5
+ #_ = Utf8 call
+ #_ = NameAndType #_:#_ // call:(Ljava/lang/Object;)Ljava/lang/Object;
+ #_ = InterfaceMethodref #_.#_ // org/codehaus/groovy/runtime/callsite/CallSite.call:(Ljava/lang/Object;)Ljava/lang/Object;
#_ = Utf8 lajos
#_ = String #_ // lajos
- #_ = Utf8 call
#_ = Utf8 (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
#_ = NameAndType #_:#_ // call:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
#_ = InterfaceMethodref #_.#_ // org/codehaus/groovy/runtime/callsite/CallSite.call:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
#_ = Utf8 doGet
- #_ = Integer 5
- #_ = NameAndType #_:#_ // call:(Ljava/lang/Object;)Ljava/lang/Object;
- #_ = InterfaceMethodref #_.#_ // org/codehaus/groovy/runtime/callsite/CallSite.call:(Ljava/lang/Object;)Ljava/lang/Object;
+ #_ = Integer 6
+ #_ = Integer 7
#_ = Utf8 getClass
- #_ = Utf8 ()Ljava/lang/Class;
#_ = NameAndType #_:#_ // getClass:()Ljava/lang/Class;
#_ = Methodref #_.#_ // java/lang/Object.getClass:()Ljava/lang/Class;
#_ = Utf8 org/codehaus/groovy/runtime/ScriptBytecodeAdapter
@@ -106,16 +109,18 @@
#_ = Utf8 <$constructor$>
#_ = String #_ // <$constructor$>
#_ = String #_ // doSet
- #_ = Utf8 println
- #_ = String #_ // println
- #_ = String #_ // doGet
- #_ = Utf8 setTestProperty
- #_ = String #_ // setTestProperty
+ #_ = Utf8 println
+ #_ = String #_ // println
+ #_ = String #_ // doGet
+ #_ = Utf8 set
+ #_ = String #_ // set
#_ = Utf8 getTestProperty
#_ = String #_ // getTestProperty
+ #_ = Utf8 get
+ #_ = String #_ // get
#_ = Utf8 $createCallSiteArray
#_ = Utf8 ()Lorg/codehaus/groovy/runtime/callsite/CallSiteArray;
- #_ = Integer 6
+ #_ = Integer 8
#_ = Utf8 java/lang/String
#_ = Class #_ // java/lang/String
#_ = NameAndType #_:#_ // $createCallSiteArray_1:([Ljava/lang/String;)V
@@ -129,7 +134,6 @@
#_ = Fieldref #_.#_ // org/gradle/demo/api/evolution/DynamicGroovyClient.$callSiteArray:Ljava/lang/ref/SoftReference;
#_ = Utf8 java/lang/ref/SoftReference
#_ = Class #_ // java/lang/ref/SoftReference
- #_ = Utf8 get
#_ = Utf8 ()Ljava/lang/Object;
#_ = NameAndType #_:#_ // get:()Ljava/lang/Object;
#_ = Methodref #_.#_ // java/lang/ref/SoftReference.get:()Ljava/lang/Object;
@@ -141,6 +145,32 @@
#_ = Utf8 [Lorg/codehaus/groovy/runtime/callsite/CallSite;
#_ = NameAndType #_:#_ // array:[Lorg/codehaus/groovy/runtime/callsite/CallSite;
#_ = Fieldref #_.#_ // org/codehaus/groovy/runtime/callsite/CallSiteArray.array:[Lorg/codehaus/groovy/runtime/callsite/CallSite;
+ #_ = Utf8 $class$org$gradle$demo$api$evolution$Server
+ #_ = Utf8 Ljava/lang/Class;
+ #_ = NameAndType #_:#_ // $class$org$gradle$demo$api$evolution$Server:Ljava/lang/Class;
+ #_ = Fieldref #_.#_ // org/gradle/demo/api/evolution/DynamicGroovyClient.$class$org$gradle$demo$api$evolution$Server:Ljava/lang/Class;
+ #_ = Utf8 org.gradle.demo.api.evolution.Server
+ #_ = String #_ // org.gradle.demo.api.evolution.Server
+ #_ = Utf8 class$
+ #_ = Utf8 (Ljava/lang/String;)Ljava/lang/Class;
+ #_ = NameAndType #_:#_ // class$:(Ljava/lang/String;)Ljava/lang/Class;
+ #_ = Methodref #_.#_ // org/gradle/demo/api/evolution/DynamicGroovyClient.class$:(Ljava/lang/String;)Ljava/lang/Class;
+ #_ = Utf8 java/lang/Class
+ #_ = Class #_ // java/lang/Class
+ #_ = Utf8 forName
+ #_ = NameAndType #_:#_ // forName:(Ljava/lang/String;)Ljava/lang/Class;
+ #_ = Methodref #_.#_ // java/lang/Class.forName:(Ljava/lang/String;)Ljava/lang/Class;
+ #_ = Utf8 java/lang/NoClassDefFoundError
+ #_ = Class #_ // java/lang/NoClassDefFoundError
+ #_ = Utf8 java/lang/ClassNotFoundException
+ #_ = Class #_ // java/lang/ClassNotFoundException
+ #_ = Utf8 getMessage
+ #_ = Utf8 ()Ljava/lang/String;
+ #_ = NameAndType #_:#_ // getMessage:()Ljava/lang/String;
+ #_ = Methodref #_.#_ // java/lang/ClassNotFoundException.getMessage:()Ljava/lang/String;
+ #_ = Utf8 (Ljava/lang/String;)V
+ #_ = NameAndType #_:#_ // "<init>":(Ljava/lang/String;)V
+ #_ = Methodref #_.#_ // java/lang/NoClassDefFoundError."<init>":(Ljava/lang/String;)V
#_ = Utf8 Code
#_ = Utf8 LocalVariableTable
#_ = Utf8 RuntimeVisibleAnnotations
@@ -164,6 +194,10 @@
descriptor: Ljava/lang/ref/SoftReference;
flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
+ private static java.lang.Class $class$org$gradle$demo$api$evolution$Server;
+ descriptor: Ljava/lang/Class;
+ flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
+
public org.gradle.demo.api.evolution.DynamicGroovyClient();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
@@ -202,7 +236,7 @@
: aload_0
: ldc #_ // int 0
: aaload
- : ldc #_ // class org/gradle/demo/api/evolution/Server
+ : invokestatic #_ // Method $get$$class$org$gradle$demo$api$evolution$Server:()Ljava/lang/Class;
: invokeinterface #_, 2 // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.callConstructor:(Ljava/lang/Object;)Ljava/lang/Object;
: astore_1
: aload_1
@@ -229,11 +263,11 @@
: return
LineNumberTable:
line 5: 5
- line 6: 19
- line 7: 32
+ line 6: 20
+ line 7: 33
LocalVariableTable:
Start Length Slot Name Signature
- 17 39 1 server Ljava/lang/Object;
+ 18 39 1 server Ljava/lang/Object;
private static void doSet(java.lang.Object);
descriptor: (Ljava/lang/Object;)V
@@ -246,7 +280,11 @@
: aload_1
: ldc #_ // int 4
: aaload
+ : aload_1
+ : ldc #_ // int 5
+ : aaload
: aload_0
+ : invokeinterface #_, 2 // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.call:(Ljava/lang/Object;)Ljava/lang/Object;
: ldc #_ // String lajos
: invokeinterface #_, 3 // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.call:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
: pop
@@ -255,27 +293,31 @@
line 11: 5
LocalVariableTable:
Start Length Slot Name Signature
- 0 18 0 server Ljava/lang/Object;
+ 0 27 0 server Ljava/lang/Object;
private static java.lang.Object doGet(java.lang.Object);
descriptor: (Ljava/lang/Object;)Ljava/lang/Object;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
- stack=2, locals=2, args_size=1
+ stack=3, locals=2, args_size=1
: nop
: invokestatic #_ // Method $getCallSiteArray:()[Lorg/codehaus/groovy/runtime/callsite/CallSite;
: astore_1
: aload_1
- : ldc #_ // int 5
+ : ldc #_ // int 6
+ : aaload
+ : aload_1
+ : ldc #_ // int 7
: aaload
: aload_0
: invokeinterface #_, 2 // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.call:(Ljava/lang/Object;)Ljava/lang/Object;
+ : invokeinterface #_, 2 // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.call:(Ljava/lang/Object;)Ljava/lang/Object;
: areturn
LineNumberTable:
line 14: 5
LocalVariableTable:
Start Length Slot Name Signature
- 0 16 0 server Ljava/lang/Object;
+ 0 25 0 server Ljava/lang/Object;
protected groovy.lang.MetaClass $getStaticMetaClass();
descriptor: ()Lgroovy/lang/MetaClass;
@@ -367,20 +409,28 @@
: aastore
: aload_0
: ldc #_ // int 2
- : ldc #_ // String println
+ : ldc #_ // String println
: aastore
: aload_0
: ldc #_ // int 3
- : ldc #_ // String doGet
+ : ldc #_ // String doGet
: aastore
: aload_0
: ldc #_ // int 4
- : ldc #_ // String setTestProperty
+ : ldc #_ // String set
: aastore
: aload_0
: ldc #_ // int 5
: ldc #_ // String getTestProperty
: aastore
+ : aload_0
+ : ldc #_ // int 6
+ : ldc #_ // String get
+ : aastore
+ : aload_0
+ : ldc #_ // int 7
+ : ldc #_ // String getTestProperty
+ : aastore
: return
private static org.codehaus.groovy.runtime.callsite.CallSiteArray $createCallSiteArray();
@@ -388,7 +438,7 @@
flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
Code:
stack=4, locals=1, args_size=0
- : ldc #_ // int 6
+ : ldc #_ // int 8
: anewarray #_ // class java/lang/String
: astore_0
: aload_0
@@ -428,5 +478,45 @@
frame_type = 252 /* append */
offset_delta = 14
locals = [ class org/codehaus/groovy/runtime/callsite/CallSiteArray ]
+
+ private static java.lang.Class $get$$class$org$gradle$demo$api$evolution$Server();
+ descriptor: ()Ljava/lang/Class;
+ flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
+ Code:
+ stack=2, locals=0, args_size=0
+ : getstatic #_ // Field $class$org$gradle$demo$api$evolution$Server:Ljava/lang/Class;
+ : dup
+ : ifnonnull 17
+ : pop
+ : ldc #_ // String org.gradle.demo.api.evolution.Server
+ : invokestatic #_ // Method class$:(Ljava/lang/String;)Ljava/lang/Class;
+ : dup
+ : putstatic #_ // Field $class$org$gradle$demo$api$evolution$Server:Ljava/lang/Class;
+ : areturn
+ StackMapTable: number_of_entries = 1
+ frame_type = 81 /* same_locals_1_stack_item */
+ stack = [ class java/lang/Class ]
+
+ static java.lang.Class class$(java.lang.String);
+ descriptor: (Ljava/lang/String;)Ljava/lang/Class;
+ flags: (0x1008) ACC_STATIC, ACC_SYNTHETIC
+ Code:
+ stack=3, locals=2, args_size=1
+ : aload_0
+ : invokestatic #_ // Method java/lang/Class.forName:(Ljava/lang/String;)Ljava/lang/Class;
+ : areturn
+ : astore_1
+ : new #_ // class java/lang/NoClassDefFoundError
+ : dup
+ : aload_1
+ : invokevirtual #_ // Method java/lang/ClassNotFoundException.getMessage:()Ljava/lang/String;
+ : invokespecial #_ // Method java/lang/NoClassDefFoundError."<init>":(Ljava/lang/String;)V
+ : athrow
+ Exception table:
+ from to target type
+ 0 5 5 Class java/lang/ClassNotFoundException
+ StackMapTable: number_of_entries = 1
+ frame_type = 69 /* same_locals_1_stack_item */
+ stack = [ class java/lang/ClassNotFoundException ]
}
SourceFile: "DynamicGroovyClient.groovy"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment