[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>>();