Bytecode Analysis for script: helloworld

        println 'Hello, World!'

      
Groovyc Indy Static
Lines Removed 0 0 0
Total Lines - Before 105 52 50
Percentage of Lines Removed 0.0 0.0 0.0

Benchmarks

For parameter: null

Groovyc Indy Static
Benchmark Average - Before 381 444 340
Benchmark Average - After 394 450 331
Benchmark Std Dev - Before 5.08 23.9 14.52
Benchmark Std Dev - After 7.88 16.25 7.29

BEFORE

Groovyc (Legacy)

          Compiled from "helloworld.groovy"
public class helloworld extends groovy.lang.Script {
  public static transient boolean __$stMC;

  public helloworld();
    Code:
       0: aload_0
       1: invokespecial #13                 // Method groovy/lang/Script."<init>":()V
       4: invokestatic  #17                 // Method $getCallSiteArray:()[Lorg/codehaus/groovy/runtime/callsite/CallSite;
       7: astore_1
       8: return

  public helloworld(groovy.lang.Binding);
    Code:
       0: invokestatic  #17                 // Method $getCallSiteArray:()[Lorg/codehaus/groovy/runtime/callsite/CallSite;
       3: astore_2
       4: aload_0
       5: aload_1
       6: invokespecial #22                 // Method groovy/lang/Script."<init>":(Lgroovy/lang/Binding;)V
       9: return

  public static void main(java.lang.String...);
    Code:
       0: invokestatic  #17                 // Method $getCallSiteArray:()[Lorg/codehaus/groovy/runtime/callsite/CallSite;
       3: astore_1
       4: aload_1
       5: ldc           #27                 // int 0
       7: aaload
       8: ldc           #29                 // class org/codehaus/groovy/runtime/InvokerHelper
      10: ldc           #2                  // class helloworld
      12: aload_0
      13: invokeinterface #35,  4           // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.call:(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
      18: pop
      19: return

  public java.lang.Object run();
    Code:
       0: invokestatic  #17                 // Method $getCallSiteArray:()[Lorg/codehaus/groovy/runtime/callsite/CallSite;
       3: astore_1
       4: aload_1
       5: ldc           #40                 // int 1
       7: aaload
       8: aload_0
       9: ldc           #42                 // String Hello, World!
      11: invokeinterface #46,  3           // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.callCurrent:(Lgroovy/lang/GroovyObject;Ljava/lang/Object;)Ljava/lang/Object;
      16: areturn
      17: aconst_null
      18: areturn

  protected groovy.lang.MetaClass $getStaticMetaClass();
    Code:
       0: aload_0
       1: invokevirtual #54                 // Method java/lang/Object.getClass:()Ljava/lang/Class;
       4: ldc           #2                  // class helloworld
       6: if_acmpeq     14
       9: aload_0
      10: invokestatic  #60                 // Method org/codehaus/groovy/runtime/ScriptBytecodeAdapter.initMetaClass:(Ljava/lang/Object;)Lgroovy/lang/MetaClass;
      13: areturn
      14: getstatic     #62                 // Field $staticClassInfo:Lorg/codehaus/groovy/reflection/ClassInfo;
      17: astore_1
      18: aload_1
      19: ifnonnull     34
      22: aload_0
      23: invokevirtual #54                 // Method java/lang/Object.getClass:()Ljava/lang/Class;
      26: invokestatic  #68                 // Method org/codehaus/groovy/reflection/ClassInfo.getClassInfo:(Ljava/lang/Class;)Lorg/codehaus/groovy/reflection/ClassInfo;
      29: dup
      30: astore_1
      31: putstatic     #62                 // Field $staticClassInfo:Lorg/codehaus/groovy/reflection/ClassInfo;
      34: aload_1
      35: invokevirtual #71                 // Method org/codehaus/groovy/reflection/ClassInfo.getMetaClass:()Lgroovy/lang/MetaClass;
      38: areturn
}

        

Invoke Dynamic

          Compiled from "helloworld.groovy"
public class helloworld extends groovy.lang.Script {
  public static transient boolean __$stMC;

  public helloworld();
    Code:
       0: aload_0
       1: invokespecial #13                 // Method groovy/lang/Script."<init>":()V
       4: return

  public helloworld(groovy.lang.Binding);
    Code:
       0: aload_0
       1: aload_1
       2: invokespecial #18                 // Method groovy/lang/Script."<init>":(Lgroovy/lang/Binding;)V
       5: return

