library #lib; import self as self; import "dart:core" as core; [@vm.bytecode= Bytecode { Entry 2 CheckStack PushConstant CP#0 PopLocal r0 PushConstant CP#0 PopLocal r1 L2: CheckStack Push r1 Push FP[-5] InstanceCall1 1, CP#2 InstanceCall1 2, CP#4 PushConstant CP#5 IfNeStrictTOS Jump L1 Push r0 Push FP[-5] Push r1 InstanceCall1 2, CP#6 InstanceCall1 2, CP#7 StoreLocal r0 Drop1 Push r1 PushConstant CP#8 InstanceCall1 2, CP#9 StoreLocal r1 Drop1 Jump L2 L1: Push r0 ReturnTOS PushConstant CP#10 ReturnTOS } ConstantPool { [0] = Int 0 [1] = ArgDesc num-args 1, num-type-args 0, names [] [2] = ICData get target-name 'length', arg-desc CP#1 [3] = ArgDesc num-args 2, num-type-args 0, names [] [4] = ICData target-name '<', arg-desc CP#3 [5] = Bool true [6] = ICData target-name '[]', arg-desc CP#3 [7] = ICData target-name '+', arg-desc CP#3 [8] = Int 1 [9] = ICData target-name '+', arg-desc CP#3 [10] = Null } ]static method test_for(core::List list) → core::int { core::int sum = 0; for (core::int i = 0; i.{core::num::<}(list.{core::List::length}); i = i.{core::num::+}(1)) { sum = sum.{core::num::+}(list.{core::List::[]}(i)); } return sum; } [@vm.bytecode= Bytecode { Entry 2 CheckStack PushConstant CP#0 PopLocal r0 PushConstant CP#0 PopLocal r1 L3: CheckStack Push r1 PushConstant CP#0 InstanceCall1 2, CP#2 PushConstant CP#3 IfNeStrictTOS Jump L1 Push r1 Push FP[-5] InstanceCall1 1, CP#5 InstanceCall1 2, CP#6 PushConstant CP#3 IfNeStrictTOS Jump L2 Jump L1 L2: Push r0 Push FP[-5] Push r1 InstanceCall1 2, CP#7 InstanceCall1 2, CP#8 StoreLocal r0 Drop1 Push r1 PushConstant CP#9 InstanceCall1 2, CP#10 StoreLocal r1 Drop1 Jump L3 L1: Push r0 ReturnTOS PushConstant CP#11 ReturnTOS } ConstantPool { [0] = Int 0 [1] = ArgDesc num-args 2, num-type-args 0, names [] [2] = ICData target-name '>=', arg-desc CP#1 [3] = Bool true [4] = ArgDesc num-args 1, num-type-args 0, names [] [5] = ICData get target-name 'length', arg-desc CP#4 [6] = ICData target-name '>=', arg-desc CP#1 [7] = ICData target-name '[]', arg-desc CP#1 [8] = ICData target-name '+', arg-desc CP#1 [9] = Int 1 [10] = ICData target-name '+', arg-desc CP#1 [11] = Null } ]static method test_for_break(core::List list) → core::int { core::int sum = 0; #L1: for (core::int i = 0; i.{core::num::>=}(0); i = i.{core::num::+}(1)) { if(i.{core::num::>=}(list.{core::List::length})) { break #L1; } sum = sum.{core::num::+}(list.{core::List::[]}(i)); } return sum; } [@vm.bytecode= Bytecode { Entry 2 CheckStack PushConstant CP#0 PopLocal r0 PushConstant CP#1 InstanceCall1 1, CP#3 PopLocal r1 L4: CheckStack Push r1 Push FP[-5] InstanceCall1 1, CP#4 InstanceCall1 2, CP#6 PushConstant CP#7 IfNeStrictTOS Jump L1 Push r1 PushConstant CP#0 InstanceCall1 2, CP#8 PushConstant CP#7 IfNeStrictTOS Jump L2 Jump L3 L2: Push r0 Push FP[-5] Push r1 InstanceCall1 2, CP#9 InstanceCall1 2, CP#10 StoreLocal r0 Drop1 L3: Push r1 PushConstant CP#11 InstanceCall1 2, CP#12 StoreLocal r1 Drop1 Jump L4 L1: Push r0 ReturnTOS PushConstant CP#13 ReturnTOS } ConstantPool { [0] = Int 0 [1] = Int 100 [2] = ArgDesc num-args 1, num-type-args 0, names [] [3] = ICData target-name 'unary-', arg-desc CP#2 [4] = ICData get target-name 'length', arg-desc CP#2 [5] = ArgDesc num-args 2, num-type-args 0, names [] [6] = ICData target-name '<', arg-desc CP#5 [7] = Bool true [8] = ICData target-name '<', arg-desc CP#5 [9] = ICData target-name '[]', arg-desc CP#5 [10] = ICData target-name '+', arg-desc CP#5 [11] = Int 1 [12] = ICData target-name '+', arg-desc CP#5 [13] = Null } ]static method test_for_continue(core::List list) → core::int { core::int sum = 0; for (core::int i = 100.{core::int::unary-}(); i.{core::num::<}(list.{core::List::length}); i = i.{core::num::+}(1)) #L2: { if(i.{core::num::<}(0)) { break #L2; } sum = sum.{core::num::+}(list.{core::List::[]}(i)); } return sum; } [@vm.bytecode= Bytecode { Entry 4 CheckStack PushConstant CP#0 PopLocal r0 PushConstant CP#0 PopLocal r1 L2: CheckStack Push r1 Push FP[-5] InstanceCall1 1, CP#2 InstanceCall1 2, CP#4 PushConstant CP#5 IfNeStrictTOS Jump L1 Push r0 Push FP[-5] Push r1 PopLocal r2 Push r2 PushConstant CP#6 InstanceCall1 2, CP#7 StoreLocal r1 PopLocal r3 Push r2 InstanceCall1 2, CP#8 InstanceCall1 2, CP#9 StoreLocal r0 Drop1 Jump L2 L1: Push r0 ReturnTOS PushConstant CP#10 ReturnTOS } ConstantPool { [0] = Int 0 [1] = ArgDesc num-args 1, num-type-args 0, names [] [2] = ICData get target-name 'length', arg-desc CP#1 [3] = ArgDesc num-args 2, num-type-args 0, names [] [4] = ICData target-name '<', arg-desc CP#3 [5] = Bool true [6] = Int 1 [7] = ICData target-name '+', arg-desc CP#3 [8] = ICData target-name '[]', arg-desc CP#3 [9] = ICData target-name '+', arg-desc CP#3 [10] = Null } ]static method test_while(core::List list) → core::int { core::int sum = 0; core::int i = 0; while (i.{core::num::<}(list.{core::List::length})) { sum = sum.{core::num::+}(list.{core::List::[]}(let final core::int #t1 = i in let final core::int #t2 = i = #t1.{core::num::+}(1) in #t1)); } return sum; } [@vm.bytecode= Bytecode { Entry 2 CheckStack PushConstant CP#0 PopLocal r0 PushConstant CP#0 PopLocal r1 L1: CheckStack Push r0 Push FP[-5] Push r1 InstanceCall1 2, CP#2 InstanceCall1 2, CP#3 StoreLocal r0 Drop1 Push r1 PushConstant CP#4 InstanceCall1 2, CP#5 StoreLocal r1 Drop1 Push r1 Push FP[-5] InstanceCall1 1, CP#7 InstanceCall1 2, CP#8 PushConstant CP#9 IfEqStrictTOS Jump L1 Push r0 ReturnTOS PushConstant CP#10 ReturnTOS } ConstantPool { [0] = Int 0 [1] = ArgDesc num-args 2, num-type-args 0, names [] [2] = ICData target-name '[]', arg-desc CP#1 [3] = ICData target-name '+', arg-desc CP#1 [4] = Int 1 [5] = ICData target-name '+', arg-desc CP#1 [6] = ArgDesc num-args 1, num-type-args 0, names [] [7] = ICData get target-name 'length', arg-desc CP#6 [8] = ICData target-name '<', arg-desc CP#1 [9] = Bool true [10] = Null } ]static method test_do_while(core::List list) → core::int { core::int sum = 0; core::int i = 0; do { sum = sum.{core::num::+}(list.{core::List::[]}(i)); i = i.{core::num::+}(1); } while (i.{core::num::<}(list.{core::List::length})) return sum; } [@vm.bytecode= Bytecode { Entry 3 CheckStack PushConstant CP#0 PopLocal r0 Push FP[-5] InstanceCall1 1, CP#2 PopLocal r1 L2: CheckStack Push r1 InstanceCall1 1, CP#3 PushConstant CP#4 IfNeStrictTOS Jump L1 Push r1 InstanceCall1 1, CP#5 PopLocal r2 Push r0 Push r2 InstanceCall1 2, CP#7 StoreLocal r0 Drop1 Jump L2 L1: Push r0 ReturnTOS PushConstant CP#8 ReturnTOS } ConstantPool { [0] = Int 0 [1] = ArgDesc num-args 1, num-type-args 0, names [] [2] = ICData get target-name 'iterator', arg-desc CP#1 [3] = ICData target-name 'moveNext', arg-desc CP#1 [4] = Bool true [5] = ICData get target-name 'current', arg-desc CP#1 [6] = ArgDesc num-args 2, num-type-args 0, names [] [7] = ICData target-name '+', arg-desc CP#6 [8] = Null } ]static method test_for_in(core::List list) → core::int { core::int sum = 0; for (core::int e in list) { sum = sum.{core::num::+}(e); } return sum; } [@vm.bytecode= Bytecode { Entry 4 CheckStack PushConstant CP#0 PopLocal r0 PushConstant CP#1 PopLocal r1 Push FP[-5] InstanceCall1 1, CP#3 PopLocal r2 L2: CheckStack Push r2 InstanceCall1 1, CP#4 PushConstant CP#5 IfNeStrictTOS Jump L1 Push r2 InstanceCall1 1, CP#6 PopLocal r3 Push r3 StoreLocal r1 Drop1 Push r0 Push r1 InstanceCall1 2, CP#8 StoreLocal r0 Drop1 Jump L2 L1: Push r0 ReturnTOS PushConstant CP#9 ReturnTOS } ConstantPool { [0] = Int 0 [1] = Int 42 [2] = ArgDesc num-args 1, num-type-args 0, names [] [3] = ICData get target-name 'iterator', arg-desc CP#2 [4] = ICData target-name 'moveNext', arg-desc CP#2 [5] = Bool true [6] = ICData get target-name 'current', arg-desc CP#2 [7] = ArgDesc num-args 2, num-type-args 0, names [] [8] = ICData target-name '+', arg-desc CP#7 [9] = Null } ]static method test_for_in_with_outer_var(core::List list) → core::int { core::int sum = 0; core::int e = 42; for (final core::int #t3 in list) { e = #t3; sum = sum.{core::num::+}(e); } return sum; } [@vm.bytecode= Bytecode { Entry 0 CheckStack PushConstant CP#0 ReturnTOS } ConstantPool { [0] = Null } ]static method main() → dynamic {}