[vm/kernel/bytecode] Inline list of types into TypeArgumentsForInstanceAllocation constant pool entry

Change-Id: I24a2fda84aa04a081c27427a7c84077101594421
Reviewed-on: https://dart-review.googlesource.com/61308
Commit-Queue: Alexander Markov <alexmarkov@google.com>
Reviewed-by: RĂ©gis Crelier <regis@google.com>
diff --git a/pkg/vm/lib/bytecode/constant_pool.dart b/pkg/vm/lib/bytecode/constant_pool.dart
index c0c07ff..753bb61 100644
--- a/pkg/vm/lib/bytecode/constant_pool.dart
+++ b/pkg/vm/lib/bytecode/constant_pool.dart
@@ -133,7 +133,7 @@
 type ConstantTypeArgumentsForInstanceAllocation extends ConstantPoolEntry {
   Byte tag = 19;
   CanonicalNameReference instantiatingClass;
-  ConstantIndex typeArguments;
+  List<DartType> types;
 }
 
 type ConstantContextOffset extends ConstantPoolEntry {
@@ -896,16 +896,15 @@
 
 class ConstantTypeArgumentsForInstanceAllocation extends ConstantPoolEntry {
   final Reference _instantiatingClassRef;
-  final int _typeArgumentsConstantIndex;
+  final List<DartType> typeArgs;
 
   Class get instantiatingClass => _instantiatingClassRef.asClass;
 
   ConstantTypeArgumentsForInstanceAllocation(
-      Class instantiatingClass, int typeArgumentsConstantIndex)
-      : this.byReference(
-            instantiatingClass.reference, typeArgumentsConstantIndex);
+      Class instantiatingClass, List<DartType> typeArgs)
+      : this.byReference(instantiatingClass.reference, typeArgs);
   ConstantTypeArgumentsForInstanceAllocation.byReference(
-      this._instantiatingClassRef, this._typeArgumentsConstantIndex);
+      this._instantiatingClassRef, this.typeArgs);
 
   @override
   ConstantTag get tag => ConstantTag.kTypeArgumentsForInstanceAllocation;
@@ -914,27 +913,29 @@
   void writeValueToBinary(BinarySink sink) {
     sink.writeCanonicalNameReference(
         getCanonicalNameOfClass(instantiatingClass));
-    sink.writeUInt30(_typeArgumentsConstantIndex);
+    sink.writeUInt30(typeArgs.length);
+    typeArgs.forEach(sink.writeDartType);
   }
 
   ConstantTypeArgumentsForInstanceAllocation.readFromBinary(BinarySource source)
       : _instantiatingClassRef =
             source.readCanonicalNameReference().getReference(),
-        _typeArgumentsConstantIndex = source.readUInt();
+        typeArgs = new List<DartType>.generate(
+            source.readUInt(), (_) => source.readDartType());
 
   @override
   String toString() =>
-      'TypeArgumentsForInstanceAllocation $instantiatingClass type-args CP#$_typeArgumentsConstantIndex';
+      'TypeArgumentsForInstanceAllocation $instantiatingClass $typeArgs';
 
   @override
   int get hashCode =>
-      _combineHashes(instantiatingClass.hashCode, _typeArgumentsConstantIndex);
+      _combineHashes(instantiatingClass.hashCode, listHashCode(typeArgs));
 
   @override
   bool operator ==(other) =>
       other is ConstantTypeArgumentsForInstanceAllocation &&
       this.instantiatingClass == other.instantiatingClass &&