  public static void main(java.lang.String...);
    Code:
       0: ldc           #24                 // class org/codehaus/groovy/runtime/InvokerHelper
       2: ldc           #2                  // class helloworld
       4: aload_0
       5: invokedynamic #38,  0             // InvokeDynamic #0:invoke:(Ljava/lang/Class;Ljava/lang/Class;[Ljava/lang/String;)Ljava/lang/Object;
      10: pop
      11: return

  public java.lang.Object run();
    Code:
       0: aload_0
       1: ldc           #44                 // String Hello, World!
       3: invokedynamic #50,  0             // InvokeDynamic #1:invoke:(Lhelloworld;Ljava/lang/String;)Ljava/lang/Object;
       8: areturn
       9: nop
      10: athrow

  protected groovy.lang.MetaClass $getStaticMetaClass();
    Code:
       0: aload_0
       1: invokevirtual #60                 // Method java/lang/Object.getClass:()Ljava/lang/Class;
       4: ldc           #2                  // class helloworld
       6: if_acmpeq     14
       9: aload_0
      10: invokestatic  #66                 // Method org/codehaus/groovy/runtime/ScriptBytecodeAdapter.initMetaClass:(Ljava/lang/Object;)Lgroovy/lang/MetaClass;
      13: areturn
      14: getstatic     #68                 // Field $staticClassInfo:Lorg/codehaus/groovy/reflection/ClassInfo;
      17: astore_1
      18: aload_1
      19: ifnonnull     34
      22: aload_0
      23: invokevirtual #60                 // Method java/lang/Object.getClass:()Ljava/lang/Class;
      26: invokestatic  #74                 // Method org/codehaus/groovy/reflection/ClassInfo.getClassInfo:(Ljava/lang/Class;)Lorg/codehaus/groovy/reflection/ClassInfo;
      29: dup
      30: astore_1
      31: putstatic     #68                 // Field $staticClassInfo:Lorg/codehaus/groovy/reflection/ClassInfo;
      34: aload_1
      35: invokevirtual #77                 // Method org/codehaus/groovy/reflection/ClassInfo.getMetaClass:()Lgroovy/lang/MetaClass;
      38: areturn
}

        

Static Compilation

          Compiled from "helloworld.groovy"
public class helloworld extends groovy.lang.Script {
  public static transient boolean __$stMC;

  public helloworld();
    Code:
       0: aload_0
       1: invokespecial #13                 // Method groovy/lang/Script."<init>":()V
       4: return

  public helloworld(groovy.lang.Binding);
    Code:
       0: aload_0
       1: aload_1
       2: invokespecial #18                 // Method groovy/lang/Script."<init>":(Lgroovy/lang/Binding;)V
       5: return

  public static void main(java.lang.String...);
    Code:
       0: ldc           #2                  // class helloworld
       2: aload_0
       3: invokestatic  #28                 // Method org/codehaus/groovy/runtime/InvokerHelper.runScript:(Ljava/lang/Class;[Ljava/lang/String;)Ljava/lang/Object;
       6: pop
       7: return

  public java.lang.Object run();
    Code:
       0: aload_0
       1: checkcast     #2                  // class helloworld
       4: ldc           #34                 // String Hello, World!
       6: invokevirtual #38                 // Method println:(Ljava/lang/Object;)V
       9: aconst_null
      10: areturn
      11: aconst_null
      12: areturn

  protected groovy.lang.MetaClass $getStaticMetaClass();
    Code:
       0: aload_0
       1: invokevirtual #46                 // Method java/lang/Object.getClass:()Ljava/lang/Class;
       4: ldc           #2                  // class helloworld
       6: if_acmpeq     14
       9: aload_0
      10: invokestatic  #52                 // Method org/codehaus/groovy/runtime/ScriptBytecodeAdapter.initMetaClass:(Ljava/lang/Object;)Lgroovy/lang/MetaClass;
      13: areturn
      14: getstatic     #54                 // Field $staticClassInfo:Lorg/codehaus/groovy/reflection/ClassInfo;
      17: astore_1
      18: aload_1
      19: ifnonnull     34
      22: aload_0
      23: invokevirtual #46                 // Method java/lang/Object.getClass:()Ljava/lang/Class;
      26: invokestatic  #60                 // Method org/codehaus/groovy/reflection/ClassInfo.getClassInfo:(Ljava/lang/Class;)Lorg/codehaus/groovy/reflection/ClassInfo;
      29: dup
      30: astore_1
      31: putstatic     #54                 // Field $staticClassInfo:Lorg/codehaus/groovy/reflection/ClassInfo;
      34: aload_1
      35: invokevirtual #63                 // Method org/codehaus/groovy/reflection/ClassInfo.getMetaClass:()Lgroovy/lang/MetaClass;
      38: areturn
}

        

