blob: e434ee3f88b6573c60e95be88e17bbb18aa396f8 [file] [log] [blame]
------------ C1. ------------
%this = _Parameter #0 [_T (#lib::C1)+]
t1 = _Call direct [dart.core::Object.] (%this)
RESULT: _T {}?
------------ C2. ------------
%this = _Parameter #0 [_T (#lib::C2)+]
t1 = _Call direct [dart.core::Object.] (%this)
RESULT: _T {}?
------------ C3. ------------
%this = _Parameter #0 [_T (#lib::C3)+]
t1 = _Call direct [dart.core::Object.] (%this)
RESULT: _T {}?
------------ C4. ------------
%this = _Parameter #0 [_T (#lib::C4)+]
t1 = _Call direct [dart.core::Object.] (%this)
RESULT: _T {}?
------------ TestEnum. ------------
%this = _Parameter #0 [_T (#lib::TestEnum)+]
%index = _Parameter #1 [_T (dart.core::int)+?]
%_name = _Parameter #2 [_T (dart.core::String)+?]
t3 = _Call direct set [#lib::TestEnum.index] (%this, %index)
t4 = _Call direct set [#lib::TestEnum._name] (%this, %_name)
t5 = _Call direct [dart.core::Object.] (%this)
RESULT: _T {}?
------------ TestEnum.toString ------------
%this = _Parameter #0 [_T (#lib::TestEnum)+]
t1* = _Call virtual get [#lib::TestEnum._name] (%this)
RESULT: t1
------------ TestEnum.values ------------
RESULT: _T (dart.core::_ImmutableList, const <#lib::TestEnum*>[const #lib::TestEnum{#lib::TestEnum.index: 0, #lib::TestEnum._name: "TestEnum.v1"}, const #lib::TestEnum{#lib::TestEnum.index: 1, #lib::TestEnum._name: "TestEnum.v2"}])
------------ TestEnum.v1 ------------
RESULT: _T (#lib::TestEnum, const #lib::TestEnum{#lib::TestEnum.index: 0, #lib::TestEnum._name: "TestEnum.v1"})
------------ TestEnum.v2 ------------
RESULT: _T (#lib::TestEnum, const #lib::TestEnum{#lib::TestEnum.index: 1, #lib::TestEnum._name: "TestEnum.v2"})
------------ foo ------------
%x = _Parameter #0 [_T ANY?]
RESULT: _T {}?
------------ bar ------------
%x = _Parameter #0 [_T ANY?]
RESULT: _T {}?
------------ baz ------------
%x = _Parameter #0 [_T ANY?]
RESULT: _T {}?
------------ sequence ------------
t0 = _Call direct [#lib::C1.] (_T (#lib::C1))
t1 = _Call direct [#lib::C2.] (_T (#lib::C2))
t2* = _Call direct [#lib::C3.] (_T (#lib::C3))
RESULT: t2
------------ if1 ------------
%cond = _Parameter #0 [_T (dart.core::bool)+?]
t1* = _Call direct [#lib::C1.] (_T (#lib::C1))
t2* = _Call direct [#lib::C2.] (_T (#lib::C2))
t3 = _Call direct [#lib::foo] (t2)
x_0 = _Join [dynamic] (t2, t1)
RESULT: x_0
------------ if2 ------------
%cond1 = _Parameter #0 [_T (dart.core::bool)+?]
%cond2 = _Parameter #1 [_T (dart.core::bool)+?]
t2* = _Call direct [#lib::C1.] (_T (#lib::C1))
t3 = _Call direct [#lib::foo] (t2)
t4* = _Call direct [#lib::C2.] (_T (#lib::C2))
t5 = _Call direct [#lib::bar] (t4)
x_0 = _Join [dynamic] (t2, t4)
RESULT: x_0
------------ if3 ------------
%cond1 = _Parameter #0 [_T (dart.core::bool)+?]
%cond2 = _Parameter #1 [_T (dart.core::bool)+?]
t2 = _Call direct [#lib::C1.] (_T (#lib::C1))
t3* = _Call direct [#lib::C2.] (_T (#lib::C2))
t4* = _Call direct [#lib::foo] (t3)
t5 = _TypeCheck (t4 against dart.core::bool*) (for #lib::foo(x = new #lib::C2()) as dart.core::bool*)
t6* = _Call direct [#lib::C3.] (_T (#lib::C3))
t7* = _Call direct [#lib::foo] (t6)
t8 = _TypeCheck (t7 against dart.core::bool*) (for #lib::foo(x = new #lib::C3()) as dart.core::bool*)
x_0 = _Join [dynamic] (t3, t6)
t10 = _Call direct [#lib::bar] (x_0)
RESULT: x_0
------------ if4 ------------
t0 = _Call direct [#lib::C1.] (_T (#lib::C1))
t1* = _Call direct [#lib::C2.] (_T (#lib::C2))
t2* = _Call direct [#lib::foo] (t1)
t3 = _TypeCheck (t2 against dart.core::bool*) (for #lib::foo(x = new #lib::C2()) as dart.core::bool*)
t4* = _Call direct [#lib::C3.] (_T (#lib::C3))
t5* = _Call direct [#lib::foo] (t4)
t6 = _TypeCheck (t5 against dart.core::bool*) (for #lib::foo(x = new #lib::C3()) as dart.core::bool*)
t7 = _Call direct [#lib::bar] (t4)
x_0 = _Join [dynamic] (t1, t4)
RESULT: x_0
------------ if5 ------------
%cond = _Parameter #0 [_T (dart.core::bool)+?]
t1* = _Call direct [#lib::C1.] (_T (#lib::C1))
t2 = _Call direct [#lib::C2.] (_T (#lib::C2))
t3 = _Call direct [#lib::foo] (t1)
RESULT: _T {}?
------------ if6a ------------
%x = _Parameter #0 [_T (dart.core::bool)+?]
t1 = _Call direct [#lib::foo] (_T (dart.core::bool, true))
t2 = _Call direct [#lib::bar] (_T (dart.core::bool, false))
x_0 = _Join [dart.core::bool*] (_T (dart.core::bool, true), _T (dart.core::bool, false))
t4 = _Call direct [#lib::baz] (x_0)
RESULT: _T {}?
------------ if6b ------------
%x = _Parameter #0 [_T ANY?]
t1 = _TypeCheck (%x against dart.core::bool*) (for x as dart.core::bool*)
t2 = _Call direct [#lib::foo] (_T (dart.core::bool, true))
t3 = _Call direct [#lib::bar] (_T (dart.core::bool, false))
x_0 = _Join [dynamic] (_T (dart.core::bool, true), _T (dart.core::bool, false))
t5 = _Call direct [#lib::baz] (x_0)
RESULT: _T {}?
------------ if7 ------------
%x = _Parameter #0 [_T (dart.core::int)+?]
%y = _Parameter #1 [_T (dart.core::String)+?]
%z = _Parameter #2 [_T ANY?]
t3* = _Call [dart.core::num.==] (%x, _T (dart.core::_Smi, 5))
t4* = _Call [dart.core::String.==] (%y, _T (dart.core::_OneByteString, "hi"))
t5 = _Call direct [dart.core::Object.==] (%z, _T {}?)
t6 = _Narrow (%z to _T ANY)
t7 = _Call direct [#lib::foo] (_T (dart.core::_Smi, 5))
t8 = _Call direct [#lib::foo] (_T (dart.core::_OneByteString, "hi"))
t9 = _Call direct [#lib::foo] (t6)
RESULT: _T {}?
------------ if8 ------------
%x = _Parameter #0 [_T ANY?]
t1 = _Narrow (%x to _T (dart.core::String)+)
t2 = _Call direct [#lib::foo] (t1)
RESULT: _T {}?
------------ if9 ------------
%x = _Parameter #0 [_T (#lib::TestEnum)+?]
t1* = _Call [#lib::TestEnum.==] (%x, _T (#lib::TestEnum, const #lib::TestEnum{#lib::TestEnum.index: 0, #lib::TestEnum._name: "TestEnum.v1"}))
t2 = _Call direct [#lib::foo] (_T (#lib::TestEnum, const #lib::TestEnum{#lib::TestEnum.index: 0, #lib::TestEnum._name: "TestEnum.v1"}))
RESULT: _T {}?
------------ conditional1 ------------
%cond1 = _Parameter #0 [_T (dart.core::bool)+?]
%cond2 = _Parameter #1 [_T (dart.core::bool)+?]
t2 = _Call direct [#lib::C1.] (_T (#lib::C1))
t3* = _Call direct [#lib::C2.] (_T (#lib::C2))
t4* = _Call direct [#lib::foo] (t3)
t5 = _TypeCheck (t4 against dart.core::bool*) (for #lib::foo(x = new #lib::C2()) as dart.core::bool*)
t6* = _Call direct [#lib::C3.] (_T (#lib::C3))
t7* = _Call direct [#lib::C4.] (_T (#lib::C4))
x_0 = _Join [dynamic] (t6, t7)
t9 = _Call direct [#lib::foo] (x_0)
t10 = _Join [dart.core::Object*] (t6, t7)
t11 = _Narrow (t10 to _T (dart.core::Object)+?)
t12 = _Call direct [#lib::bar] (t11)
RESULT: _T {}?
------------ conditional2 ------------
%cond1 = _Parameter #0 [_T (dart.core::bool)+?]
%cond2 = _Parameter #1 [_T (dart.core::bool)+?]
t2 = _Call direct [#lib::C1.] (_T (#lib::C1))
t3* = _Call direct [#lib::C2.] (_T (#lib::C2))
t4* = _Call direct [#lib::foo] (t3)
t5 = _TypeCheck (t4 against dart.core::bool*) (for #lib::foo(x = new #lib::C2()) as dart.core::bool*)
t6* = _Call direct [#lib::C3.] (_T (#lib::C3))
t7* = _Call direct [#lib::C4.] (_T (#lib::C4))
t8* = _Call direct [dart.core::_GrowableList._literal2] (#lib::C4*, t7, _T {})
t9* = _Call direct [#lib::foo] (t8)
t10 = _Call direct [#lib::foo] (t6)
t11 = _Join [dynamic] (t6, t9)
t12 = _Call direct [#lib::bar] (t11)
RESULT: _T {}?
------------ loop1 ------------
t0* = _Call direct [#lib::C1.] (_T (#lib::C1))
t1* = _Call direct [#lib::C2.] (_T (#lib::C2))
x_0 = _Join [dynamic] (t0, t1)
t3* = _Call direct [#lib::foo] (x_0)
t4 = _TypeCheck (t3 against dart.core::bool*) (for #lib::foo(x) as dart.core::bool*)
t5 = _Call direct [#lib::bar] (x_0)
RESULT: x_0
------------ loop2 ------------
t0* = _Call direct [#lib::C1.] (_T (#lib::C1))
t1* = _Call direct [#lib::C3.] (_T (#lib::C3))
x_0 = _Join [dynamic] (t0, t1)
t3 = _Call direct [#lib::foo] (x_0)
t4* = _Call direct [#lib::C2.] (_T (#lib::C2))
t5 = _Call direct [#lib::bar] (t4)
t6* = _Call direct [#lib::bar] (t1)
t7 = _TypeCheck (t6 against dart.core::bool*) (for #lib::bar(x = new #lib::C3()) as dart.core::bool*)
RESULT: t1
------------ loop3 ------------
t0 = _Call direct [#lib::C1.] (_T (#lib::C1))
t1* = _Call direct [#lib::C2.] (_T (#lib::C2))
t2* = _Call direct [#lib::foo] (t1)
t3 = _TypeCheck (t2 against dart.core::bool*) (for #lib::foo(x = new #lib::C2()) as dart.core::bool*)
t4 = _Call direct [#lib::C3.] (_T (#lib::C3))
t5 = _Call direct [#lib::bar] (t1)
RESULT: t1
------------ loop4 ------------
t0 = _Call direct [#lib::C1.] (_T (#lib::C1))
t1* = _Call direct [#lib::C2.] (_T (#lib::C2))
t2* = _Call direct [#lib::foo] (t1)
t3* = _Call direct [dart.core::_GrowableList._literal1] (dynamic?, t2)
t4* = _Call get [dart.core::Iterable.iterator] (t3)
t5* = _Call [dart.core::Iterator.moveNext] (t4)
t6 = _Narrow (t4 to _T ANY)
t7 = _Call get [dart.core::Iterator.current] (t6)
t8* = _Call direct [#lib::C3.] (_T (#lib::C3))
x_0 = _Join [dynamic] (t1, t8)
t10 = _Call direct [#lib::foo] (x_0)
RESULT: x_0
------------ loop5 ------------
t0* = _Call direct [#lib::C1.] (_T (#lib::C1))
t1* = _Call direct [#lib::C3.] (_T (#lib::C3))
x_0 = _Join [dynamic] (t0, t1)
t3* = _Call direct [#lib::foo] (x_0)
t4 = _TypeCheck (t3 against dart.core::bool*) (for #lib::foo(x) as dart.core::bool*)
t5* = _Call direct [#lib::C2.] (_T (#lib::C2))
t6* = _Call direct [#lib::bar] (t5)
t7 = _TypeCheck (t6 against dart.core::bool*) (for #lib::bar(x) as dart.core::bool*)
x_1 = _Join [dynamic] (x_0, t5)
RESULT: x_1
------------ loop6 ------------
t0* = _Call direct [#lib::C1.] (_T (#lib::C1))
t1* = _Call direct [#lib::C3.] (_T (#lib::C3))
t2* = _Call direct [#lib::C2.] (_T (#lib::C2))
x_1 = _Join [dynamic] (t1, t2)
x_0 = _Join [dynamic] (t0, x_1)
t5* = _Call direct [#lib::foo] (x_0)
t6 = _TypeCheck (t5 against dart.core::bool*) (for #lib::foo(x) as dart.core::bool*)
t7* = _Call direct [#lib::bar] (t2)
t8 = _TypeCheck (t7 against dart.core::bool*) (for #lib::bar(x) as dart.core::bool*)
RESULT: x_0
------------ try1 ------------
t0* = _Call direct [#lib::C1.] (_T (#lib::C1))
t1* = _Call direct [#lib::C2.] (_T (#lib::C2))
t2* = _Call direct [#lib::C3.] (_T (#lib::C3))
x_0 = _Join [dynamic] (t0, t1, t2)
t4 = _Call direct [#lib::foo] (x_0)
t5 = _Call direct [#lib::bar] (x_0)
t6* = _Call direct [#lib::C4.] (_T (#lib::C4))
RESULT: t6
------------ closure1 ------------
t0* = _Call direct [#lib::C1.] (_T (#lib::C1))
t1* = _Call direct [#lib::C2.] (_T (#lib::C2))
x_0 = _Join [dynamic] (t0, t1)
t3 = _Call direct [#lib::foo] (x_0)
t4 = _Call direct [#lib::bar] (x_0)
t5 = _Call direct [#lib::foo] (_T ANY?)
RESULT: _T {}?
------------ closure2 ------------
t0* = _Call direct [#lib::C1.] (_T (#lib::C1))
t1* = _Call direct [#lib::C2.] (_T (#lib::C2))
x_0 = _Join [dynamic] (t0, t1)
t3 = _Call direct [#lib::foo] (x_0)
t4 = _Call direct [#lib::foo] (_T ANY?)
RESULT: x_0
------------ switch1 ------------
%selector = _Parameter #0 [_T (dart.core::int)+?]
t1* = _Call direct [#lib::C1.] (_T (#lib::C1))
t2* = _Call direct [#lib::C2.] (_T (#lib::C2))
t3* = _Call direct [#lib::C3.] (_T (#lib::C3))
x_2 = _Join [dynamic] (t3, t1)
x_3 = _Join [dynamic] (x_2, t2)
RESULT: x_3
------------ switch2 ------------
%selector = _Parameter #0 [_T (dart.core::int)+?]
t1 = _Call direct [#lib::C1.] (_T (#lib::C1))
t2* = _Call direct [#lib::C2.] (_T (#lib::C2))
t3* = _Call direct [#lib::C3.] (_T (#lib::C3))
x_2 = _Join [dynamic] (t3, t2)
RESULT: x_2
------------ switch3 ------------
%selector = _Parameter #0 [_T (dart.core::int)+?]
t1* = _Call direct [#lib::C1.] (_T (#lib::C1))
t2* = _Call direct [#lib::C2.] (_T (#lib::C2))
x_1 = _Join [dynamic] (t1, t2)
t4 = _Call direct [#lib::foo] (x_1)
t5* = _Call direct [#lib::C3.] (_T (#lib::C3))
x_2 = _Join [dynamic] (t1, t5)
RESULT: x_2
------------ cast1 ------------
%x = _Parameter #0 [_T ANY?]
t1 = _TypeCheck (%x against #lib::C1*) (for x as #lib::C1*)
t2 = _Call direct [#lib::foo] (t1)
t3 = _Call direct [#lib::bar] (t1)
RESULT: _T {}?
------------ main ------------
RESULT: _T {}?