-      this._typeArgumentsConstantIndex == other._typeArgumentsConstantIndex;
+      listEquals(this.typeArgs, other.typeArgs);
 }
 
 class ConstantContextOffset extends ConstantPoolEntry {
diff --git a/pkg/vm/lib/bytecode/gen_bytecode.dart b/pkg/vm/lib/bytecode/gen_bytecode.dart
index e77e28a..599d4c1 100644
--- a/pkg/vm/lib/bytecode/gen_bytecode.dart
+++ b/pkg/vm/lib/bytecode/gen_bytecode.dart
@@ -323,12 +323,12 @@
 
   void _genTypeArguments(List<DartType> typeArgs, {Class instantiatingClass}) {
     int typeArgsCPIndex() {
-      int cpIndex = cp.add(new ConstantTypeArguments(typeArgs));
       if (instantiatingClass != null) {
-        cpIndex = cp.add(new ConstantTypeArgumentsForInstanceAllocation(
-            instantiatingClass, cpIndex));
+        return cp.add(new ConstantTypeArgumentsForInstanceAllocation(
+            instantiatingClass, typeArgs));
+      } else {
+        return cp.add(new ConstantTypeArguments(typeArgs));
       }
-      return cpIndex;
     }
 
     if (typeArgs.isEmpty || !hasTypeParameters(typeArgs)) {
diff --git a/pkg/vm/testcases/bytecode/async.dart.expect b/pkg/vm/testcases/bytecode/async.dart.expect
index 027eb3a..60a3f58 100644
--- a/pkg/vm/testcases/bytecode/async.dart.expect
+++ b/pkg/vm/testcases/bytecode/async.dart.expect
@@ -14,137 +14,135 @@
   StoreFieldTOS        CP#0
   PopLocal             r0
   Push                 r0
-  PushConstant         CP#2
-  PushConstant         CP#4
-  IndirectStaticCall   1, CP#3
-  StoreFieldTOS        CP#5
+  PushConstant         CP#1
+  PushConstant         CP#3
+  IndirectStaticCall   1, CP#2
+  StoreFieldTOS        CP#4
   Push                 r0
-  PushConstant         CP#6
-  StoreFieldTOS        CP#7
-  PushConstant         CP#6
+  PushConstant         CP#5
+  StoreFieldTOS        CP#6
+  PushConstant         CP#5
   PopLocal             r2
-  PushConstant         CP#6
+  PushConstant         CP#5
   PopLocal             r3
-  PushConstant         CP#6
+  PushConstant         CP#5
   PopLocal             r4
   Push                 r0
-  PushConstant         CP#8
-  StoreFieldTOS        CP#9
+  PushConstant         CP#7
+  StoreFieldTOS        CP#8
   Push                 r0
-  PushConstant         CP#6
-  StoreFieldTOS        CP#10
-  Allocate             CP#20
+  PushConstant         CP#5
+  StoreFieldTOS        CP#9
+  Allocate             CP#19
   StoreLocal           r6
   Push                 r6
-  PushConstant         CP#6
+  PushConstant         CP#5
+  StoreFieldTOS        CP#20
+  Push                 r6
+  PushConstant         CP#5
   StoreFieldTOS        CP#21
   Push                 r6
-  PushConstant         CP#6
+  PushConstant         CP#10
   StoreFieldTOS        CP#22
   Push                 r6
-  PushConstant         CP#11
-  StoreFieldTOS        CP#23
-  Push                 r6
   Push                 r0
-  StoreFieldTOS        CP#12
+  StoreFieldTOS        CP#11
   PopLocal             r5
   Push                 r5
-  PushConstant         CP#24
-  IndirectStaticCall   1, CP#3
+  PushConstant         CP#23
+  IndirectStaticCall   1, CP#2
   StoreLocal           r2
   Drop1
   Push                 r5
-  PushConstant         CP#25
-  IndirectStaticCall   1, CP#3
+  PushConstant         CP#24
+  IndirectStaticCall   1, CP#2
   StoreLocal           r3
   Drop1
   Push                 r5
-  PushConstant         CP#26
-  IndirectStaticCall   1, CP#3
+  PushConstant         CP#25
+  IndirectStaticCall   1, CP#2
   StoreLocal           r4
   Drop1
-  PushConstant         CP#28
+  PushConstant         CP#26
   Push                 r5
-  PushConstant         CP#29
-  IndirectStaticCall   2, CP#14
+  PushConstant         CP#27
+  IndirectStaticCall   2, CP#13
   Drop1
   Push                 r0
-  LoadFieldTOS         CP#5
-  InstanceCall1        1, CP#30
+  LoadFieldTOS         CP#4
+  InstanceCall1        1, CP#28
   ReturnTOS
   Push                 r0
   LoadFieldTOS         CP#0
   PopLocal             r0
-  PushConstant         CP#6
+  PushConstant         CP#5
   ReturnTOS
 }
 ConstantPool {
   [0] = ContextOffset parent
-  [1] = TypeArgs [dart.core::int]
-  [2] = TypeArgumentsForInstanceAllocation dart.async::Completer type-args CP#1
-  [3] = ArgDesc num-args 1, num-type-args 0, names []
-  [4] = StaticICData target 'dart.async::Completer::sync', arg-desc CP#3
-  [5] = ContextOffset var [3]
-  [6] = Null
-  [7] = ContextOffset var [2]
-  [8] = Int 0
-  [9] = ContextOffset var [0]
-  [10] = ContextOffset var [1]
-  [11] = ClosureFunction :async_op ([dynamic :result, dynamic :exception, dynamic :stack_trace]) → dynamic yielding ;
-  [12] = FieldOffset dart.core::_Closure::_context
-  [13] = Int 42
-  [14] = ArgDesc num-args 2, num-type-args 0, names []
-  [15] = ICData target-name 'complete', arg-desc CP#14
-  [16] = Type dynamic
-  [17] = ArgDesc num-args 3, num-type-args 0, names []
-  [18] = ICData target-name 'completeError', arg-desc CP#17
-  [19] = EndClosureFunctionScope
-  [20] = Class dart.core::_Closure
-  [21] = FieldOffset dart.core::_Closure::_instantiator_type_arguments
-  [22] = FieldOffset dart.core::_Closure::_function_type_arguments
-  [23] = FieldOffset dart.core::_Closure::_function
-  [24] = StaticICData target 'dart.async::_asyncStackTraceHelper', arg-desc CP#3
-  [25] = StaticICData target 'dart.async::_asyncThenWrapperHelper', arg-desc CP#3
-  [26] = StaticICData target 'dart.async::_asyncErrorWrapperHelper', arg-desc CP#3
-  [27] = TypeArgs [dynamic]
-  [28] = TypeArgumentsForInstanceAllocation dart.async::Future type-args CP#27
-  [29] = StaticICData target 'dart.async::Future::microtask', arg-desc CP#14
-  [30] = ICData get target-name 'future', arg-desc CP#3
+  [1] = TypeArgumentsForInstanceAllocation dart.async::Completer [dart.core::int]
+  [2] = ArgDesc num-args 1, num-type-args 0, names []
+  [3] = StaticICData target 'dart.async::Completer::sync', arg-desc CP#2
+  [4] = ContextOffset var [3]
+  [5] = Null
+  [6] = ContextOffset var [2]
+  [7] = Int 0
+  [8] = ContextOffset var [0]
+  [9] = ContextOffset var [1]
+  [10] = ClosureFunction :async_op ([dynamic :result, dynamic :exception, dynamic :stack_trace]) → dynamic yielding ;
+  [11] = FieldOffset dart.core::_Closure::_context
+  [12] = Int 42
+  [13] = ArgDesc num-args 2, num-type-args 0, names []
+  [14] = ICData target-name 'complete', arg-desc CP#13
+  [15] = Type dynamic
+  [16] = ArgDesc num-args 3, num-type-args 0, names []
+  [17] = ICData target-name 'completeError', arg-desc CP#16
+  [18] = EndClosureFunctionScope
+  [19] = Class dart.core::_Closure
+  [20] = FieldOffset dart.core::_Closure::_instantiator_type_arguments
+  [21] = FieldOffset dart.core::_Closure::_function_type_arguments
+  [22] = FieldOffset dart.core::_Closure::_function
+  [23] = StaticICData target 'dart.async::_asyncStackTraceHelper', arg-desc CP#2
+  [24] = StaticICData target 'dart.async::_asyncThenWrapperHelper', arg-desc CP#2
+  [25] = StaticICData target 'dart.async::_asyncErrorWrapperHelper', arg-desc CP#2
+  [26] = TypeArgumentsForInstanceAllocation dart.async::Future [dynamic]
+  [27] = StaticICData target 'dart.async::Future::microtask', arg-desc CP#13
+  [28] = ICData get target-name 'future', arg-desc CP#2
 }
-Closure CP#11 {
+Closure CP#10 {
   EntryOptional        1, 3, 0
-  LoadConstant         r1, CP#6
-  LoadConstant         r2, CP#6
-  LoadConstant         r3, CP#6
+  LoadConstant         r1, CP#5
+  LoadConstant         r2, CP#5
+  LoadConstant         r3, CP#5
   Frame                6
   CheckStack
   Push                 r0
-  LoadFieldTOS         CP#12
+  LoadFieldTOS         CP#11
   PopLocal             r4
   Push                 r4
-  LoadFieldTOS         CP#9
+  LoadFieldTOS         CP#8
   StoreLocal           r5
-  PushConstant         CP#8
+  PushConstant         CP#7
   IfNeStrictNumTOS
   Jump                 L1
   Push                 r4
   PopLocal             r6
 Try #0 start:
   Push                 r4
-  PushConstant         CP#13
+  PushConstant         CP#12
   StoreLocal           r8
-  StoreFieldTOS        CP#7
+  StoreFieldTOS        CP#6
   Push                 r8
   Drop1
   Jump                 L2
 L2:
   Push                 r4
-  LoadFieldTOS         CP#5
+  LoadFieldTOS         CP#4
   Push                 r4
-  LoadFieldTOS         CP#7
-  InstanceCall1        2, CP#15
+  LoadFieldTOS         CP#6
+  InstanceCall1        2, CP#14
   Drop1
-  PushConstant         CP#6
+  PushConstant         CP#5
   ReturnTOS
   Jump                 L3
 Try #0 end:
@@ -158,14 +156,14 @@
   Push                 r7
   PopLocal             r9
   Push                 r4
-  LoadFieldTOS         CP#5
+  LoadFieldTOS         CP#4
   Push                 r8
   Push                 r9
-  InstanceCall1        3, CP#18
+  InstanceCall1        3, CP#17
   Drop1
   Jump                 L3
 L3:
-  PushConstant         CP#6
+  PushConstant         CP#5
   ReturnTOS
 L1:
   Trap
@@ -221,154 +219,152 @@
   StoreFieldTOS        CP#0
   PopLocal             r0
   Push                 r0
-  PushConstant         CP#4
-  PushConstant         CP#6
-  IndirectStaticCall   1, CP#5
-  StoreFieldTOS        CP#7
+  PushConstant         CP#3
+  PushConstant         CP#5
+  IndirectStaticCall   1, CP#4
+  StoreFieldTOS        CP#6
   Push                 r0
-  PushConstant         CP#8
-  StoreFieldTOS        CP#9
-  PushConstant         CP#8
+  PushConstant         CP#7
+  StoreFieldTOS        CP#8
+  PushConstant         CP#7
   PopLocal             r2
   Push                 r0
-  PushConstant         CP#8
+  PushConstant         CP#7
+  StoreFieldTOS        CP#9
+  Push                 r0
+  PushConstant         CP#7
   StoreFieldTOS        CP#10
   Push                 r0
-  PushConstant         CP#8
-  StoreFieldTOS        CP#11
-  Push                 r0
-  PushConstant         CP#12
+  PushConstant         CP#11
   StoreFieldTOS        CP#1
   Push                 r0
-  PushConstant         CP#8
+  PushConstant         CP#7
   StoreFieldTOS        CP#2
   Push                 r0
-  PushConstant         CP#8
+  PushConstant         CP#7
+  StoreFieldTOS        CP#12
+  Push                 r0
+  PushConstant         CP#7
   StoreFieldTOS        CP#13
   Push                 r0
-  PushConstant         CP#8
-  StoreFieldTOS        CP#14
-  Push                 r0
-  Allocate             CP#30
+  Allocate             CP#29
   StoreLocal           r3
   Push                 r3
-  PushConstant         CP#8
+  PushConstant         CP#7
+  StoreFieldTOS        CP#30
+  Push                 r3
+  PushConstant         CP#7
   StoreFieldTOS        CP#31
   Push                 r3
-  PushConstant         CP#8
+  PushConstant         CP#14
   StoreFieldTOS        CP#32
   Push                 r3
-  PushConstant         CP#15
-  StoreFieldTOS        CP#33
-  Push                 r3
   Push                 r0
-  StoreFieldTOS        CP#16
-  StoreFieldTOS        CP#18
+  StoreFieldTOS        CP#15
+  StoreFieldTOS        CP#17
   Push                 r0
-  LoadFieldTOS         CP#18
-  PushConstant         CP#34
-  IndirectStaticCall   1, CP#5
+  LoadFieldTOS         CP#17
+  PushConstant         CP#33
+  IndirectStaticCall   1, CP#4
   StoreLocal           r2
   Drop1
   Push                 r0
   Push                 r0
-  LoadFieldTOS         CP#18
+  LoadFieldTOS         CP#17
+  PushConstant         CP#34
+  IndirectStaticCall   1, CP#4
+  StoreLocal           r3
+  StoreFieldTOS        CP#9
+  Push                 r3
+  Drop1
+  Push                 r0
+  Push                 r0
+  LoadFieldTOS         CP#17
   PushConstant         CP#35
-  IndirectStaticCall   1, CP#5
+  IndirectStaticCall   1, CP#4
   StoreLocal           r3
   StoreFieldTOS        CP#10
   Push                 r3
   Drop1
-  Push                 r0
-  Push                 r0
-  LoadFieldTOS         CP#18
   PushConstant         CP#36
-  IndirectStaticCall   1, CP#5
-  StoreLocal           r3
-  StoreFieldTOS        CP#11
-  Push                 r3
-  Drop1
-  PushConstant         CP#38
   Push                 r0
-  LoadFieldTOS         CP#18
-  PushConstant         CP#39
-  IndirectStaticCall   2, CP#23
+  LoadFieldTOS         CP#17
+  PushConstant         CP#37
+  IndirectStaticCall   2, CP#22
   Drop1
   Push                 r0
-  LoadFieldTOS         CP#7
-  InstanceCall1        1, CP#40
+  LoadFieldTOS         CP#6
+  InstanceCall1        1, CP#38
   ReturnTOS
   Push                 r0
   LoadFieldTOS         CP#0
   PopLocal             r0
-  PushConstant         CP#8
+  PushConstant         CP#7
   ReturnTOS
 }
 ConstantPool {
   [0] = ContextOffset parent
   [1] = ContextOffset var [0]
   [2] = ContextOffset var [1]
-  [3] = TypeArgs [dart.core::int]
-  [4] = TypeArgumentsForInstanceAllocation dart.async::Completer type-args CP#3
-  [5] = ArgDesc num-args 1, num-type-args 0, names []
-  [6] = StaticICData target 'dart.async::Completer::sync', arg-desc CP#5
-  [7] = ContextOffset var [8]
-  [8] = Null
-  [9] = ContextOffset var [7]
-  [10] = ContextOffset var [3]
-  [11] = ContextOffset var [4]
-  [12] = Int 0
-  [13] = ContextOffset var [2]
-  [14] = ContextOffset var [6]
-  [15] = ClosureFunction :async_op ([dynamic :result, dynamic :exception, dynamic :stack_trace]) → dynamic yielding ;
-  [16] = FieldOffset dart.core::_Closure::_context
-  [17] = Int 1
-  [18] = ContextOffset var [5]
-  [19] = ArgDesc num-args 4, num-type-args 0, names []
-  [20] = StaticICData target 'dart.async::_awaitHelper', arg-desc CP#19
-  [21] = Int 2
-  [22] = StaticICData target 'dart.async::_awaitHelper', arg-desc CP#19
-  [23] = ArgDesc num-args 2, num-type-args 0, names []
-  [24] = ICData target-name '+', arg-desc CP#23
-  [25] = ICData target-name 'complete', arg-desc CP#23
-  [26] = Type dynamic
-  [27] = ArgDesc num-args 3, num-type-args 0, names []
-  [28] = ICData target-name 'completeError', arg-desc CP#27
-  [29] = EndClosureFunctionScope
-  [30] = Class dart.core::_Closure
-  [31] = FieldOffset dart.core::_Closure::_instantiator_type_arguments
-  [32] = FieldOffset dart.core::_Closure::_function_type_arguments
-  [33] = FieldOffset dart.core::_Closure::_function
-  [34] = StaticICData target 'dart.async::_asyncStackTraceHelper', arg-desc CP#5
-  [35] = StaticICData target 'dart.async::_asyncThenWrapperHelper', arg-desc CP#5
-  [36] = StaticICData target 'dart.async::_asyncErrorWrapperHelper', arg-desc CP#5
-  [37] = TypeArgs [dynamic]
-  [38] = TypeArgumentsForInstanceAllocation dart.async::Future type-args CP#37
-  [39] = StaticICData target 'dart.async::Future::microtask', arg-desc CP#23
-  [40] = ICData get target-name 'future', arg-desc CP#5
+  [3] = TypeArgumentsForInstanceAllocation dart.async::Completer [dart.core::int]
+  [4] = ArgDesc num-args 1, num-type-args 0, names []
+  [5] = StaticICData target 'dart.async::Completer::sync', arg-desc CP#4
+  [6] = ContextOffset var [8]
+  [7] = Null
+  [8] = ContextOffset var [7]
+  [9] = ContextOffset var [3]
+  [10] = ContextOffset var [4]
+  [11] = Int 0
+  [12] = ContextOffset var [2]
+  [13] = ContextOffset var [6]
+  [14] = ClosureFunction :async_op ([dynamic :result, dynamic :exception, dynamic :stack_trace]) → dynamic yielding ;
+  [15] = FieldOffset dart.core::_Closure::_context
+  [16] = Int 1
+  [17] = ContextOffset var [5]
+  [18] = ArgDesc num-args 4, num-type-args 0, names []
+  [19] = StaticICData target 'dart.async::_awaitHelper', arg-desc CP#18
+  [20] = Int 2
+  [21] = StaticICData target 'dart.async::_awaitHelper', arg-desc CP#18
+  [22] = ArgDesc num-args 2, num-type-args 0, names []
+  [23] = ICData target-name '+', arg-desc CP#22
+  [24] = ICData target-name 'complete', arg-desc CP#22
+  [25] = Type dynamic
+  [26] = ArgDesc num-args 3, num-type-args 0, names []
+  [27] = ICData target-name 'completeError', arg-desc CP#26
+  [28] = EndClosureFunctionScope
+  [29] = Class dart.core::_Closure
+  [30] = FieldOffset dart.core::_Closure::_instantiator_type_arguments
+  [31] = FieldOffset dart.core::_Closure::_function_type_arguments
+  [32] = FieldOffset dart.core::_Closure::_function
+  [33] = StaticICData target 'dart.async::_asyncStackTraceHelper', arg-desc CP#4
+  [34] = StaticICData target 'dart.async::_asyncThenWrapperHelper', arg-desc CP#4
+  [35] = StaticICData target 'dart.async::_asyncErrorWrapperHelper', arg-desc CP#4
+  [36] = TypeArgumentsForInstanceAllocation dart.async::Future [dynamic]
+  [37] = StaticICData target 'dart.async::Future::microtask', arg-desc CP#22
+  [38] = ICData get target-name 'future', arg-desc CP#4
 }
-Closure CP#15 {
+Closure CP#14 {
   EntryOptional        1, 3, 0
-  LoadConstant         r1, CP#8
-  LoadConstant         r2, CP#8
-  LoadConstant         r3, CP#8
+  LoadConstant         r1, CP#7
+  LoadConstant         r2, CP#7
+  LoadConstant         r3, CP#7
   Frame                6
   CheckStack
   Push                 r0
-  LoadFieldTOS         CP#16
+  LoadFieldTOS         CP#15
   PopLocal             r4
   Push                 r4
   LoadFieldTOS         CP#1
   StoreLocal           r5
-  PushConstant         CP#12
+  PushConstant         CP#11
   IfNeStrictNumTOS
   Jump                 L1
   Push                 r4
   Push                 r4
-  StoreFieldTOS        CP#13
+  StoreFieldTOS        CP#12
 Try #0 start:
   Push                 r4
-  PushConstant         CP#17
+  PushConstant         CP#16
   StoreFieldTOS        CP#1
   Push                 r4
   Push                 r4
@@ -377,15 +373,15 @@
   LoadFieldTOS         CP#0
   LoadFieldTOS         CP#1
   Push                 r4
+  LoadFieldTOS         CP#9
+  Push                 r4
   LoadFieldTOS         CP#10
   Push                 r4
-  LoadFieldTOS         CP#11
-  Push                 r4
-  LoadFieldTOS         CP#18
-  PushConstant         CP#20
-  IndirectStaticCall   4, CP#19
+  LoadFieldTOS         CP#17
+  PushConstant         CP#19
+  IndirectStaticCall   4, CP#18
   PopLocal             r8
-  PushConstant         CP#8
+  PushConstant         CP#7
   ReturnTOS
 L6:
   IfEqNull             r2
@@ -397,11 +393,11 @@
   Push                 r4
   Push                 r1
   StoreLocal           r8
-  StoreFieldTOS        CP#14
+  StoreFieldTOS        CP#13
   Push                 r8
   Drop1
   Push                 r4
-  PushConstant         CP#21
+  PushConstant         CP#20
   StoreFieldTOS        CP#1
   Push                 r4
   Push                 r4
@@ -410,15 +406,15 @@
   LoadFieldTOS         CP#0
   LoadFieldTOS         CP#2
   Push                 r4
+  LoadFieldTOS         CP#9
+  Push                 r4
   LoadFieldTOS         CP#10
   Push                 r4
-  LoadFieldTOS         CP#11
-  Push                 r4
-  LoadFieldTOS         CP#18
-  PushConstant         CP#22
-  IndirectStaticCall   4, CP#19
+  LoadFieldTOS         CP#17
+  PushConstant         CP#21
+  IndirectStaticCall   4, CP#18
   PopLocal             r9
-  PushConstant         CP#8
+  PushConstant         CP#7
   ReturnTOS
 L7:
   IfEqNull             r2
@@ -429,31 +425,31 @@
 L3:
   Push                 r4
   Push                 r4
-  LoadFieldTOS         CP#14
+  LoadFieldTOS         CP#13
   Push                 r1
-  InstanceCall1        2, CP#24
+  InstanceCall1        2, CP#23
   StoreLocal           r8
-  StoreFieldTOS        CP#9
+  StoreFieldTOS        CP#8
   Push                 r8
   Drop1
   Jump                 L4
 L4:
   Push                 r4
-  LoadFieldTOS         CP#7
+  LoadFieldTOS         CP#6
   Push                 r4
-  LoadFieldTOS         CP#9
-  InstanceCall1        2, CP#25
+  LoadFieldTOS         CP#8
+  InstanceCall1        2, CP#24
   Drop1
-  PushConstant         CP#8
+  PushConstant         CP#7
   ReturnTOS
   Jump                 L5
 Try #0 end:
 Try #0 handler:
   Push                 r0
-  LoadFieldTOS         CP#16
+  LoadFieldTOS         CP#15
   PopLocal             r4
   Push                 r4
-  LoadFieldTOS         CP#13
+  LoadFieldTOS         CP#12
   PopLocal             r4
   MoveSpecial          r6, exception
   MoveSpecial          r7, stackTrace
@@ -462,21 +458,21 @@
   Push                 r7
   PopLocal             r9
   Push                 r4
-  LoadFieldTOS         CP#7
+  LoadFieldTOS         CP#6
   Push                 r8
   Push                 r9
-  InstanceCall1        3, CP#28
+  InstanceCall1        3, CP#27
   Drop1
   Jump                 L5
 L5:
-  PushConstant         CP#8
+  PushConstant         CP#7
   ReturnTOS
 L1:
   Push                 r4
   LoadFieldTOS         CP#2
   PopLocal             r4
   Push                 r5
-  PushConstant         CP#17
+  PushConstant         CP#16
   IfEqStrictNumTOS
   Jump                 L6
   Jump                 L7
@@ -534,167 +530,165 @@
   StoreFieldTOS        CP#0
   PopLocal             r0
   Push                 r0
-  PushConstant         CP#3
-  PushConstant         CP#5
-  IndirectStaticCall   1, CP#4
-  StoreFieldTOS        CP#6
+  PushConstant         CP#2
+  PushConstant         CP#4
+  IndirectStaticCall   1, CP#3
+  StoreFieldTOS        CP#5
   Push                 r0
-  PushConstant         CP#7
-  StoreFieldTOS        CP#8
-  PushConstant         CP#7
+  PushConstant         CP#6
+  StoreFieldTOS        CP#7
+  PushConstant         CP#6
   PopLocal             r2
   Push                 r0
-  PushConstant         CP#7
+  PushConstant         CP#6
+  StoreFieldTOS        CP#8
+  Push                 r0
+  PushConstant         CP#6
   StoreFieldTOS        CP#9
   Push                 r0
-  PushConstant         CP#7
-  StoreFieldTOS        CP#10
-  Push                 r0
-  PushConstant         CP#11
+  PushConstant         CP#10
   StoreFieldTOS        CP#1
   Push                 r0
-  PushConstant         CP#7
+  PushConstant         CP#6
+  StoreFieldTOS        CP#11
+  Push                 r0
+  PushConstant         CP#6
   StoreFieldTOS        CP#12
   Push                 r0
-  PushConstant         CP#7
+  PushConstant         CP#6
   StoreFieldTOS        CP#13
   Push                 r0
-  PushConstant         CP#7
+  PushConstant         CP#6
   StoreFieldTOS        CP#14
   Push                 r0
-  PushConstant         CP#7
-  StoreFieldTOS        CP#15
-  Push                 r0
-  Allocate             CP#43
+  Allocate             CP#42
   StoreLocal           r3
   Push                 r3
-  PushConstant         CP#7
+  PushConstant         CP#6
+  StoreFieldTOS        CP#43
+  Push                 r3
+  PushConstant         CP#6
   StoreFieldTOS        CP#44
   Push                 r3
-  PushConstant         CP#7
+  PushConstant         CP#15
   StoreFieldTOS        CP#45
   Push                 r3
-  PushConstant         CP#16
-  StoreFieldTOS        CP#46
-  Push                 r3
   Push                 r0
-  StoreFieldTOS        CP#17
-  StoreFieldTOS        CP#29
+  StoreFieldTOS        CP#16
+  StoreFieldTOS        CP#28
   Push                 r0
-  LoadFieldTOS         CP#29
-  PushConstant         CP#47
-  IndirectStaticCall   1, CP#4
+  LoadFieldTOS         CP#28
+  PushConstant         CP#46
+  IndirectStaticCall   1, CP#3
   StoreLocal           r2
   Drop1
   Push                 r0
   Push                 r0
-  LoadFieldTOS         CP#29
+  LoadFieldTOS         CP#28
+  PushConstant         CP#47
+  IndirectStaticCall   1, CP#3
+  StoreLocal           r3
+  StoreFieldTOS        CP#8
+  Push                 r3
+  Drop1
+  Push                 r0
+  Push                 r0
+  LoadFieldTOS         CP#28
   PushConstant         CP#48
-  IndirectStaticCall   1, CP#4
+  IndirectStaticCall   1, CP#3
   StoreLocal           r3
   StoreFieldTOS        CP#9
   Push                 r3
   Drop1
-  Push                 r0
-  Push                 r0
-  LoadFieldTOS         CP#29
   PushConstant         CP#49
-  IndirectStaticCall   1, CP#4
-  StoreLocal           r3
-  StoreFieldTOS        CP#10
-  Push                 r3
-  Drop1
-  PushConstant         CP#51
   Push                 r0
-  LoadFieldTOS         CP#29
-  PushConstant         CP#52
-  IndirectStaticCall   2, CP#19
+  LoadFieldTOS         CP#28
+  PushConstant         CP#50
+  IndirectStaticCall   2, CP#18
   Drop1
   Push                 r0
-  LoadFieldTOS         CP#6
-  InstanceCall1        1, CP#53
+  LoadFieldTOS         CP#5
+  InstanceCall1        1, CP#51
   ReturnTOS
   Push                 r0
   LoadFieldTOS         CP#0
   PopLocal             r0
-  PushConstant         CP#7
+  PushConstant         CP#6
   ReturnTOS
 }
 ConstantPool {
   [0] = ContextOffset parent
   [1] = ContextOffset var [0]
-  [2] = TypeArgs [dart.core::int]
-  [3] = TypeArgumentsForInstanceAllocation dart.async::Completer type-args CP#2
-  [4] = ArgDesc num-args 1, num-type-args 0, names []
-  [5] = StaticICData target 'dart.async::Completer::sync', arg-desc CP#4
-  [6] = ContextOffset var [9]
-  [7] = Null
-  [8] = ContextOffset var [8]
-  [9] = ContextOffset var [5]
-  [10] = ContextOffset var [6]
-  [11] = Int 0
-  [12] = ContextOffset var [1]
-  [13] = ContextOffset var [4]
-  [14] = ContextOffset var [3]
-  [15] = ContextOffset var [2]
-  [16] = ClosureFunction :async_op ([dynamic :result, dynamic :exception, dynamic :stack_trace]) → dynamic yielding ;
-  [17] = FieldOffset dart.core::_Closure::_context
-  [18] = Int 10
-  [19] = ArgDesc num-args 2, num-type-args 0, names []
-  [20] = ICData target-name '<', arg-desc CP#19
-  [21] = Bool true
-  [22] = ICData get target-name 'iterator', arg-desc CP#4
-  [23] = ICData target-name 'moveNext', arg-desc CP#4
-  [24] = ICData get target-name 'current', arg-desc CP#4
-  [25] = ICData target-name '+', arg-desc CP#19
-  [26] = Int 1
-  [27] = ArgDesc num-args 0, num-type-args 0, names []
-  [28] = StaticICData target '#lib::foo', arg-desc CP#27
-  [29] = ContextOffset var [7]
-  [30] = ArgDesc num-args 4, num-type-args 0, names []
-  [31] = StaticICData target 'dart.async::_awaitHelper', arg-desc CP#30
-  [32] = ICData target-name '+', arg-desc CP#19
-  [33] = ICData target-name '+', arg-desc CP#19
-  [34] = ICData target-name '+', arg-desc CP#19
-  [35] = ICData target-name '<', arg-desc CP#19
-  [36] = ICData target-name '+', arg-desc CP#19
-  [37] = ICData target-name '+', arg-desc CP#19
-  [38] = ICData target-name 'complete', arg-desc CP#19
-  [39] = Type dynamic
-  [40] = ArgDesc num-args 3, num-type-args 0, names []
-  [41] = ICData target-name 'completeError', arg-desc CP#40
-  [42] = EndClosureFunctionScope
-  [43] = Class dart.core::_Closure
-  [44] = FieldOffset dart.core::_Closure::_instantiator_type_arguments
-  [45] = FieldOffset dart.core::_Closure::_function_type_arguments
-  [46] = FieldOffset dart.core::_Closure::_function
-  [47] = StaticICData target 'dart.async::_asyncStackTraceHelper', arg-desc CP#4
-  [48] = StaticICData target 'dart.async::_asyncThenWrapperHelper', arg-desc CP#4
-  [49] = StaticICData target 'dart.async::_asyncErrorWrapperHelper', arg-desc CP#4
-  [50] = TypeArgs [dynamic]
-  [51] = TypeArgumentsForInstanceAllocation dart.async::Future type-args CP#50
-  [52] = StaticICData target 'dart.async::Future::microtask', arg-desc CP#19
-  [53] = ICData get target-name 'future', arg-desc CP#4
+  [2] = TypeArgumentsForInstanceAllocation dart.async::Completer [dart.core::int]
+  [3] = ArgDesc num-args 1, num-type-args 0, names []
+  [4] = StaticICData target 'dart.async::Completer::sync', arg-desc CP#3
+  [5] = ContextOffset var [9]
+  [6] = Null
+  [7] = ContextOffset var [8]
+  [8] = ContextOffset var [5]
+  [9] = ContextOffset var [6]
+  [10] = Int 0
+  [11] = ContextOffset var [1]
+  [12] = ContextOffset var [4]
+  [13] = ContextOffset var [3]
+  [14] = ContextOffset var [2]
+  [15] = ClosureFunction :async_op ([dynamic :result, dynamic :exception, dynamic :stack_trace]) → dynamic yielding ;
+  [16] = FieldOffset dart.core::_Closure::_context
+  [17] = Int 10
+  [18] = ArgDesc num-args 2, num-type-args 0, names []
+  [19] = ICData target-name '<', arg-desc CP#18
+  [20] = Bool true
+  [21] = ICData get target-name 'iterator', arg-desc CP#3
+  [22] = ICData target-name 'moveNext', arg-desc CP#3
+  [23] = ICData get target-name 'current', arg-desc CP#3
+  [24] = ICData target-name '+', arg-desc CP#18
+  [25] = Int 1
+  [26] = ArgDesc num-args 0, num-type-args 0, names []
+  [27] = StaticICData target '#lib::foo', arg-desc CP#26
+  [28] = ContextOffset var [7]
+  [29] = ArgDesc num-args 4, num-type-args 0, names []
+  [30] = StaticICData target 'dart.async::_awaitHelper', arg-desc CP#29
+  [31] = ICData target-name '+', arg-desc CP#18
+  [32] = ICData target-name '+', arg-desc CP#18
+  [33] = ICData target-name '+', arg-desc CP#18
+  [34] = ICData target-name '<', arg-desc CP#18
+  [35] = ICData target-name '+', arg-desc CP#18
+  [36] = ICData target-name '+', arg-desc CP#18
+  [37] = ICData target-name 'complete', arg-desc CP#18
+  [38] = Type dynamic
+  [39] = ArgDesc num-args 3, num-type-args 0, names []
+  [40] = ICData target-name 'completeError', arg-desc CP#39
+  [41] = EndClosureFunctionScope
+  [42] = Class dart.core::_Closure
+  [43] = FieldOffset dart.core::_Closure::_instantiator_type_arguments
+  [44] = FieldOffset dart.core::_Closure::_function_type_arguments
+  [45] = FieldOffset dart.core::_Closure::_function
+  [46] = StaticICData target 'dart.async::_asyncStackTraceHelper', arg-desc CP#3
+  [47] = StaticICData target 'dart.async::_asyncThenWrapperHelper', arg-desc CP#3
+  [48] = StaticICData target 'dart.async::_asyncErrorWrapperHelper', arg-desc CP#3
+  [49] = TypeArgumentsForInstanceAllocation dart.async::Future [dynamic]
+  [50] = StaticICData target 'dart.async::Future::microtask', arg-desc CP#18
+  [51] = ICData get target-name 'future', arg-desc CP#3
 }