AFTER

Groovyc (Legacy)

          Compiled from "helloworld.groovy"
public class helloworld extends groovy.lang.Script {
  public static transient boolean __$stMC;

  public helloworld();
    Code:
       0: aload_0
       1: invokespecial #15                 // Method groovy/lang/Script."<init>":()V
       4: invokestatic  #19                 // Method $getCallSiteArray:()[Lorg/codehaus/groovy/runtime/callsite/CallSite;
       7: astore_1
       8: return

  public helloworld(groovy.lang.Binding);
    Code:
       0: invokestatic  #19                 // Method $getCallSiteArray:()[Lorg/codehaus/groovy/runtime/callsite/CallSite;
       3: astore_2
       4: aload_0
       5: aload_1
       6: invokespecial #24                 // Method groovy/lang/Script."<init>":(Lgroovy/lang/Binding;)V
       9: return

  public static void main(java.lang.String...);
    Code:
       0: invokestatic  #19                 // Method $getCallSiteArray:()[Lorg/codehaus/groovy/runtime/callsite/CallSite;
       3: astore_1
       4: aload_1
       5: ldc           #29                 // int 0
       7: aaload
       8: ldc           #31                 // class org/codehaus/groovy/runtime/InvokerHelper
      10: ldc           #2                  // class helloworld
      12: aload_0
      13: invokeinterface #37,  4           // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.call:(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
      18: pop
      19: return

  public java.lang.Object run();
    Code:
       0: invokestatic  #19                 // Method $getCallSiteArray:()[Lorg/codehaus/groovy/runtime/callsite/CallSite;
       3: astore_1
       4: aload_1
       5: ldc           #42                 // int 1
       7: aaload
       8: aload_0
       9: ldc           #44                 // String Hello, World!
      11: invokeinterface #48,  3           // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.callCurrent:(Lgroovy/lang/GroovyObject;Ljava/lang/Object;)Ljava/lang/Object;
      16: areturn
      17: aconst_null
      18: areturn

  protected groovy.lang.MetaClass $getStaticMetaClass();
    Code:
       0: aload_0
       1: invokevirtual #56                 // Method java/lang/Object.getClass:()Ljava/lang/Class;
       4: ldc           #2                  // class helloworld
       6: if_acmpeq     14
       9: aload_0
      10: invokestatic  #62                 // Method org/codehaus/groovy/runtime/ScriptBytecodeAdapter.initMetaClass:(Ljava/lang/Object;)Lgroovy/lang/MetaClass;
      13: areturn
      14: getstatic     #64                 // Field $staticClassInfo:Lorg/codehaus/groovy/reflection/ClassInfo;
      17: astore_1
      18: aload_1
      19: ifnonnull     34
      22: aload_0
      23: invokevirtual #56                 // Method java/lang/Object.getClass:()Ljava/lang/Class;
      26: invokestatic  #70                 // Method org/codehaus/groovy/reflection/ClassInfo.getClassInfo:(Ljava/lang/Class;)Lorg/codehaus/groovy/reflection/ClassInfo;
      29: dup
      30: astore_1
      31: putstatic     #64                 // Field $staticClassInfo:Lorg/codehaus/groovy/reflection/ClassInfo;
      34: aload_1
      35: invokevirtual #73                 // Method org/codehaus/groovy/reflection/ClassInfo.getMetaClass:()Lgroovy/lang/MetaClass;
      38: areturn
}

        

Invoke Dynamic

          Compiled from "helloworld.groovy"
public class helloworld extends groovy.lang.Script {
  public static transient boolean __$stMC;

  public helloworld();
    Code:
       0: aload_0
       1: invokespecial #13                 // Method groovy/lang/Script."<init>":()V
       4: return

  public helloworld(groovy.lang.Binding);
    Code:
       0: aload_0
       1: aload_1
       2: invokespecial #18                 // Method groovy/lang/Script."<init>":(Lgroovy/lang/Binding;)V
       5: return

  public static void main(java.lang.String...);
    Code:
       0: ldc           #24                 // class org/codehaus/groovy/runtime/InvokerHelper
       2: ldc           #2                  // class helloworld
       4: aload_0
       5: invokedynamic #38,  0             // InvokeDynamic #0:invoke:(Ljava/lang/Class;Ljava/lang/Class;[Ljava/lang/String;)Ljava/lang/Object;
      10: pop
      11: return

