Bytecode Analysis for script: forloop

        List numbers = [1,2,3]
List results = []
for(number in numbers) {
    results << number * 2
}
results

      
Groovyc Indy Static
Lines Removed 4 4 4
Total Lines - Before 178 110 107
Percentage of Lines Removed 2.2 3.6 3.7

Benchmarks

For parameter: 1000

Groovyc Indy Static
Benchmark Average - Before 402 436 322
Benchmark Average - After 433 437 323
Benchmark Std Dev - Before 6.87 12.74 6.5
Benchmark Std Dev - After 11.83 13.47 3.99

For parameter: 100000

Groovyc Indy Static
Benchmark Average - Before 399 429 325
Benchmark Average - After 431 458 326
Benchmark Std Dev - Before 6.76 11.43 7.66
Benchmark Std Dev - After 15.45 13.9 6.39

For parameter: 1000000

Groovyc Indy Static
Benchmark Average - Before 401 436 320
Benchmark Average - After 402 436 324
Benchmark Std Dev - Before 6.01 11.58 5.78
Benchmark Std Dev - After 5.08 12.34 4.9

For parameter: 100000000

Groovyc Indy Static
Benchmark Average - Before 411 435 323
Benchmark Average - After 403 435 323
Benchmark Std Dev - Before 15.09 12.81 5.01
Benchmark Std Dev - After 7.16 6.41 4.35

For parameter: 100000000000

Groovyc Indy Static
Benchmark Average - Before 399 430 325
Benchmark Average - After 397 428 322
Benchmark Std Dev - Before 5.33 10.92 5.76
Benchmark Std Dev - After 2.89 6.29 4.72

BEFORE