-Closure CP#16 {
+Closure CP#15 {
   EntryOptional        1, 3, 0
-  LoadConstant         r1, CP#7
-  LoadConstant         r2, CP#7
-  LoadConstant         r3, CP#7
+  LoadConstant         r1, CP#6
+  LoadConstant         r2, CP#6
+  LoadConstant         r3, CP#6
   Frame                7
   CheckStack
   Push                 r0
-  LoadFieldTOS         CP#17
+  LoadFieldTOS         CP#16
   PopLocal             r4
   Push                 r4
   LoadFieldTOS         CP#1
   StoreLocal           r5
-  PushConstant         CP#11
+  PushConstant         CP#10
   IfNeStrictNumTOS
   Jump                 L1
   Push                 r4
   Push                 r4
-  StoreFieldTOS        CP#13
+  StoreFieldTOS        CP#12
 Try #0 start:
   AllocateContext      1
   StoreLocal           r5
@@ -703,7 +697,7 @@
   StoreFieldTOS        CP#0
   PopLocal             r4
   Push                 r4
-  PushConstant         CP#11
+  PushConstant         CP#10
   StoreFieldTOS        CP#1
   AllocateContext      1
   StoreLocal           r5
@@ -712,15 +706,15 @@
   StoreFieldTOS        CP#0
   PopLocal             r4
   Push                 r4