  public java.lang.Object run();
    Code:
       0: aload_0
       1: ldc           #44                 // String Hello, World!
       3: invokedynamic #50,  0             // InvokeDynamic #1:invoke:(Lhelloworld;Ljava/lang/String;)Ljava/lang/Object;
       8: areturn
       9: nop
      10: athrow

  protected groovy.lang.MetaClass $getStaticMetaClass();
    Code:
       0: aload_0
       1: invokevirtual #60                 // Method java/lang/Object.getClass:()Ljava/lang/Class;
       4: ldc           #2                  // class helloworld
       6: if_acmpeq     14
       9: aload_0
      10: invokestatic  #66                 // Method org/codehaus/groovy/runtime/ScriptBytecodeAdapter.initMetaClass:(Ljava/lang/Object;)Lgroovy/lang/MetaClass;
      13: areturn
      14: getstatic     #68                 // Field $staticClassInfo:Lorg/codehaus/groovy/reflection/ClassInfo;
      17: astore_1
      18: aload_1
      19: ifnonnull     34
      22: aload_0
      23: invokevirtual #60                 // Method java/lang/Object.getClass:()Ljava/lang/Class;
      26: invokestatic  #74                 // Method org/codehaus/groovy/reflection/ClassInfo.getClassInfo:(Ljava/lang/Class;)Lorg/codehaus/groovy/reflection/ClassInfo;
      29: dup
      30: astore_1
      31: putstatic     #68                 // Field $staticClassInfo:Lorg/codehaus/groovy/reflection/ClassInfo;
      34: aload_1
      35: invokevirtual #77                 // Method org/codehaus/groovy/reflection/ClassInfo.getMetaClass:()Lgroovy/lang/MetaClass;
      38: areturn
}

        

Static Compilation

          Compiled from "helloworld.groovy"
public class helloworld extends groovy.lang.Script {
  public static transient boolean __$stMC;

  public helloworld();
    Code:
       0: aload_0
       1: invokespecial #13                 // Method groovy/lang/Script."<init>":()V
       4: return

  public helloworld(groovy.lang.Binding);
    Code:
       0: aload_0
       1: aload_1
       2: invokespecial #18                 // Method groovy/lang/Script."<init>":(Lgroovy/lang/Binding;)V
       5: return

  public static void main(java.lang.String...);
    Code:
       0: ldc           #2                  // class helloworld
       2: aload_0
       3: invokestatic  #28                 // Method org/codehaus/groovy/runtime/InvokerHelper.runScript:(Ljava/lang/Class;[Ljava/lang/String;)Ljava/lang/Object;
       6: pop
       7: return

  public java.lang.Object run();
    Code:
       0: aload_0
       1: checkcast     #2                  // class helloworld
       4: ldc           #34                 // String Hello, World!
       6: invokevirtual #38                 // Method println:(Ljava/lang/Object;)V
       9: aconst_null
      10: areturn
      11: aconst_null
      12: areturn

  protected groovy.lang.MetaClass $getStaticMetaClass();
    Code:
       0: aload_0
       1: invokevirtual #46                 // Method java/lang/Object.getClass:()Ljava/lang/Class;
       4: ldc           #2                  // class helloworld
       6: if_acmpeq     14
       9: aload_0
      10: invokestatic  #52                 // Method org/codehaus/groovy/runtime/ScriptBytecodeAdapter.initMetaClass:(Ljava/lang/Object;)Lgroovy/lang/MetaClass;
      13: areturn
      14: getstatic     #54                 // Field $staticClassInfo:Lorg/codehaus/groovy/reflection/ClassInfo;
      17: astore_1
      18: aload_1
      19: ifnonnull     34
      22: aload_0
      23: invokevirtual #46                 // Method java/lang/Object.getClass:()Ljava/lang/Class;
      26: invokestatic  #60                 // Method org/codehaus/groovy/reflection/ClassInfo.getClassInfo:(Ljava/lang/Class;)Lorg/codehaus/groovy/reflection/ClassInfo;
      29: dup
      30: astore_1
      31: putstatic     #54                 // Field $staticClassInfo:Lorg/codehaus/groovy/reflection/ClassInfo;
      34: aload_1
      35: invokevirtual #63                 // Method org/codehaus/groovy/reflection/ClassInfo.getMetaClass:()Lgroovy/lang/MetaClass;
      38: areturn
}