library #lib; import self as self; import "dart:core" as core; [@vm.bytecode= Bytecode { Entry 2 CheckStack PushNull PopLocal r0 Push FP[-5] PopLocal r1 Push r1 PushInt 1 InstanceCall 2, CP#1 PushTrue IfEqStrictTOS Jump L1 Push r1 PushInt 2 InstanceCall 2, CP#2 PushTrue IfEqStrictTOS Jump L2 Push r1 PushInt 3 InstanceCall 2, CP#3 PushTrue IfEqStrictTOS Jump L3 Jump L4 L1: PushInt 11 PopLocal r0 Jump L4 L2: PushInt 22 PopLocal r0 Jump L4 L3: PushInt 33 PopLocal r0 Jump L4 L4: Push r0 ReturnTOS PushNull ReturnTOS } ConstantPool { [0] = ArgDesc num-args 2, num-type-args 0, names [] [1] = ICData target-name '==', arg-desc CP#0 [2] = ICData target-name '==', arg-desc CP#0 [3] = ICData target-name '==', arg-desc CP#0 } ]static method foo1(core::int x) → core::int { core::int y; #L1: switch(x) { #L2: case 1: { y = 11; break #L1; } #L3: case 2: { y = 22; break #L1; } #L4: case 3: { y = 33; break #L1; } } return y; } [@vm.bytecode= Bytecode { Entry 2 CheckStack PushNull PopLocal r0 Push FP[-5] PopLocal r1 Push r1 PushInt 1 InstanceCall 2, CP#1 PushTrue IfEqStrictTOS Jump L1 Push r1 PushInt 2 InstanceCall 2, CP#2 PushTrue IfEqStrictTOS Jump L1 Push r1 PushInt 3 InstanceCall 2, CP#3 PushTrue IfEqStrictTOS Jump L1 Push r1 PushInt 4 InstanceCall 2, CP#4 PushTrue IfEqStrictTOS Jump L2 Push r1 PushInt 5 InstanceCall 2, CP#5 PushTrue IfEqStrictTOS Jump L2 Push r1 PushInt 6 InstanceCall 2, CP#6 PushTrue IfEqStrictTOS Jump L2 Jump L3 L1: PushInt 11 PopLocal r0 Jump L4 L2: PushInt 22 PopLocal r0 Jump L4 L3: PushInt 33 PopLocal r0 L4: Push r0 ReturnTOS PushNull ReturnTOS } ConstantPool { [0] = ArgDesc num-args 2, num-type-args 0, names [] [1] = ICData target-name '==', arg-desc CP#0 [2] = ICData target-name '==', arg-desc CP#0 [3] = ICData target-name '==', arg-desc CP#0 [4] = ICData target-name '==', arg-desc CP#0 [5] = ICData target-name '==', arg-desc CP#0 [6] = ICData target-name '==', arg-desc CP#0 } ]static method foo2(core::int x) → core::int { core::int y; #L5: switch(x) { #L6: case 1: case 2: case 3: { y = 11; break #L5; } #L7: case 4: case 5: case 6: { y = 22; break #L5; } #L8: default: { y = 33; } } return y; } [@vm.bytecode= Bytecode { Entry 2 CheckStack PushNull PopLocal r0 Push FP[-5] PopLocal r1 Push r1 PushInt 1 InstanceCall 2, CP#1 PushTrue IfEqStrictTOS Jump L1 Push r1 PushInt 2 InstanceCall 2, CP#2 PushTrue IfEqStrictTOS Jump L1 Push r1 PushInt 3 InstanceCall 2, CP#3 PushTrue IfEqStrictTOS Jump L1 Push r1 PushInt 4 InstanceCall 2, CP#4 PushTrue IfEqStrictTOS Jump L2 Push r1 PushInt 5 InstanceCall 2, CP#5 PushTrue IfEqStrictTOS Jump L2 Push r1 PushInt 6 InstanceCall 2, CP#6 PushTrue IfEqStrictTOS Jump L2 Jump L3 L1: PushInt 11 PopLocal r0 Jump L2 L2: PushInt 22 PopLocal r0 PushInt 42 ReturnTOS L3: PushInt 33 PopLocal r0 Push r0 ReturnTOS PushNull ReturnTOS } ConstantPool { [0] = ArgDesc num-args 2, num-type-args 0, names [] [1] = ICData target-name '==', arg-desc CP#0 [2] = ICData target-name '==', arg-desc CP#0 [3] = ICData target-name '==', arg-desc CP#0 [4] = ICData target-name '==', arg-desc CP#0 [5] = ICData target-name '==', arg-desc CP#0 [6] = ICData target-name '==', arg-desc CP#0 } ]static method foo3(core::int x) → core::int { core::int y; switch(x) { #L9: case 1: case 2: case 3: { y = 11; continue #L10; } #L10: case 4: case 5: case 6: { y = 22; return 42; } #L11: default: { y = 33; } } return y; } [@vm.bytecode= Bytecode { Entry 0 CheckStack PushNull ReturnTOS } ConstantPool { } ]static method main() → dynamic {}