-  PushConstant         CP#11
+  PushConstant         CP#10
   StoreFieldTOS        CP#1
 L6:
   CheckStack
   Push                 r4
   LoadFieldTOS         CP#1
-  PushConstant         CP#18
-  InstanceCall1        2, CP#20
-  PushConstant         CP#21
+  PushConstant         CP#17
+  InstanceCall1        2, CP#19
+  PushConstant         CP#20
   IfNeStrictTOS
   Jump                 L2
   AllocateContext      1
@@ -735,7 +729,7 @@
   LoadFieldTOS         CP#0
   LoadFieldTOS         CP#0
   LoadFieldTOS         CP#1
-  InstanceCall1        1, CP#22
+  InstanceCall1        1, CP#21
   PopLocal             r8
   Push                 r4
   Push                 r8
@@ -745,8 +739,8 @@
   Push                 r4
   LoadFieldTOS         CP#1
   StoreLocal           r8
-  InstanceCall1        1, CP#23
-  PushConstant         CP#21
+  InstanceCall1        1, CP#22
+  PushConstant         CP#20
   IfNeStrictTOS
   Jump                 L3
   AllocateContext      1
@@ -757,7 +751,7 @@
   PopLocal             r4
   Push                 r4
   Push                 r8
-  InstanceCall1        1, CP#24
+  InstanceCall1        1, CP#23
   StoreFieldTOS        CP#1
   Push                 r4
   LoadFieldTOS         CP#0
@@ -770,22 +764,6 @@
   LoadFieldTOS         CP#0
   LoadFieldTOS         CP#1
   StoreLocal           r9
-  StoreFieldTOS        CP#15
-  Push                 r9
-  Drop1
-  Push                 r4
-  LoadFieldTOS         CP#0
-  LoadFieldTOS         CP#0
-  LoadFieldTOS         CP#0
-  LoadFieldTOS         CP#0
-  Push                 r4
-  LoadFieldTOS         CP#0
-  LoadFieldTOS         CP#0
-  LoadFieldTOS         CP#1
-  Push                 r4
-  LoadFieldTOS         CP#1
-  InstanceCall1        2, CP#25
-  StoreLocal           r9
   StoreFieldTOS        CP#14
   Push                 r9
   Drop1
@@ -794,7 +772,23 @@
   LoadFieldTOS         CP#0
   LoadFieldTOS         CP#0
   LoadFieldTOS         CP#0
-  PushConstant         CP#26
+  Push                 r4
+  LoadFieldTOS         CP#0
+  LoadFieldTOS         CP#0
+  LoadFieldTOS         CP#1
+  Push                 r4
+  LoadFieldTOS         CP#1
+  InstanceCall1        2, CP#24
+  StoreLocal           r9
+  StoreFieldTOS        CP#13
+  Push                 r9
+  Drop1
+  Push                 r4
+  LoadFieldTOS         CP#0
+  LoadFieldTOS         CP#0
+  LoadFieldTOS         CP#0
+  LoadFieldTOS         CP#0
+  PushConstant         CP#25
   StoreFieldTOS        CP#1
   Push                 r4
   LoadFieldTOS         CP#0
@@ -802,9 +796,15 @@
   LoadFieldTOS         CP#0
   LoadFieldTOS         CP#0
   Push                 r4
-  StoreFieldTOS        CP#12
-  PushConstant         CP#28
-  IndirectStaticCall   0, CP#27
+  StoreFieldTOS        CP#11
+  PushConstant         CP#27
+  IndirectStaticCall   0, CP#26
+  Push                 r4
+  LoadFieldTOS         CP#0
+  LoadFieldTOS         CP#0
+  LoadFieldTOS         CP#0
+  LoadFieldTOS         CP#0
+  LoadFieldTOS         CP#8
   Push                 r4
   LoadFieldTOS         CP#0
   LoadFieldTOS         CP#0
@@ -816,17 +816,11 @@
   LoadFieldTOS         CP#0
   LoadFieldTOS         CP#0
   LoadFieldTOS         CP#0
-  LoadFieldTOS         CP#10
-  Push                 r4
-  LoadFieldTOS         CP#0
-  LoadFieldTOS         CP#0
-  LoadFieldTOS         CP#0
-  LoadFieldTOS         CP#0
-  LoadFieldTOS         CP#29
-  PushConstant         CP#31
-  IndirectStaticCall   4, CP#30
+  LoadFieldTOS         CP#28
+  PushConstant         CP#30
+  IndirectStaticCall   4, CP#29
   PopLocal             r10
-  PushConstant         CP#7
+  PushConstant         CP#6
   ReturnTOS
 L11:
   IfEqNull             r2
@@ -844,16 +838,16 @@
   LoadFieldTOS         CP#0
   LoadFieldTOS         CP#0
   LoadFieldTOS         CP#0
-  LoadFieldTOS         CP#15
+  LoadFieldTOS         CP#14
   Push                 r4
   LoadFieldTOS         CP#0
   LoadFieldTOS         CP#0
   LoadFieldTOS         CP#0
   LoadFieldTOS         CP#0
-  LoadFieldTOS         CP#14
+  LoadFieldTOS         CP#13
   Push                 r1
+  InstanceCall1        2, CP#31
   InstanceCall1        2, CP#32
-  InstanceCall1        2, CP#33
   StoreLocal           r9
   StoreFieldTOS        CP#1
   Push                 r9
@@ -872,8 +866,8 @@
   Push                 r4
   Push                 r4
   LoadFieldTOS         CP#1
-  PushConstant         CP#26
-  InstanceCall1        2, CP#34
+  PushConstant         CP#25
+  InstanceCall1        2, CP#33
   StoreLocal           r8
   StoreFieldTOS        CP#1
   Push                 r8
@@ -883,28 +877,28 @@
   Push                 r4
   LoadFieldTOS         CP#0
   PopLocal             r4
-  PushConstant         CP#11
+  PushConstant         CP#10
   PopLocal             r8
 L8:
   CheckStack
   Push                 r8
-  PushConstant         CP#18
-  InstanceCall1        2, CP#35
-  PushConstant         CP#21
+  PushConstant         CP#17
+  InstanceCall1        2, CP#34
+  PushConstant         CP#20
   IfNeStrictTOS
   Jump                 L7
   Push                 r4
   Push                 r4
   LoadFieldTOS         CP#1
   Push                 r8
-  InstanceCall1        2, CP#36
+  InstanceCall1        2, CP#35
   StoreLocal           r9
   StoreFieldTOS        CP#1
   Push                 r9
   Drop1
   Push                 r8
-  PushConstant         CP#26
-  InstanceCall1        2, CP#37
+  PushConstant         CP#25
+  InstanceCall1        2, CP#36
   StoreLocal           r8
   Drop1
   Jump                 L8
@@ -914,7 +908,7 @@
   Push                 r4
   LoadFieldTOS         CP#1
   StoreLocal           r8
-  StoreFieldTOS        CP#8
+  StoreFieldTOS        CP#7
   Push                 r8
   Drop1
   Push                 r4
@@ -926,21 +920,21 @@
   PopLocal             r4
 L9:
   Push                 r4
-  LoadFieldTOS         CP#6
+  LoadFieldTOS         CP#5
   Push                 r4
-  LoadFieldTOS         CP#8
-  InstanceCall1        2, CP#38
+  LoadFieldTOS         CP#7
+  InstanceCall1        2, CP#37
   Drop1
-  PushConstant         CP#7
+  PushConstant         CP#6
   ReturnTOS
   Jump                 L10
 Try #0 end:
 Try #0 handler:
   Push                 r0
-  LoadFieldTOS         CP#17
+  LoadFieldTOS         CP#16
   PopLocal             r4
   Push                 r4
-  LoadFieldTOS         CP#13
+  LoadFieldTOS         CP#12
   PopLocal             r4
   MoveSpecial          r6, exception
   MoveSpecial          r7, stackTrace
@@ -949,18 +943,18 @@
   Push                 r7
   PopLocal             r9
   Push                 r4
-  LoadFieldTOS         CP#6
+  LoadFieldTOS         CP#5
   Push                 r8
   Push                 r9
-  InstanceCall1        3, CP#41
+  InstanceCall1        3, CP#40
   Drop1
   Jump                 L10
 L10:
-  PushConstant         CP#7
+  PushConstant         CP#6
   ReturnTOS
 L1:
   Push                 r4
-  LoadFieldTOS         CP#12
+  LoadFieldTOS         CP#11
   PopLocal             r4
   Jump                 L11
 
@@ -1033,99 +1027,99 @@
   StoreFieldTOS        CP#0
   PopLocal             r0
   Push                 r0
-  PushConstant         CP#5
-  PushConstant         CP#7
-  IndirectStaticCall   1, CP#6
-  StoreFieldTOS        CP#8
+  PushConstant         CP#4
+  PushConstant         CP#6
+  IndirectStaticCall   1, CP#5
+  StoreFieldTOS        CP#7
   Push                 r0
-  PushConstant         CP#9
-  StoreFieldTOS        CP#10
-  PushConstant         CP#9
+  PushConstant         CP#8
+  StoreFieldTOS        CP#9
+  PushConstant         CP#8
   PopLocal             r2
   Push                 r0
-  PushConstant         CP#9
+  PushConstant         CP#8
+  StoreFieldTOS        CP#10
+  Push                 r0
+  PushConstant         CP#8
   StoreFieldTOS        CP#11
   Push                 r0
-  PushConstant         CP#9
-  StoreFieldTOS        CP#12
-  Push                 r0
-  PushConstant         CP#13
+  PushConstant         CP#12
   StoreFieldTOS        CP#1
   Push                 r0
-  PushConstant         CP#9
+  PushConstant         CP#8
   StoreFieldTOS        CP#2
   Push                 r0
-  PushConstant         CP#9
+  PushConstant         CP#8
+  StoreFieldTOS        CP#13
+  Push                 r0
+  PushConstant         CP#8
   StoreFieldTOS        CP#14
   Push                 r0
-  PushConstant         CP#9
+  PushConstant         CP#8
   StoreFieldTOS        CP#15
   Push                 r0
-  PushConstant         CP#9
+  PushConstant         CP#8
   StoreFieldTOS        CP#16
   Push                 r0
-  PushConstant         CP#9
+  PushConstant         CP#8
   StoreFieldTOS        CP#17
   Push                 r0
-  PushConstant         CP#9
-  StoreFieldTOS        CP#18
-  Push                 r0
-  PushConstant         CP#9
+  PushConstant         CP#8
   StoreFieldTOS        CP#3
   Push                 r0
-  Allocate             CP#52
+  Allocate             CP#51
   StoreLocal           r3
   Push                 r3
-  PushConstant         CP#9
+  PushConstant         CP#8
+  StoreFieldTOS        CP#52
+  Push                 r3
+  PushConstant         CP#8
   StoreFieldTOS        CP#53
   Push                 r3
-  PushConstant         CP#9
+  PushConstant         CP#18
   StoreFieldTOS        CP#54
   Push                 r3
-  PushConstant         CP#19
-  StoreFieldTOS        CP#55
-  Push                 r3
   Push                 r0
-  StoreFieldTOS        CP#20
-  StoreFieldTOS        CP#22
+  StoreFieldTOS        CP#19
+  StoreFieldTOS        CP#21
   Push                 r0
-  LoadFieldTOS         CP#22
-  PushConstant         CP#56
-  IndirectStaticCall   1, CP#6
+  LoadFieldTOS         CP#21
+  PushConstant         CP#55
+  IndirectStaticCall   1, CP#5
   StoreLocal           r2
   Drop1
   Push                 r0
   Push                 r0
-  LoadFieldTOS         CP#22
+  LoadFieldTOS         CP#21
+  PushConstant         CP#56
+  IndirectStaticCall   1, CP#5
+  StoreLocal           r3
+  StoreFieldTOS        CP#10
+  Push                 r3
+  Drop1
+  Push                 r0
+  Push                 r0
+  LoadFieldTOS         CP#21
   PushConstant         CP#57
-  IndirectStaticCall   1, CP#6
+  IndirectStaticCall   1, CP#5
   StoreLocal           r3
   StoreFieldTOS        CP#11
   Push                 r3
   Drop1
-  Push                 r0
-  Push                 r0
-  LoadFieldTOS         CP#22
   PushConstant         CP#58
-  IndirectStaticCall   1, CP#6
-  StoreLocal           r3
-  StoreFieldTOS        CP#12
-  Push                 r3
-  Drop1
-  PushConstant         CP#60
   Push                 r0
-  LoadFieldTOS         CP#22
-  PushConstant         CP#61
-  IndirectStaticCall   2, CP#25
+  LoadFieldTOS         CP#21
+  PushConstant         CP#59
+  IndirectStaticCall   2, CP#24
   Drop1
   Push                 r0
-  LoadFieldTOS         CP#8
-  InstanceCall1        1, CP#62
+  LoadFieldTOS         CP#7
+  InstanceCall1        1, CP#60
   ReturnTOS
   Push                 r0
   LoadFieldTOS         CP#0
   PopLocal             r0
-  PushConstant         CP#9
+  PushConstant         CP#8
   ReturnTOS
 }
 ConstantPool {
@@ -1133,85 +1127,83 @@
   [1] = ContextOffset var [0]
   [2] = ContextOffset var [1]
   [3] = ContextOffset var [2]
-  [4] = TypeArgs [dart.core::int]
-  [5] = TypeArgumentsForInstanceAllocation dart.async::Completer type-args CP#4
-  [6] = ArgDesc num-args 1, num-type-args 0, names []
-  [7] = StaticICData target 'dart.async::Completer::sync', arg-desc CP#6
-  [8] = ContextOffset var [12]
-  [9] = Null
-  [10] = ContextOffset var [9]
-  [11] = ContextOffset var [6]
-  [12] = ContextOffset var [7]
-  [13] = Int 0
-  [14] = ContextOffset var [3]
-  [15] = ContextOffset var [4]
-  [16] = ContextOffset var [5]
-  [17] = ContextOffset var [10]
-  [18] = ContextOffset var [11]
-  [19] = ClosureFunction :async_op ([dynamic :result, dynamic :exception, dynamic :stack_trace]) → dynamic yielding ;
-  [20] = FieldOffset dart.core::_Closure::_context
-  [21] = Int 1
-  [22] = ContextOffset var [8]
-  [23] = ArgDesc num-args 4, num-type-args 0, names []
-  [24] = StaticICData target 'dart.async::_awaitHelper', arg-desc CP#23
-  [25] = ArgDesc num-args 2, num-type-args 0, names []
-  [26] = ICData target-name '+', arg-desc CP#25
-  [27] = Type dynamic
-  [28] = Type dart.core::Error
-  [29] = ICData target-name 'dart.core::_instanceOf', arg-desc CP#23
-  [30] = Bool true
-  [31] = Int 42
-  [32] = Int 2
-  [33] = StaticICData target 'dart.async::_awaitHelper', arg-desc CP#23
-  [34] = ICData target-name '+', arg-desc CP#25
-  [35] = String 'fin'
-  [36] = StaticICData target 'dart.core::print', arg-desc CP#6
-  [37] = Int 3
-  [38] = StaticICData target 'dart.async::_awaitHelper', arg-desc CP#23
-  [39] = ICData target-name '+', arg-desc CP#25
-  [40] = StaticICData target 'dart.core::print', arg-desc CP#6
-  [41] = Int 4
-  [42] = StaticICData target 'dart.async::_awaitHelper', arg-desc CP#23
-  [43] = ICData target-name '+', arg-desc CP#25
-  [44] = StaticICData target 'dart.core::print', arg-desc CP#6
-  [45] = Int 5
-  [46] = StaticICData target 'dart.async::_awaitHelper', arg-desc CP#23
-  [47] = ICData target-name '+', arg-desc CP#25
-  [48] = ICData target-name 'complete', arg-desc CP#25
-  [49] = ArgDesc num-args 3, num-type-args 0, names []
-  [50] = ICData target-name 'completeError', arg-desc CP#49
-  [51] = EndClosureFunctionScope
-  [52] = Class dart.core::_Closure
-  [53] = FieldOffset dart.core::_Closure::_instantiator_type_arguments
-  [54] = FieldOffset dart.core::_Closure::_function_type_arguments
-  [55] = FieldOffset dart.core::_Closure::_function
-  [56] = StaticICData target 'dart.async::_asyncStackTraceHelper', arg-desc CP#6
-  [57] = StaticICData target 'dart.async::_asyncThenWrapperHelper', arg-desc CP#6
-  [58] = StaticICData target 'dart.async::_asyncErrorWrapperHelper', arg-desc CP#6
-  [59] = TypeArgs [dynamic]
-  [60] = TypeArgumentsForInstanceAllocation dart.async::Future type-args CP#59
-  [61] = StaticICData target 'dart.async::Future::microtask', arg-desc CP#25
-  [62] = ICData get target-name 'future', arg-desc CP#6
+  [4] = TypeArgumentsForInstanceAllocation dart.async::Completer [dart.core::int]
+  [5] = ArgDesc num-args 1, num-type-args 0, names []
+  [6] = StaticICData target 'dart.async::Completer::sync', arg-desc CP#5
+  [7] = ContextOffset var [12]
+  [8] = Null
+  [9] = ContextOffset var [9]
+  [10] = ContextOffset var [6]
+  [11] = ContextOffset var [7]
+  [12] = Int 0
+  [13] = ContextOffset var [3]
+  [14] = ContextOffset var [4]
+  [15] = ContextOffset var [5]
+  [16] = ContextOffset var [10]
+  [17] = ContextOffset var [11]
+  [18] = ClosureFunction :async_op ([dynamic :result, dynamic :exception, dynamic :stack_trace]) → dynamic yielding ;
+  [19] = FieldOffset dart.core::_Closure::_context
+  [20] = Int 1
+  [21] = ContextOffset var [8]
+  [22] = ArgDesc num-args 4, num-type-args 0, names []
+  [23] = StaticICData target 'dart.async::_awaitHelper', arg-desc CP#22
+  [24] = ArgDesc num-args 2, num-type-args 0, names []
+  [25] = ICData target-name '+', arg-desc CP#24
+  [26] = Type dynamic
+  [27] = Type dart.core::Error
+  [28] = ICData target-name 'dart.core::_instanceOf', arg-desc CP#22
+  [29] = Bool true
+  [30] = Int 42
+  [31] = Int 2
+  [32] = StaticICData target 'dart.async::_awaitHelper', arg-desc CP#22
+  [33] = ICData target-name '+', arg-desc CP#24
+  [34] = String 'fin'
+  [35] = StaticICData target 'dart.core::print', arg-desc CP#5
+  [36] = Int 3
+  [37] = StaticICData target 'dart.async::_awaitHelper', arg-desc CP#22
+  [38] = ICData target-name '+', arg-desc CP#24
+  [39] = StaticICData target 'dart.core::print', arg-desc CP#5
+  [40] = Int 4
+  [41] = StaticICData target 'dart.async::_awaitHelper', arg-desc CP#22
+  [42] = ICData target-name '+', arg-desc CP#24
+  [43] = StaticICData target 'dart.core::print', arg-desc CP#5
+  [44] = Int 5
+  [45] = StaticICData target 'dart.async::_awaitHelper', arg-desc CP#22
+  [46] = ICData target-name '+', arg-desc CP#24
+  [47] = ICData target-name 'complete', arg-desc CP#24
+  [48] = ArgDesc num-args 3, num-type-args 0, names []
+  [49] = ICData target-name 'completeError', arg-desc CP#48
+  [50] = EndClosureFunctionScope
+  [51] = Class dart.core::_Closure
+  [52] = FieldOffset dart.core::_Closure::_instantiator_type_arguments
+  [53] = FieldOffset dart.core::_Closure::_function_type_arguments
+  [54] = FieldOffset dart.core::_Closure::_function
+  [55] = StaticICData target 'dart.async::_asyncStackTraceHelper', arg-desc CP#5
+  [56] = StaticICData target 'dart.async::_asyncThenWrapperHelper', arg-desc CP#5
+  [57] = StaticICData target 'dart.async::_asyncErrorWrapperHelper', arg-desc CP#5
+  [58] = TypeArgumentsForInstanceAllocation dart.async::Future [dynamic]
+  [59] = StaticICData target 'dart.async::Future::microtask', arg-desc CP#24
+  [60] = ICData get target-name 'future', arg-desc CP#5
 }
-Closure CP#19 {
+Closure CP#18 {
   EntryOptional        1, 3, 0
-  LoadConstant         r1, CP#9
-  LoadConstant         r2, CP#9
-  LoadConstant         r3, CP#9
+  LoadConstant         r1, CP#8
+  LoadConstant         r2, CP#8
+  LoadConstant         r3, CP#8
   Frame                10
   CheckStack
   Push                 r0
-  LoadFieldTOS         CP#20
+  LoadFieldTOS         CP#19
   PopLocal             r4
   Push                 r4
   LoadFieldTOS         CP#1
   StoreLocal           r5
-  PushConstant         CP#13
+  PushConstant         CP#12
   IfNeStrictNumTOS
   Jump                 L1
   Push                 r4
   Push                 r4
-  StoreFieldTOS        CP#14
+  StoreFieldTOS        CP#13
 Try #0 start:
   AllocateContext      1
   StoreLocal           r5
@@ -1220,17 +1212,17 @@
   StoreFieldTOS        CP#0
   PopLocal             r4
   Push                 r4
-  PushConstant         CP#21
+  PushConstant         CP#20
   StoreFieldTOS        CP#1
   Push                 r4
   LoadFieldTOS         CP#0
   Push                 r4
-  StoreFieldTOS        CP#15
+  StoreFieldTOS        CP#14
 Try #1 start:
   Push                 r4
   LoadFieldTOS         CP#0
   Push                 r4
-  StoreFieldTOS        CP#16
+  StoreFieldTOS        CP#15
 Try #2 start:
   Push                 r4
   LoadFieldTOS         CP#0
@@ -1242,7 +1234,7 @@
   Drop1
   Push                 r4
   LoadFieldTOS         CP#0
-  PushConstant         CP#21
+  PushConstant         CP#20
   StoreFieldTOS        CP#1
   Push                 r4
   LoadFieldTOS         CP#0
@@ -1254,17 +1246,17 @@
   LoadFieldTOS         CP#1
   Push                 r4
   LoadFieldTOS         CP#0
+  LoadFieldTOS         CP#10
+  Push                 r4
+  LoadFieldTOS         CP#0
   LoadFieldTOS         CP#11
   Push                 r4
   LoadFieldTOS         CP#0
-  LoadFieldTOS         CP#12
-  Push                 r4
-  LoadFieldTOS         CP#0
-  LoadFieldTOS         CP#22
-  PushConstant         CP#24
-  IndirectStaticCall   4, CP#23
+  LoadFieldTOS         CP#21
+  PushConstant         CP#23
+  IndirectStaticCall   4, CP#22
   PopLocal             r13
-  PushConstant         CP#9
+  PushConstant         CP#8
   ReturnTOS
 L13:
   IfEqNull             r2
@@ -1278,7 +1270,7 @@
   LoadFieldTOS         CP#0
   LoadFieldTOS         CP#3
   Push                 r1
-  InstanceCall1        2, CP#26
+  InstanceCall1        2, CP#25
   StoreLocal           r12
   StoreFieldTOS        CP#1
   Push                 r12
@@ -1287,21 +1279,21 @@
 Try #2 end:
 Try #2 handler:
   Push                 r0
-  LoadFieldTOS         CP#20
+  LoadFieldTOS         CP#19
   PopLocal             r4
   Push                 r4
-  LoadFieldTOS         CP#16
+  LoadFieldTOS         CP#15
   PopLocal             r4
   MoveSpecial          r10, exception
   MoveSpecial          r11, stackTrace
   Push                 r4
   LoadFieldTOS         CP#0
   Push                 r10
-  StoreFieldTOS        CP#17
+  StoreFieldTOS        CP#16
   Push                 r4
   LoadFieldTOS         CP#0
   Push                 r11
-  StoreFieldTOS        CP#18
+  StoreFieldTOS        CP#17
   AllocateContext      1
   StoreLocal           r5
   Push                 r5
@@ -1313,19 +1305,19 @@
   StoreFieldTOS        CP#1
   Push                 r4
   LoadFieldTOS         CP#1
-  PushConstant         CP#9
-  PushConstant         CP#9
-  PushConstant         CP#28
-  InstanceCall1        4, CP#29
-  PushConstant         CP#30
+  PushConstant         CP#8
+  PushConstant         CP#8
+  PushConstant         CP#27
+  InstanceCall1        4, CP#28
+  PushConstant         CP#29
   IfNeStrictTOS
   Jump                 L4
   Push                 r4
   LoadFieldTOS         CP#0
   LoadFieldTOS         CP#0
-  PushConstant         CP#31
+  PushConstant         CP#30
   StoreLocal           r12
-  StoreFieldTOS        CP#10
+  StoreFieldTOS        CP#9
   Push                 r12
   Drop1
   Jump                 L5
@@ -1343,7 +1335,7 @@
   Push                 r4
   LoadFieldTOS         CP#0
   LoadFieldTOS         CP#0
-  PushConstant         CP#32
+  PushConstant         CP#31
   StoreFieldTOS        CP#1
   Push                 r4
   LoadFieldTOS         CP#0
@@ -1358,19 +1350,19 @@
   Push                 r4
   LoadFieldTOS         CP#0
   LoadFieldTOS         CP#0
+  LoadFieldTOS         CP#10
+  Push                 r4
+  LoadFieldTOS         CP#0
+  LoadFieldTOS         CP#0
   LoadFieldTOS         CP#11
   Push                 r4
   LoadFieldTOS         CP#0
   LoadFieldTOS         CP#0
-  LoadFieldTOS         CP#12
-  Push                 r4
-  LoadFieldTOS         CP#0
-  LoadFieldTOS         CP#0
-  LoadFieldTOS         CP#22
-  PushConstant         CP#33
-  IndirectStaticCall   4, CP#23
+  LoadFieldTOS         CP#21
+  PushConstant         CP#32
+  IndirectStaticCall   4, CP#22
   PopLocal             r13
-  PushConstant         CP#9
+  PushConstant         CP#8
   ReturnTOS
 L14:
   IfEqNull             r2
@@ -1386,7 +1378,7 @@
   LoadFieldTOS         CP#0
   LoadFieldTOS         CP#3
   Push                 r1
-  InstanceCall1        2, CP#34
+  InstanceCall1        2, CP#33
   StoreLocal           r12
   StoreFieldTOS        CP#1
   Push                 r12
@@ -1394,11 +1386,11 @@
   Push                 r4
   LoadFieldTOS         CP#0
   LoadFieldTOS         CP#0
-  LoadFieldTOS         CP#17
+  LoadFieldTOS         CP#16
   Push                 r4
   LoadFieldTOS         CP#0
   LoadFieldTOS         CP#0
-  LoadFieldTOS         CP#18
+  LoadFieldTOS         CP#17
   Throw                1
   Drop1
   Push                 r4
@@ -1410,24 +1402,24 @@
 Try #1 end:
 Try #1 handler:
   Push                 r0
-  LoadFieldTOS         CP#20
+  LoadFieldTOS         CP#19
   PopLocal             r4
   Push                 r4
-  LoadFieldTOS         CP#15
+  LoadFieldTOS         CP#14
   PopLocal             r4
   MoveSpecial          r8, exception
   MoveSpecial          r9, stackTrace
   Push                 r4
   LoadFieldTOS         CP#0
   Push                 r8
-  StoreFieldTOS        CP#17
+  StoreFieldTOS        CP#16
   Push                 r4
   LoadFieldTOS         CP#0
   Push                 r9
-  StoreFieldTOS        CP#18
+  StoreFieldTOS        CP#17
+  PushConstant         CP#34
   PushConstant         CP#35
-  PushConstant         CP#36
-  IndirectStaticCall   1, CP#6
+  IndirectStaticCall   1, CP#5
   Drop1
   Push                 r4
   LoadFieldTOS         CP#0
@@ -1439,7 +1431,7 @@
   Drop1
   Push                 r4
   LoadFieldTOS         CP#0
-  PushConstant         CP#37
+  PushConstant         CP#36
   StoreFieldTOS        CP#1
   Push                 r4
   LoadFieldTOS         CP#0
@@ -1451,17 +1443,17 @@
   LoadFieldTOS         CP#3
   Push                 r4
   LoadFieldTOS         CP#0
+  LoadFieldTOS         CP#10
+  Push                 r4
+  LoadFieldTOS         CP#0
   LoadFieldTOS         CP#11
   Push                 r4
   LoadFieldTOS         CP#0
-  LoadFieldTOS         CP#12
-  Push                 r4
-  LoadFieldTOS         CP#0
-  LoadFieldTOS         CP#22
-  PushConstant         CP#38
-  IndirectStaticCall   4, CP#23
+  LoadFieldTOS         CP#21
+  PushConstant         CP#37
+  IndirectStaticCall   4, CP#22
   PopLocal             r12
-  PushConstant         CP#9
+  PushConstant         CP#8
   ReturnTOS
 L15:
   IfEqNull             r2
@@ -1475,7 +1467,7 @@
   LoadFieldTOS         CP#0
   LoadFieldTOS         CP#3
   Push                 r1
-  InstanceCall1        2, CP#39
+  InstanceCall1        2, CP#38
   StoreLocal           r10
   StoreFieldTOS        CP#1
   Push                 r10
@@ -1485,7 +1477,7 @@
   Push                 r4
   LoadFieldTOS         CP#1
   StoreLocal           r10
-  StoreFieldTOS        CP#10
+  StoreFieldTOS        CP#9
   Push                 r10
   Drop1
   Push                 r4
@@ -1494,21 +1486,21 @@
   Jump                 L9
   Push                 r4
   LoadFieldTOS         CP#0
-  LoadFieldTOS         CP#17
+  LoadFieldTOS         CP#16
   Push                 r4
   LoadFieldTOS         CP#0
-  LoadFieldTOS         CP#18
+  LoadFieldTOS         CP#17
   Throw                1
 L5:
   Push                 r0
-  LoadFieldTOS         CP#20
+  LoadFieldTOS         CP#19
   PopLocal             r4
   Push                 r4
-  LoadFieldTOS         CP#15
+  LoadFieldTOS         CP#14
   PopLocal             r4
-  PushConstant         CP#35
-  PushConstant         CP#40
-  IndirectStaticCall   1, CP#6
+  PushConstant         CP#34
+  PushConstant         CP#39
+  IndirectStaticCall   1, CP#5
   Drop1
   Push                 r4
   LoadFieldTOS         CP#0
@@ -1520,7 +1512,7 @@
   Drop1
   Push                 r4
   LoadFieldTOS         CP#0
-  PushConstant         CP#41
+  PushConstant         CP#40
   StoreFieldTOS        CP#1
   Push                 r4
   LoadFieldTOS         CP#0
@@ -1532,17 +1524,17 @@
   LoadFieldTOS         CP#3
   Push                 r4
   LoadFieldTOS         CP#0
+  LoadFieldTOS         CP#10
+  Push                 r4
+  LoadFieldTOS         CP#0
   LoadFieldTOS         CP#11
   Push                 r4
   LoadFieldTOS         CP#0
-  LoadFieldTOS         CP#12
-  Push                 r4
-  LoadFieldTOS         CP#0
-  LoadFieldTOS         CP#22
-  PushConstant         CP#42
-  IndirectStaticCall   4, CP#23
+  LoadFieldTOS         CP#21
+  PushConstant         CP#41
+  IndirectStaticCall   4, CP#22
   PopLocal             r12
-  PushConstant         CP#9
+  PushConstant         CP#8
   ReturnTOS
 L16:
   IfEqNull             r2
@@ -1556,7 +1548,7 @@
   LoadFieldTOS         CP#0
   LoadFieldTOS         CP#3
   Push                 r1
-  InstanceCall1        2, CP#43
+  InstanceCall1        2, CP#42
   StoreLocal           r10
   StoreFieldTOS        CP#1
   Push                 r10
@@ -1566,7 +1558,7 @@
   Push                 r4
   LoadFieldTOS         CP#1
   StoreLocal           r10
-  StoreFieldTOS        CP#10
+  StoreFieldTOS        CP#9
   Push                 r10
   Drop1
   Push                 r4
@@ -1579,14 +1571,14 @@
   Jump                 L9
 L7:
   Push                 r0
-  LoadFieldTOS         CP#20
+  LoadFieldTOS         CP#19
   PopLocal             r4
   Push                 r4
-  LoadFieldTOS         CP#15
+  LoadFieldTOS         CP#14
   PopLocal             r4
-  PushConstant         CP#35
-  PushConstant         CP#44
-  IndirectStaticCall   1, CP#6
+  PushConstant         CP#34
+  PushConstant         CP#43
+  IndirectStaticCall   1, CP#5
   Drop1
   Push                 r4
   LoadFieldTOS         CP#0
@@ -1598,7 +1590,7 @@
   Drop1
   Push                 r4
   LoadFieldTOS         CP#0
-  PushConstant         CP#45
+  PushConstant         CP#44
   StoreFieldTOS        CP#1
   Push                 r4
   LoadFieldTOS         CP#0
@@ -1610,17 +1602,17 @@
   LoadFieldTOS         CP#3
   Push                 r4
   LoadFieldTOS         CP#0
+  LoadFieldTOS         CP#10
+  Push                 r4
+  LoadFieldTOS         CP#0
   LoadFieldTOS         CP#11
   Push                 r4
   LoadFieldTOS         CP#0
-  LoadFieldTOS         CP#12
-  Push                 r4
-  LoadFieldTOS         CP#0
-  LoadFieldTOS         CP#22
-  PushConstant         CP#46
-  IndirectStaticCall   4, CP#23
+  LoadFieldTOS         CP#21
+  PushConstant         CP#45
+  IndirectStaticCall   4, CP#22
   PopLocal             r12
-  PushConstant         CP#9
+  PushConstant         CP#8
   ReturnTOS
 L17:
   IfEqNull             r2
@@ -1634,7 +1626,7 @@
   LoadFieldTOS         CP#0
   LoadFieldTOS         CP#3
   Push                 r1
-  InstanceCall1        2, CP#47
+  InstanceCall1        2, CP#46
   StoreLocal           r10
   StoreFieldTOS        CP#1
   Push                 r10
@@ -1644,7 +1636,7 @@
   Push                 r4
   LoadFieldTOS         CP#1
   StoreLocal           r10
-  StoreFieldTOS        CP#10
+  StoreFieldTOS        CP#9
   Push                 r10
   Drop1
   Push                 r4
@@ -1656,21 +1648,21 @@
   PopLocal             r4
 L9:
   Push                 r4
-  LoadFieldTOS         CP#8
+  LoadFieldTOS         CP#7
   Push                 r4
-  LoadFieldTOS         CP#10
-  InstanceCall1        2, CP#48
+  LoadFieldTOS         CP#9
+  InstanceCall1        2, CP#47
   Drop1
-  PushConstant         CP#9
+  PushConstant         CP#8
   ReturnTOS
   Jump                 L12
 Try #0 end:
 Try #0 handler:
   Push                 r0
-  LoadFieldTOS         CP#20
+  LoadFieldTOS         CP#19
   PopLocal             r4
   Push                 r4
-  LoadFieldTOS         CP#14
+  LoadFieldTOS         CP#13
   PopLocal             r4
   MoveSpecial          r6, exception
   MoveSpecial          r7, stackTrace
@@ -1679,33 +1671,33 @@
   Push                 r7
   PopLocal             r9
   Push                 r4
-  LoadFieldTOS         CP#8
+  LoadFieldTOS         CP#7
   Push                 r8
   Push                 r9
-  InstanceCall1        3, CP#50
+  InstanceCall1        3, CP#49
   Drop1
   Jump                 L12
 L12:
-  PushConstant         CP#9
+  PushConstant         CP#8
   ReturnTOS
 L1:
   Push                 r4
   LoadFieldTOS         CP#2
   PopLocal             r4
   Push                 r5
-  PushConstant         CP#21
+  PushConstant         CP#20
   IfEqStrictNumTOS
   Jump                 L13
   Push                 r5
-  PushConstant         CP#32
+  PushConstant         CP#31
   IfEqStrictNumTOS
   Jump                 L14
   Push                 r5
-  PushConstant         CP#37
+  PushConstant         CP#36
   IfEqStrictNumTOS
   Jump                 L15
   Push                 r5
-  PushConstant         CP#41
+  PushConstant         CP#40
   IfEqStrictNumTOS
   Jump                 L16
   Jump                 L17
@@ -1789,17 +1781,17 @@
   Push                 r0
   PushConstant         CP#2
   StoreFieldTOS        CP#1
-  Allocate             CP#36
+  Allocate             CP#35
   StoreLocal           r3
   Push                 r3
-  PushConstant         CP#10
+  PushConstant         CP#9
+  StoreFieldTOS        CP#36
+  Push                 r3
+  PushConstant         CP#9
   StoreFieldTOS        CP#37
   Push                 r3
-  PushConstant         CP#10
-  StoreFieldTOS        CP#38
-  Push                 r3
   PushConstant         CP#3
-  StoreFieldTOS        CP#39
+  StoreFieldTOS        CP#38
   Push                 r3
   Push                 r0
   StoreFieldTOS        CP#4
@@ -1809,7 +1801,7 @@
   Push                 r0
   LoadFieldTOS         CP#0
   PopLocal             r0
-  PushConstant         CP#10
+  PushConstant         CP#9
   ReturnTOS
 }
 ConstantPool {
@@ -1818,55 +1810,53 @@
   [2] = Int 3
   [3] = ClosureFunction nested () → dart.async::Future<dart.core::int> /* originally async */ ;
   [4] = FieldOffset dart.core::_Closure::_context
-  [5] = TypeArgs [dart.core::int]
-  [6] = TypeArgumentsForInstanceAllocation dart.async::Completer type-args CP#5
-  [7] = ArgDesc num-args 1, num-type-args 0, names []
-  [8] = StaticICData target 'dart.async::Completer::sync', arg-desc CP#7
-  [9] = ContextOffset var [8]
-  [10] = Null
-  [11] = ContextOffset var [7]
-  [12] = ContextOffset var [4]
-  [13] = ContextOffset var [5]
-  [14] = Int 0
-  [15] = ContextOffset var [1]
-  [16] = ContextOffset var [2]
-  [17] = ContextOffset var [3]
-  [18] = ClosureFunction :async_op ([dynamic :result, dynamic :exception, dynamic :stack_trace]) → dynamic yielding ;
-  [19] = Int 4
-  [20] = Int 5
-  [21] = Int 1
-  [22] = ContextOffset var [6]
-  [23] = ArgDesc num-args 4, num-type-args 0, names []
-  [24] = StaticICData target 'dart.async::_awaitHelper', arg-desc CP#23
-  [25] = ArgDesc num-args 2, num-type-args 0, names []
-  [26] = ICData target-name '+', arg-desc CP#25
-  [27] = Type dynamic
-  [28] = String 'fin'
-  [29] = StaticICData target 'dart.core::print', arg-desc CP#7
-  [30] = StaticICData target 'dart.core::print', arg-desc CP#7
-  [31] = StaticICData target 'dart.core::print', arg-desc CP#7
-  [32] = ICData target-name 'complete', arg-desc CP#25
-  [33] = ArgDesc num-args 3, num-type-args 0, names []
-  [34] = ICData target-name 'completeError', arg-desc CP#33
-  [35] = EndClosureFunctionScope
-  [36] = Class dart.core::_Closure
-  [37] = FieldOffset dart.core::_Closure::_instantiator_type_arguments
-  [38] = FieldOffset dart.core::_Closure::_function_type_arguments
-  [39] = FieldOffset dart.core::_Closure::_function
-  [40] = StaticICData target 'dart.async::_asyncStackTraceHelper', arg-desc CP#7
-  [41] = StaticICData target 'dart.async::_asyncThenWrapperHelper', arg-desc CP#7
-  [42] = StaticICData target 'dart.async::_asyncErrorWrapperHelper', arg-desc CP#7
-  [43] = TypeArgs [dynamic]
-  [44] = TypeArgumentsForInstanceAllocation dart.async::Future type-args CP#43
-  [45] = StaticICData target 'dart.async::Future::microtask', arg-desc CP#25
-  [46] = ICData get target-name 'future', arg-desc CP#7
-  [47] = EndClosureFunctionScope
+  [5] = TypeArgumentsForInstanceAllocation dart.async::Completer [dart.core::int]
+  [6] = ArgDesc num-args 1, num-type-args 0, names []
+  [7] = StaticICData target 'dart.async::Completer::sync', arg-desc CP#6
+  [8] = ContextOffset var [8]
+  [9] = Null
+  [10] = ContextOffset var [7]
+  [11] = ContextOffset var [4]
+  [12] = ContextOffset var [5]
+  [13] = Int 0
+  [14] = ContextOffset var [1]
+  [15] = ContextOffset var [2]
+  [16] = ContextOffset var [3]
+  [17] = ClosureFunction :async_op ([dynamic :result, dynamic :exception, dynamic :stack_trace]) → dynamic yielding ;
+  [18] = Int 4
+  [19] = Int 5
+  [20] = Int 1
+  [21] = ContextOffset var [6]
+  [22] = ArgDesc num-args 4, num-type-args 0, names []
+  [23] = StaticICData target 'dart.async::_awaitHelper', arg-desc CP#22
+  [24] = ArgDesc num-args 2, num-type-args 0, names []
+  [25] = ICData target-name '+', arg-desc CP#24
+  [26] = Type dynamic
+  [27] = String 'fin'
+  [28] = StaticICData target 'dart.core::print', arg-desc CP#6
+  [29] = StaticICData target 'dart.core::print', arg-desc CP#6
+  [30] = StaticICData target 'dart.core::print', arg-desc CP#6
+  [31] = ICData target-name 'complete', arg-desc CP#24
+  [32] = ArgDesc num-args 3, num-type-args 0, names []
+  [33] = ICData target-name 'completeError', arg-desc CP#32
+  [34] = EndClosureFunctionScope
+  [35] = Class dart.core::_Closure
+  [36] = FieldOffset dart.core::_Closure::_instantiator_type_arguments
+  [37] = FieldOffset dart.core::_Closure::_function_type_arguments
+  [38] = FieldOffset dart.core::_Closure::_function
+  [39] = StaticICData target 'dart.async::_asyncStackTraceHelper', arg-desc CP#6
+  [40] = StaticICData target 'dart.async::_asyncThenWrapperHelper', arg-desc CP#6
+  [41] = StaticICData target 'dart.async::_asyncErrorWrapperHelper', arg-desc CP#6
+  [42] = TypeArgumentsForInstanceAllocation dart.async::Future [dynamic]
+  [43] = StaticICData target 'dart.async::Future::microtask', arg-desc CP#24
+  [44] = ICData get target-name 'future', arg-desc CP#6
+  [45] = EndClosureFunctionScope
 }
-Closure CP#18 {
+Closure CP#17 {
   EntryOptional        1, 3, 0
-  LoadConstant         r1, CP#10
-  LoadConstant         r2, CP#10
-  LoadConstant         r3, CP#10
+  LoadConstant         r1, CP#9
+  LoadConstant         r2, CP#9
+  LoadConstant         r3, CP#9
   Frame                8
   CheckStack
   Push                 r0
@@ -1875,12 +1865,12 @@
   Push                 r4
   LoadFieldTOS         CP#1
   StoreLocal           r5
-  PushConstant         CP#14
+  PushConstant         CP#13
   IfNeStrictNumTOS
   Jump                 L1
   Push                 r4
   Push                 r4
-  StoreFieldTOS        CP#16
+  StoreFieldTOS        CP#15
 Try #0 start:
   AllocateContext      1
   StoreLocal           r5
@@ -1889,29 +1879,29 @@
   StoreFieldTOS        CP#0
   PopLocal             r4
   Push                 r4
-  PushConstant         CP#19
+  PushConstant         CP#18
   StoreFieldTOS        CP#1
   Push                 r4
   LoadFieldTOS         CP#0
   Push                 r4
-  StoreFieldTOS        CP#17
+  StoreFieldTOS        CP#16
 Try #1 start:
   Push                 r4
   LoadFieldTOS         CP#0
   LoadFieldTOS         CP#0
-  PushConstant         CP#20
+  PushConstant         CP#19
   StoreLocal           r10
   StoreFieldTOS        CP#1
   Push                 r10
   Drop1
   Push                 r4
   LoadFieldTOS         CP#0
-  PushConstant         CP#21
+  PushConstant         CP#20
   StoreFieldTOS        CP#1
   Push                 r4
   LoadFieldTOS         CP#0
   Push                 r4
-  StoreFieldTOS        CP#15
+  StoreFieldTOS        CP#14
   Push                 r4
   LoadFieldTOS         CP#0
   LoadFieldTOS         CP#0
@@ -1919,17 +1909,17 @@
   LoadFieldTOS         CP#1
   Push                 r4
   LoadFieldTOS         CP#0
+  LoadFieldTOS         CP#11
+  Push                 r4
+  LoadFieldTOS         CP#0
   LoadFieldTOS         CP#12
   Push                 r4
   LoadFieldTOS         CP#0
-  LoadFieldTOS         CP#13
-  Push                 r4
-  LoadFieldTOS         CP#0
-  LoadFieldTOS         CP#22
-  PushConstant         CP#24
-  IndirectStaticCall   4, CP#23
+  LoadFieldTOS         CP#21
+  PushConstant         CP#23
+  IndirectStaticCall   4, CP#22
   PopLocal             r11
-  PushConstant         CP#10
+  PushConstant         CP#9
   ReturnTOS
 L6:
   Push                 r4
@@ -1946,9 +1936,9 @@
   LoadFieldTOS         CP#1
   Push                 r4
   LoadFieldTOS         CP#1
-  InstanceCall1        2, CP#26
+  InstanceCall1        2, CP#25
   StoreLocal           r10
-  StoreFieldTOS        CP#11
+  StoreFieldTOS        CP#10
   Push                 r10
   Drop1
   Jump                 L2
@@ -1959,13 +1949,13 @@
   LoadFieldTOS         CP#4
   PopLocal             r4
   Push                 r4
-  LoadFieldTOS         CP#17
+  LoadFieldTOS         CP#16
   PopLocal             r4
   MoveSpecial          r8, exception
   MoveSpecial          r9, stackTrace
+  PushConstant         CP#27
   PushConstant         CP#28
-  PushConstant         CP#29
-  IndirectStaticCall   1, CP#7
+  IndirectStaticCall   1, CP#6
   Drop1
   Push                 r8
   Push                 r9
@@ -1975,11 +1965,11 @@
   LoadFieldTOS         CP#4
   PopLocal             r4
   Push                 r4
-  LoadFieldTOS         CP#17
+  LoadFieldTOS         CP#16
   PopLocal             r4
-  PushConstant         CP#28
-  PushConstant         CP#30
-  IndirectStaticCall   1, CP#7
+  PushConstant         CP#27
+  PushConstant         CP#29
+  IndirectStaticCall   1, CP#6
   Drop1
   Push                 r4
   LoadFieldTOS         CP#0
@@ -1990,23 +1980,23 @@
   LoadFieldTOS         CP#4
   PopLocal             r4
   Push                 r4
-  LoadFieldTOS         CP#17
+  LoadFieldTOS         CP#16
   PopLocal             r4
-  PushConstant         CP#28
-  PushConstant         CP#31
-  IndirectStaticCall   1, CP#7
+  PushConstant         CP#27
+  PushConstant         CP#30
+  IndirectStaticCall   1, CP#6
   Drop1
   Push                 r4
   LoadFieldTOS         CP#0
   PopLocal             r4
 L4:
   Push                 r4
-  LoadFieldTOS         CP#9
+  LoadFieldTOS         CP#8
   Push                 r4
-  LoadFieldTOS         CP#11
-  InstanceCall1        2, CP#32
+  LoadFieldTOS         CP#10
+  InstanceCall1        2, CP#31
   Drop1
-  PushConstant         CP#10
+  PushConstant         CP#9
   ReturnTOS
   Jump                 L5
 Try #0 end:
@@ -2015,7 +2005,7 @@
   LoadFieldTOS         CP#4
   PopLocal             r4
   Push                 r4
-  LoadFieldTOS         CP#16
+  LoadFieldTOS         CP#15
   PopLocal             r4
   MoveSpecial          r6, exception
   MoveSpecial          r7, stackTrace
@@ -2024,18 +2014,18 @@
   Push                 r7
   PopLocal             r9
   Push                 r4
-  LoadFieldTOS         CP#9
+  LoadFieldTOS         CP#8
   Push                 r8
   Push                 r9
-  InstanceCall1        3, CP#34
+  InstanceCall1        3, CP#33
   Drop1
   Jump                 L5
 L5:
-  PushConstant         CP#10
+  PushConstant         CP#9
   ReturnTOS
 L1:
   Push                 r4
-  LoadFieldTOS         CP#15
+  LoadFieldTOS         CP#14
   PopLocal             r4
   Jump                 L6
 
@@ -2054,87 +2044,87 @@
   StoreFieldTOS        CP#0
   PopLocal             r0
   Push                 r0
-  PushConstant         CP#6
-  PushConstant         CP#8
-  IndirectStaticCall   1, CP#7
-  StoreFieldTOS        CP#9
+  PushConstant         CP#5
+  PushConstant         CP#7
+  IndirectStaticCall   1, CP#6
+  StoreFieldTOS        CP#8
   Push                 r0
-  PushConstant         CP#10
-  StoreFieldTOS        CP#11
-  PushConstant         CP#10
+  PushConstant         CP#9
+  StoreFieldTOS        CP#10
+  PushConstant         CP#9
   PopLocal             r2
   Push                 r0
-  PushConstant         CP#10
+  PushConstant         CP#9
+  StoreFieldTOS        CP#11
+  Push                 r0
+  PushConstant         CP#9
   StoreFieldTOS        CP#12
   Push                 r0
-  PushConstant         CP#10
-  StoreFieldTOS        CP#13
-  Push                 r0
-  PushConstant         CP#14
+  PushConstant         CP#13
   StoreFieldTOS        CP#1
   Push                 r0
-  PushConstant         CP#10
+  PushConstant         CP#9
+  StoreFieldTOS        CP#14
+  Push                 r0
+  PushConstant         CP#9
   StoreFieldTOS        CP#15
   Push                 r0
-  PushConstant         CP#10
+  PushConstant         CP#9
   StoreFieldTOS        CP#16
   Push                 r0
-  PushConstant         CP#10
-  StoreFieldTOS        CP#17
-  Push                 r0
-  Allocate             CP#36
+  Allocate             CP#35
   StoreLocal           r3
   Push                 r3
-  PushConstant         CP#10
+  PushConstant         CP#9
+  StoreFieldTOS        CP#36
+  Push                 r3
+  PushConstant         CP#9
   StoreFieldTOS        CP#37
   Push                 r3
-  PushConstant         CP#10
+  PushConstant         CP#17
   StoreFieldTOS        CP#38
   Push                 r3
