Running HelloWorld with: MONO_ENV_OPTIONS= ../../../../artifacts/obj/mono/osx.arm64.Debug/mono/mini/mono-sgen ../../../../artifacts/bin/HelloWorld/arm64/Debug/osx-arm64/publish/HelloWorld.dll converting method bool System.Threading.Channels.UnboundedChannel`2/UnboundedChannelReader>:TryRead (int&) created temp 0 (R32) of type System.Byte creating vars created temp 1 (R33) of type System.IntPtr created temp 2 (R34) of type System.IntPtr return : arg R32 <- this: arg R33 <- arg [0]: arg R34 <- creating locals local [0]: created temp 3 (R35) of type System.Threading.Channels.UnboundedChannel> local [1]: created temp 4 (R36) of type System.Threading.Channels.Channel.UnboundedChannelConcurrentQueue local [2]: created temp 5 (R37) of type System.Byte locals done method to IR System.Threading.Channels.UnboundedChannel`2/UnboundedChannelReader>:TryRead (int&) converting (in B3: stack: 0) IL_0000: nop converting (in B3: stack: 0) IL_0001: ldarg.0 converting (in B3: stack: 1) IL_0002: ldfld 0x0a000194 converting (in B3: stack: 1) IL_0007: stloc.0 converting (in B3: stack: 0) IL_0008: ldloc.0 converting (in B3: stack: 1) IL_0009: ldfld 0x0a00018a converting (in B3: stack: 1) IL_000e: stloc.1 converting (in B3: stack: 0) IL_000f: ldloca.s 1 converting (in B3: stack: 1) IL_0011: constrained.0x1b00004b converting (in B3: stack: 1) IL_0017: callvirt 0x0a000197 cmethod = bool System.Threading.Channels.IUnboundedChannelQueue`1:get_IsThreadSafe () Constrained call to System.Threading.Channels.Channel+UnboundedChannelConcurrentQueue`1[System.Int32] converting (in B3: stack: 1) IL_001c: brtrue.s IL_0027 converting (in B5: stack: 0) IL_001e: ldloc.0 converting (in B5: stack: 1) IL_001f: ldarg.1 converting (in B5: stack: 2) IL_0020: call 0x0a00019b cmethod = bool System.Threading.Channels.UnboundedChannel`2/UnboundedChannelReader>:g__Locked|13_1 (System.Threading.Channels.UnboundedChannel`2>,int&) converting (in B5: stack: 1) IL_0025: br.s IL_002e 1 item(s) on exit from B5 created temp 6 (R52) of type System.Int32 storing 0 to temp 6 converting (in B4: stack: 0) IL_0027: ldloc.0 converting (in B4: stack: 1) IL_0028: ldarg.1 converting (in B4: stack: 2) IL_0029: call 0x0a00019c cmethod = bool System.Threading.Channels.UnboundedChannel`2/UnboundedChannelReader>:g__LockFree|13_0 (System.Threading.Channels.UnboundedChannel`2>,int&) 1 item(s) on exit from B4 storing 0 to temp 6 loading 0 from temp 6 converting (in B6: stack: 1) IL_002e: stloc.2 converting (in B6: stack: 0) IL_002f: br.s IL_0031 converting (in B7: stack: 0) IL_0031: ldloc.2 converting (in B7: stack: 1) IL_0032: ret REGION BB0 IL_0000 ID_FFFFFFFF REGION BB2 IL_0000 ID_FFFFFFFF REGION BB3 IL_001c ID_FFFFFFFF REGION BB5 IL_0025 ID_FFFFFFFF REGION BB4 IL_0029 ID_FFFFFFFF REGION BB6 IL_002f ID_FFFFFFFF REGION BB7 IL_0032 ID_FFFFFFFF REGION BB1 IL_0000 ID_FFFFFFFF AFTER METHOD-TO-IR 0: [IN: , OUT: BB2(0) ] AFTER METHOD-TO-IR 2: [IN: BB0(0), OUT: BB3(0) ] i8const R35 <- [0] vzero R36 <- iconst R37 <- [0] AFTER METHOD-TO-IR 3: [IN: BB2(0), OUT: BB4(0) BB5(0) ] il_seq_point intr il: 0x0 nop il_seq_point il: 0x1 move R38 <- R33 load_membase R39 <- [R38 + 0x10] move R35 <- R39 il_seq_point il: 0x8 move R40 <- R35 loadv_membase R41 <- R40 vmove R36 <- R41 il_seq_point il: 0xf ldaddr R42 <- R36 move R44 <- R42 call R43 <- [bool System.Threading.Channels.Channel/UnboundedChannelConcurrentQueue`1:get_IsThreadSafe ()] [r0 <- R44] clobbers: c int_conv_to_u1 R45 <- R43 il_seq_point il: 0x1c, nonempty-stack icompare_imm R45 [0] int_bne_un [T:B4 F:B5] AFTER METHOD-TO-IR 5: [IN: BB3(0), OUT: BB6(0) ] il_seq_point il: 0x1e move R46 <- R35 move R47 <- R34 move R49 <- R46 move R50 <- R47 call R48 <- [bool System.Threading.Channels.UnboundedChannel`2/UnboundedChannelReader>:g__Locked|13_1 (System.Threading.Channels.UnboundedChannel`2>,int&)] [r0 <- R49] [r1 <- R50] clobbers: c int_conv_to_u1 R51 <- R48 il_seq_point il: 0x25, nonempty-stack move R52 <- R51 br [B6] AFTER METHOD-TO-IR 4: [IN: BB3(0), OUT: BB6(0) ] il_seq_point il: 0x27 move R53 <- R35 move R54 <- R34 move R56 <- R53 move R57 <- R54 call R55 <- [bool System.Threading.Channels.UnboundedChannel`2/UnboundedChannelReader>:g__LockFree|13_0 (System.Threading.Channels.UnboundedChannel`2>,int&)] [r0 <- R56] [r1 <- R57] clobbers: c int_conv_to_u1 R58 <- R55 il_seq_point il: 0x2e, nonempty-stack move R52 <- R58 AFTER METHOD-TO-IR 6: [IN: BB5(0) BB4(0), OUT: BB7(0) ] move R59 <- R52 int_conv_to_u1 R60 <- R59 move R37 <- R60 il_seq_point il: 0x2f br [B7] AFTER METHOD-TO-IR 7: [IN: BB6(0), OUT: BB1(0) ] il_seq_point il: 0x31 move R61 <- R37 il_seq_point intr il: 0x32 move R32 <- R61 br [B1] AFTER METHOD-TO-IR 1: [IN: BB7(0), OUT: ] CCOPY/2: R38 -> R33 CCOPY/2: R46 -> R35 CCOPY/2: R47 -> R34 CCOPY/2: R53 -> R35 CCOPY/2: R54 -> R34 CCOPY/2: R59 -> R52 CCOPY/2: R61 -> R37 block merge triggered 2 -> 3 br removal triggered 6 -> 7 block merge triggered 6 -> 7 br removal triggered 6 -> 1 HANDLE-GLOBAL-VREGS BLOCK 0: HANDLE-GLOBAL-VREGS BLOCK 2: i8const R35 <- [0] vzero R36 <- iconst R37 <- [0] il_seq_point intr il: 0x0 il_seq_point il: 0x1 move R38 <- R33 load_membase R39 <- [R33 + 0x10] move R35 <- R39 il_seq_point il: 0x8 move R40 <- R35 loadv_membase R41 <- R40 vmove R36 <- R41 il_seq_point il: 0xf ldaddr R42 <- R36 ldaddr R44 <- R36 call R43 <- [bool System.Threading.Channels.Channel/UnboundedChannelConcurrentQueue`1:get_IsThreadSafe ()] [r0 <- R44] clobbers: c int_conv_to_u1 R45 <- R43 il_seq_point il: 0x1c, nonempty-stack icompare_imm R45 [0] int_bne_un [T:B4 F:B5] HANDLE-GLOBAL-VREGS BLOCK 5: il_seq_point il: 0x1e move R46 <- R35 move R47 <- R34 move R49 <- R35 move R50 <- R34 call R48 <- [bool System.Threading.Channels.UnboundedChannel`2/UnboundedChannelReader>:g__Locked|13_1 (System.Threading.Channels.UnboundedChannel`2>,int&)] [r0 <- R49] [r1 <- R50] clobbers: c int_conv_to_u1 R51 <- R48 il_seq_point il: 0x25, nonempty-stack move R52 <- R51 br [B6] HANDLE-GLOBAL-VREGS BLOCK 4: il_seq_point il: 0x27 move R53 <- R35 move R54 <- R34 move R56 <- R35 move R57 <- R34 call R55 <- [bool System.Threading.Channels.UnboundedChannel`2/UnboundedChannelReader>:g__LockFree|13_0 (System.Threading.Channels.UnboundedChannel`2>,int&)] [r0 <- R56] [r1 <- R57] clobbers: c int_conv_to_u1 R58 <- R55 il_seq_point il: 0x2e, nonempty-stack move R52 <- R58 HANDLE-GLOBAL-VREGS BLOCK 6: move R59 <- R52 int_conv_to_u1 R60 <- R52 move R37 <- R60 il_seq_point il: 0x2f nop il_seq_point il: 0x31 move R61 <- R37 il_seq_point intr il: 0x32 move R32 <- R37 nop HANDLE-GLOBAL-VREGS BLOCK 1: Reverse copyprop in BB2 on vmove R36 <- R41 Reverse copyprop in BB2 on move R35 <- R39 Reverse copyprop in BB5 on move R52 <- R51 Reverse copyprop in BB4 on move R52 <- R58 Reverse copyprop in BB6 on move R37 <- R60 BEFORE ALIAS_ANALYSIS 0: [IN: , OUT: BB2(0) ] BEFORE ALIAS_ANALYSIS 2: [IN: BB0(0), OUT: BB4(0) BB5(0) ] vzero R36 <- iconst R37 <- [0] il_seq_point intr il: 0x0 il_seq_point il: 0x1 load_membase R35 <- [R33 + 0x10] il_seq_point il: 0x8 move R40 <- R35 loadv_membase R36 <- R40 il_seq_point il: 0xf ldaddr R44 <- R36 call R43 <- [bool System.Threading.Channels.Channel/UnboundedChannelConcurrentQueue`1:get_IsThreadSafe ()] [r0 <- R44] clobbers: c int_conv_to_u1 R45 <- R43 il_seq_point il: 0x1c, nonempty-stack icompare_imm R45 [0] int_bne_un [T:B4 F:B5] BEFORE ALIAS_ANALYSIS 5: [IN: BB2(0), OUT: BB6(0) ] il_seq_point il: 0x1e move R49 <- R35 move R50 <- R34 call R48 <- [bool System.Threading.Channels.UnboundedChannel`2/UnboundedChannelReader>:g__Locked|13_1 (System.Threading.Channels.UnboundedChannel`2>,int&)] [r0 <- R49] [r1 <- R50] clobbers: c int_conv_to_u1 R52 <- R48 il_seq_point il: 0x25, nonempty-stack br [B6] BEFORE ALIAS_ANALYSIS 4: [IN: BB2(0), OUT: BB6(0) ] il_seq_point il: 0x27 move R56 <- R35 move R57 <- R34 call R55 <- [bool System.Threading.Channels.UnboundedChannel`2/UnboundedChannelReader>:g__LockFree|13_0 (System.Threading.Channels.UnboundedChannel`2>,int&)] [r0 <- R56] [r1 <- R57] clobbers: c int_conv_to_u1 R52 <- R55 il_seq_point il: 0x2e, nonempty-stack BEFORE ALIAS_ANALYSIS 6: [IN: BB5(0) BB4(0), OUT: BB1(0) ] int_conv_to_u1 R37 <- R52 il_seq_point il: 0x2f il_seq_point il: 0x31 il_seq_point intr il: 0x32 move R32 <- R37 BEFORE ALIAS_ANALYSIS 1: [IN: BB6(0), OUT: ] New address: ldaddr R44 <- R36 AFTER ALIAS_ANALYSIS 0: [IN: , OUT: BB2(0) ] AFTER ALIAS_ANALYSIS 2: [IN: BB0(0), OUT: BB4(0) BB5(0) ] vzero R36 <- iconst R37 <- [0] il_seq_point intr il: 0x0 il_seq_point il: 0x1 load_membase R35 <- [R33 + 0x10] il_seq_point il: 0x8 move R40 <- R35 loadv_membase R36 <- R40 il_seq_point il: 0xf ldaddr R44 <- R36 call R43 <- [bool System.Threading.Channels.Channel/UnboundedChannelConcurrentQueue`1:get_IsThreadSafe ()] [r0 <- R44] clobbers: c int_conv_to_u1 R45 <- R43 il_seq_point il: 0x1c, nonempty-stack icompare_imm R45 [0] int_bne_un [T:B4 F:B5] AFTER ALIAS_ANALYSIS 5: [IN: BB2(0), OUT: BB6(0) ] il_seq_point il: 0x1e move R49 <- R35 move R50 <- R34 call R48 <- [bool System.Threading.Channels.UnboundedChannel`2/UnboundedChannelReader>:g__Locked|13_1 (System.Threading.Channels.UnboundedChannel`2>,int&)] [r0 <- R49] [r1 <- R50] clobbers: c int_conv_to_u1 R52 <- R48 il_seq_point il: 0x25, nonempty-stack br [B6] AFTER ALIAS_ANALYSIS 4: [IN: BB2(0), OUT: BB6(0) ] il_seq_point il: 0x27 move R56 <- R35 move R57 <- R34 call R55 <- [bool System.Threading.Channels.UnboundedChannel`2/UnboundedChannelReader>:g__LockFree|13_0 (System.Threading.Channels.UnboundedChannel`2>,int&)] [r0 <- R56] [r1 <- R57] clobbers: c int_conv_to_u1 R52 <- R55 il_seq_point il: 0x2e, nonempty-stack AFTER ALIAS_ANALYSIS 6: [IN: BB5(0) BB4(0), OUT: BB1(0) ] int_conv_to_u1 R37 <- R52 il_seq_point il: 0x2f il_seq_point il: 0x31 il_seq_point intr il: 0x32 move R32 <- R37 AFTER ALIAS_ANALYSIS 1: [IN: BB6(0), OUT: ] BB0 IN: BB2 IN: 0 BB4 IN: 2 BB6 IN: 5 4 BB1 IN: 6 BB5 IN: 2 DTREE System.Threading.Channels.UnboundedChannel`2/UnboundedChannelReader>:TryRead (int&) 0 BB0(dfn=0) (IDOM=BB-1): BB0 BB2(dfn=1) (IDOM=BB0): BB0 BB2 BB4(dfn=2) (IDOM=BB2): BB0 BB2 BB4 BB6(dfn=3) (IDOM=BB2): BB0 BB2 BB6 BB1(dfn=4) (IDOM=BB6): BB0 BB2 BB6 BB1 BB5(dfn=5) (IDOM=BB2): BB0 BB2 BB5 INSERTING SAFEPOINTS BEFORE SAFEPOINTS 0: [IN: , OUT: BB2(1) ] BEFORE SAFEPOINTS 2: [IN: BB0(0), OUT: BB4(2) BB5(5) ] vzero R36 <- iconst R37 <- [0] il_seq_point intr il: 0x0 il_seq_point il: 0x1 load_membase R35 <- [R33 + 0x10] il_seq_point il: 0x8 move R40 <- R35 loadv_membase R36 <- R40 il_seq_point il: 0xf ldaddr R44 <- R36 call R43 <- [bool System.Threading.Channels.Channel/UnboundedChannelConcurrentQueue`1:get_IsThreadSafe ()] [r0 <- R44] clobbers: c int_conv_to_u1 R45 <- R43 il_seq_point il: 0x1c, nonempty-stack icompare_imm R45 [0] int_bne_un [T:B4 F:B5] BEFORE SAFEPOINTS 5: [IN: BB2(1), OUT: BB6(3) ] il_seq_point il: 0x1e move R49 <- R35 move R50 <- R34 call R48 <- [bool System.Threading.Channels.UnboundedChannel`2/UnboundedChannelReader>:g__Locked|13_1 (System.Threading.Channels.UnboundedChannel`2>,int&)] [r0 <- R49] [r1 <- R50] clobbers: c int_conv_to_u1 R52 <- R48 il_seq_point il: 0x25, nonempty-stack br [B6] BEFORE SAFEPOINTS 4: [IN: BB2(1), OUT: BB6(3) ] il_seq_point il: 0x27 move R56 <- R35 move R57 <- R34 call R55 <- [bool System.Threading.Channels.UnboundedChannel`2/UnboundedChannelReader>:g__LockFree|13_0 (System.Threading.Channels.UnboundedChannel`2>,int&)] [r0 <- R56] [r1 <- R57] clobbers: c int_conv_to_u1 R52 <- R55 il_seq_point il: 0x2e, nonempty-stack BEFORE SAFEPOINTS 6: [IN: BB5(5) BB4(2), OUT: BB1(4) ] int_conv_to_u1 R37 <- R52 il_seq_point il: 0x2f il_seq_point il: 0x31 il_seq_point intr il: 0x32 move R32 <- R37 BEFORE SAFEPOINTS 1: [IN: BB6(3), OUT: ] ADDING SAFE POINT TO BB 0 AFTER SAFEPOINTS 0: [IN: , OUT: BB2(1) ] i8const R62 <- [4328589568] gc_safe_point R62 clobbers: c AFTER SAFEPOINTS 2: [IN: BB0(0), OUT: BB4(2) BB5(5) ] vzero R36 <- iconst R37 <- [0] il_seq_point intr il: 0x0 il_seq_point il: 0x1 load_membase R35 <- [R33 + 0x10] il_seq_point il: 0x8 move R40 <- R35 loadv_membase R36 <- R40 il_seq_point il: 0xf ldaddr R44 <- R36 call R43 <- [bool System.Threading.Channels.Channel/UnboundedChannelConcurrentQueue`1:get_IsThreadSafe ()] [r0 <- R44] clobbers: c int_conv_to_u1 R45 <- R43 il_seq_point il: 0x1c, nonempty-stack icompare_imm R45 [0] int_bne_un [T:B4 F:B5] AFTER SAFEPOINTS 5: [IN: BB2(1), OUT: BB6(3) ] il_seq_point il: 0x1e move R49 <- R35 move R50 <- R34 call R48 <- [bool System.Threading.Channels.UnboundedChannel`2/UnboundedChannelReader>:g__Locked|13_1 (System.Threading.Channels.UnboundedChannel`2>,int&)] [r0 <- R49] [r1 <- R50] clobbers: c int_conv_to_u1 R52 <- R48 il_seq_point il: 0x25, nonempty-stack br [B6] AFTER SAFEPOINTS 4: [IN: BB2(1), OUT: BB6(3) ] il_seq_point il: 0x27 move R56 <- R35 move R57 <- R34 call R55 <- [bool System.Threading.Channels.UnboundedChannel`2/UnboundedChannelReader>:g__LockFree|13_0 (System.Threading.Channels.UnboundedChannel`2>,int&)] [r0 <- R56] [r1 <- R57] clobbers: c int_conv_to_u1 R52 <- R55 il_seq_point il: 0x2e, nonempty-stack AFTER SAFEPOINTS 6: [IN: BB5(5) BB4(2), OUT: BB1(4) ] int_conv_to_u1 R37 <- R52 il_seq_point il: 0x2f il_seq_point il: 0x31 il_seq_point intr il: 0x32 move R32 <- R37 AFTER SAFEPOINTS 1: [IN: BB6(3), OUT: ] BEFORE LOWER-VTYPE-OPTS 0: [IN: , OUT: BB2(1) ] i8const R62 <- [4328589568] gc_safe_point R62 clobbers: c AFTER LOWER-VTYPE-OPTS 0: [IN: , OUT: BB2(1) ] i8const R62 <- [4328589568] gc_safe_point R62 clobbers: c BEFORE LOWER-VTYPE-OPTS 2: [IN: BB0(0), OUT: BB4(2) BB5(5) ] vzero R36 <- iconst R37 <- [0] il_seq_point intr il: 0x0 il_seq_point il: 0x1 load_membase R35 <- [R33 + 0x10] il_seq_point il: 0x8 move R40 <- R35 loadv_membase R36 <- R40 il_seq_point il: 0xf ldaddr R44 <- R36 call R43 <- [bool System.Threading.Channels.Channel/UnboundedChannelConcurrentQueue`1:get_IsThreadSafe ()] [r0 <- R44] clobbers: c int_conv_to_u1 R45 <- R43 il_seq_point il: 0x1c, nonempty-stack icompare_imm R45 [0] int_bne_un [T:B4 F:B5] AFTER LOWER-VTYPE-OPTS 2: [IN: BB0(0), OUT: BB4(2) BB5(5) ] ldaddr R63 <- R36 storei8_membase_imm [R63] <- iconst R37 <- [0] il_seq_point intr il: 0x0 il_seq_point il: 0x1 load_membase R35 <- [R33 + 0x10] il_seq_point il: 0x8 move R40 <- R35 add_imm R64 <- R40 [40] ldaddr R65 <- R36 loadi8_membase R66 <- [R64 + 0x0] storei8_membase_reg [R65] <- R66 il_seq_point il: 0xf ldaddr R44 <- R36 call R43 <- [bool System.Threading.Channels.Channel/UnboundedChannelConcurrentQueue`1:get_IsThreadSafe ()] [r0 <- R44] clobbers: c int_conv_to_u1 R45 <- R43 il_seq_point il: 0x1c, nonempty-stack icompare_imm R45 [0] int_bne_un [T:B4 F:B5] BEFORE LOWER-VTYPE-OPTS 5: [IN: BB2(1), OUT: BB6(3) ] il_seq_point il: 0x1e move R49 <- R35 move R50 <- R34 call R48 <- [bool System.Threading.Channels.UnboundedChannel`2/UnboundedChannelReader>:g__Locked|13_1 (System.Threading.Channels.UnboundedChannel`2>,int&)] [r0 <- R49] [r1 <- R50] clobbers: c int_conv_to_u1 R52 <- R48 il_seq_point il: 0x25, nonempty-stack br [B6] AFTER LOWER-VTYPE-OPTS 5: [IN: BB2(1), OUT: BB6(3) ] il_seq_point il: 0x1e move R49 <- R35 move R50 <- R34 call R48 <- [bool System.Threading.Channels.UnboundedChannel`2/UnboundedChannelReader>:g__Locked|13_1 (System.Threading.Channels.UnboundedChannel`2>,int&)] [r0 <- R49] [r1 <- R50] clobbers: c int_conv_to_u1 R52 <- R48 il_seq_point il: 0x25, nonempty-stack br [B6] BEFORE LOWER-VTYPE-OPTS 4: [IN: BB2(1), OUT: BB6(3) ] il_seq_point il: 0x27 move R56 <- R35 move R57 <- R34 call R55 <- [bool System.Threading.Channels.UnboundedChannel`2/UnboundedChannelReader>:g__LockFree|13_0 (System.Threading.Channels.UnboundedChannel`2>,int&)] [r0 <- R56] [r1 <- R57] clobbers: c int_conv_to_u1 R52 <- R55 il_seq_point il: 0x2e, nonempty-stack AFTER LOWER-VTYPE-OPTS 4: [IN: BB2(1), OUT: BB6(3) ] il_seq_point il: 0x27 move R56 <- R35 move R57 <- R34 call R55 <- [bool System.Threading.Channels.UnboundedChannel`2/UnboundedChannelReader>:g__LockFree|13_0 (System.Threading.Channels.UnboundedChannel`2>,int&)] [r0 <- R56] [r1 <- R57] clobbers: c int_conv_to_u1 R52 <- R55 il_seq_point il: 0x2e, nonempty-stack BEFORE LOWER-VTYPE-OPTS 6: [IN: BB5(5) BB4(2), OUT: BB1(4) ] int_conv_to_u1 R37 <- R52 il_seq_point il: 0x2f il_seq_point il: 0x31 il_seq_point intr il: 0x32 move R32 <- R37 AFTER LOWER-VTYPE-OPTS 6: [IN: BB5(5) BB4(2), OUT: BB1(4) ] int_conv_to_u1 R37 <- R52 il_seq_point il: 0x2f il_seq_point il: 0x31 il_seq_point intr il: 0x32 move R32 <- R37 BEFORE LOWER-VTYPE-OPTS 1: [IN: BB6(3), OUT: ] AFTER LOWER-VTYPE-OPTS 1: [IN: BB6(3), OUT: ] LIVENESS: BLOCK BB0 (BB2, ): 1 i8const R62 <- [4328589568] 1 gc_safe_point R62 clobbers: c GEN BB0: {} KILL BB0: {} BLOCK BB2 (BB4, BB5, ): 1 ldaddr R63 <- R36 GEN: R36(4) 1 storei8_membase_imm [R63] <- 1 iconst R37 <- [0] KILL: R37(5) 1 il_seq_point intr il: 0x0 1 il_seq_point il: 0x1 1 load_membase R35 <- [R33 + 0x10] GEN: R33(1) KILL: R35(3) 1 il_seq_point il: 0x8 1 move R40 <- R35 GEN: R35(3) 1 add_imm R64 <- R40 [40] 1 ldaddr R65 <- R36 GEN: R36(4) 1 loadi8_membase R66 <- [R64 + 0x0] 1 storei8_membase_reg [R65] <- R66 1 il_seq_point il: 0xf 1 ldaddr R44 <- R36 GEN: R36(4) 1 call R43 <- [bool System.Threading.Channels.Channel/UnboundedChannelConcurrentQueue`1:get_IsThreadSafe ()] [r0 <- R44] clobbers: c 1 int_conv_to_u1 R45 <- R43 1 il_seq_point il: 0x1c, nonempty-stack 1 icompare_imm R45 [0] 1 int_bne_un [T:B4 F:B5] GEN BB2: {1, 4} KILL BB2: {3, 5} BLOCK BB4 (BB6, ): 1 il_seq_point il: 0x27 1 move R56 <- R35 GEN: R35(3) 1 move R57 <- R34 GEN: R34(2) 1 call R55 <- [bool System.Threading.Channels.UnboundedChannel`2/UnboundedChannelReader>:g__LockFree|13_0 (System.Threading.Channels.UnboundedChannel`2>,int&)] [r0 <- R56] [r1 <- R57] clobbers: c 1 int_conv_to_u1 R52 <- R55 KILL: R52(6) 1 il_seq_point il: 0x2e, nonempty-stack GEN BB4: {2, 3} KILL BB4: {6} BLOCK BB6 (BB1, ): 1 int_conv_to_u1 R37 <- R52 GEN: R52(6) KILL: R37(5) 1 il_seq_point il: 0x2f 1 il_seq_point il: 0x31 1 il_seq_point intr il: 0x32 1 move R32 <- R37 GEN: R37(5) KILL: R32(0) GEN BB6: {6} KILL BB6: {0, 5} BLOCK BB1 (): GEN BB1: {} KILL BB1: {} BLOCK BB5 (BB6, ): 1 il_seq_point il: 0x1e 1 move R49 <- R35 GEN: R35(3) 1 move R50 <- R34 GEN: R34(2) 1 call R48 <- [bool System.Threading.Channels.UnboundedChannel`2/UnboundedChannelReader>:g__Locked|13_1 (System.Threading.Channels.UnboundedChannel`2>,int&)] [r0 <- R49] [r1 <- R50] clobbers: c 1 int_conv_to_u1 R52 <- R48 KILL: R52(6) 1 il_seq_point il: 0x25, nonempty-stack 1 br [B6] GEN BB5: {2, 3} KILL BB5: {6} ITERATION: P: BB5(5): IN: BB2 OUT:BB6 LIVE IN BB5: {2, 3} P: BB1(4): IN: BB6 OUT: P: BB6(3): IN: BB5 BB4 OUT:BB1 LIVE IN BB6: {6} P: BB4(2): IN: BB2 OUT:BB6 LIVE IN BB4: {2, 3} P: BB2(1): IN: BB0 OUT:BB4 BB5 LIVE IN BB2: {1, 2, 4} P: BB0(0): IN: OUT:BB2 LIVE IN BB0: {1, 2, 4} IT: 6 5. LIVE IN BB5: {2, 3} LIVE OUT BB5: {6} LIVE IN BB1: {} LIVE OUT BB1: {} LIVE IN BB6: {6} LIVE OUT BB6: {} LIVE IN BB4: {2, 3} LIVE OUT BB4: {6} LIVE IN BB2: {1, 2, 4} LIVE OUT BB2: {2, 3} LIVE IN BB0: {1, 2, 4} LIVE OUT BB0: {1, 2, 4} V0: [0x0 - 0xc000b] V1: [0x0 - 0x4000c] V2: [0x0 - 0x140006] V3: [0x4000d - 0x140004] V4: [0x0 - 0x4001c] V5: [0x40007 - 0xc000a] V6: [0x8000b - 0x17ffff] ALLOCATED R34(2) TO HREG 26 COST 2 ALLOCATED R33(1) TO HREG 25 COST 1 COSTLY: R5 C2 C2 r24 NOT REGVAR: 5 ALLOCATED R35(3) TO HREG 25 COST 4 ALLOCATED R52(6) TO HREG 23 COST 3 SPILL BLOCK 0: i8const R62 <- [4328589568] i 62 1 i8const R62 <- [4328589568] gc_safe_point R62 clobbers: c i -1 62 1 gc_safe_point R62 clobbers: c SPILL BLOCK 2: ldaddr R63 <- R36 ii 63 29 1 add_imm R63 <- fp [40] storei8_membase_imm [R63] <- i -1 1 storei8_membase_imm [R63] <- nop il_seq_point intr il: 0x0 -1 1 il_seq_point intr il: 0x0 il_seq_point il: 0x1 -1 1 il_seq_point il: 0x1 load_membase R35 <- [R33 + 0x10] ii 35 33 1 load_membase r25 <- [r25 + 0x10] il_seq_point il: 0x8 -1 1 il_seq_point il: 0x8 move R40 <- R35 ii 40 35 1 move R40 <- r25 add_imm R64 <- R40 [40] ii 64 40 1 add_imm R64 <- R40 [40] ldaddr R65 <- R36 ii 65 29 1 add_imm R65 <- fp [40] loadi8_membase R66 <- [R64 + 0x0] ii 66 64 1 loadi8_membase R66 <- [R64 + 0x0] storei8_membase_reg [R65] <- R66 ii -1 66 1 storei8_membase_reg [R65] <- R66 il_seq_point il: 0xf -1 1 il_seq_point il: 0xf ldaddr R44 <- R36 ii 44 29 1 add_imm R44 <- fp [40] call R43 <- [bool System.Threading.Channels.Channel/UnboundedChannelConcurrentQueue`1:get_IsThreadSafe ()] [r0 <- R44] clobbers: c i 43 1 call R43 <- [bool System.Threading.Channels.Channel/UnboundedChannelConcurrentQueue`1:get_IsThreadSafe ()] [r0 <- R44] clobbers: c int_conv_to_u1 R45 <- R43 ii 45 43 1 int_conv_to_u1 R45 <- R43 il_seq_point il: 0x1c, nonempty-stack -1 1 il_seq_point il: 0x1c, nonempty-stack icompare_imm R45 [0] i -1 45 1 icompare_imm R45 [0] int_bne_un [T:B4 F:B5] -1 1 int_bne_un [T:B4 F:B5] SPILL BLOCK 5: il_seq_point il: 0x1e -1 1 il_seq_point il: 0x1e move R49 <- R35 ii 49 35 1 move R49 <- r25 move R50 <- R34 ii 50 34 1 move R50 <- r26 call R48 <- [bool System.Threading.Channels.UnboundedChannel`2/UnboundedChannelReader>:g__Locked|13_1 (System.Threading.Channels.UnboundedChannel`2>,int&)] [r0 <- R49] [r1 <- R50] clobbers: c i 48 1 call R48 <- [bool System.Threading.Channels.UnboundedChannel`2/UnboundedChannelReader>:g__Locked|13_1 (System.Threading.Channels.UnboundedChannel`2>,int&)] [r0 <- R49] [r1 <- R50] clobbers: c int_conv_to_u1 R52 <- R48 ii 52 48 1 int_conv_to_u1 r23 <- R48 il_seq_point il: 0x25, nonempty-stack -1 1 il_seq_point il: 0x25, nonempty-stack br [B6] -1 1 br [B6] SPILL BLOCK 4: il_seq_point il: 0x27 -1 1 il_seq_point il: 0x27 move R56 <- R35 ii 56 35 1 move R56 <- r25 move R57 <- R34 ii 57 34 1 move R57 <- r26 call R55 <- [bool System.Threading.Channels.UnboundedChannel`2/UnboundedChannelReader>:g__LockFree|13_0 (System.Threading.Channels.UnboundedChannel`2>,int&)] [r0 <- R56] [r1 <- R57] clobbers: c i 55 1 call R55 <- [bool System.Threading.Channels.UnboundedChannel`2/UnboundedChannelReader>:g__LockFree|13_0 (System.Threading.Channels.UnboundedChannel`2>,int&)] [r0 <- R56] [r1 <- R57] clobbers: c int_conv_to_u1 R52 <- R55 ii 52 55 1 int_conv_to_u1 r23 <- R55 il_seq_point il: 0x2e, nonempty-stack -1 1 il_seq_point il: 0x2e, nonempty-stack SPILL BLOCK 6: int_conv_to_u1 R37 <- R52 ii 37 52 1 int_conv_to_u1 R67 <- r23 storei1_membase_reg [fp + 0x30] <- R67 ii -1 67 1 storei1_membase_reg [fp + 0x30] <- R67 il_seq_point il: 0x2f -1 1 il_seq_point il: 0x2f il_seq_point il: 0x31 -1 1 il_seq_point il: 0x31 il_seq_point intr il: 0x32 -1 1 il_seq_point intr il: 0x32 move R32 <- R37 ii 32 37 Use lvreg R67 for R37. 1 move r0 <- R67 SPILL BLOCK 1: DUMP BLOCK 0: i8const R62 <- [4328589568] gc_safe_point R62 clobbers: c DUMP BLOCK 2: storei8_membase_imm [fp + 0x28] <- il_seq_point intr il: 0x0 il_seq_point il: 0x1 load_membase r25 <- [r25 + 0x10] il_seq_point il: 0x8 move R40 <- r25 add_imm R64 <- R40 [40] loadi8_membase R66 <- [R64 + 0x0] storei8_membase_reg [fp + 0x28] <- R66 il_seq_point il: 0xf add_imm R44 <- fp [40] call R43 <- [bool System.Threading.Channels.Channel/UnboundedChannelConcurrentQueue`1:get_IsThreadSafe ()] [r0 <- R44] clobbers: c int_conv_to_u1 R45 <- R43 il_seq_point il: 0x1c, nonempty-stack icompare_imm R45 [0] int_bne_un [T:B4 F:B5] DUMP BLOCK 5: il_seq_point il: 0x1e move R49 <- r25 move R50 <- r26 call R48 <- [bool System.Threading.Channels.UnboundedChannel`2/UnboundedChannelReader>:g__Locked|13_1 (System.Threading.Channels.UnboundedChannel`2>,int&)] [r0 <- R49] [r1 <- R50] clobbers: c int_conv_to_u1 r23 <- R48 il_seq_point il: 0x25, nonempty-stack br [B6] DUMP BLOCK 4: il_seq_point il: 0x27 move R56 <- r25 move R57 <- r26 call R55 <- [bool System.Threading.Channels.UnboundedChannel`2/UnboundedChannelReader>:g__LockFree|13_0 (System.Threading.Channels.UnboundedChannel`2>,int&)] [r0 <- R56] [r1 <- R57] clobbers: c int_conv_to_u1 r23 <- R55 il_seq_point il: 0x2e, nonempty-stack DUMP BLOCK 6: int_conv_to_u1 R67 <- r23 storei1_membase_reg [fp + 0x30] <- r23 il_seq_point il: 0x2f il_seq_point il: 0x31 il_seq_point intr il: 0x32 move r0 <- R67 DUMP BLOCK 1: LOCAL REGALLOC BLOCK 0: 1 i8const R62 <- [4328589568] 2 gc_safe_point R62 clobbers: c liveness: R62 [1 - 1] processing: 2 gc_safe_point R62 clobbers: c assigned sreg1 r0 to R62 2 gc_safe_point r0 clobbers: c processing: 1 i8const R62 <- [4328589568] assigned dreg r0 to dest R62 freeable r0 (R62) (born in 1) 1 i8const r0 <- [4328589568] LOCAL REGALLOC BLOCK 2: 1 storei8_membase_imm [fp + 0x28] <- 2 il_seq_point intr il: 0x0 3 il_seq_point il: 0x1 4 load_membase r25 <- [r25 + 0x10] 5 il_seq_point il: 0x8 6 move R40 <- r25 7 add_imm R64 <- R40 [40] 8 loadi8_membase R66 <- [R64 + 0x0] 9 storei8_membase_reg [fp + 0x28] <- R66 10 il_seq_point il: 0xf 11 add_imm R44 <- fp [40] 12 call R43 <- [bool System.Threading.Channels.Channel/UnboundedChannelConcurrentQueue`1:get_IsThreadSafe ()] [r0 <- R44] clobbers: c 13 int_conv_to_u1 R45 <- R43 14 il_seq_point il: 0x1c, nonempty-stack 15 nop 16 arm64_cbnzw R45 liveness: r25 [4 - 4] liveness: fp [1 - 0] liveness: R40 [6 - 6] liveness: R43 [12 - 12] liveness: R44 [11 - 11] liveness: R45 [13 - 13] liveness: R64 [7 - 7] liveness: R66 [8 - 8] processing: 16 arm64_cbnzw R45 assigned sreg1 r0 to R45 16 arm64_cbnzw r0 processing: 15 nop 15 nop processing: 14 il_seq_point il: 0x1c, nonempty-stack 14 il_seq_point il: 0x1c, nonempty-stack processing: 13 int_conv_to_u1 R45 <- R43 assigned dreg r0 to dest R45 freeable r0 (R45) (born in 13) allocated preferred reg R43 to r0 assigned sreg1 r0 to R43 13 int_conv_to_u1 r0 <- r0 processing: 12 call R43 <- [bool System.Threading.Channels.Channel/UnboundedChannelConcurrentQueue`1:get_IsThreadSafe ()] [r0 <- R44] clobbers: c assigned dreg r0 to dest R43 freeable r0 (R43) (born in 12) assigned arg ireg r0 to R44 12 call r0 <- [bool System.Threading.Channels.Channel/UnboundedChannelConcurrentQueue`1:get_IsThreadSafe ()] [r0 <- R44] clobbers: c processing: 11 add_imm R44 <- fp [40] assigned dreg r0 to dest R44 freeable r0 (R44) (born in 11) 11 add_imm r0 <- fp [40] processing: 10 il_seq_point il: 0xf 10 il_seq_point il: 0xf processing: 9 storei8_membase_reg [fp + 0x28] <- R66 assigned sreg1 r0 to R66 9 storei8_membase_reg [fp + 0x28] <- r0 processing: 8 loadi8_membase R66 <- [R64 + 0x0] assigned dreg r0 to dest R66 freeable r0 (R66) (born in 8) assigned sreg1 r0 to R64 8 loadi8_membase r0 <- [r0 + 0x0] processing: 7 add_imm R64 <- R40 [40] assigned dreg r0 to dest R64 freeable r0 (R64) (born in 7) assigned sreg1 r0 to R40 7 add_imm r0 <- r0 [40] processing: 6 move R40 <- r25 assigned dreg r0 to dest R40 freeable r0 (R40) (born in 6) 6 move r0 <- r25 processing: 5 il_seq_point il: 0x8 5 il_seq_point il: 0x8 processing: 4 load_membase r25 <- [r25 + 0x10] 4 load_membase r25 <- [r25 + 0x10] processing: 3 il_seq_point il: 0x1 3 il_seq_point il: 0x1 processing: 2 il_seq_point intr il: 0x0 2 il_seq_point intr il: 0x0 processing: 1 storei8_membase_imm [fp + 0x28] <- 1 storei8_membase_imm [fp + 0x28] <- LOCAL REGALLOC BLOCK 5: 1 il_seq_point il: 0x1e 2 move R49 <- r25 3 move R50 <- r26 4 call R48 <- [bool System.Threading.Channels.UnboundedChannel`2/UnboundedChannelReader>:g__Locked|13_1 (System.Threading.Channels.UnboundedChannel`2>,int&)] [r0 <- R49] [r1 <- R50] clobbers: c 5 int_conv_to_u1 r23 <- R48 6 il_seq_point il: 0x25, nonempty-stack 7 br [B6] liveness: r23 [5 - 5] liveness: R48 [4 - 4] liveness: R49 [2 - 2] liveness: R50 [3 - 3] processing: 7 br [B6] 7 br [B6] processing: 6 il_seq_point il: 0x25, nonempty-stack 6 il_seq_point il: 0x25, nonempty-stack processing: 5 int_conv_to_u1 r23 <- R48 allocated preferred reg R48 to r0 assigned sreg1 r0 to R48 5 int_conv_to_u1 r23 <- r0 processing: 4 call R48 <- [bool System.Threading.Channels.UnboundedChannel`2/UnboundedChannelReader>:g__Locked|13_1 (System.Threading.Channels.UnboundedChannel`2>,int&)] [r0 <- R49] [r1 <- R50] clobbers: c assigned dreg r0 to dest R48 freeable r0 (R48) (born in 4) assigned arg ireg r0 to R49 assigned arg ireg r1 to R50 4 call r0 <- [bool System.Threading.Channels.UnboundedChannel`2/UnboundedChannelReader>:g__Locked|13_1 (System.Threading.Channels.UnboundedChannel`2>,int&)] [r0 <- R49] [r1 <- R50] clobbers: c processing: 3 move R50 <- r26 assigned dreg r1 to dest R50 freeable r1 (R50) (born in 3) 3 move r1 <- r26 processing: 2 move R49 <- r25 assigned dreg r0 to dest R49 freeable r0 (R49) (born in 2) 2 move r0 <- r25 processing: 1 il_seq_point il: 0x1e 1 il_seq_point il: 0x1e LOCAL REGALLOC BLOCK 4: 1 il_seq_point il: 0x27 2 move R56 <- r25 3 move R57 <- r26 4 call R55 <- [bool System.Threading.Channels.UnboundedChannel`2/UnboundedChannelReader>:g__LockFree|13_0 (System.Threading.Channels.UnboundedChannel`2>,int&)] [r0 <- R56] [r1 <- R57] clobbers: c 5 int_conv_to_u1 r23 <- R55 6 il_seq_point il: 0x2e, nonempty-stack liveness: r23 [5 - 5] liveness: R55 [4 - 4] liveness: R56 [2 - 2] liveness: R57 [3 - 3] processing: 6 il_seq_point il: 0x2e, nonempty-stack 6 il_seq_point il: 0x2e, nonempty-stack processing: 5 int_conv_to_u1 r23 <- R55 allocated preferred reg R55 to r0 assigned sreg1 r0 to R55 5 int_conv_to_u1 r23 <- r0 processing: 4 call R55 <- [bool System.Threading.Channels.UnboundedChannel`2/UnboundedChannelReader>:g__LockFree|13_0 (System.Threading.Channels.UnboundedChannel`2>,int&)] [r0 <- R56] [r1 <- R57] clobbers: c assigned dreg r0 to dest R55 freeable r0 (R55) (born in 4) assigned arg ireg r0 to R56 assigned arg ireg r1 to R57 4 call r0 <- [bool System.Threading.Channels.UnboundedChannel`2/UnboundedChannelReader>:g__LockFree|13_0 (System.Threading.Channels.UnboundedChannel`2>,int&)] [r0 <- R56] [r1 <- R57] clobbers: c processing: 3 move R57 <- r26 assigned dreg r1 to dest R57 freeable r1 (R57) (born in 3) 3 move r1 <- r26 processing: 2 move R56 <- r25 assigned dreg r0 to dest R56 freeable r0 (R56) (born in 2) 2 move r0 <- r25 processing: 1 il_seq_point il: 0x27 1 il_seq_point il: 0x27 LOCAL REGALLOC BLOCK 6: 1 int_conv_to_u1 R67 <- r23 2 storei1_membase_reg [fp + 0x30] <- r23 3 il_seq_point il: 0x2f 4 il_seq_point il: 0x31 5 il_seq_point intr il: 0x32 6 move r0 <- R67 liveness: r0 [6 - 6] liveness: fp [2 - 0] liveness: R67 [1 - 1] processing: 6 move r0 <- R67 assigned sreg1 r0 to R67 6 move r0 <- r0 processing: 5 il_seq_point intr il: 0x32 5 il_seq_point intr il: 0x32 processing: 4 il_seq_point il: 0x31 4 il_seq_point il: 0x31 processing: 3 il_seq_point il: 0x2f 3 il_seq_point il: 0x2f processing: 2 storei1_membase_reg [fp + 0x30] <- r23 2 storei1_membase_reg [fp + 0x30] <- r23 processing: 1 int_conv_to_u1 R67 <- r23 assigned dreg r0 to dest R67 freeable r0 (R67) (born in 1) 1 int_conv_to_u1 r0 <- r23 CFA: [0] def_cfa: sp+0x0 CFA: [4] def_cfa_offset: 0x40 CFA: [4] offset: fp at cfa-0x40 CFA: [4] offset: lr at cfa-0x38 CFA: [8] def_cfa_reg: fp CFA: [c] offset: r23 at cfa-0x30 CFA: [10] offset: r25 at cfa-0x28 CFA: [10] offset: r26 at cfa-0x20 Basic block 0 starting at offset 0x18 Basic block 2 starting at offset 0x30 Basic block 5 starting at offset 0x58 Basic block 4 starting at offset 0x6c Basic block 6 starting at offset 0x7c Basic block 1 starting at offset 0x84 Method bool System.Threading.Channels.UnboundedChannel`2/UnboundedChannelReader>:TryRead (int&) emitted at 0x102671a78 to 0x102671b10 (code length 152) *** ASM for System.Threading.Channels.UnboundedChannel`2/UnboundedChannelReader>:TryRead (int&) *** /var/folders/1r/f8r2xtq91zvbp_0y1x5_r36m0000gn/T/.oq0TTK: (__TEXT,__text) section tem_Threading_Channels_UnboundedChannel_2_UnboundedChannelReader_int__System_Threading_Channels_Channel_UnboundedChannelConcurrentQueue_1_int___TryRead__int__: 0000000000000000 stp x29, x30, [sp, #-0x40]! 0000000000000004 mov x29, sp 0000000000000008 str x23, [x29, #0x10] 000000000000000c stp x25, x26, [x29, #0x18] 0000000000000010 mov x25, x0 0000000000000014 mov x26, x1 0000000000000018 mov x0, #0x900 000000000000001c movk x0, #0x201, lsl #16 0000000000000020 movk x0, #0x1, lsl #32 0000000000000024 ldr x17, [x0] 0000000000000028 cbz x17, 0x30 000000000000002c bl 0xffffffffffff50c8 0000000000000030 str xzr, [x29, #0x28] 0000000000000034 ldr x25, [x25, #0x10] 0000000000000038 mov x0, x25 000000000000003c add x0, x0, #0x28 0000000000000040 ldr x0, [x0] 0000000000000044 str x0, [x29, #0x28] 0000000000000048 add x0, x29, #0x28 000000000000004c bl 0x158 0000000000000050 uxtb w0, w0 0000000000000054 cbnz w0, 0x6c 0000000000000058 mov x0, x25 000000000000005c mov x1, x26 0000000000000060 bl 0x118 0000000000000064 uxtb w23, w0 0000000000000068 b 0x7c 000000000000006c mov x0, x25 0000000000000070 mov x1, x26 0000000000000074 bl 0xd8 0000000000000078 uxtb w23, w0 000000000000007c uxtb w0, w23 0000000000000080 strb w23, [x29, #0x30] 0000000000000084 ldr x23, [x29, #0x10] 0000000000000088 ldp x25, x26, [x29, #0x18] 000000000000008c mov sp, x29 0000000000000090 ldp x29, x30, [sp], #0x40 0000000000000094 ret ***