Groovyc (Legacy)

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

  public forloop();
    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 forloop(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 forloop
      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: iconst_3
       5: anewarray     #41                 // class java/lang/Object
       8: dup
       9: iconst_0
      10: iconst_1
      11: invokestatic  #47                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      14: aastore
      15: dup
      16: iconst_1
      17: iconst_2
      18: invokestatic  #47                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      21: aastore
      22: dup
      23: iconst_2
      24: iconst_3
      25: invokestatic  #47                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      28: aastore
      29: invokestatic  #53                 // Method org/codehaus/groovy/runtime/ScriptBytecodeAdapter.createList:([Ljava/lang/Object;)Ljava/util/List;
      32: astore_2
      33: aload_2
      34: pop
      35: iconst_0
      36: anewarray     #41                 // class java/lang/Object
      39: invokestatic  #53                 // Method org/codehaus/groovy/runtime/ScriptBytecodeAdapter.createList:([Ljava/lang/Object;)Ljava/util/List;
      42: astore_3
      43: aload_3
      44: pop
      45: aconst_null
      46: astore        4
      48: aload_1
      49: ldc           #54                 // int 1
      51: aaload
      52: aload_2
      53: invokeinterface #57,  2           // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.call:(Ljava/lang/Object;)Ljava/lang/Object;
      58: ldc           #59                 // class java/util/Iterator
      60: invokestatic  #63                 // Method org/codehaus/groovy/runtime/ScriptBytecodeAdapter.castToType:(Ljava/lang/Object;Ljava/lang/Class;)Ljava/lang/Object;
      63: checkcast     #59                 // class java/util/Iterator
      66: astore        5
      68: aload         5
      70: invokeinterface #67,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
      75: ifeq          116
      78: aload         5
      80: invokeinterface #70,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
      85: astore        4
      87: aload_1
      88: ldc           #71                 // int 2
      90: aaload
      91: aload_3
      92: aload_1
      93: ldc           #72                 // int 3
      95: aaload
      96: aload         4
      98: iconst_2
      99: invokestatic  #47                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     102: invokeinterface #75,  3           // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.call:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
     107: invokeinterface #75,  3           // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.call:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
     112: pop
     113: goto          68
     116: aload_3
     117: areturn
     118: aconst_null
     119: areturn

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

        

Invoke Dynamic

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

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

  public forloop(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 forloop
       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: iconst_3
       1: anewarray     #44                 // class java/lang/Object
       4: dup
       5: iconst_0
       6: iconst_1
       7: invokestatic  #50                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      10: aastore
      11: dup
      12: iconst_1
      13: iconst_2
      14: invokestatic  #50                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      17: aastore
      18: dup
      19: iconst_2
      20: iconst_3
      21: invokestatic  #50                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      24: aastore
      25: invokestatic  #56                 // Method org/codehaus/groovy/runtime/ScriptBytecodeAdapter.createList:([Ljava/lang/Object;)Ljava/util/List;
      28: astore_1
      29: aload_1
      30: pop
      31: iconst_0
      32: anewarray     #44                 // class java/lang/Object
      35: invokestatic  #56                 // Method org/codehaus/groovy/runtime/ScriptBytecodeAdapter.createList:([Ljava/lang/Object;)Ljava/util/List;
      38: astore_2
      39: aload_2
      40: pop
      41: aconst_null
      42: astore_3
      43: aload_1
      44: invokedynamic #61,  0             // InvokeDynamic #1:invoke:(Ljava/util/List;)Ljava/lang/Object;
      49: invokedynamic #67,  0             // InvokeDynamic #2:cast:(Ljava/lang/Object;)Ljava/util/Iterator;
      54: astore        4
      56: aload         4
      58: invokeinterface #73,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
      63: ifeq          91
      66: aload         4
      68: invokeinterface #76,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
      73: astore_3
      74: aload_2
      75: aload_3
      76: iconst_2
      77: invokedynamic #81,  0             // InvokeDynamic #3:invoke:(Ljava/lang/Object;I)Ljava/lang/Object;
      82: invokedynamic #86,  0             // InvokeDynamic #4:invoke:(Ljava/util/List;Ljava/lang/Object;)Ljava/lang/Object;
      87: pop
      88: goto          56
      91: aload_2
      92: areturn
      93: nop
      94: athrow

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

        

Static Compilation

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

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

  public forloop(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 forloop
       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: iconst_3
       1: anewarray     #34                 // class java/lang/Object
       4: dup
       5: iconst_0
       6: iconst_1
       7: invokestatic  #40                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      10: aastore
      11: dup
      12: iconst_1
      13: iconst_2
      14: invokestatic  #40                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      17: aastore
      18: dup
      19: iconst_2
      20: iconst_3
      21: invokestatic  #40                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      24: aastore
      25: invokestatic  #46                 // Method org/codehaus/groovy/runtime/ScriptBytecodeAdapter.createList:([Ljava/lang/Object;)Ljava/util/List;
      28: astore_1
      29: aload_1
      30: pop
      31: iconst_0
      32: anewarray     #34                 // class java/lang/Object
      35: invokestatic  #46                 // Method org/codehaus/groovy/runtime/ScriptBytecodeAdapter.createList:([Ljava/lang/Object;)Ljava/util/List;
      38: astore_2
      39: aload_2
      40: pop
      41: aconst_null
      42: astore_3
      43: aload_1
      44: invokeinterface #52,  1           // InterfaceMethod java/util/List.iterator:()Ljava/util/Iterator;
      49: astore        4
      51: aload         4
      53: invokeinterface #58,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
      58: ifeq          93
      61: aload         4
      63: invokeinterface #61,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
      68: ldc           #36                 // class java/lang/Integer
      70: invokestatic  #65                 // Method org/codehaus/groovy/runtime/ScriptBytecodeAdapter.castToType:(Ljava/lang/Object;Ljava/lang/Class;)Ljava/lang/Object;
      73: checkcast     #36                 // class java/lang/Integer
      76: astore_3
      77: aload_2
      78: aload_3
      79: iconst_2
      80: invokestatic  #40                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      83: invokestatic  #71                 // Method org/codehaus/groovy/runtime/dgmimpl/NumberNumberMultiply.multiply:(Ljava/lang/Number;Ljava/lang/Number;)Ljava/lang/Number;
      86: invokestatic  #77                 // Method org/codehaus/groovy/runtime/DefaultGroovyMethods.leftShift:(Ljava/util/List;Ljava/lang/Object;)Ljava/util/List;
      89: pop
      90: goto          51
      93: aload_2
      94: areturn
      95: aconst_null
      96: areturn

  protected groovy.lang.MetaClass $getStaticMetaClass();
    Code:
       0: aload_0
       1: invokevirtual #88                 // Method java/lang/Object.getClass:()Ljava/lang/Class;
       4: ldc           #2                  // class forloop
       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
}

        

AFTER

Groovyc (Legacy)

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

  public forloop();
    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 forloop(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 forloop
      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: iconst_3
       5: anewarray     #43                 // class java/lang/Object
       8: dup
       9: iconst_0
      10: iconst_1
      11: invokestatic  #49                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      14: aastore
      15: dup
      16: iconst_1
      17: iconst_2
      18: invokestatic  #49                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      21: aastore
      22: dup
      23: iconst_2
      24: iconst_3
      25: invokestatic  #49                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      28: aastore
      29: invokestatic  #55                 // Method org/codehaus/groovy/runtime/ScriptBytecodeAdapter.createList:([Ljava/lang/Object;)Ljava/util/List;
      32: astore_2
      33: iconst_0
      34: anewarray     #43                 // class java/lang/Object
      37: invokestatic  #55                 // Method org/codehaus/groovy/runtime/ScriptBytecodeAdapter.createList:([Ljava/lang/Object;)Ljava/util/List;
      40: astore_3
      41: aconst_null
      42: astore        4
      44: aload_1
      45: ldc           #56                 // int 1
      47: aaload
      48: aload_2
      49: invokeinterface #59,  2           // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.call:(Ljava/lang/Object;)Ljava/lang/Object;
      54: ldc           #61                 // class java/util/Iterator
      56: invokestatic  #65                 // Method org/codehaus/groovy/runtime/ScriptBytecodeAdapter.castToType:(Ljava/lang/Object;Ljava/lang/Class;)Ljava/lang/Object;
      59: checkcast     #61                 // class java/util/Iterator
      62: astore        5
      64: aload         5
      66: invokeinterface #69,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
      71: ifeq          112
      74: aload         5
      76: invokeinterface #72,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
      81: astore        4
      83: aload_1
      84: ldc           #73                 // int 2
      86: aaload
      87: aload_3
      88: aload_1
      89: ldc           #74                 // int 3
      91: aaload
      92: aload         4
      94: iconst_2
      95: invokestatic  #49                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      98: invokeinterface #77,  3           // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.call:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
     103: invokeinterface #77,  3           // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.call:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
     108: pop
     109: goto          64
     112: aload_3
     113: areturn
     114: aconst_null
     115: areturn

  protected groovy.lang.MetaClass $getStaticMetaClass();
    Code:
       0: aload_0
       1: invokevirtual #88                 // Method java/lang/Object.getClass:()Ljava/lang/Class;
       4: ldc           #2                  // class forloop
       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
}

        

Invoke Dynamic

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

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

  public forloop(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 forloop
       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: iconst_3
       1: anewarray     #44                 // class java/lang/Object
       4: dup
       5: iconst_0
       6: iconst_1
       7: invokestatic  #50                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      10: aastore
      11: dup
      12: iconst_1
      13: iconst_2
      14: invokestatic  #50                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      17: aastore
      18: dup
      19: iconst_2
      20: iconst_3
      21: invokestatic  #50                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      24: aastore
      25: invokestatic  #56                 // Method org/codehaus/groovy/runtime/ScriptBytecodeAdapter.createList:([Ljava/lang/Object;)Ljava/util/List;
      28: astore_1
      29: iconst_0
      30: anewarray     #44                 // class java/lang/Object
      33: invokestatic  #56                 // Method org/codehaus/groovy/runtime/ScriptBytecodeAdapter.createList:([Ljava/lang/Object;)Ljava/util/List;
      36: astore_2
      37: aconst_null
      38: astore_3
      39: aload_1
      40: invokedynamic #61,  0             // InvokeDynamic #1:invoke:(Ljava/util/List;)Ljava/lang/Object;
      45: invokedynamic #67,  0             // InvokeDynamic #2:cast:(Ljava/lang/Object;)Ljava/util/Iterator;
      50: astore        4
      52: aload         4
      54: invokeinterface #75,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
      59: ifeq          87
      62: aload         4
      64: invokeinterface #78,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
      69: astore_3
      70: aload_2
      71: aload_3
      72: iconst_2
      73: invokedynamic #83,  0             // InvokeDynamic #3:invoke:(Ljava/lang/Object;I)Ljava/lang/Object;
      78: invokedynamic #88,  0             // InvokeDynamic #4:invoke:(Ljava/util/List;Ljava/lang/Object;)Ljava/lang/Object;
      83: pop
      84: goto          52
      87: aload_2
      88: areturn
      89: nop
      90: athrow

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

        

Static Compilation

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

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

  public forloop(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 forloop
       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: iconst_3
       1: anewarray     #34                 // class java/lang/Object
       4: dup
       5: iconst_0
       6: iconst_1
       7: invokestatic  #40                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      10: aastore
      11: dup
      12: iconst_1
      13: iconst_2
      14: invokestatic  #40                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      17: aastore
      18: dup
      19: iconst_2
      20: iconst_3
      21: invokestatic  #40                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      24: aastore
      25: invokestatic  #46                 // Method org/codehaus/groovy/runtime/ScriptBytecodeAdapter.createList:([Ljava/lang/Object;)Ljava/util/List;
      28: astore_1
      29: iconst_0
      30: anewarray     #34                 // class java/lang/Object
      33: invokestatic  #46                 // Method org/codehaus/groovy/runtime/ScriptBytecodeAdapter.createList:([Ljava/lang/Object;)Ljava/util/List;
      36: astore_2
      37: aconst_null
      38: astore_3
      39: aload_1
      40: invokeinterface #52,  1           // InterfaceMethod java/util/List.iterator:()Ljava/util/Iterator;
      45: astore        4
      47: aload         4
      49: invokeinterface #58,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
      54: ifeq          89
      57: aload         4
      59: invokeinterface #61,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
      64: ldc           #36                 // class java/lang/Integer
      66: invokestatic  #65                 // Method org/codehaus/groovy/runtime/ScriptBytecodeAdapter.castToType:(Ljava/lang/Object;Ljava/lang/Class;)Ljava/lang/Object;
      69: checkcast     #36                 // class java/lang/Integer
      72: astore_3
      73: aload_2
      74: aload_3
      75: iconst_2
      76: invokestatic  #40                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      79: invokestatic  #71                 // Method org/codehaus/groovy/runtime/dgmimpl/NumberNumberMultiply.multiply:(Ljava/lang/Number;Ljava/lang/Number;)Ljava/lang/Number;
      82: invokestatic  #77                 // Method org/codehaus/groovy/runtime/DefaultGroovyMethods.leftShift:(Ljava/util/List;Ljava/lang/Object;)Ljava/util/List;
      85: pop
      86: goto          47
      89: aload_2
      90: areturn
      91: aconst_null
      92: areturn

  protected groovy.lang.MetaClass $getStaticMetaClass();
    Code:
       0: aload_0
       1: invokevirtual #88                 // Method java/lang/Object.getClass:()Ljava/lang/Class;
       4: ldc           #2                  // class forloop
       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
}