-  PushConstant         CP#18
-  StoreFieldTOS        CP#39
-  Push                 r3
   Push                 r0
   StoreFieldTOS        CP#4
-  StoreFieldTOS        CP#22
+  StoreFieldTOS        CP#21
   Push                 r0
-  LoadFieldTOS         CP#22
-  PushConstant         CP#40
-  IndirectStaticCall   1, CP#7
+  LoadFieldTOS         CP#21
+  PushConstant         CP#39
+  IndirectStaticCall   1, CP#6
   StoreLocal           r2
   Drop1
   Push                 r0
   Push                 r0
-  LoadFieldTOS         CP#22
+  LoadFieldTOS         CP#21
+  PushConstant         CP#40
+  IndirectStaticCall   1, CP#6
+  StoreLocal           r3
+  StoreFieldTOS        CP#11
+  Push                 r3
+  Drop1
+  Push                 r0
+  Push                 r0
+  LoadFieldTOS         CP#21
   PushConstant         CP#41
-  IndirectStaticCall   1, CP#7
+  IndirectStaticCall   1, CP#6
   StoreLocal           r3
   StoreFieldTOS        CP#12
   Push                 r3
   Drop1
-  Push                 r0
-  Push                 r0
-  LoadFieldTOS         CP#22
   PushConstant         CP#42
-  IndirectStaticCall   1, CP#7
-  StoreLocal           r3
-  StoreFieldTOS        CP#13
-  Push                 r3
-  Drop1
-  PushConstant         CP#44
   Push                 r0
-  LoadFieldTOS         CP#22
-  PushConstant         CP#45
-  IndirectStaticCall   2, CP#25
+  LoadFieldTOS         CP#21
+  PushConstant         CP#43
+  IndirectStaticCall   2, CP#24
   Drop1
   Push                 r0
-  LoadFieldTOS         CP#9
-  InstanceCall1        1, CP#46
+  LoadFieldTOS         CP#8
+  InstanceCall1        1, CP#44
   ReturnTOS
   Push                 r0
   LoadFieldTOS         CP#0
   PopLocal             r0
-  PushConstant         CP#10
+  PushConstant         CP#9
   ReturnTOS
 
 }
diff --git a/pkg/vm/testcases/bytecode/closures.dart.expect b/pkg/vm/testcases/bytecode/closures.dart.expect
index c9f41f0..2080a18 100644
--- a/pkg/vm/testcases/bytecode/closures.dart.expect
+++ b/pkg/vm/testcases/bytecode/closures.dart.expect
@@ -1351,58 +1351,56 @@
   Entry                1
   CheckStack
   PushConstant         CP#0
-  PushConstant         CP#3
+  PushConstant         CP#2
   PushConstant         CP#1
   AllocateT
   StoreLocal           r0
   Push                 r0
-  PushConstant         CP#5
-  IndirectStaticCall   1, CP#4
+  PushConstant         CP#4
+  IndirectStaticCall   1, CP#3
   Drop1
-  InstanceCall1        2, CP#7
+  InstanceCall1        2, CP#6
   Drop1
+  PushConstant         CP#7
+  PushConstant         CP#2
+  PushConstant         CP#1
+  AllocateT
+  StoreLocal           r0
+  Push                 r0
   PushConstant         CP#8
-  PushConstant         CP#3
+  IndirectStaticCall   1, CP#3
+  Drop1
+  InstanceCall1        2, CP#9
+  Drop1
+  PushConstant         CP#7
+  PushConstant         CP#10
   PushConstant         CP#1
   AllocateT
   StoreLocal           r0
   Push                 r0
-  PushConstant         CP#9
-  IndirectStaticCall   1, CP#4
+  PushConstant         CP#11
+  IndirectStaticCall   1, CP#3
   Drop1
-  InstanceCall1        2, CP#10
+  InstanceCall1        2, CP#12
   Drop1
-  PushConstant         CP#8
-  PushConstant         CP#12
-  PushConstant         CP#1
-  AllocateT
-  StoreLocal           r0
-  Push                 r0
   PushConstant         CP#13
-  IndirectStaticCall   1, CP#4
-  Drop1
-  InstanceCall1        2, CP#14
-  Drop1
-  PushConstant         CP#15
   ReturnTOS
 }
 ConstantPool {
   [0] = TypeArgs [#lib::C3, #lib::C4]
   [1] = Class #lib::A
-  [2] = TypeArgs [#lib::C1, #lib::C2]
-  [3] = TypeArgumentsForInstanceAllocation #lib::A type-args CP#2
-  [4] = ArgDesc num-args 1, num-type-args 0, names []
-  [5] = StaticICData target '#lib::A::', arg-desc CP#4
-  [6] = ArgDesc num-args 1, num-type-args 2, names []
-  [7] = ICData target-name 'foo', arg-desc CP#6
-  [8] = TypeArgs [dart.core::List<#lib::C3>, dart.core::List<#lib::C4>]
-  [9] = StaticICData target '#lib::A::', arg-desc CP#4
-  [10] = ICData target-name 'foo', arg-desc CP#6
-  [11] = TypeArgs [dart.core::List<#lib::C1>, dart.core::List<#lib::C2>]
-  [12] = TypeArgumentsForInstanceAllocation #lib::A type-args CP#11
-  [13] = StaticICData target '#lib::A::', arg-desc CP#4
-  [14] = ICData target-name 'foo', arg-desc CP#6
-  [15] = Null
+  [2] = TypeArgumentsForInstanceAllocation #lib::A [#lib::C1, #lib::C2]
+  [3] = ArgDesc num-args 1, num-type-args 0, names []
+  [4] = StaticICData target '#lib::A::', arg-desc CP#3
+  [5] = ArgDesc num-args 1, num-type-args 2, names []
+  [6] = ICData target-name 'foo', arg-desc CP#5
+  [7] = TypeArgs [dart.core::List<#lib::C3>, dart.core::List<#lib::C4>]
+  [8] = StaticICData target '#lib::A::', arg-desc CP#3
+  [9] = ICData target-name 'foo', arg-desc CP#5
+  [10] = TypeArgumentsForInstanceAllocation #lib::A [dart.core::List<#lib::C1>, dart.core::List<#lib::C2>]
+  [11] = StaticICData target '#lib::A::', arg-desc CP#3
+  [12] = ICData target-name 'foo', arg-desc CP#5
+  [13] = Null
 }
 ]static method callA() → void {
   new self::A::•<self::C1, self::C2>().{self::A::foo}<self::C3, self::C4>();
diff --git a/pkg/vm/testcases/bytecode/instance_creation.dart.expect b/pkg/vm/testcases/bytecode/instance_creation.dart.expect
index 2fe3e73..2ba4d37 100644
--- a/pkg/vm/testcases/bytecode/instance_creation.dart.expect
+++ b/pkg/vm/testcases/bytecode/instance_creation.dart.expect
@@ -294,13 +294,13 @@
   CheckStack
   Push                 FP[-5]
   PushConstant         CP#1
-  InstantiateTypeArgumentsTOS 0, CP#3
+  InstantiateTypeArgumentsTOS 0, CP#2
   PushConstant         CP#0
   AllocateT
   StoreLocal           r0
   Push                 r0
-  PushConstant         CP#5
-  IndirectStaticCall   1, CP#4
+  PushConstant         CP#4
+  IndirectStaticCall   1, CP#3
   Drop1
   ReturnTOS
   PushConstant         CP#1
@@ -309,10 +309,9 @@
 ConstantPool {
   [0] = Class #lib::H
   [1] = Null
-  [2] = TypeArgs [dart.core::String, #lib::G::test_factory::K, #lib::G::test_factory::V]
-  [3] = TypeArgumentsForInstanceAllocation #lib::H type-args CP#2
-  [4] = ArgDesc num-args 1, num-type-args 0, names []
-  [5] = StaticICData target '#lib::H::', arg-desc CP#4
+  [2] = TypeArgumentsForInstanceAllocation #lib::H [dart.core::String, #lib::G::test_factory::K, #lib::G::test_factory::V]
+  [3] = ArgDesc num-args 1, num-type-args 0, names []
+  [4] = StaticICData target '#lib::H::', arg-desc CP#3
 }
 ]  static factory test_factory<K extends core::Object = dynamic, V extends core::Object = dynamic>() → self::G<self::G::test_factory::K, self::G::test_factory::V>
     return new self::H::•<core::String, self::G::test_factory::K, self::G::test_factory::V>();
@@ -429,41 +428,39 @@
 Bytecode {
   Entry                1
   CheckStack
-  PushConstant         CP#2
+  PushConstant         CP#1
   PushConstant         CP#0
   AllocateT
   StoreLocal           r0
   Push                 r0
-  PushConstant         CP#3
-  PushConstant         CP#5
-  IndirectStaticCall   2, CP#4
+  PushConstant         CP#2
+  PushConstant         CP#4
+  IndirectStaticCall   2, CP#3
   Drop1
   Drop1
-  PushConstant         CP#8
   PushConstant         CP#6
+  PushConstant         CP#5
   AllocateT
   StoreLocal           r0
   Push                 r0
-  PushConstant         CP#10
-  IndirectStaticCall   1, CP#9
+  PushConstant         CP#8
+  IndirectStaticCall   1, CP#7
   Drop1
   Drop1
-  PushConstant         CP#11
+  PushConstant         CP#9
   ReturnTOS
 }
 ConstantPool {
   [0] = Class #lib::A
-  [1] = TypeArgs []
-  [2] = TypeArgumentsForInstanceAllocation #lib::A type-args CP#1
-  [3] = String 'hi'
-  [4] = ArgDesc num-args 2, num-type-args 0, names []
-  [5] = StaticICData target '#lib::A::', arg-desc CP#4
-  [6] = Class #lib::B
-  [7] = TypeArgs [dart.core::int]
-  [8] = TypeArgumentsForInstanceAllocation #lib::B type-args CP#7
-  [9] = ArgDesc num-args 1, num-type-args 0, names []
-  [10] = StaticICData target '#lib::B::', arg-desc CP#9
-  [11] = Null
+  [1] = TypeArgumentsForInstanceAllocation #lib::A []
+  [2] = String 'hi'
+  [3] = ArgDesc num-args 2, num-type-args 0, names []
+  [4] = StaticICData target '#lib::A::', arg-desc CP#3
+  [5] = Class #lib::B
+  [6] = TypeArgumentsForInstanceAllocation #lib::B [dart.core::int]
+  [7] = ArgDesc num-args 1, num-type-args 0, names []
+  [8] = StaticICData target '#lib::B::', arg-desc CP#7
+  [9] = Null
 }
 ]static method foo2() → void {
   new self::A::•("hi");
@@ -475,13 +472,13 @@
   CheckStack
   PushConstant         CP#1
   Push                 FP[-5]
-  InstantiateTypeArgumentsTOS 0, CP#3
+  InstantiateTypeArgumentsTOS 0, CP#2
   PushConstant         CP#0
   AllocateT
   StoreLocal           r0
   Push                 r0
-  PushConstant         CP#5
-  IndirectStaticCall   1, CP#4
+  PushConstant         CP#4
+  IndirectStaticCall   1, CP#3
   Drop1
   Drop1
   PushConstant         CP#1
@@ -490,10 +487,9 @@
 ConstantPool {
   [0] = Class #lib::B
   [1] = Null
-  [2] = TypeArgs [dart.core::List<#lib::foo3::T>]
-  [3] = TypeArgumentsForInstanceAllocation #lib::B type-args CP#2
-  [4] = ArgDesc num-args 1, num-type-args 0, names []
-  [5] = StaticICData target '#lib::B::', arg-desc CP#4
+  [2] = TypeArgumentsForInstanceAllocation #lib::B [dart.core::List<#lib::foo3::T>]
+  [3] = ArgDesc num-args 1, num-type-args 0, names []
+  [4] = StaticICData target '#lib::B::', arg-desc CP#3
 }
 ]static method foo3<T extends core::Object = dynamic>() → void {
   new self::B::•<core::List<self::foo3::T>>();
@@ -502,19 +498,18 @@
 Bytecode {
   Entry                0
   CheckStack
-  PushConstant         CP#1
-  PushConstant         CP#3
-  IndirectStaticCall   1, CP#2
+  PushConstant         CP#0
+  PushConstant         CP#2
+  IndirectStaticCall   1, CP#1
   Drop1
-  PushConstant         CP#4
+  PushConstant         CP#3
   ReturnTOS
 }
 ConstantPool {
-  [0] = TypeArgs [dart.core::int, dart.core::List<dart.core::String>]
-  [1] = TypeArgumentsForInstanceAllocation #lib::G type-args CP#0
-  [2] = ArgDesc num-args 1, num-type-args 0, names []
-  [3] = StaticICData target '#lib::G::test_factory', arg-desc CP#2
-  [4] = Null
+  [0] = TypeArgumentsForInstanceAllocation #lib::G [dart.core::int, dart.core::List<dart.core::String>]
+  [1] = ArgDesc num-args 1, num-type-args 0, names []
+  [2] = StaticICData target '#lib::G::test_factory', arg-desc CP#1
+  [3] = Null
 }
 ]static method foo4() → void {
   self::G::test_factory<core::int, core::List<core::String>>();