Skip to content

Instantly share code, notes, and snippets.

@SmartDengg
Last active January 31, 2019 06:26
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save SmartDengg/b2edbcad0a9c932df07fa90656986c67 to your computer and use it in GitHub Desktop.
Save SmartDengg/b2edbcad0a9c932df07fa90656986c67 to your computer and use it in GitHub Desktop.
# $ groovyc GroovyTest.groovy
# $ javap -c GroovyTest.class
@SmartDengg
Copy link
Author

class GroovyTest {

  void register(Callback callback) {
    callback?.on()
  }

  interface Callback {
    void on()
  }
}

@SmartDengg
Copy link
Author

public class GroovyTest implements groovy.lang.GroovyObject
  minor version: 0
  major version: 49
  flags: ACC_PUBLIC, ACC_SUPER
Constant pool:
    #1 = Utf8               GroovyTest
    #2 = Class              #1            // GroovyTest
    #3 = Utf8               java/lang/Object
    #4 = Class              #3            // java/lang/Object
    #5 = Utf8               groovy/lang/GroovyObject
    #6 = Class              #5            // groovy/lang/GroovyObject
    #7 = Utf8               GroovyTest.groovy
    #8 = Utf8               $staticClassInfo
    #9 = Utf8               Lorg/codehaus/groovy/reflection/ClassInfo;
   #10 = Utf8               __$stMC
   #11 = Utf8               Z
   #12 = Utf8               metaClass
   #13 = Utf8               Lgroovy/lang/MetaClass;
   #14 = Utf8               <init>
   #15 = Utf8               ()V
   #16 = Utf8               $getCallSiteArray
   #17 = Utf8               ()[Lorg/codehaus/groovy/runtime/callsite/CallSite;
   #18 = NameAndType        #16:#17       // $getCallSiteArray:()[Lorg/codehaus/groovy/runtime/callsite/CallSite;
   #19 = Methodref          #2.#18        // GroovyTest.$getCallSiteArray:()[Lorg/codehaus/groovy/runtime/callsite/CallSite;
   #20 = NameAndType        #14:#15       // "<init>":()V
   #21 = Methodref          #4.#20        // java/lang/Object."<init>":()V
   #22 = Utf8               $getStaticMetaClass
   #23 = Utf8               ()Lgroovy/lang/MetaClass;
   #24 = NameAndType        #22:#23       // $getStaticMetaClass:()Lgroovy/lang/MetaClass;
   #25 = Methodref          #2.#24        // GroovyTest.$getStaticMetaClass:()Lgroovy/lang/MetaClass;
   #26 = NameAndType        #12:#13       // metaClass:Lgroovy/lang/MetaClass;
   #27 = Fieldref           #2.#26        // GroovyTest.metaClass:Lgroovy/lang/MetaClass;
   #28 = Utf8               this
   #29 = Utf8               LGroovyTest;
   #30 = Utf8               register
   #31 = Utf8               (LGroovyTest$Callback;)V
   #32 = Integer            0
   #33 = Utf8               org/codehaus/groovy/runtime/callsite/CallSite
   #34 = Class              #33           // org/codehaus/groovy/runtime/callsite/CallSite
   #35 = Utf8               callSafe
   #36 = Utf8               (Ljava/lang/Object;)Ljava/lang/Object;
   #37 = NameAndType        #35:#36       // callSafe:(Ljava/lang/Object;)Ljava/lang/Object;
   #38 = InterfaceMethodref #34.#37       // org/codehaus/groovy/runtime/callsite/CallSite.callSafe:(Ljava/lang/Object;)Ljava/lang/Object;
   #39 = Utf8               callback
   #40 = Utf8               LGroovyTest$Callback;
   #41 = Utf8               this$dist$invoke$1
   #42 = Utf8               (Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
   #43 = Utf8               org/codehaus/groovy/runtime/GStringImpl
   #44 = Class              #43           // org/codehaus/groovy/runtime/GStringImpl
   #45 = Utf8               java/lang/String
   #46 = Class              #45           // java/lang/String
   #47 = Utf8
   #48 = String             #47           //
   #49 = Utf8               ([Ljava/lang/Object;[Ljava/lang/String;)V
   #50 = NameAndType        #14:#49       // "<init>":([Ljava/lang/Object;[Ljava/lang/String;)V
   #51 = Methodref          #44.#50       // org/codehaus/groovy/runtime/GStringImpl."<init>":([Ljava/lang/Object;[Ljava/lang/String;)V
   #52 = Utf8               org/codehaus/groovy/runtime/typehandling/ShortTypeHandling
   #53 = Class              #52           // org/codehaus/groovy/runtime/typehandling/ShortTypeHandling
   #54 = Utf8               castToString
   #55 = Utf8               (Ljava/lang/Object;)Ljava/lang/String;
   #56 = NameAndType        #54:#55       // castToString:(Ljava/lang/Object;)Ljava/lang/String;
   #57 = Methodref          #53.#56       // org/codehaus/groovy/runtime/typehandling/ShortTypeHandling.castToString:(Ljava/lang/Object;)Ljava/lang/String;
   #58 = Utf8               org/codehaus/groovy/runtime/ScriptBytecodeAdapter
   #59 = Class              #58           // org/codehaus/groovy/runtime/ScriptBytecodeAdapter
   #60 = Utf8               despreadList
   #61 = Utf8               ([Ljava/lang/Object;[Ljava/lang/Object;[I)[Ljava/lang/Object;
   #62 = NameAndType        #60:#61       // despreadList:([Ljava/lang/Object;[Ljava/lang/Object;[I)[Ljava/lang/Object;
   #63 = Methodref          #59.#62       // org/codehaus/groovy/runtime/ScriptBytecodeAdapter.despreadList:([Ljava/lang/Object;[Ljava/lang/Object;[I)[Ljava/lang/Object;
   #64 = Utf8               invokeMethodOnCurrentN
   #65 = Utf8               (Ljava/lang/Class;Lgroovy/lang/GroovyObject;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/Object;
   #66 = NameAndType        #64:#65       // invokeMethodOnCurrentN:(Ljava/lang/Class;Lgroovy/lang/GroovyObject;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/Object;
   #67 = Methodref          #59.#66       // org/codehaus/groovy/runtime/ScriptBytecodeAdapter.invokeMethodOnCurrentN:(Ljava/lang/Class;Lgroovy/lang/GroovyObject;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/Object;
   #68 = Utf8               name
   #69 = Utf8               Ljava/lang/String;
   #70 = Utf8               args
   #71 = Utf8               Ljava/lang/Object;
   #72 = Utf8               this$dist$set$1
   #73 = Utf8               (Ljava/lang/String;Ljava/lang/Object;)V
   #74 = Utf8               setGroovyObjectProperty
   #75 = Utf8               (Ljava/lang/Object;Ljava/lang/Class;Lgroovy/lang/GroovyObject;Ljava/lang/String;)V
   #76 = NameAndType        #74:#75       // setGroovyObjectProperty:(Ljava/lang/Object;Ljava/lang/Class;Lgroovy/lang/GroovyObject;Ljava/lang/String;)V
   #77 = Methodref          #59.#76       // org/codehaus/groovy/runtime/ScriptBytecodeAdapter.setGroovyObjectProperty:(Ljava/lang/Object;Ljava/lang/Class;Lgroovy/lang/GroovyObject;Ljava/lang/String;)V
   #78 = Utf8               value
   #79 = Utf8               this$dist$get$1
   #80 = Utf8               (Ljava/lang/String;)Ljava/lang/Object;
   #81 = Utf8               getGroovyObjectProperty
   #82 = Utf8               (Ljava/lang/Class;Lgroovy/lang/GroovyObject;Ljava/lang/String;)Ljava/lang/Object;
   #83 = NameAndType        #81:#82       // getGroovyObjectProperty:(Ljava/lang/Class;Lgroovy/lang/GroovyObject;Ljava/lang/String;)Ljava/lang/Object;
   #84 = Methodref          #59.#83       // org/codehaus/groovy/runtime/ScriptBytecodeAdapter.getGroovyObjectProperty:(Ljava/lang/Class;Lgroovy/lang/GroovyObject;Ljava/lang/String;)Ljava/lang/Object;
   #85 = Utf8               getClass
   #86 = Utf8               ()Ljava/lang/Class;
   #87 = NameAndType        #85:#86       // getClass:()Ljava/lang/Class;
   #88 = Methodref          #4.#87        // java/lang/Object.getClass:()Ljava/lang/Class;
   #89 = Utf8               initMetaClass
   #90 = Utf8               (Ljava/lang/Object;)Lgroovy/lang/MetaClass;
   #91 = NameAndType        #89:#90       // initMetaClass:(Ljava/lang/Object;)Lgroovy/lang/MetaClass;
   #92 = Methodref          #59.#91       // org/codehaus/groovy/runtime/ScriptBytecodeAdapter.initMetaClass:(Ljava/lang/Object;)Lgroovy/lang/MetaClass;
   #93 = NameAndType        #8:#9         // $staticClassInfo:Lorg/codehaus/groovy/reflection/ClassInfo;
   #94 = Fieldref           #2.#93        // GroovyTest.$staticClassInfo:Lorg/codehaus/groovy/reflection/ClassInfo;
   #95 = Utf8               org/codehaus/groovy/reflection/ClassInfo
   #96 = Class              #95           // org/codehaus/groovy/reflection/ClassInfo
   #97 = Utf8               getClassInfo
   #98 = Utf8               (Ljava/lang/Class;)Lorg/codehaus/groovy/reflection/ClassInfo;
   #99 = NameAndType        #97:#98       // getClassInfo:(Ljava/lang/Class;)Lorg/codehaus/groovy/reflection/ClassInfo;
  #100 = Methodref          #96.#99       // org/codehaus/groovy/reflection/ClassInfo.getClassInfo:(Ljava/lang/Class;)Lorg/codehaus/groovy/reflection/ClassInfo;
  #101 = Utf8               getMetaClass
  #102 = NameAndType        #101:#23      // getMetaClass:()Lgroovy/lang/MetaClass;
  #103 = Methodref          #96.#102      // org/codehaus/groovy/reflection/ClassInfo.getMetaClass:()Lgroovy/lang/MetaClass;
  #104 = Utf8               setMetaClass
  #105 = Utf8               (Lgroovy/lang/MetaClass;)V
  #106 = Utf8               invokeMethod
  #107 = Methodref          #2.#102       // GroovyTest.getMetaClass:()Lgroovy/lang/MetaClass;
  #108 = Utf8               groovy/lang/MetaClass
  #109 = Class              #108          // groovy/lang/MetaClass
  #110 = Utf8               (Ljava/lang/Object;Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
  #111 = NameAndType        #106:#110     // invokeMethod:(Ljava/lang/Object;Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
  #112 = InterfaceMethodref #109.#111     // groovy/lang/MetaClass.invokeMethod:(Ljava/lang/Object;Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
  #113 = Utf8               getProperty
  #114 = Utf8               (Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;
  #115 = NameAndType        #113:#114     // getProperty:(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;
  #116 = InterfaceMethodref #109.#115     // groovy/lang/MetaClass.getProperty:(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;
  #117 = Utf8               setProperty
  #118 = Utf8               (Ljava/lang/Object;Ljava/lang/String;Ljava/lang/Object;)V
  #119 = NameAndType        #117:#118     // setProperty:(Ljava/lang/Object;Ljava/lang/String;Ljava/lang/Object;)V
  #120 = InterfaceMethodref #109.#119     // groovy/lang/MetaClass.setProperty:(Ljava/lang/Object;Ljava/lang/String;Ljava/lang/Object;)V
  #121 = Utf8               $callSiteArray
  #122 = Utf8               Ljava/lang/ref/SoftReference;
  #123 = Utf8               $createCallSiteArray_1
  #124 = Utf8               ([Ljava/lang/String;)V
  #125 = Utf8               on
  #126 = String             #125          // on
  #127 = Utf8               $createCallSiteArray
  #128 = Utf8               ()Lorg/codehaus/groovy/runtime/callsite/CallSiteArray;
  #129 = Integer            1
  #130 = NameAndType        #123:#124     // $createCallSiteArray_1:([Ljava/lang/String;)V
  #131 = Methodref          #2.#130       // GroovyTest.$createCallSiteArray_1:([Ljava/lang/String;)V
  #132 = Utf8               org/codehaus/groovy/runtime/callsite/CallSiteArray
  #133 = Class              #132          // org/codehaus/groovy/runtime/callsite/CallSiteArray
  #134 = Utf8               (Ljava/lang/Class;[Ljava/lang/String;)V
  #135 = NameAndType        #14:#134      // "<init>":(Ljava/lang/Class;[Ljava/lang/String;)V
  #136 = Methodref          #133.#135     // org/codehaus/groovy/runtime/callsite/CallSiteArray."<init>":(Ljava/lang/Class;[Ljava/lang/String;)V
  #137 = NameAndType        #121:#122     // $callSiteArray:Ljava/lang/ref/SoftReference;
  #138 = Fieldref           #2.#137       // GroovyTest.$callSiteArray:Ljava/lang/ref/SoftReference;
  #139 = Utf8               java/lang/ref/SoftReference
  #140 = Class              #139          // java/lang/ref/SoftReference
  #141 = Utf8               get
  #142 = Utf8               ()Ljava/lang/Object;
  #143 = NameAndType        #141:#142     // get:()Ljava/lang/Object;
  #144 = Methodref          #140.#143     // java/lang/ref/SoftReference.get:()Ljava/lang/Object;
  #145 = NameAndType        #127:#128     // $createCallSiteArray:()Lorg/codehaus/groovy/runtime/callsite/CallSiteArray;
  #146 = Methodref          #2.#145       // GroovyTest.$createCallSiteArray:()Lorg/codehaus/groovy/runtime/callsite/CallSiteArray;
  #147 = Utf8               (Ljava/lang/Object;)V
  #148 = NameAndType        #14:#147      // "<init>":(Ljava/lang/Object;)V
  #149 = Methodref          #140.#148     // java/lang/ref/SoftReference."<init>":(Ljava/lang/Object;)V
  #150 = Utf8               array
  #151 = Utf8               [Lorg/codehaus/groovy/runtime/callsite/CallSite;
  #152 = NameAndType        #150:#151     // array:[Lorg/codehaus/groovy/runtime/callsite/CallSite;
  #153 = Fieldref           #133.#152     // org/codehaus/groovy/runtime/callsite/CallSiteArray.array:[Lorg/codehaus/groovy/runtime/callsite/CallSite;
  #154 = Utf8               GroovyTest$Callback
  #155 = Class              #154          // GroovyTest$Callback
  #156 = Utf8               Callback
  #157 = Utf8               GroovyTest$Callback$1
  #158 = Class              #157          // GroovyTest$Callback$1
  #159 = Utf8               1
  #160 = Utf8               Code
  #161 = Utf8               LocalVariableTable
  #162 = Utf8               LineNumberTable
  #163 = Utf8               SourceFile
  #164 = Utf8               InnerClasses
{
  private static org.codehaus.groovy.reflection.ClassInfo $staticClassInfo;
    descriptor: Lorg/codehaus/groovy/reflection/ClassInfo;
    flags: ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC

  public static transient boolean __$stMC;
    descriptor: Z
    flags: ACC_PUBLIC, ACC_STATIC, ACC_TRANSIENT, ACC_SYNTHETIC

  private transient groovy.lang.MetaClass metaClass;
    descriptor: Lgroovy/lang/MetaClass;
    flags: ACC_PRIVATE, ACC_TRANSIENT, ACC_SYNTHETIC

  private static java.lang.ref.SoftReference $callSiteArray;
    descriptor: Ljava/lang/ref/SoftReference;
    flags: ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC

  public GroovyTest();
    descriptor: ()V
    flags: ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=1
         0: invokestatic  #19                 // Method $getCallSiteArray:()[Lorg/codehaus/groovy/runtime/callsite/CallSite;
         3: astore_1
         4: aload_0
         5: invokespecial #21                 // Method java/lang/Object."<init>":()V
         8: aload_0
         9: invokevirtual #25                 // Method $getStaticMetaClass:()Lgroovy/lang/MetaClass;
        12: astore_2
        13: aload_2
        14: aload_0
        15: swap
        16: putfield      #27                 // Field metaClass:Lgroovy/lang/MetaClass;
        19: aload_2
        20: pop
        21: return
      LocalVariableTable:
        Start  Length  Slot  Name   Signature
            0      21     0  this   LGroovyTest;

  public void register(GroovyTest$Callback);
    descriptor: (LGroovyTest$Callback;)V
    flags: ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=2
         0: invokestatic  #19                 // Method $getCallSiteArray:()[Lorg/codehaus/groovy/runtime/callsite/CallSite;
         3: astore_2
         4: aload_2
         5: ldc           #32                 // int 0
         7: aaload
         8: aload_1
         9: invokeinterface #38,  2           // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.callSafe:(Ljava/lang/Object;)Ljava/lang/Object;
        14: pop
        15: return
      LocalVariableTable:
        Start  Length  Slot  Name   Signature
            0      15     0  this   LGroovyTest;
            0      15     1 callback   LGroovyTest$Callback;
      LineNumberTable:
        line 6: 4

  public java.lang.Object this$dist$invoke$1(java.lang.String, java.lang.Object);
    descriptor: (Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
    flags: ACC_PUBLIC, ACC_SYNTHETIC
    Code:
      stack=9, locals=4, args_size=3
         0: invokestatic  #19                 // Method $getCallSiteArray:()[Lorg/codehaus/groovy/runtime/callsite/CallSite;
         3: astore_3
         4: ldc           #2                  // class GroovyTest
         6: aload_0
         7: new           #44                 // class org/codehaus/groovy/runtime/GStringImpl
        10: dup
        11: iconst_1
        12: anewarray     #4                  // class java/lang/Object
        15: dup
        16: iconst_0
        17: aload_1
        18: aastore
        19: iconst_2
        20: anewarray     #46                 // class java/lang/String
        23: dup
        24: iconst_0
        25: ldc           #48                 // String
        27: aastore
        28: dup
        29: iconst_1
        30: ldc           #48                 // String
        32: aastore
        33: invokespecial #51                 // Method org/codehaus/groovy/runtime/GStringImpl."<init>":([Ljava/lang/Object;[Ljava/lang/String;)V
        36: invokestatic  #57                 // Method org/codehaus/groovy/runtime/typehandling/ShortTypeHandling.castToString:(Ljava/lang/Object;)Ljava/lang/String;
        39: checkcast     #46                 // class java/lang/String
        42: iconst_0
        43: anewarray     #4                  // class java/lang/Object
        46: iconst_1
        47: anewarray     #4                  // class java/lang/Object
        50: dup
        51: iconst_0
        52: aload_2
        53: aastore
        54: iconst_1
        55: newarray       int
        57: dup
        58: iconst_0
        59: iconst_0
        60: iastore
        61: invokestatic  #63                 // Method org/codehaus/groovy/runtime/ScriptBytecodeAdapter.despreadList:([Ljava/lang/Object;[Ljava/lang/Object;[I)[Ljava/lang/Object;
        64: invokestatic  #67                 // Method org/codehaus/groovy/runtime/ScriptBytecodeAdapter.invokeMethodOnCurrentN:(Ljava/lang/Class;Lgroovy/lang/GroovyObject;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/Object;
        67: areturn
        68: aconst_null
        69: areturn
      LocalVariableTable:
        Start  Length  Slot  Name   Signature
            0      68     0  this   LGroovyTest;
            0      68     1  name   Ljava/lang/String;
            0      68     2  args   Ljava/lang/Object;

  public void this$dist$set$1(java.lang.String, java.lang.Object);
    descriptor: (Ljava/lang/String;Ljava/lang/Object;)V
    flags: ACC_PUBLIC, ACC_SYNTHETIC
    Code:
      stack=10, locals=5, args_size=3
         0: invokestatic  #19                 // Method $getCallSiteArray:()[Lorg/codehaus/groovy/runtime/callsite/CallSite;
         3: astore_3
         4: aload_2
         5: astore        4
         7: aload         4
         9: ldc           #2                  // class GroovyTest
        11: aload_0
        12: new           #44                 // class org/codehaus/groovy/runtime/GStringImpl
        15: dup
        16: iconst_1
        17: anewarray     #4                  // class java/lang/Object
        20: dup
        21: iconst_0
        22: aload_1
        23: aastore
        24: iconst_2
        25: anewarray     #46                 // class java/lang/String
        28: dup
        29: iconst_0
        30: ldc           #48                 // String
        32: aastore
        33: dup
        34: iconst_1
        35: ldc           #48                 // String
        37: aastore
        38: invokespecial #51                 // Method org/codehaus/groovy/runtime/GStringImpl."<init>":([Ljava/lang/Object;[Ljava/lang/String;)V
        41: invokestatic  #57                 // Method org/codehaus/groovy/runtime/typehandling/ShortTypeHandling.castToString:(Ljava/lang/Object;)Ljava/lang/String;
        44: checkcast     #46                 // class java/lang/String
        47: invokestatic  #77                 // Method org/codehaus/groovy/runtime/ScriptBytecodeAdapter.setGroovyObjectProperty:(Ljava/lang/Object;Ljava/lang/Class;Lgroovy/lang/GroovyObject;Ljava/lang/String;)V
        50: aload         4
        52: pop
        53: return
      LocalVariableTable:
        Start  Length  Slot  Name   Signature
            0      53     0  this   LGroovyTest;
            0      53     1  name   Ljava/lang/String;
            0      53     2 value   Ljava/lang/Object;

  public java.lang.Object this$dist$get$1(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/lang/Object;
    flags: ACC_PUBLIC, ACC_SYNTHETIC
    Code:
      stack=9, locals=3, args_size=2
         0: invokestatic  #19                 // Method $getCallSiteArray:()[Lorg/codehaus/groovy/runtime/callsite/CallSite;
         3: astore_2
         4: ldc           #2                  // class GroovyTest
         6: aload_0
         7: new           #44                 // class org/codehaus/groovy/runtime/GStringImpl
        10: dup
        11: iconst_1
        12: anewarray     #4                  // class java/lang/Object
        15: dup
        16: iconst_0
        17: aload_1
        18: aastore
        19: iconst_2
        20: anewarray     #46                 // class java/lang/String
        23: dup
        24: iconst_0
        25: ldc           #48                 // String
        27: aastore
        28: dup
        29: iconst_1
        30: ldc           #48                 // String
        32: aastore
        33: invokespecial #51                 // Method org/codehaus/groovy/runtime/GStringImpl."<init>":([Ljava/lang/Object;[Ljava/lang/String;)V
        36: invokestatic  #57                 // Method org/codehaus/groovy/runtime/typehandling/ShortTypeHandling.castToString:(Ljava/lang/Object;)Ljava/lang/String;
        39: checkcast     #46                 // class java/lang/String
        42: invokestatic  #84                 // Method org/codehaus/groovy/runtime/ScriptBytecodeAdapter.getGroovyObjectProperty:(Ljava/lang/Class;Lgroovy/lang/GroovyObject;Ljava/lang/String;)Ljava/lang/Object;
        45: areturn
        46: aconst_null
        47: areturn
      LocalVariableTable:
        Start  Length  Slot  Name   Signature
            0      46     0  this   LGroovyTest;
            0      46     1  name   Ljava/lang/String;

  protected groovy.lang.MetaClass $getStaticMetaClass();
    descriptor: ()Lgroovy/lang/MetaClass;
    flags: ACC_PROTECTED, ACC_SYNTHETIC
    Code:
      stack=2, locals=2, args_size=1
         0: aload_0
         1: invokevirtual #88                 // Method java/lang/Object.getClass:()Ljava/lang/Class;
         4: ldc           #2                  // class GroovyTest
         6: if_acmpeq     14
         9: aload_0
        10: invokestatic  #92                 // Method org/codehaus/groovy/runtime/ScriptBytecodeAdapter.initMetaClass:(Ljava/lang/Object;)Lgroovy/lang/MetaClass;
        13: areturn
        14: getstatic     #94                 // Field $staticClassInfo:Lorg/codehaus/groovy/reflection/ClassInfo;
        17: astore_1
        18: aload_1
        19: ifnonnull     34
        22: aload_0
        23: invokevirtual #88                 // Method java/lang/Object.getClass:()Ljava/lang/Class;
        26: invokestatic  #100                // Method org/codehaus/groovy/reflection/ClassInfo.getClassInfo:(Ljava/lang/Class;)Lorg/codehaus/groovy/reflection/ClassInfo;
        29: dup
        30: astore_1
        31: putstatic     #94                 // Field $staticClassInfo:Lorg/codehaus/groovy/reflection/ClassInfo;
        34: aload_1
        35: invokevirtual #103                // Method org/codehaus/groovy/reflection/ClassInfo.getMetaClass:()Lgroovy/lang/MetaClass;
        38: areturn

  public groovy.lang.MetaClass getMetaClass();
    descriptor: ()Lgroovy/lang/MetaClass;
    flags: ACC_PUBLIC, ACC_SYNTHETIC
    Code:
      stack=2, locals=1, args_size=1
         0: aload_0
         1: getfield      #27                 // Field metaClass:Lgroovy/lang/MetaClass;
         4: dup
         5: ifnull        9
         8: areturn
         9: pop
        10: aload_0
        11: dup
        12: invokevirtual #25                 // Method $getStaticMetaClass:()Lgroovy/lang/MetaClass;
        15: putfield      #27                 // Field metaClass:Lgroovy/lang/MetaClass;
        18: aload_0
        19: getfield      #27                 // Field metaClass:Lgroovy/lang/MetaClass;
        22: areturn

  public void setMetaClass(groovy.lang.MetaClass);
    descriptor: (Lgroovy/lang/MetaClass;)V
    flags: ACC_PUBLIC, ACC_SYNTHETIC
    Code:
      stack=2, locals=2, args_size=2
         0: aload_0
         1: aload_1
         2: putfield      #27                 // Field metaClass:Lgroovy/lang/MetaClass;
         5: return

  public java.lang.Object invokeMethod(java.lang.String, java.lang.Object);
    descriptor: (Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
    flags: ACC_PUBLIC, ACC_SYNTHETIC
    Code:
      stack=4, locals=3, args_size=3
         0: aload_0
         1: invokevirtual #107                // Method getMetaClass:()Lgroovy/lang/MetaClass;
         4: aload_0
         5: aload_1
         6: aload_2
         7: invokeinterface #112,  4          // InterfaceMethod groovy/lang/MetaClass.invokeMethod:(Ljava/lang/Object;Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
        12: areturn

  public java.lang.Object getProperty(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/lang/Object;
    flags: ACC_PUBLIC, ACC_SYNTHETIC
    Code:
      stack=3, locals=2, args_size=2
         0: aload_0
         1: invokevirtual #107                // Method getMetaClass:()Lgroovy/lang/MetaClass;
         4: aload_0
         5: aload_1
         6: invokeinterface #116,  3          // InterfaceMethod groovy/lang/MetaClass.getProperty:(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;
        11: areturn

  public void setProperty(java.lang.String, java.lang.Object);
    descriptor: (Ljava/lang/String;Ljava/lang/Object;)V
    flags: ACC_PUBLIC, ACC_SYNTHETIC
    Code:
      stack=4, locals=3, args_size=3
         0: aload_0
         1: invokevirtual #107                // Method getMetaClass:()Lgroovy/lang/MetaClass;
         4: aload_0
         5: aload_1
         6: aload_2
         7: invokeinterface #120,  4          // InterfaceMethod groovy/lang/MetaClass.setProperty:(Ljava/lang/Object;Ljava/lang/String;Ljava/lang/Object;)V
        12: return

  private static void $createCallSiteArray_1(java.lang.String[]);
    descriptor: ([Ljava/lang/String;)V
    flags: ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=3, locals=1, args_size=1
         0: aload_0
         1: ldc           #32                 // int 0
         3: ldc           #126                // String on
         5: aastore
         6: return

  private static org.codehaus.groovy.runtime.callsite.CallSiteArray $createCallSiteArray();
    descriptor: ()Lorg/codehaus/groovy/runtime/callsite/CallSiteArray;
    flags: ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=4, locals=1, args_size=0
         0: ldc           #129                // int 1
         2: anewarray     #46                 // class java/lang/String
         5: astore_0
         6: aload_0
         7: invokestatic  #131                // Method $createCallSiteArray_1:([Ljava/lang/String;)V
        10: new           #133                // class org/codehaus/groovy/runtime/callsite/CallSiteArray
        13: dup
        14: ldc           #2                  // class GroovyTest
        16: aload_0
        17: invokespecial #136                // Method org/codehaus/groovy/runtime/callsite/CallSiteArray."<init>":(Ljava/lang/Class;[Ljava/lang/String;)V
        20: areturn

  private static org.codehaus.groovy.runtime.callsite.CallSite[] $getCallSiteArray();
    descriptor: ()[Lorg/codehaus/groovy/runtime/callsite/CallSite;
    flags: ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=3, locals=1, args_size=0
         0: getstatic     #138                // Field $callSiteArray:Ljava/lang/ref/SoftReference;
         3: ifnull        20
         6: getstatic     #138                // Field $callSiteArray:Ljava/lang/ref/SoftReference;
         9: invokevirtual #144                // Method java/lang/ref/SoftReference.get:()Ljava/lang/Object;
        12: checkcast     #133                // class org/codehaus/groovy/runtime/callsite/CallSiteArray
        15: dup
        16: astore_0
        17: ifnonnull     35
        20: invokestatic  #146                // Method $createCallSiteArray:()Lorg/codehaus/groovy/runtime/callsite/CallSiteArray;
        23: astore_0
        24: new           #140                // class java/lang/ref/SoftReference
        27: dup
        28: aload_0
        29: invokespecial #149                // Method java/lang/ref/SoftReference."<init>":(Ljava/lang/Object;)V
        32: putstatic     #138                // Field $callSiteArray:Ljava/lang/ref/SoftReference;
        35: aload_0
        36: getfield      #153                // Field org/codehaus/groovy/runtime/callsite/CallSiteArray.array:[Lorg/codehaus/groovy/runtime/callsite/CallSite;
        39: areturn
}
SourceFile: "GroovyTest.groovy"
InnerClasses:
     public #156= #155 of #2; //Callback=class GroovyTest$Callback of class GroovyTest
     static #159= #158 of #2; //1=class GroovyTest$Callback$1 of class GroovyTest

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment