Microsoft.DotNet.XUnitConsoleRunner v2.5.0 (64-bit .NET Core 5.0.0)  Discovering: System.Runtime.Extensions.Tests (method display = ClassAndMethod, method display options = None)  Discovered: System.Runtime.Extensions.Tests (found 1 of 872 test case)  Starting: System.Runtime.Extensions.Tests (parallel test collections = on, max threads = 6) ****** START compiling System.Diagnostics.Tests.StopwatchTests:GetTimestamp() (MethodHash=21e5222b) Generating code for Unix x64 OPTIONS: Tier-0 compilation, switched to FullOptsOPTIONS: Tier-1/FullOpts compilation, switched to MinOptsOPTIONS: compCodeOpt = BLENDED_CODE OPTIONS: compDbgCode = false OPTIONS: compDbgInfo = true OPTIONS: compDbgEnC = false OPTIONS: compProcedureSplitting = false OPTIONS: compProcedureSplittingEH = false IL to import: IL_0000 28 60 00 00 0a call 0xA000060 IL_0005 0a stloc.0 IL_0006 17 ldc.i4.1 IL_0007 28 37 00 00 06 call 0x6000037 IL_000c 28 60 00 00 0a call 0xA000060 IL_0011 0b stloc.1 IL_0012 06 ldloc.0 IL_0013 07 ldloc.1 IL_0014 28 05 00 00 2b call 0x2B000005 IL_0019 2a ret lvaGrabTemp returning 2 (V02 tmp0) (a long lifetime temp) called for OutgoingArgSpace. ; Initial local variable assignments ; ; V00 loc0 long ; V01 loc1 long ; V02 OutArgs lclBlk (na) "OutgoingArgSpace" *************** In compInitDebuggingInfo() for System.Diagnostics.Tests.StopwatchTests:GetTimestamp() getVars() returned cVars = 0, extendOthers = true info.compVarScopesCount = 2 VarNum LVNum Name Beg End 0: 00h 00h V00 loc0 000h 01Ah 1: 01h 01h V01 loc1 000h 01Ah info.compStmtOffsetsCount = 0 info.compStmtOffsetsImplicit = 0005h ( STACK_EMPTY CALL_SITE ) *************** In fgFindBasicBlocks() for System.Diagnostics.Tests.StopwatchTests:GetTimestamp() Marked V00 as a single def local Marked V01 as a single def local Jump targets: none New Basic Block BB01 [0000] created. BB01 [000..01A) IL Code Size,Instr 26, 10, Basic Block count 1, Local Variable Num,Ref count 3, 4 for method System.Diagnostics.Tests.StopwatchTests:GetTimestamp() OPTIONS: opts.MinOpts() == false Basic block list for 'System.Diagnostics.Tests.StopwatchTests:GetTimestamp()' ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..01A) (return) ----------------------------------------------------------------------------------------------------------------------------------------- *************** In impImport() for System.Diagnostics.Tests.StopwatchTests:GetTimestamp() impImportBlockPending for BB01 Importing BB01 (PC=000) of 'System.Diagnostics.Tests.StopwatchTests:GetTimestamp()' [ 0] 0 (0x000) call 0A000060 In Compiler::impImportCall: opcode is call, kind=0, callRetType is long, structSize is 0 STMT00000 (IL 0x000... ???) [000000] I-C-G------- * CALL long System.Diagnostics.Stopwatch.GetTimestamp (exactContextHnd=0x00007FD7B7692DA9) [ 1] 5 (0x005) stloc.0 STMT00001 (IL ???... ???) [000003] -AC--------- * ASG long [000002] D------N---- +--* LCL_VAR long V00 loc0 [000001] --C--------- \--* RET_EXPR long (inl return from call [000000]) [ 0] 6 (0x006) ldc.i4.1 1 [ 1] 7 (0x007) call 06000037 In Compiler::impImportCall: opcode is call, kind=0, callRetType is void, structSize is 0 STMT00002 (IL 0x006... ???) [000005] I-C-G------- * CALL void System.Diagnostics.Tests.StopwatchTests.Sleep (exactContextHnd=0x00007FD7B7376859) [000004] ------------ arg0 \--* CNS_INT int 1 [ 0] 12 (0x00c) call 0A000060 In Compiler::impImportCall: opcode is call, kind=0, callRetType is long, structSize is 0 STMT00003 (IL 0x00C... ???) [000006] I-C-G------- * CALL long System.Diagnostics.Stopwatch.GetTimestamp (exactContextHnd=0x00007FD7B7692DA9) [ 1] 17 (0x011) stloc.1 STMT00004 (IL ???... ???) [000009] -AC--------- * ASG long [000008] D------N---- +--* LCL_VAR long V01 loc1 [000007] --C--------- \--* RET_EXPR long (inl return from call [000006]) [ 0] 18 (0x012) ldloc.0 [ 1] 19 (0x013) ldloc.1 [ 2] 20 (0x014) call 2B000005 (Implicit Tail call: prefixFlags |= PREFIX_TAILCALL_IMPLICIT) In Compiler::impImportCall: opcode is call, kind=0, callRetType is void, structSize is 0 GTF_CALL_M_IMPLICIT_TAILCALL bit set for call [000012] STMT00005 (IL 0x012... ???) [000012] I-C-G------- * CALL void Xunit.Assert.NotEqual (exactContextHnd=0x00007FD7B7BD0490) [000010] ------------ arg0 +--* LCL_VAR long V00 loc0 [000011] ------------ arg1 \--* LCL_VAR long V01 loc1 [ 0] 25 (0x019) ret STMT00006 (IL 0x019... ???) [000013] ------------ * RETURN void *************** in fgTransformIndirectCalls(root) -- no candidates to transform New BlockSet epoch 1, # of blocks (including unused BB00): 2, bitset array size: 1 (short) *************** In fgMorph() *************** In fgDebugCheckBBlist *************** In fgInline() Expanding INLINE_CANDIDATE in statement STMT00000 in BB01: STMT00000 (IL 0x000...0x005) [000000] I-C-G------- * CALL long System.Diagnostics.Stopwatch.GetTimestamp (exactContextHnd=0x00007FD7B7692DA9) INLINER: inlineInfo.tokenLookupContextHandle for System.Diagnostics.Stopwatch:GetTimestamp():long set to 0x00007FD7B7692DA9: Invoking compiler for the inlinee method System.Diagnostics.Stopwatch:GetTimestamp():long : IL to import: IL_0000 7e 08 18 00 04 ldsfld 0x4001808 IL_0005 28 c7 4c 00 06 call 0x6004CC7 IL_000a 28 28 4d 00 06 call 0x6004D28 IL_000f 2a ret INLINER impTokenLookupContextHandle for System.Diagnostics.Stopwatch:GetTimestamp():long is 0x00007FD7B7692DA9. *************** In fgFindBasicBlocks() for System.Diagnostics.Stopwatch:GetTimestamp():long Jump targets: none New Basic Block BB02 [0001] created. BB02 [000..010) Basic block list for 'System.Diagnostics.Stopwatch:GetTimestamp():long' ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB02 [0001] 1 1 [000..010) (return) ----------------------------------------------------------------------------------------------------------------------------------------- *************** In impImport() for System.Diagnostics.Stopwatch:GetTimestamp():long impImportBlockPending for BB02 Importing BB02 (PC=000) of 'System.Diagnostics.Stopwatch:GetTimestamp():long' [ 0] 0 (0x000) ldsfld 04001808 [ 1] 5 (0x005) call 06004CC7 In Compiler::impImportCall: opcode is call, kind=0, callRetType is void, structSize is 0 [000015] I-C-G------- * CALL void System.Diagnostics.Debug.Assert (exactContextHnd=0x00007FD7B642BC09) [000014] ------------ arg0 \--* CNS_INT int 1 [ 0] 10 (0x00a) call 06004D28 In Compiler::impImportCall: opcode is call, kind=0, callRetType is long, structSize is 0 [000016] I-C-G------- * CALL long System.Diagnostics.Stopwatch.QueryPerformanceCounter (exactContextHnd=0x00007FD7B7692DA9) [ 1] 15 (0x00f) ret Inlinee Return expression (before normalization) => [000017] --C--------- * RET_EXPR long (inl return from call [000016]) Inlinee Return expression (after normalization) => [000017] --C--------- * RET_EXPR long (inl return from call [000016]) *************** in fgTransformIndirectCalls(inlinee) -- no candidates to transform ----------- Statements (and blocks) added due to the inlining of call [000000] ----------- Inlinee method body: STMT00007 (IL 0x000... ???) [000015] I-C-G------- * CALL void System.Diagnostics.Debug.Assert (exactContextHnd=0x00007FD7B642BC09) [000014] ------------ arg0 \--* CNS_INT int 1 STMT00008 (IL 0x000... ???) [000016] I-C-G------- * CALL long System.Diagnostics.Stopwatch.QueryPerformanceCounter (exactContextHnd=0x00007FD7B7692DA9) fgInlineAppendStatements: no gc ref inline locals. Return expression for call at [000000] is [000017] --C--------- * RET_EXPR long (inl return from call [000016]) Successfully inlined System.Diagnostics.Stopwatch:GetTimestamp():long (16 IL bytes) (depth 1) [below ALWAYS_INLINE size] -------------------------------------------------------------------------------------------- INLINER: during 'fgInline' result 'success' reason 'below ALWAYS_INLINE size' for 'System.Diagnostics.Tests.StopwatchTests:GetTimestamp()' calling 'System.Diagnostics.Stopwatch:GetTimestamp():long' INLINER: during 'fgInline' result 'success' reason 'below ALWAYS_INLINE size' Expanding INLINE_CANDIDATE in statement STMT00007 in BB01: STMT00007 (IL 0x000... ???) [000015] I-C-G------- * CALL void System.Diagnostics.Debug.Assert (exactContextHnd=0x00007FD7B642BC09) [000014] ------------ arg0 \--* CNS_INT int 1 Argument #0: is a constant [000014] ------------ * CNS_INT int 1 Folding operator with constant nodes into a constant: [000019] ------------ * CAST int <- bool <- int [000014] ------------ \--* CNS_INT int 1 Bashed to int constant: [000019] ------------ * CNS_INT int 1 INLINER: inlineInfo.tokenLookupContextHandle for System.Diagnostics.Debug:Assert(bool) set to 0x00007FD7B642BC09: Invoking compiler for the inlinee method System.Diagnostics.Debug:Assert(bool) : IL to import: IL_0000 02 ldarg.0 IL_0001 7e 1a 02 00 04 ldsfld 0x400021A IL_0006 7e 1a 02 00 04 ldsfld 0x400021A IL_000b 28 c9 4c 00 06 call 0x6004CC9 IL_0010 2a ret INLINER impTokenLookupContextHandle for System.Diagnostics.Debug:Assert(bool) is 0x00007FD7B642BC09. *************** In fgFindBasicBlocks() for System.Diagnostics.Debug:Assert(bool) weight= 10 : state 3 [ ldarg.0 ] weight=159 : state 112 [ ldsfld ] weight=159 : state 112 [ ldsfld ] weight= 79 : state 40 [ call ] weight= 19 : state 42 [ ret ] Inline candidate looks like a wrapper method. Multiplier increased to 1. Inline candidate is mostly loads and stores. Multiplier increased to 4. Inline candidate callsite is boring. Multiplier increased to 5.3. calleeNativeSizeEstimate=426 callsiteNativeSizeEstimate=85 benefit multiplier=5.3 threshold=450 Native estimate for function size is within threshold for inlining 42.6 <= 45 (multiplier = 5.3) Jump targets: none New Basic Block BB03 [0002] created. BB03 [000..011) Basic block list for 'System.Diagnostics.Debug:Assert(bool)' ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB03 [0002] 1 1 [000..011) (return) ----------------------------------------------------------------------------------------------------------------------------------------- *************** In impImport() for System.Diagnostics.Debug:Assert(bool) impImportBlockPending for BB03 Importing BB03 (PC=000) of 'System.Diagnostics.Debug:Assert(bool)' [ 0] 0 (0x000) ldarg.0 [ 1] 1 (0x001) ldsfld 0400021A [ 2] 6 (0x006) ldsfld 0400021A [ 3] 11 (0x00b) call 06004CC9 In Compiler::impImportCall: opcode is call, kind=0, callRetType is void, structSize is 0 [000025] I-C-G------- * CALL void System.Diagnostics.Debug.Assert (exactContextHnd=0x00007FD7B642BC09) [000020] ------------ arg0 +--* CNS_INT int 1 [000022] n---G------- arg1 +--* IND ref [000021] ------------ | \--* CNS_INT(h) long 0xA0001060 [ICON_STR_HDL] [000024] n---G------- arg2 \--* IND ref [000023] ------------ \--* CNS_INT(h) long 0xA0001060 [ICON_STR_HDL] [ 0] 16 (0x010) ret *************** in fgTransformIndirectCalls(inlinee) -- no candidates to transform ----------- Statements (and blocks) added due to the inlining of call [000015] ----------- Arguments setup: Inlinee method body: STMT00009 (IL 0x000... ???) [000025] I-C-G------- * CALL void System.Diagnostics.Debug.Assert (exactContextHnd=0x00007FD7B642BC09) [000020] ------------ arg0 +--* CNS_INT int 1 [000022] n---G------- arg1 +--* IND ref [000021] ------------ | \--* CNS_INT(h) long 0xA0001060 [ICON_STR_HDL] [000024] n---G------- arg2 \--* IND ref [000023] ------------ \--* CNS_INT(h) long 0xA0001060 [ICON_STR_HDL] fgInlineAppendStatements: no gc ref inline locals. Successfully inlined System.Diagnostics.Debug:Assert(bool) (17 IL bytes) (depth 2) [profitable inline] -------------------------------------------------------------------------------------------- INLINER: during 'fgInline' result 'success' reason 'profitable inline' for 'System.Diagnostics.Tests.StopwatchTests:GetTimestamp()' calling 'System.Diagnostics.Debug:Assert(bool)' INLINER: during 'fgInline' result 'success' reason 'profitable inline' Expanding INLINE_CANDIDATE in statement STMT00009 in BB01: STMT00009 (IL 0x000... ???) [000025] I-C-G------- * CALL void System.Diagnostics.Debug.Assert (exactContextHnd=0x00007FD7B642BC09) [000020] ------------ arg0 +--* CNS_INT int 1 [000022] n---G------- arg1 +--* IND ref [000021] ------------ | \--* CNS_INT(h) long 0xA0001060 [ICON_STR_HDL] [000024] n---G------- arg2 \--* IND ref [000023] ------------ \--* CNS_INT(h) long 0xA0001060 [ICON_STR_HDL] Argument #0: is a constant [000020] ------------ * CNS_INT int 1 Argument #1: has global refs [000022] n---G------- * IND ref [000021] ------------ \--* CNS_INT(h) long 0xA0001060 [ICON_STR_HDL] Argument #2: has global refs [000024] n---G------- * IND ref [000023] ------------ \--* CNS_INT(h) long 0xA0001060 [ICON_STR_HDL] Folding operator with constant nodes into a constant: [000027] ------------ * CAST int <- bool <- int [000020] ------------ \--* CNS_INT int 1 Bashed to int constant: [000027] ------------ * CNS_INT int 1 INLINER: inlineInfo.tokenLookupContextHandle for System.Diagnostics.Debug:Assert(bool,ref,ref) set to 0x00007FD7B642BC09: Invoking compiler for the inlinee method System.Diagnostics.Debug:Assert(bool,ref,ref) : IL to import: IL_0000 02 ldarg.0 IL_0001 2d 07 brtrue.s 7 (IL_000a) IL_0003 03 ldarg.1 IL_0004 04 ldarg.2 IL_0005 28 cc 4c 00 06 call 0x6004CCC IL_000a 2a ret INLINER impTokenLookupContextHandle for System.Diagnostics.Debug:Assert(bool,ref,ref) is 0x00007FD7B642BC09. *************** In fgFindBasicBlocks() for System.Diagnostics.Debug:Assert(bool,ref,ref) Jump targets: IL_000a New Basic Block BB04 [0003] created. BB04 [000..003) New Basic Block BB05 [0004] created. BB05 [003..00A) New Basic Block BB06 [0005] created. BB06 [00A..00B) Basic block list for 'System.Diagnostics.Debug:Assert(bool,ref,ref)' ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB04 [0003] 1 1 [000..003)-> BB06 ( cond ) BB05 [0004] 1 1 [003..00A) BB06 [0005] 2 1 [00A..00B) (return) ----------------------------------------------------------------------------------------------------------------------------------------- *************** In impImport() for System.Diagnostics.Debug:Assert(bool,ref,ref) impImportBlockPending for BB04 Importing BB04 (PC=000) of 'System.Diagnostics.Debug:Assert(bool,ref,ref)' [ 0] 0 (0x000) ldarg.0 [ 1] 1 (0x001) brtrue.s Folding operator with constant nodes into a constant: [000030] ------------ * NE int [000028] ------------ +--* CNS_INT int 1 [000029] ------------ \--* CNS_INT int 0 Bashed to int constant: [000030] ------------ * CNS_INT int 1 The conditional jump becomes an unconditional jump to BB06 impImportBlockPending for BB06 Importing BB06 (PC=010) of 'System.Diagnostics.Debug:Assert(bool,ref,ref)' [ 0] 10 (0x00a) ret ** Note: inlinee IL was partially imported -- imported 0 of 11 bytes of method IL *************** in fgTransformIndirectCalls(inlinee) -- no candidates to transform BB05 was not imported, marked as removed (1) Renumbering the basic blocks for fgRemoveEmptyBlocks *************** Before renumbering the basic blocks ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB04 [0003] 1 1 [000..003)-> BB06 (always) i BB06 [0005] 2 1 [00A..00B) (return) i ----------------------------------------------------------------------------------------------------------------------------------------- *************** Exception Handling table is empty Renumber BB04 to BB07 Renumber BB06 to BB08 *************** After renumbering the basic blocks ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB07 [0003] 1 1 [000..003)-> BB08 (always) i BB08 [0005] 2 1 [00A..00B) (return) i ----------------------------------------------------------------------------------------------------------------------------------------- *************** Exception Handling table is empty New BlockSet epoch 1, # of blocks (including unused BB00): 1, bitset array size: 1 (short) ----------- Statements (and blocks) added due to the inlining of call [000025] ----------- Arguments setup: Inlinee method body:New Basic Block BB09 [0006] created. Convert bbJumpKind of BB08 to BBJ_NONE fgInlineAppendStatements: no gc ref inline locals. ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB07 [0003] 1 1 [000..001)-> BB08 (always) i BB08 [0005] 2 1 [000..001) i ----------------------------------------------------------------------------------------------------------------------------------------- ------------ BB07 [000..001) -> BB08 (always), preds={} succs={BB08} ------------ BB08 [000..001), preds={} succs={BB09} ------------------------------------------------------------------------------------------------------------------- Successfully inlined System.Diagnostics.Debug:Assert(bool,ref,ref) (11 IL bytes) (depth 3) [below ALWAYS_INLINE size] -------------------------------------------------------------------------------------------- BB01 becomes empty INLINER: during 'fgInline' result 'success' reason 'below ALWAYS_INLINE size' for 'System.Diagnostics.Tests.StopwatchTests:GetTimestamp()' calling 'System.Diagnostics.Debug:Assert(bool,ref,ref)' INLINER: during 'fgInline' result 'success' reason 'below ALWAYS_INLINE size' Expanding INLINE_CANDIDATE in statement STMT00008 in BB09: STMT00008 (IL 0x000... ???) [000016] I-C-G------- * CALL long System.Diagnostics.Stopwatch.QueryPerformanceCounter (exactContextHnd=0x00007FD7B7692DA9) INLINER: inlineInfo.tokenLookupContextHandle for System.Diagnostics.Stopwatch:QueryPerformanceCounter():long set to 0x00007FD7B7692DA9: Invoking compiler for the inlinee method System.Diagnostics.Stopwatch:QueryPerformanceCounter():long : IL to import: IL_0000 28 54 00 00 06 call 0x6000054 IL_0005 2a ret INLINER impTokenLookupContextHandle for System.Diagnostics.Stopwatch:QueryPerformanceCounter():long is 0x00007FD7B7692DA9. *************** In fgFindBasicBlocks() for System.Diagnostics.Stopwatch:QueryPerformanceCounter():long Jump targets: none New Basic Block BB10 [0007] created. BB10 [000..006) Basic block list for 'System.Diagnostics.Stopwatch:QueryPerformanceCounter():long' ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB10 [0007] 1 1 [000..006) (return) ----------------------------------------------------------------------------------------------------------------------------------------- *************** In impImport() for System.Diagnostics.Stopwatch:QueryPerformanceCounter():long impImportBlockPending for BB10 Importing BB10 (PC=000) of 'System.Diagnostics.Stopwatch:QueryPerformanceCounter():long' [ 0] 0 (0x000) call 06000054 In Compiler::impImportCall: opcode is call, kind=0, callRetType is long, structSize is 0 Inline a CALLI PINVOKE call from method System.Diagnostics.Stopwatch:QueryPerformanceCounter():longINLINER: during 'impMarkInlineCandidate' result 'failed this callee' reason 'noinline per IL/cached result' for 'System.Diagnostics.Stopwatch:QueryPerformanceCounter():long' calling 'Sys:GetTimestamp():long' INLINER: during 'impMarkInlineCandidate' result 'failed this callee' reason 'noinline per IL/cached result' [ 1] 5 (0x005) ret Inlinee Return expression (before normalization) => [000032] --C-G------- * CALL unman long Sys.GetTimestamp Inlinee Return expression (after normalization) => [000032] --C-G------- * CALL unman long Sys.GetTimestamp ** Note: inlinee IL was partially imported -- imported 0 of 6 bytes of method IL *************** in fgTransformIndirectCalls(inlinee) -- no candidates to transform ----------- Statements (and blocks) added due to the inlining of call [000016] ----------- Inlinee method body:fgInlineAppendStatements: no gc ref inline locals. Return expression for call at [000016] is [000032] --C-G------- * CALL unman long Sys.GetTimestamp Successfully inlined System.Diagnostics.Stopwatch:QueryPerformanceCounter():long (6 IL bytes) (depth 2) [below ALWAYS_INLINE size] -------------------------------------------------------------------------------------------- INLINER: during 'fgInline' result 'success' reason 'below ALWAYS_INLINE size' for 'System.Diagnostics.Tests.StopwatchTests:GetTimestamp()' calling 'System.Diagnostics.Stopwatch:QueryPerformanceCounter():long' INLINER: during 'fgInline' result 'success' reason 'below ALWAYS_INLINE size' Replacing the return expression placeholder [000001] with [000032] [000001] --C--------- * RET_EXPR long (inl return from call [000017]) Inserting the inline return expression [000032] --C-G------- * CALL unman long Sys.GetTimestamp Expanding INLINE_CANDIDATE in statement STMT00002 in BB09: STMT00002 (IL 0x006...0x011) [000005] I-C-G------- * CALL void System.Diagnostics.Tests.StopwatchTests.Sleep (exactContextHnd=0x00007FD7B7376859) [000004] ------------ arg0 \--* CNS_INT int 1 Argument #0: is a constant [000004] ------------ * CNS_INT int 1 INLINER: inlineInfo.tokenLookupContextHandle for System.Diagnostics.Tests.StopwatchTests:Sleep(int) set to 0x00007FD7B7376859: Invoking compiler for the inlinee method System.Diagnostics.Tests.StopwatchTests:Sleep(int) : IL to import: IL_0000 7e 01 00 00 04 ldsfld 0x4000001 IL_0005 02 ldarg.0 IL_0006 6f 78 00 00 0a callvirt 0xA000078 IL_000b 26 pop IL_000c 2a ret INLINER impTokenLookupContextHandle for System.Diagnostics.Tests.StopwatchTests:Sleep(int) is 0x00007FD7B7376859. *************** In fgFindBasicBlocks() for System.Diagnostics.Tests.StopwatchTests:Sleep(int) Jump targets: none New Basic Block BB11 [0008] created. BB11 [000..00D) Basic block list for 'System.Diagnostics.Tests.StopwatchTests:Sleep(int)' ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB11 [0008] 1 1 [000..00D) (return) ----------------------------------------------------------------------------------------------------------------------------------------- *************** In impImport() for System.Diagnostics.Tests.StopwatchTests:Sleep(int) impImportBlockPending for BB11 Importing BB11 (PC=000) of 'System.Diagnostics.Tests.StopwatchTests:Sleep(int)' [ 0] 0 (0x000) ldsfld 04000001 [ 1] 5 (0x005) ldarg.0 [ 2] 6 (0x006) callvirt 0A000078 In Compiler::impImportCall: opcode is callvirt, kind=4, callRetType is bool, structSize is 0 Querying runtime about current class of field System.Diagnostics.Tests.StopwatchTests.s_sleepEvent (declared as System.Threading.ManualResetEvent) Field's current class not available impDevirtualizeCall: Trying to devirtualize virtual call: class for 'this' is System.Threading.ManualResetEvent [final] (attrib 21000010) base method is System.Threading.WaitHandle::WaitOne devirt to System.Threading.WaitHandle::WaitOne -- final class [000041] --CXG------- * CALLV ind int System.Threading.WaitHandle.WaitOne [000039] --CXG------- this in rdi +--* COMMA ref [000038] H-CXG------- | +--* CALL help long HELPER.CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE [000036] ------------ arg0 | | +--* CNS_INT long 0x7fd7b7374a80 [000037] ------------ arg1 | | \--* CNS_INT int 9 [000034] ----G------- | \--* FIELD ref s_sleepEvent [000040] ------------ arg1 \--* CNS_INT int 1 final class; can devirtualize ... after devirt... [000041] --CXG------- * CALL nullcheck int System.Threading.WaitHandle.WaitOne [000039] --CXG------- this in rdi +--* COMMA ref [000038] H-CXG------- | +--* CALL help long HELPER.CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE [000036] ------------ arg0 | | +--* CNS_INT long 0x7fd7b7374a80 [000037] ------------ arg1 | | \--* CNS_INT int 9 [000034] ----G------- | \--* FIELD ref s_sleepEvent [000040] ------------ arg1 \--* CNS_INT int 1 [000041] I-CXG------- * CALL nullcheck int System.Threading.WaitHandle.WaitOne (exactContextHnd=0x00007FD7B63DA608) [000039] --CXG------- this in rdi +--* COMMA ref [000038] H-CXG------- | +--* CALL help long HELPER.CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE [000036] ------------ arg0 | | +--* CNS_INT long 0x7fd7b7374a80 [000037] ------------ arg1 | | \--* CNS_INT int 9 [000034] ----G------- | \--* FIELD ref s_sleepEvent [000040] ------------ arg1 \--* CNS_INT int 1 [ 1] 11 (0x00b) pop [000044] --C--------- * COMMA void [000042] --C--------- +--* RET_EXPR int (inl return from call [000041]) [000043] ------------ \--* NOP void [ 0] 12 (0x00c) ret *************** in fgTransformIndirectCalls(inlinee) -- no candidates to transform ----------- Statements (and blocks) added due to the inlining of call [000005] ----------- Arguments setup: Inlinee method body: STMT00010 (IL 0x006... ???) [000041] I-CXG------- * CALL nullcheck int System.Threading.WaitHandle.WaitOne (exactContextHnd=0x00007FD7B63DA608) [000039] --CXG------- this in rdi +--* COMMA ref [000038] H-CXG------- | +--* CALL help long HELPER.CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE [000036] ------------ arg0 | | +--* CNS_INT long 0x7fd7b7374a80 [000037] ------------ arg1 | | \--* CNS_INT int 9 [000034] ----G------- | \--* FIELD ref s_sleepEvent [000040] ------------ arg1 \--* CNS_INT int 1 STMT00011 (IL 0x006... ???) [000044] --C--------- * COMMA void [000042] --C--------- +--* RET_EXPR int (inl return from call [000041]) [000043] ------------ \--* NOP void fgInlineAppendStatements: no gc ref inline locals. Successfully inlined System.Diagnostics.Tests.StopwatchTests:Sleep(int) (13 IL bytes) (depth 1) [below ALWAYS_INLINE size] -------------------------------------------------------------------------------------------- INLINER: during 'fgInline' result 'success' reason 'below ALWAYS_INLINE size' for 'System.Diagnostics.Tests.StopwatchTests:GetTimestamp()' calling 'System.Diagnostics.Tests.StopwatchTests:Sleep(int)' INLINER: during 'fgInline' result 'success' reason 'below ALWAYS_INLINE size' Expanding INLINE_CANDIDATE in statement STMT00010 in BB09: STMT00010 (IL 0x006... ???) [000041] I-CXG------- * CALL nullcheck int System.Threading.WaitHandle.WaitOne (exactContextHnd=0x00007FD7B63DA608) [000039] --CXG------- this in rdi +--* COMMA ref [000038] H-CXG------- | +--* CALL help long HELPER.CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE [000036] ------------ arg0 | | +--* CNS_INT long 0x7fd7b7374a80 [000037] ------------ arg1 | | \--* CNS_INT int 9 [000034] ----G------- | \--* FIELD ref s_sleepEvent [000040] ------------ arg1 \--* CNS_INT int 1 thisArg: has global refs has side effects [000039] --CXG------- * COMMA ref [000038] H-CXG------- +--* CALL help long HELPER.CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE [000036] ------------ arg0 | +--* CNS_INT long 0x7fd7b7374a80 [000037] ------------ arg1 | \--* CNS_INT int 9 [000034] ----G------- \--* FIELD ref s_sleepEvent Argument #1: is a constant [000040] ------------ * CNS_INT int 1 INLINER: inlineInfo.tokenLookupContextHandle for System.Threading.WaitHandle:WaitOne(int):bool:this set to 0x00007FD7B63DA608: Invoking compiler for the inlinee method System.Threading.WaitHandle:WaitOne(int):bool:this : IL to import: IL_0000 03 ldarg.1 IL_0001 15 ldc.i4.m1 IL_0002 2f 10 bge.s 16 (IL_0014) IL_0004 72 5b 10 00 70 ldstr 0x7000105B IL_0009 28 95 0b 00 06 call 0x6000B95 IL_000e 73 91 0e 00 06 newobj 0x6000E91 IL_0013 7a throw IL_0014 02 ldarg.0 IL_0015 03 ldarg.1 IL_0016 28 60 1f 00 06 call 0x6001F60 IL_001b 2a ret INLINER impTokenLookupContextHandle for System.Threading.WaitHandle:WaitOne(int):bool:this is 0x00007FD7B63DA608. *************** In fgFindBasicBlocks() for System.Threading.WaitHandle:WaitOne(int):bool:this weight= 16 : state 4 [ ldarg.1 ] weight= 22 : state 22 [ ldc.i4.m1 ] weight= 20 : state 47 [ bge.s ] weight= 66 : state 102 [ ldstr ] weight= 79 : state 40 [ call ] weight=227 : state 103 [ newobj ] weight=210 : state 108 [ throw ] weight= 10 : state 3 [ ldarg.0 ] weight= 16 : state 4 [ ldarg.1 ] weight= 79 : state 40 [ call ] weight= 19 : state 42 [ ret ] Inline candidate looks like a wrapper method. Multiplier increased to 1. Inline candidate has an arg that feeds a constant test. Multiplier increased to 2. Inline candidate has const arg that feeds a conditional. Multiplier increased to 5. Inline candidate callsite is boring. Multiplier increased to 6.3. calleeNativeSizeEstimate=764 callsiteNativeSizeEstimate=115 benefit multiplier=6.3 threshold=724 Native estimate for function size exceeds threshold for inlining 76.4 > 72.4 (multiplier = 6.3) Inline expansion aborted, inline not profitable Inlining [000041] failed, so bashing STMT00010 to NOP INLINER: during 'fgInline' result 'failed this call site' reason 'unprofitable inline' for 'System.Diagnostics.Tests.StopwatchTests:GetTimestamp()' calling 'System.Threading.WaitHandle:WaitOne(int):bool:this' INLINER: during 'fgInline' result 'failed this call site' reason 'unprofitable inline' Replacing the return expression placeholder [000042] with [000041] [000042] --C--------- * RET_EXPR int (inl return from call [000041]) Inserting the inline return expression [000041] --CXG------- * CALL nullcheck int System.Threading.WaitHandle.WaitOne [000039] --CXG------- this in rdi +--* COMMA ref [000038] H-CXG------- | +--* CALL help long HELPER.CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE [000036] ------------ arg0 | | +--* CNS_INT long 0x7fd7b7374a80 [000037] ------------ arg1 | | \--* CNS_INT int 9 [000034] ----G------- | \--* FIELD ref s_sleepEvent [000040] ------------ arg1 \--* CNS_INT int 1 Expanding INLINE_CANDIDATE in statement STMT00003 in BB09: STMT00003 (IL 0x00C... ???) [000006] I-C-G------- * CALL long System.Diagnostics.Stopwatch.GetTimestamp (exactContextHnd=0x00007FD7B7692DA9) INLINER: inlineInfo.tokenLookupContextHandle for System.Diagnostics.Stopwatch:GetTimestamp():long set to 0x00007FD7B7692DA9: Invoking compiler for the inlinee method System.Diagnostics.Stopwatch:GetTimestamp():long : IL to import: IL_0000 7e 08 18 00 04 ldsfld 0x4001808 IL_0005 28 c7 4c 00 06 call 0x6004CC7 IL_000a 28 28 4d 00 06 call 0x6004D28 IL_000f 2a ret INLINER impTokenLookupContextHandle for System.Diagnostics.Stopwatch:GetTimestamp():long is 0x00007FD7B7692DA9. *************** In fgFindBasicBlocks() for System.Diagnostics.Stopwatch:GetTimestamp():long Jump targets: none New Basic Block BB12 [0009] created. BB12 [000..010) Basic block list for 'System.Diagnostics.Stopwatch:GetTimestamp():long' ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB12 [0009] 1 1 [000..010) (return) ----------------------------------------------------------------------------------------------------------------------------------------- *************** In impImport() for System.Diagnostics.Stopwatch:GetTimestamp():long impImportBlockPending for BB12 Importing BB12 (PC=000) of 'System.Diagnostics.Stopwatch:GetTimestamp():long' [ 0] 0 (0x000) ldsfld 04001808 [ 1] 5 (0x005) call 06004CC7 In Compiler::impImportCall: opcode is call, kind=0, callRetType is void, structSize is 0 [000048] I-C-G------- * CALL void System.Diagnostics.Debug.Assert (exactContextHnd=0x00007FD7B642BC09) [000047] ------------ arg0 \--* CNS_INT int 1 [ 0] 10 (0x00a) call 06004D28 In Compiler::impImportCall: opcode is call, kind=0, callRetType is long, structSize is 0 [000049] I-C-G------- * CALL long System.Diagnostics.Stopwatch.QueryPerformanceCounter (exactContextHnd=0x00007FD7B7692DA9) [ 1] 15 (0x00f) ret Inlinee Return expression (before normalization) => [000050] --C--------- * RET_EXPR long (inl return from call [000049]) Inlinee Return expression (after normalization) => [000050] --C--------- * RET_EXPR long (inl return from call [000049]) *************** in fgTransformIndirectCalls(inlinee) -- no candidates to transform ----------- Statements (and blocks) added due to the inlining of call [000006] ----------- Inlinee method body: STMT00012 (IL 0x00C... ???) [000048] I-C-G------- * CALL void System.Diagnostics.Debug.Assert (exactContextHnd=0x00007FD7B642BC09) [000047] ------------ arg0 \--* CNS_INT int 1 STMT00013 (IL 0x00C... ???) [000049] I-C-G------- * CALL long System.Diagnostics.Stopwatch.QueryPerformanceCounter (exactContextHnd=0x00007FD7B7692DA9) fgInlineAppendStatements: no gc ref inline locals. Return expression for call at [000006] is [000050] --C--------- * RET_EXPR long (inl return from call [000049]) Successfully inlined System.Diagnostics.Stopwatch:GetTimestamp():long (16 IL bytes) (depth 1) [below ALWAYS_INLINE size] -------------------------------------------------------------------------------------------- INLINER: during 'fgInline' result 'success' reason 'below ALWAYS_INLINE size' for 'System.Diagnostics.Tests.StopwatchTests:GetTimestamp()' calling 'System.Diagnostics.Stopwatch:GetTimestamp():long' INLINER: during 'fgInline' result 'success' reason 'below ALWAYS_INLINE size' Expanding INLINE_CANDIDATE in statement STMT00012 in BB09: STMT00012 (IL 0x00C... ???) [000048] I-C-G------- * CALL void System.Diagnostics.Debug.Assert (exactContextHnd=0x00007FD7B642BC09) [000047] ------------ arg0 \--* CNS_INT int 1 Argument #0: is a constant [000047] ------------ * CNS_INT int 1 Folding operator with constant nodes into a constant: [000052] ------------ * CAST int <- bool <- int [000047] ------------ \--* CNS_INT int 1 Bashed to int constant: [000052] ------------ * CNS_INT int 1 INLINER: inlineInfo.tokenLookupContextHandle for System.Diagnostics.Debug:Assert(bool) set to 0x00007FD7B642BC09: Invoking compiler for the inlinee method System.Diagnostics.Debug:Assert(bool) : IL to import: IL_0000 02 ldarg.0 IL_0001 7e 1a 02 00 04 ldsfld 0x400021A IL_0006 7e 1a 02 00 04 ldsfld 0x400021A IL_000b 28 c9 4c 00 06 call 0x6004CC9 IL_0010 2a ret INLINER impTokenLookupContextHandle for System.Diagnostics.Debug:Assert(bool) is 0x00007FD7B642BC09. *************** In fgFindBasicBlocks() for System.Diagnostics.Debug:Assert(bool) weight= 10 : state 3 [ ldarg.0 ] weight=159 : state 112 [ ldsfld ] weight=159 : state 112 [ ldsfld ] weight= 79 : state 40 [ call ] weight= 19 : state 42 [ ret ] Inline candidate looks like a wrapper method. Multiplier increased to 1. Inline candidate is mostly loads and stores. Multiplier increased to 4. Inline candidate callsite is boring. Multiplier increased to 5.3. calleeNativeSizeEstimate=426 callsiteNativeSizeEstimate=85 benefit multiplier=5.3 threshold=450 Native estimate for function size is within threshold for inlining 42.6 <= 45 (multiplier = 5.3) Jump targets: none New Basic Block BB13 [0010] created. BB13 [000..011) Basic block list for 'System.Diagnostics.Debug:Assert(bool)' ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB13 [0010] 1 1 [000..011) (return) ----------------------------------------------------------------------------------------------------------------------------------------- *************** In impImport() for System.Diagnostics.Debug:Assert(bool) impImportBlockPending for BB13 Importing BB13 (PC=000) of 'System.Diagnostics.Debug:Assert(bool)' [ 0] 0 (0x000) ldarg.0 [ 1] 1 (0x001) ldsfld 0400021A [ 2] 6 (0x006) ldsfld 0400021A [ 3] 11 (0x00b) call 06004CC9 In Compiler::impImportCall: opcode is call, kind=0, callRetType is void, structSize is 0 [000058] I-C-G------- * CALL void System.Diagnostics.Debug.Assert (exactContextHnd=0x00007FD7B642BC09) [000053] ------------ arg0 +--* CNS_INT int 1 [000055] n---G------- arg1 +--* IND ref [000054] ------------ | \--* CNS_INT(h) long 0xA0001060 [ICON_STR_HDL] [000057] n---G------- arg2 \--* IND ref [000056] ------------ \--* CNS_INT(h) long 0xA0001060 [ICON_STR_HDL] [ 0] 16 (0x010) ret *************** in fgTransformIndirectCalls(inlinee) -- no candidates to transform ----------- Statements (and blocks) added due to the inlining of call [000048] ----------- Arguments setup: Inlinee method body: STMT00014 (IL 0x00C... ???) [000058] I-C-G------- * CALL void System.Diagnostics.Debug.Assert (exactContextHnd=0x00007FD7B642BC09) [000053] ------------ arg0 +--* CNS_INT int 1 [000055] n---G------- arg1 +--* IND ref [000054] ------------ | \--* CNS_INT(h) long 0xA0001060 [ICON_STR_HDL] [000057] n---G------- arg2 \--* IND ref [000056] ------------ \--* CNS_INT(h) long 0xA0001060 [ICON_STR_HDL] fgInlineAppendStatements: no gc ref inline locals. Successfully inlined System.Diagnostics.Debug:Assert(bool) (17 IL bytes) (depth 2) [profitable inline] -------------------------------------------------------------------------------------------- INLINER: during 'fgInline' result 'success' reason 'profitable inline' for 'System.Diagnostics.Tests.StopwatchTests:GetTimestamp()' calling 'System.Diagnostics.Debug:Assert(bool)' INLINER: during 'fgInline' result 'success' reason 'profitable inline' Expanding INLINE_CANDIDATE in statement STMT00014 in BB09: STMT00014 (IL 0x00C... ???) [000058] I-C-G------- * CALL void System.Diagnostics.Debug.Assert (exactContextHnd=0x00007FD7B642BC09) [000053] ------------ arg0 +--* CNS_INT int 1 [000055] n---G------- arg1 +--* IND ref [000054] ------------ | \--* CNS_INT(h) long 0xA0001060 [ICON_STR_HDL] [000057] n---G------- arg2 \--* IND ref [000056] ------------ \--* CNS_INT(h) long 0xA0001060 [ICON_STR_HDL] Argument #0: is a constant [000053] ------------ * CNS_INT int 1 Argument #1: has global refs [000055] n---G------- * IND ref [000054] ------------ \--* CNS_INT(h) long 0xA0001060 [ICON_STR_HDL] Argument #2: has global refs [000057] n---G------- * IND ref [000056] ------------ \--* CNS_INT(h) long 0xA0001060 [ICON_STR_HDL] Folding operator with constant nodes into a constant: [000060] ------------ * CAST int <- bool <- int [000053] ------------ \--* CNS_INT int 1 Bashed to int constant: [000060] ------------ * CNS_INT int 1 INLINER: inlineInfo.tokenLookupContextHandle for System.Diagnostics.Debug:Assert(bool,ref,ref) set to 0x00007FD7B642BC09: Invoking compiler for the inlinee method System.Diagnostics.Debug:Assert(bool,ref,ref) : IL to import: IL_0000 02 ldarg.0 IL_0001 2d 07 brtrue.s 7 (IL_000a) IL_0003 03 ldarg.1 IL_0004 04 ldarg.2 IL_0005 28 cc 4c 00 06 call 0x6004CCC IL_000a 2a ret INLINER impTokenLookupContextHandle for System.Diagnostics.Debug:Assert(bool,ref,ref) is 0x00007FD7B642BC09. *************** In fgFindBasicBlocks() for System.Diagnostics.Debug:Assert(bool,ref,ref) Jump targets: IL_000a New Basic Block BB14 [0011] created. BB14 [000..003) New Basic Block BB15 [0012] created. BB15 [003..00A) New Basic Block BB16 [0013] created. BB16 [00A..00B) Basic block list for 'System.Diagnostics.Debug:Assert(bool,ref,ref)' ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB14 [0011] 1 1 [000..003)-> BB16 ( cond ) BB15 [0012] 1 1 [003..00A) BB16 [0013] 2 1 [00A..00B) (return) ----------------------------------------------------------------------------------------------------------------------------------------- *************** In impImport() for System.Diagnostics.Debug:Assert(bool,ref,ref) impImportBlockPending for BB14 Importing BB14 (PC=000) of 'System.Diagnostics.Debug:Assert(bool,ref,ref)' [ 0] 0 (0x000) ldarg.0 [ 1] 1 (0x001) brtrue.s Folding operator with constant nodes into a constant: [000063] ------------ * NE int [000061] ------------ +--* CNS_INT int 1 [000062] ------------ \--* CNS_INT int 0 Bashed to int constant: [000063] ------------ * CNS_INT int 1 The conditional jump becomes an unconditional jump to BB16 impImportBlockPending for BB16 Importing BB16 (PC=010) of 'System.Diagnostics.Debug:Assert(bool,ref,ref)' [ 0] 10 (0x00a) ret ** Note: inlinee IL was partially imported -- imported 0 of 11 bytes of method IL *************** in fgTransformIndirectCalls(inlinee) -- no candidates to transform BB15 was not imported, marked as removed (1) Renumbering the basic blocks for fgRemoveEmptyBlocks *************** Before renumbering the basic blocks ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB14 [0011] 1 1 [000..003)-> BB16 (always) i BB16 [0013] 2 1 [00A..00B) (return) i ----------------------------------------------------------------------------------------------------------------------------------------- *************** Exception Handling table is empty Renumber BB14 to BB17 Renumber BB16 to BB18 *************** After renumbering the basic blocks ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB17 [0011] 1 1 [000..003)-> BB18 (always) i BB18 [0013] 2 1 [00A..00B) (return) i ----------------------------------------------------------------------------------------------------------------------------------------- *************** Exception Handling table is empty New BlockSet epoch 1, # of blocks (including unused BB00): 1, bitset array size: 1 (short) ----------- Statements (and blocks) added due to the inlining of call [000058] ----------- Arguments setup: Inlinee method body:New Basic Block BB19 [0014] created. Convert bbJumpKind of BB18 to BBJ_NONE fgInlineAppendStatements: no gc ref inline locals. ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB17 [0011] 1 1 [00C..00D)-> BB18 (always) i BB18 [0013] 2 1 [00C..00D) i ----------------------------------------------------------------------------------------------------------------------------------------- ------------ BB17 [00C..00D) -> BB18 (always), preds={} succs={BB18} ------------ BB18 [00C..00D), preds={} succs={BB19} ------------------------------------------------------------------------------------------------------------------- Successfully inlined System.Diagnostics.Debug:Assert(bool,ref,ref) (11 IL bytes) (depth 3) [below ALWAYS_INLINE size] -------------------------------------------------------------------------------------------- INLINER: during 'fgInline' result 'success' reason 'below ALWAYS_INLINE size' for 'System.Diagnostics.Tests.StopwatchTests:GetTimestamp()' calling 'System.Diagnostics.Debug:Assert(bool,ref,ref)' INLINER: during 'fgInline' result 'success' reason 'below ALWAYS_INLINE size' Expanding INLINE_CANDIDATE in statement STMT00013 in BB19: STMT00013 (IL 0x00C... ???) [000049] I-C-G------- * CALL long System.Diagnostics.Stopwatch.QueryPerformanceCounter (exactContextHnd=0x00007FD7B7692DA9) INLINER: inlineInfo.tokenLookupContextHandle for System.Diagnostics.Stopwatch:QueryPerformanceCounter():long set to 0x00007FD7B7692DA9: Invoking compiler for the inlinee method System.Diagnostics.Stopwatch:QueryPerformanceCounter():long : IL to import: IL_0000 28 54 00 00 06 call 0x6000054 IL_0005 2a ret INLINER impTokenLookupContextHandle for System.Diagnostics.Stopwatch:QueryPerformanceCounter():long is 0x00007FD7B7692DA9. *************** In fgFindBasicBlocks() for System.Diagnostics.Stopwatch:QueryPerformanceCounter():long Jump targets: none New Basic Block BB20 [0015] created. BB20 [000..006) Basic block list for 'System.Diagnostics.Stopwatch:QueryPerformanceCounter():long' ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB20 [0015] 1 1 [000..006) (return) ----------------------------------------------------------------------------------------------------------------------------------------- *************** In impImport() for System.Diagnostics.Stopwatch:QueryPerformanceCounter():long impImportBlockPending for BB20 Importing BB20 (PC=000) of 'System.Diagnostics.Stopwatch:QueryPerformanceCounter():long' [ 0] 0 (0x000) call 06000054 In Compiler::impImportCall: opcode is call, kind=0, callRetType is long, structSize is 0 Inline a CALLI PINVOKE call from method System.Diagnostics.Stopwatch:QueryPerformanceCounter():longINLINER: during 'impMarkInlineCandidate' result 'failed this callee' reason 'noinline per IL/cached result' for 'System.Diagnostics.Stopwatch:QueryPerformanceCounter():long' calling 'Sys:GetTimestamp():long' INLINER: during 'impMarkInlineCandidate' result 'failed this callee' reason 'noinline per IL/cached result' [ 1] 5 (0x005) ret Inlinee Return expression (before normalization) => [000065] --C-G------- * CALL unman long Sys.GetTimestamp Inlinee Return expression (after normalization) => [000065] --C-G------- * CALL unman long Sys.GetTimestamp ** Note: inlinee IL was partially imported -- imported 0 of 6 bytes of method IL *************** in fgTransformIndirectCalls(inlinee) -- no candidates to transform ----------- Statements (and blocks) added due to the inlining of call [000049] ----------- Inlinee method body:fgInlineAppendStatements: no gc ref inline locals. Return expression for call at [000049] is [000065] --C-G------- * CALL unman long Sys.GetTimestamp Successfully inlined System.Diagnostics.Stopwatch:QueryPerformanceCounter():long (6 IL bytes) (depth 2) [below ALWAYS_INLINE size] -------------------------------------------------------------------------------------------- INLINER: during 'fgInline' result 'success' reason 'below ALWAYS_INLINE size' for 'System.Diagnostics.Tests.StopwatchTests:GetTimestamp()' calling 'System.Diagnostics.Stopwatch:QueryPerformanceCounter():long' INLINER: during 'fgInline' result 'success' reason 'below ALWAYS_INLINE size' Replacing the return expression placeholder [000007] with [000065] [000007] --C--------- * RET_EXPR long (inl return from call [000050]) Inserting the inline return expression [000065] --C-G------- * CALL unman long Sys.GetTimestamp Expanding INLINE_CANDIDATE in statement STMT00005 in BB19: STMT00005 (IL 0x012...0x019) [000012] I-C-G------- * CALL void Xunit.Assert.NotEqual (exactContextHnd=0x00007FD7B7BD0490) [000010] ------------ arg0 +--* LCL_VAR long V00 loc0 [000011] ------------ arg1 \--* LCL_VAR long V01 loc1 Note: candidate is implicit tail call Argument #0: is a local var [000010] ------------ * LCL_VAR long V00 loc0 Argument #1: is a local var [000011] ------------ * LCL_VAR long V01 loc1 INLINER: inlineInfo.tokenLookupContextHandle for Xunit.Assert:NotEqual(long,long) set to 0x00007FD7B7BD0490: Invoking compiler for the inlinee method Xunit.Assert:NotEqual(long,long) : IL to import: IL_0000 02 ldarg.0 IL_0001 03 ldarg.1 IL_0002 14 ldnull IL_0003 28 02 00 00 2b call 0x2B000002 IL_0008 28 11 00 00 2b call 0x2B000011 IL_000d 2a ret INLINER impTokenLookupContextHandle for Xunit.Assert:NotEqual(long,long) is 0x00007FD7B7BD0490. *************** In fgFindBasicBlocks() for Xunit.Assert:NotEqual(long,long) Jump targets: none New Basic Block BB21 [0016] created. BB21 [000..00E) Basic block list for 'Xunit.Assert:NotEqual(long,long)' ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB21 [0016] 1 1 [000..00E) (return) ----------------------------------------------------------------------------------------------------------------------------------------- *************** In impImport() for Xunit.Assert:NotEqual(long,long) impImportBlockPending for BB21 Importing BB21 (PC=000) of 'Xunit.Assert:NotEqual(long,long)' [ 0] 0 (0x000) ldarg.0 [ 1] 1 (0x001) ldarg.1 [ 2] 2 (0x002) ldnull [ 3] 3 (0x003) call 2B000002 In Compiler::impImportCall: opcode is call, kind=0, callRetType is ref, structSize is 0 [000068] I-C-G------- * CALL ref Xunit.Assert.GetEqualityComparer (exactContextHnd=0x00007FD7B7BD0550) [000067] ------------ arg0 \--* CNS_INT ref null [ 3] 8 (0x008) call 2B000011 (Inline Implicit Tail call: prefixFlags |= PREFIX_TAILCALL_IMPLICIT) In Compiler::impImportCall: opcode is call, kind=0, callRetType is void, structSize is 0 GTF_CALL_M_IMPLICIT_TAILCALL bit set for call [000070] [000070] I-C-G------- * CALL void Xunit.Assert.NotEqual (exactContextHnd=0x00007FD7B7BD06D0) [000010] ------------ arg0 +--* LCL_VAR long V00 loc0 [000011] ------------ arg1 +--* LCL_VAR long V01 loc1 [000069] --C--------- arg2 \--* RET_EXPR ref (inl return from call [000068]) [ 0] 13 (0x00d) ret *************** in fgTransformIndirectCalls(inlinee) -- no candidates to transform ----------- Statements (and blocks) added due to the inlining of call [000012] ----------- Arguments setup: Inlinee method body: STMT00015 (IL 0x012... ???) [000068] I-C-G------- * CALL ref Xunit.Assert.GetEqualityComparer (exactContextHnd=0x00007FD7B7BD0550) [000067] ------------ arg0 \--* CNS_INT ref null STMT00016 (IL 0x012... ???) [000070] I-C-G------- * CALL void Xunit.Assert.NotEqual (exactContextHnd=0x00007FD7B7BD06D0) [000010] ------------ arg0 +--* LCL_VAR long V00 loc0 [000011] ------------ arg1 +--* LCL_VAR long V01 loc1 [000069] --C--------- arg2 \--* RET_EXPR ref (inl return from call [000068]) fgInlineAppendStatements: no gc ref inline locals. Successfully inlined Xunit.Assert:NotEqual(long,long) (14 IL bytes) (depth 1) [below ALWAYS_INLINE size] -------------------------------------------------------------------------------------------- INLINER: during 'fgInline' result 'success' reason 'below ALWAYS_INLINE size' for 'System.Diagnostics.Tests.StopwatchTests:GetTimestamp()' calling 'Xunit.Assert:NotEqual(long,long)' INLINER: during 'fgInline' result 'success' reason 'below ALWAYS_INLINE size' Expanding INLINE_CANDIDATE in statement STMT00015 in BB19: STMT00015 (IL 0x012... ???) [000068] I-C-G------- * CALL ref Xunit.Assert.GetEqualityComparer (exactContextHnd=0x00007FD7B7BD0550) [000067] ------------ arg0 \--* CNS_INT ref null Argument #0: is a constant [000067] ------------ * CNS_INT ref null INLINER: inlineInfo.tokenLookupContextHandle for Xunit.Assert:GetEqualityComparer(ref):ref set to 0x00007FD7B7BD0550: Invoking compiler for the inlinee method Xunit.Assert:GetEqualityComparer(ref):ref : IL to import: IL_0000 02 ldarg.0 IL_0001 73 40 00 00 0a newobj 0xA000040 IL_0006 2a ret INLINER impTokenLookupContextHandle for Xunit.Assert:GetEqualityComparer(ref):ref is 0x00007FD7B7BD0550. *************** In fgFindBasicBlocks() for Xunit.Assert:GetEqualityComparer(ref):ref Jump targets: none New Basic Block BB22 [0017] created. BB22 [000..007) Basic block list for 'Xunit.Assert:GetEqualityComparer(ref):ref' ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB22 [0017] 1 1 [000..007) (return) ----------------------------------------------------------------------------------------------------------------------------------------- *************** In impImport() for Xunit.Assert:GetEqualityComparer(ref):ref impImportBlockPending for BB22 Importing BB22 (PC=000) of 'Xunit.Assert:GetEqualityComparer(ref):ref' [ 0] 0 (0x000) ldarg.0 [ 1] 1 (0x001) newobj lvaGrabTemp returning 3 (V03 tmp1) called for NewObj constructor temp. [000076] -A---------- * ASG ref [000075] D------N---- +--* LCL_VAR ref V03 tmp1 [000074] ------------ \--* ALLOCOBJ ref [000073] ------------ \--* CNS_INT(h) long 0x7fd7b7bd0b30 token Marked V03 as a single def local lvaSetClass: setting class for V03 to (00007FD7B7BD0B30) Xunit.Sdk.AssertEqualityComparer`1[Int64] [exact] 0A000040 In Compiler::impImportCall: opcode is newobj, kind=0, callRetType is void, structSize is 0 [000078] I-C-G------- * CALL void Xunit.Sdk.AssertEqualityComparer`1[Int64][System.Int64]..ctor (exactContextHnd=0x00007FD7B7BD0B31) [000077] ------------ this in rdi +--* LCL_VAR ref V03 tmp1 [000072] ------------ arg1 \--* CNS_INT ref null [ 1] 6 (0x006) ret Inlinee Return expression (before normalization) => [000079] ------------ * LCL_VAR ref V03 tmp1 Inlinee Return expression (after normalization) => [000079] ------------ * LCL_VAR ref V03 tmp1 *************** in fgTransformIndirectCalls(inlinee) -- no candidates to transform ----------- Statements (and blocks) added due to the inlining of call [000068] ----------- Arguments setup: Inlinee method body: STMT00017 (IL 0x012... ???) [000076] -A---------- * ASG ref [000075] D------N---- +--* LCL_VAR ref V03 tmp1 [000074] ------------ \--* ALLOCOBJ ref [000073] ------------ \--* CNS_INT(h) long 0x7fd7b7bd0b30 token STMT00018 (IL 0x012... ???) [000078] I-C-G------- * CALL void Xunit.Sdk.AssertEqualityComparer`1[Int64][System.Int64]..ctor (exactContextHnd=0x00007FD7B7BD0B31) [000077] ------------ this in rdi +--* LCL_VAR ref V03 tmp1 [000072] ------------ arg1 \--* CNS_INT ref null fgInlineAppendStatements: no gc ref inline locals. INLINER: Updating optMethodFlags -- root:0 callee:2 new:2 Return expression for call at [000068] is [000079] ------------ * LCL_VAR ref V03 tmp1 Successfully inlined Xunit.Assert:GetEqualityComparer(ref):ref (7 IL bytes) (depth 2) [below ALWAYS_INLINE size] -------------------------------------------------------------------------------------------- INLINER: during 'fgInline' result 'success' reason 'below ALWAYS_INLINE size' for 'System.Diagnostics.Tests.StopwatchTests:GetTimestamp()' calling 'Xunit.Assert:GetEqualityComparer(ref):ref' INLINER: during 'fgInline' result 'success' reason 'below ALWAYS_INLINE size' Expanding INLINE_CANDIDATE in statement STMT00018 in BB19: STMT00018 (IL 0x012... ???) [000078] I-C-G------- * CALL void Xunit.Sdk.AssertEqualityComparer`1[Int64][System.Int64]..ctor (exactContextHnd=0x00007FD7B7BD0B31) [000077] ------------ this in rdi +--* LCL_VAR ref V03 tmp1 [000072] ------------ arg1 \--* CNS_INT ref null thisArg: is a local var [000077] ------------ * LCL_VAR ref V03 tmp1 Argument #1: is a constant [000072] ------------ * CNS_INT ref null INLINER: inlineInfo.tokenLookupContextHandle for Xunit.Sdk.AssertEqualityComparer`1[Int64][System.Int64]:.ctor(ref):this set to 0x00007FD7B7BD0B31: Invoking compiler for the inlinee method Xunit.Sdk.AssertEqualityComparer`1[Int64][System.Int64]:.ctor(ref):this : IL to import: IL_0000 73 d3 00 00 0a newobj 0xA0000D3 IL_0005 0a stloc.0 IL_0006 06 ldloc.0 IL_0007 03 ldarg.1 IL_0008 7d d4 00 00 0a stfld 0xA0000D4 IL_000d 02 ldarg.0 IL_000e 28 18 00 00 0a call 0xA000018 IL_0013 02 ldarg.0 IL_0014 06 ldloc.0 IL_0015 fe 06 d5 00 00 0a ldftn 0xA0000D5 IL_001b 73 d6 00 00 0a newobj 0xA0000D6 IL_0020 7d d7 00 00 0a stfld 0xA0000D7 IL_0025 2a ret INLINER impTokenLookupContextHandle for Xunit.Sdk.AssertEqualityComparer`1[Int64][System.Int64]:.ctor(ref):this is 0x00007FD7B7BD0B31. *************** In fgFindBasicBlocks() for Xunit.Sdk.AssertEqualityComparer`1[Int64][System.Int64]:.ctor(ref):this weight=227 : state 103 [ newobj ] weight= 20 : state 199 [ stloc.0 -> ldloc.0 ] weight= 16 : state 4 [ ldarg.1 ] weight= 31 : state 111 [ stfld ] weight= 10 : state 3 [ ldarg.0 ] weight= 79 : state 40 [ call ] weight= 10 : state 3 [ ldarg.0 ] weight= 12 : state 7 [ ldloc.0 ] weight=102 : state 173 [ ldftn ] weight=227 : state 103 [ newobj ] weight= 31 : state 111 [ stfld ] weight= 19 : state 42 [ ret ] multiplier in instance constructors increased to 1.5. Inline candidate callsite is boring. Multiplier increased to 2.8. calleeNativeSizeEstimate=784 callsiteNativeSizeEstimate=115 benefit multiplier=2.8 threshold=322 Native estimate for function size exceeds threshold for inlining 78.4 > 32.2 (multiplier = 2.8) Inline expansion aborted, inline not profitable INLINER: during 'fgInline' result 'failed this call site' reason 'unprofitable inline' for 'System.Diagnostics.Tests.StopwatchTests:GetTimestamp()' calling 'Xunit.Sdk.AssertEqualityComparer`1[Int64][System.Int64]:.ctor(ref):this' INLINER: during 'fgInline' result 'failed this call site' reason 'unprofitable inline' Expanding INLINE_CANDIDATE in statement STMT00016 in BB19: STMT00016 (IL 0x012... ???) [000070] I-C-G------- * CALL void Xunit.Assert.NotEqual (exactContextHnd=0x00007FD7B7BD06D0) [000010] ------------ arg0 +--* LCL_VAR long V00 loc0 [000011] ------------ arg1 +--* LCL_VAR long V01 loc1 [000069] --C--------- arg2 \--* RET_EXPR ref (inl return from call [000079]) Note: candidate is implicit tail call Argument #0: is a local var [000010] ------------ * LCL_VAR long V00 loc0 Argument #1: is a local var [000011] ------------ * LCL_VAR long V01 loc1 Argument #2: is a local var [000079] ------------ * LCL_VAR ref V03 tmp1 INLINER: inlineInfo.tokenLookupContextHandle for Xunit.Assert:NotEqual(long,long,ref) set to 0x00007FD7B7BD06D0: Invoking compiler for the inlinee method Xunit.Assert:NotEqual(long,long,ref) : IL to import: IL_0000 72 f7 00 00 70 ldstr 0x700000F7 IL_0005 04 ldarg.2 IL_0006 28 4b 00 00 06 call 0x600004B IL_000b 04 ldarg.2 IL_000c 02 ldarg.0 IL_000d 03 ldarg.1 IL_000e 6f 41 00 00 0a callvirt 0xA000041 IL_0013 2c 1c brfalse.s 28 (IL_0031) IL_0015 02 ldarg.0 IL_0016 8c 0a 00 00 1b box 0x1B00000A IL_001b 28 77 00 00 06 call 0x6000077 IL_0020 03 ldarg.1 IL_0021 8c 0a 00 00 1b box 0x1B00000A IL_0026 28 77 00 00 06 call 0x6000077 IL_002b 73 cb 00 00 06 newobj 0x60000CB IL_0030 7a throw IL_0031 2a ret INLINER impTokenLookupContextHandle for Xunit.Assert:NotEqual(long,long,ref) is 0x00007FD7B7BD06D0. *************** In fgFindBasicBlocks() for Xunit.Assert:NotEqual(long,long,ref) weight= 66 : state 102 [ ldstr ] weight= 35 : state 5 [ ldarg.2 ] weight= 79 : state 40 [ call ] weight= 35 : state 5 [ ldarg.2 ] weight= 10 : state 3 [ ldarg.0 ] weight= 16 : state 4 [ ldarg.1 ] weight= 83 : state 99 [ callvirt ] weight= 27 : state 44 [ brfalse.s ] weight= 10 : state 3 [ ldarg.0 ] weight=247 : state 117 [ box ] weight= 79 : state 40 [ call ] weight= 16 : state 4 [ ldarg.1 ] weight=247 : state 117 [ box ] weight= 79 : state 40 [ call ] weight=227 : state 103 [ newobj ] weight=210 : state 108 [ throw ] weight= 19 : state 42 [ ret ] Inline candidate has an arg that feeds a constant test. Multiplier increased to 1. Inline candidate callsite is boring. Multiplier increased to 2.3. calleeNativeSizeEstimate=1485 callsiteNativeSizeEstimate=145 benefit multiplier=2.3 threshold=333 Native estimate for function size exceeds threshold for inlining 148.5 > 33.3 (multiplier = 2.3) Inline expansion aborted, inline not profitable INLINER: during 'fgInline' result 'failed this call site' reason 'unprofitable inline' for 'System.Diagnostics.Tests.StopwatchTests:GetTimestamp()' calling 'Xunit.Assert:NotEqual(long,long,ref)' INLINER: during 'fgInline' result 'failed this call site' reason 'unprofitable inline' Replacing the return expression placeholder [000069] with [000079] [000069] --C--------- * RET_EXPR ref (inl return from call [000079]) Inserting the inline return expression [000079] ------------ * LCL_VAR ref V03 tmp1 *************** After fgInline() ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..01A) i BB07 [0003] 1 1 [000..001)-> BB08 (always) i BB08 [0005] 2 1 [000..001) i BB09 [0006] 1 1 [???..???) i internal BB17 [0011] 1 1 [00C..00D)-> BB18 (always) i BB18 [0013] 2 1 [00C..00D) i BB19 [0014] 1 1 [???..???) (return) i internal newobj ----------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [000..01A), preds={} succs={BB07} ------------ BB07 [000..001) -> BB08 (always), preds={} succs={BB08} ------------ BB08 [000..001), preds={} succs={BB09} ------------ BB09 [???..???), preds={} succs={BB17} ***** BB09 STMT00001 (IL ???... ???) [000003] -AC--------- * ASG long [000002] D------N---- +--* LCL_VAR long V00 loc0 [000032] --C-G------- \--* CALL unman long Sys.GetTimestamp ***** BB09 STMT00011 (IL 0x006... ???) [000041] --CXG------- * CALL nullcheck int System.Threading.WaitHandle.WaitOne [000039] --CXG------- this in rdi +--* COMMA ref [000038] H-CXG------- | +--* CALL help long HELPER.CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE [000036] ------------ arg0 | | +--* CNS_INT long 0x7fd7b7374a80 [000037] ------------ arg1 | | \--* CNS_INT int 9 [000034] ----G------- | \--* FIELD ref s_sleepEvent [000040] ------------ arg1 \--* CNS_INT int 1 ------------ BB17 [00C..00D) -> BB18 (always), preds={} succs={BB18} ------------ BB18 [00C..00D), preds={} succs={BB19} ------------ BB19 [???..???) (return), preds={} succs={} ***** BB19 STMT00004 (IL ???... ???) [000009] -AC--------- * ASG long [000008] D------N---- +--* LCL_VAR long V01 loc1 [000065] --C-G------- \--* CALL unman long Sys.GetTimestamp ***** BB19 STMT00017 (IL 0x012... ???) [000076] -A---------- * ASG ref [000075] D------N---- +--* LCL_VAR ref V03 tmp1 [000074] ------------ \--* ALLOCOBJ ref [000073] ------------ \--* CNS_INT(h) long 0x7fd7b7bd0b30 token ***** BB19 STMT00018 (IL 0x012... ???) [000078] --C-G------- * CALL void Xunit.Sdk.AssertEqualityComparer`1[Int64][System.Int64]..ctor [000077] ------------ this in rdi +--* LCL_VAR ref V03 tmp1 [000072] ------------ arg1 \--* CNS_INT ref null ***** BB19 STMT00016 (IL 0x012... ???) [000070] --C-G------- * CALL void Xunit.Assert.NotEqual [000010] ------------ arg0 +--* LCL_VAR long V00 loc0 [000011] ------------ arg1 +--* LCL_VAR long V01 loc1 [000079] ------------ arg2 \--* LCL_VAR ref V03 tmp1 ***** BB19 STMT00006 (IL 0x019... ???) [000013] ------------ * RETURN void ------------------------------------------------------------------------------------------------------------------- *************** Exception Handling table is empty **************** Inline Tree Inlines into 06000032 System.Diagnostics.Tests.StopwatchTests:GetTimestamp() [1 IL=0000 TR=000000 06004D24] [below ALWAYS_INLINE size] System.Diagnostics.Stopwatch:GetTimestamp():long [2 IL=0005 TR=000015 06004CC7] [profitable inline] System.Diagnostics.Debug:Assert(bool) [3 IL=0011 TR=000025 06004CC9] [below ALWAYS_INLINE size] System.Diagnostics.Debug:Assert(bool,ref,ref) [4 IL=0010 TR=000016 06004D28] [below ALWAYS_INLINE size] System.Diagnostics.Stopwatch:QueryPerformanceCounter():long [5 IL=0007 TR=000005 06000037] [below ALWAYS_INLINE size] System.Diagnostics.Tests.StopwatchTests:Sleep(int) [0 IL=0006 TR=000041 06001F5F] [FAILED: unprofitable inline devirt] System.Threading.WaitHandle:WaitOne(int):bool:this [6 IL=0012 TR=000006 06004D24] [below ALWAYS_INLINE size] System.Diagnostics.Stopwatch:GetTimestamp():long [7 IL=0005 TR=000048 06004CC7] [profitable inline] System.Diagnostics.Debug:Assert(bool) [8 IL=0011 TR=000058 06004CC9] [below ALWAYS_INLINE size] System.Diagnostics.Debug:Assert(bool,ref,ref) [9 IL=0010 TR=000049 06004D28] [below ALWAYS_INLINE size] System.Diagnostics.Stopwatch:QueryPerformanceCounter():long [10 IL=0020 TR=000012 06000030] [below ALWAYS_INLINE size] Xunit.Assert:NotEqual(long,long) [11 IL=0003 TR=000068 06000029] [below ALWAYS_INLINE size] Xunit.Assert:GetEqualityComparer(ref):ref [0 IL=0001 TR=000078 06000084] [FAILED: unprofitable inline] Xunit.Sdk.AssertEqualityComparer`1[Int64][System.Int64]:.ctor(ref):this [0 IL=0008 TR=000070 06000031] [FAILED: unprofitable inline] Xunit.Assert:NotEqual(long,long,ref) Budget: initialTime=138, finalTime=184, initialBudget=1380, currentBudget=1380 Budget: initialSize=724, finalSize=1406 *************** In Allocate Objects Trees before Allocate Objects ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..01A) i BB07 [0003] 1 1 [000..001)-> BB08 (always) i BB08 [0005] 2 1 [000..001) i BB09 [0006] 1 1 [???..???) i internal BB17 [0011] 1 1 [00C..00D)-> BB18 (always) i BB18 [0013] 2 1 [00C..00D) i BB19 [0014] 1 1 [???..???) (return) i internal newobj ----------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [000..01A), preds={} succs={BB07} ------------ BB07 [000..001) -> BB08 (always), preds={} succs={BB08} ------------ BB08 [000..001), preds={} succs={BB09} ------------ BB09 [???..???), preds={} succs={BB17} ***** BB09 STMT00001 (IL ???... ???) [000003] -AC--------- * ASG long [000002] D------N---- +--* LCL_VAR long V00 loc0 [000032] --C-G------- \--* CALL unman long Sys.GetTimestamp ***** BB09 STMT00011 (IL 0x006... ???) [000041] --CXG------- * CALL nullcheck int System.Threading.WaitHandle.WaitOne [000039] --CXG------- this in rdi +--* COMMA ref [000038] H-CXG------- | +--* CALL help long HELPER.CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE [000036] ------------ arg0 | | +--* CNS_INT long 0x7fd7b7374a80 [000037] ------------ arg1 | | \--* CNS_INT int 9 [000034] ----G------- | \--* FIELD ref s_sleepEvent [000040] ------------ arg1 \--* CNS_INT int 1 ------------ BB17 [00C..00D) -> BB18 (always), preds={} succs={BB18} ------------ BB18 [00C..00D), preds={} succs={BB19} ------------ BB19 [???..???) (return), preds={} succs={} ***** BB19 STMT00004 (IL ???... ???) [000009] -AC--------- * ASG long [000008] D------N---- +--* LCL_VAR long V01 loc1 [000065] --C-G------- \--* CALL unman long Sys.GetTimestamp ***** BB19 STMT00017 (IL 0x012... ???) [000076] -A---------- * ASG ref [000075] D------N---- +--* LCL_VAR ref V03 tmp1 [000074] ------------ \--* ALLOCOBJ ref [000073] ------------ \--* CNS_INT(h) long 0x7fd7b7bd0b30 token ***** BB19 STMT00018 (IL 0x012... ???) [000078] --C-G------- * CALL void Xunit.Sdk.AssertEqualityComparer`1[Int64][System.Int64]..ctor [000077] ------------ this in rdi +--* LCL_VAR ref V03 tmp1 [000072] ------------ arg1 \--* CNS_INT ref null ***** BB19 STMT00016 (IL 0x012... ???) [000070] --C-G------- * CALL void Xunit.Assert.NotEqual [000010] ------------ arg0 +--* LCL_VAR long V00 loc0 [000011] ------------ arg1 +--* LCL_VAR long V01 loc1 [000079] ------------ arg2 \--* LCL_VAR ref V03 tmp1 ***** BB19 STMT00006 (IL 0x019... ???) [000013] ------------ * RETURN void ------------------------------------------------------------------------------------------------------------------- *** ObjectAllocationPhase: disabled, punting *************** Exiting Allocate Objects Trees after Allocate Objects ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..01A) i BB07 [0003] 1 1 [000..001)-> BB08 (always) i BB08 [0005] 2 1 [000..001) i BB09 [0006] 1 1 [???..???) i internal BB17 [0011] 1 1 [00C..00D)-> BB18 (always) i BB18 [0013] 2 1 [00C..00D) i BB19 [0014] 1 1 [???..???) (return) i internal newobj ----------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [000..01A), preds={} succs={BB07} ------------ BB07 [000..001) -> BB08 (always), preds={} succs={BB08} ------------ BB08 [000..001), preds={} succs={BB09} ------------ BB09 [???..???), preds={} succs={BB17} ***** BB09 STMT00001 (IL ???... ???) [000003] -AC--------- * ASG long [000002] D------N---- +--* LCL_VAR long V00 loc0 [000032] --C-G------- \--* CALL unman long Sys.GetTimestamp ***** BB09 STMT00011 (IL 0x006... ???) [000041] --CXG------- * CALL nullcheck int System.Threading.WaitHandle.WaitOne [000039] --CXG------- this in rdi +--* COMMA ref [000038] H-CXG------- | +--* CALL help long HELPER.CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE [000036] ------------ arg0 | | +--* CNS_INT long 0x7fd7b7374a80 [000037] ------------ arg1 | | \--* CNS_INT int 9 [000034] ----G------- | \--* FIELD ref s_sleepEvent [000040] ------------ arg1 \--* CNS_INT int 1 ------------ BB17 [00C..00D) -> BB18 (always), preds={} succs={BB18} ------------ BB18 [00C..00D), preds={} succs={BB19} ------------ BB19 [???..???) (return), preds={} succs={} ***** BB19 STMT00004 (IL ???... ???) [000009] -AC--------- * ASG long [000008] D------N---- +--* LCL_VAR long V01 loc1 [000065] --C-G------- \--* CALL unman long Sys.GetTimestamp ***** BB19 STMT00017 (IL 0x012... ???) [000076] -AC--------- * ASG ref [000075] D------N---- +--* LCL_VAR ref V03 tmp1 [000074] --C--------- \--* CALL help ref HELPER.CORINFO_HELP_NEWSFAST [000073] ------------ arg0 \--* CNS_INT(h) long 0x7fd7b7bd0b30 token ***** BB19 STMT00018 (IL 0x012... ???) [000078] --C-G------- * CALL void Xunit.Sdk.AssertEqualityComparer`1[Int64][System.Int64]..ctor [000077] ------------ this in rdi +--* LCL_VAR ref V03 tmp1 [000072] ------------ arg1 \--* CNS_INT ref null ***** BB19 STMT00016 (IL 0x012... ???) [000070] --C-G------- * CALL void Xunit.Assert.NotEqual [000010] ------------ arg0 +--* LCL_VAR long V00 loc0 [000011] ------------ arg1 +--* LCL_VAR long V01 loc1 [000079] ------------ arg2 \--* LCL_VAR ref V03 tmp1 ***** BB19 STMT00006 (IL 0x019... ???) [000013] ------------ * RETURN void ------------------------------------------------------------------------------------------------------------------- *************** After fgAddInternal() ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..01A) i BB07 [0003] 1 1 [000..001)-> BB08 (always) i BB08 [0005] 2 1 [000..001) i BB09 [0006] 1 1 [???..???) i internal BB17 [0011] 1 1 [00C..00D)-> BB18 (always) i BB18 [0013] 2 1 [00C..00D) i BB19 [0014] 1 1 [???..???) (return) i internal newobj ----------------------------------------------------------------------------------------------------------------------------------------- *************** Exception Handling table is empty *************** In fgDebugCheckBBlist *************** In fgRemoveEmptyTry() No EH in this method, nothing to remove. *************** In fgRemoveEmptyFinally() No EH in this method, nothing to remove. *************** In fgMergeFinallyChains() No EH in this method, nothing to merge. *************** In fgCloneFinally() No EH in this method, no cloning. *************** In fgPromoteStructs() lvaTable before fgPromoteStructs ; Initial local variable assignments ; ; V00 loc0 long ; V01 loc1 long ; V02 OutArgs lclBlk (na) "OutgoingArgSpace" ; V03 tmp1 ref class-hnd exact "NewObj constructor temp" lvaTable after fgPromoteStructs ; Initial local variable assignments ; ; V00 loc0 long ; V01 loc1 long ; V02 OutArgs lclBlk (na) "OutgoingArgSpace" ; V03 tmp1 ref class-hnd exact "NewObj constructor temp" *************** In fgMarkAddressExposedLocals() LocalAddressVisitor visiting statement: STMT00001 (IL ???... ???) [000003] -AC--------- * ASG long [000002] D------N---- +--* LCL_VAR long V00 loc0 [000032] --C-G------- \--* CALL unman long Sys.GetTimestamp LocalAddressVisitor visiting statement: STMT00011 (IL 0x006... ???) [000041] --CXG------- * CALL nullcheck int System.Threading.WaitHandle.WaitOne [000039] --CXG------- this in rdi +--* COMMA ref [000038] H-CXG------- | +--* CALL help long HELPER.CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE [000036] ------------ arg0 | | +--* CNS_INT long 0x7fd7b7374a80 [000037] ------------ arg1 | | \--* CNS_INT int 9 [000034] ----G------- | \--* FIELD ref s_sleepEvent [000040] ------------ arg1 \--* CNS_INT int 1 LocalAddressVisitor visiting statement: STMT00004 (IL ???... ???) [000009] -AC--------- * ASG long [000008] D------N---- +--* LCL_VAR long V01 loc1 [000065] --C-G------- \--* CALL unman long Sys.GetTimestamp LocalAddressVisitor visiting statement: STMT00017 (IL 0x012... ???) [000076] -AC--------- * ASG ref [000075] D------N---- +--* LCL_VAR ref V03 tmp1 [000074] --C--------- \--* CALL help ref HELPER.CORINFO_HELP_NEWSFAST [000073] ------------ arg0 \--* CNS_INT(h) long 0x7fd7b7bd0b30 token LocalAddressVisitor visiting statement: STMT00018 (IL 0x012... ???) [000078] --C-G------- * CALL void Xunit.Sdk.AssertEqualityComparer`1[Int64][System.Int64]..ctor [000077] ------------ this in rdi +--* LCL_VAR ref V03 tmp1 [000072] ------------ arg1 \--* CNS_INT ref null LocalAddressVisitor visiting statement: STMT00016 (IL 0x012... ???) [000070] --C-G------- * CALL void Xunit.Assert.NotEqual [000010] ------------ arg0 +--* LCL_VAR long V00 loc0 [000011] ------------ arg1 +--* LCL_VAR long V01 loc1 [000079] ------------ arg2 \--* LCL_VAR ref V03 tmp1 LocalAddressVisitor visiting statement: STMT00006 (IL 0x019... ???) [000013] ------------ * RETURN void *************** In fgMorphBlocks() Morphing BB01 of 'System.Diagnostics.Tests.StopwatchTests:GetTimestamp()' Morphing BB07 of 'System.Diagnostics.Tests.StopwatchTests:GetTimestamp()' Morphing BB08 of 'System.Diagnostics.Tests.StopwatchTests:GetTimestamp()' Morphing BB09 of 'System.Diagnostics.Tests.StopwatchTests:GetTimestamp()' fgMorphTree BB09, STMT00001 (before) [000003] -AC--------- * ASG long [000002] D------N---- +--* LCL_VAR long V00 loc0 [000032] --C-G------- \--* CALL unman long Sys.GetTimestamp Initializing arg info for 81.CALL: ArgTable for 81.CALL after fgInitArgInfo: Morphing args for 81.CALL: argSlots=0, preallocatedArgCount=0, nextSlotNum=0, outgoingArgSpaceSize=0 ArgTable for 81.CALL after fgMorphArgs: *** creating GC Poll in block BB09 STMT00001 (IL ???... ???) [000003] -A---------- * ASG long [000002] D----+-N---- +--* LCL_VAR long V00 loc0 [000032] --CXG------- \--* CALL unman long Sys.GetTimestamp STMT00011 (IL 0x006... ???) [000041] --CXG------- * CALL nullcheck int System.Threading.WaitHandle.WaitOne [000039] --CXG------- this in rdi +--* COMMA ref [000038] H-CXG------- | +--* CALL help long HELPER.CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE [000036] ------------ arg0 | | +--* CNS_INT long 0x7fd7b7374a80 [000037] ------------ arg1 | | \--* CNS_INT int 9 [000034] ----G------- | \--* FIELD ref s_sleepEvent [000040] ------------ arg1 \--* CNS_INT int 1 STMT00019 (IL ???... ???) [000081] --C-G------- * CALL help void HELPER.CORINFO_HELP_POLL_GC Initializing arg info for 32.CALL: ArgTable for 32.CALL after fgInitArgInfo: Morphing args for 32.CALL: argSlots=0, preallocatedArgCount=0, nextSlotNum=0, outgoingArgSpaceSize=0 ArgTable for 32.CALL after fgMorphArgs: fgMorphTree BB09, STMT00011 (before) [000041] --CXG------- * CALL nullcheck int System.Threading.WaitHandle.WaitOne [000039] --CXG------- this in rdi +--* COMMA ref [000038] H-CXG------- | +--* CALL help long HELPER.CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE [000036] ------------ arg0 | | +--* CNS_INT long 0x7fd7b7374a80 [000037] ------------ arg1 | | \--* CNS_INT int 9 [000034] ----G------- | \--* FIELD ref s_sleepEvent [000040] ------------ arg1 \--* CNS_INT int 1 Initializing arg info for 41.CALL: ArgTable for 41.CALL after fgInitArgInfo: fgArgTabEntry[arg 0 39.COMMA ref, 1 reg: rdi, align=1] fgArgTabEntry[arg 1 40.CNS_INT int, 1 reg: rsi, align=1] Morphing args for 41.CALL: Initializing arg info for 38.CALL: ArgTable for 38.CALL after fgInitArgInfo: fgArgTabEntry[arg 0 36.CNS_INT long, 1 reg: rdi, align=1] fgArgTabEntry[arg 1 37.CNS_INT int, 1 reg: rsi, align=1] Morphing args for 38.CALL: argSlots=2, preallocatedArgCount=0, nextSlotNum=0, outgoingArgSpaceSize=0 Sorting the arguments: Deferred argument ('rdi'): [000036] -----+------ * CNS_INT long 0x7fd7b7374a80 Replaced with placeholder node: [000082] ----------L- * ARGPLACE long Deferred argument ('rsi'): [000037] -----+------ * CNS_INT int 9 Replaced with placeholder node: [000083] ----------L- * ARGPLACE int Shuffled argument table: rdi rsi ArgTable for 38.CALL after fgMorphArgs: fgArgTabEntry[arg 0 36.CNS_INT long, 1 reg: rdi, align=1, lateArgInx=0, processed] fgArgTabEntry[arg 1 37.CNS_INT int, 1 reg: rsi, align=1, lateArgInx=1, processed] argSlots=2, preallocatedArgCount=0, nextSlotNum=0, outgoingArgSpaceSize=0 Sorting the arguments: Argument with 'side effect'... [000039] --CXG+------ * COMMA ref [000038] H-CXG+------ +--* CALL help long HELPER.CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE [000036] -----+------ arg0 in rdi | +--* CNS_INT long 0x7fd7b7374a80 [000037] -----+------ arg1 in rsi | \--* CNS_INT int 9 [000034] n---G+------ \--* IND ref [000084] -----+------ \--* CNS_INT(h) long 0x7fd7a000f110 static Fseq[s_sleepEvent] lvaGrabTemp returning 4 (V04 tmp2) called for argument with side effect. Evaluate to a temp: [000086] -ACXG-----L- * ASG ref [000085] D------N---- +--* LCL_VAR ref V04 tmp2 [000039] --CXG+------ \--* COMMA ref [000038] H-CXG+------ +--* CALL help long HELPER.CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE [000036] -----+------ arg0 in rdi | +--* CNS_INT long 0x7fd7b7374a80 [000037] -----+------ arg1 in rsi | \--* CNS_INT int 9 [000034] n---G+------ \--* IND ref [000084] -----+------ \--* CNS_INT(h) long 0x7fd7a000f110 static Fseq[s_sleepEvent] Deferred argument ('rsi'): [000040] -----+------ * CNS_INT int 1 Replaced with placeholder node: [000088] ----------L- * ARGPLACE int Shuffled argument table: rdi rsi ArgTable for 41.CALL after fgMorphArgs: fgArgTabEntry[arg 0 87.LCL_VAR ref, 1 reg: rdi, align=1, lateArgInx=0, tmpNum=V04, isTmp, processed] fgArgTabEntry[arg 1 40.CNS_INT int, 1 reg: rsi, align=1, lateArgInx=1, processed] GenTreeNode creates assertion: [000041] --CXG------- * CALL nullcheck int System.Threading.WaitHandle.WaitOne In BB09 New Local Constant Assertion: V04 != null index=#01, mask= fgMorphTree BB09, STMT00011 (after) [000041] --CXG+------ * CALL nullcheck int System.Threading.WaitHandle.WaitOne [000086] -ACXG-----L- this SETUP +--* ASG ref [000085] D------N---- | +--* LCL_VAR ref V04 tmp2 [000039] --CXG+------ | \--* COMMA ref [000038] H-CXG+------ | +--* CALL help long HELPER.CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE [000036] -----+------ arg0 in rdi | | +--* CNS_INT long 0x7fd7b7374a80 [000037] -----+------ arg1 in rsi | | \--* CNS_INT int 9 [000034] n---G+------ | \--* IND ref [000084] -----+------ | \--* CNS_INT(h) long 0x7fd7a000f110 static Fseq[s_sleepEvent] [000087] ------------ this in rdi +--* LCL_VAR ref V04 tmp2 [000040] -----+------ arg1 in rsi \--* CNS_INT int 1 fgMorphTree BB09, STMT00019 (before) [000081] --C-G------- * CALL help void HELPER.CORINFO_HELP_POLL_GC ReMorphing args for 81.CALL: argSlots=0, preallocatedArgCount=0, nextSlotNum=0, outgoingArgSpaceSize=0 ArgTable for 81.CALL after fgMorphArgs: Morphing BB17 of 'System.Diagnostics.Tests.StopwatchTests:GetTimestamp()' Morphing BB18 of 'System.Diagnostics.Tests.StopwatchTests:GetTimestamp()' Morphing BB19 of 'System.Diagnostics.Tests.StopwatchTests:GetTimestamp()' fgMorphTree BB19, STMT00004 (before) [000009] -AC--------- * ASG long [000008] D------N---- +--* LCL_VAR long V01 loc1 [000065] --C-G------- \--* CALL unman long Sys.GetTimestamp Initializing arg info for 89.CALL: ArgTable for 89.CALL after fgInitArgInfo: Morphing args for 89.CALL: argSlots=0, preallocatedArgCount=0, nextSlotNum=0, outgoingArgSpaceSize=0 ArgTable for 89.CALL after fgMorphArgs: *** creating GC Poll in block BB19 STMT00004 (IL ???... ???) [000009] -A---------- * ASG long [000008] D----+-N---- +--* LCL_VAR long V01 loc1 [000065] --CXG------- \--* CALL unman long Sys.GetTimestamp STMT00017 (IL 0x012... ???) [000076] -AC--------- * ASG ref [000075] D------N---- +--* LCL_VAR ref V03 tmp1 [000074] --C--------- \--* CALL help ref HELPER.CORINFO_HELP_NEWSFAST [000073] ------------ arg0 \--* CNS_INT(h) long 0x7fd7b7bd0b30 token STMT00018 (IL 0x012... ???) [000078] --C-G------- * CALL void Xunit.Sdk.AssertEqualityComparer`1[Int64][System.Int64]..ctor [000077] ------------ this in rdi +--* LCL_VAR ref V03 tmp1 [000072] ------------ arg1 \--* CNS_INT ref null STMT00016 (IL 0x012... ???) [000070] --C-G------- * CALL void Xunit.Assert.NotEqual [000010] ------------ arg0 +--* LCL_VAR long V00 loc0 [000011] ------------ arg1 +--* LCL_VAR long V01 loc1 [000079] ------------ arg2 \--* LCL_VAR ref V03 tmp1 STMT00020 (IL 0x019... ???) [000089] --C-G------- * CALL help void HELPER.CORINFO_HELP_POLL_GC STMT00006 (IL 0x019... ???) [000013] ------------ * RETURN void Initializing arg info for 65.CALL: ArgTable for 65.CALL after fgInitArgInfo: Morphing args for 65.CALL: argSlots=0, preallocatedArgCount=0, nextSlotNum=0, outgoingArgSpaceSize=0 ArgTable for 65.CALL after fgMorphArgs: fgMorphTree BB19, STMT00017 (before) [000076] -AC--------- * ASG ref [000075] D------N---- +--* LCL_VAR ref V03 tmp1 [000074] --C--------- \--* CALL help ref HELPER.CORINFO_HELP_NEWSFAST [000073] ------------ arg0 \--* CNS_INT(h) long 0x7fd7b7bd0b30 token Initializing arg info for 74.CALL: ArgTable for 74.CALL after fgInitArgInfo: fgArgTabEntry[arg 0 73.CNS_INT long, 1 reg: rdi, align=1] Morphing args for 74.CALL: argSlots=1, preallocatedArgCount=0, nextSlotNum=0, outgoingArgSpaceSize=0 Sorting the arguments: Deferred argument ('rdi'): [000073] -----+------ * CNS_INT(h) long 0x7fd7b7bd0b30 token Replaced with placeholder node: [000090] ----------L- * ARGPLACE long Shuffled argument table: rdi ArgTable for 74.CALL after fgMorphArgs: fgArgTabEntry[arg 0 73.CNS_INT long, 1 reg: rdi, align=1, lateArgInx=0, processed] fgMorphTree BB19, STMT00017 (after) [000076] -AC--+------ * ASG ref [000075] D----+-N---- +--* LCL_VAR ref V03 tmp1 [000074] --C--+------ \--* CALL help ref HELPER.CORINFO_HELP_NEWSFAST [000073] -----+------ arg0 in rdi \--* CNS_INT(h) long 0x7fd7b7bd0b30 token fgMorphTree BB19, STMT00018 (before) [000078] --C-G------- * CALL void Xunit.Sdk.AssertEqualityComparer`1[Int64][System.Int64]..ctor [000077] ------------ this in rdi +--* LCL_VAR ref V03 tmp1 [000072] ------------ arg1 \--* CNS_INT ref null Initializing arg info for 78.CALL: ArgTable for 78.CALL after fgInitArgInfo: fgArgTabEntry[arg 0 77.LCL_VAR ref, 1 reg: rdi, align=1] fgArgTabEntry[arg 1 72.CNS_INT ref, 1 reg: rsi, align=1] Morphing args for 78.CALL: argSlots=2, preallocatedArgCount=0, nextSlotNum=0, outgoingArgSpaceSize=0 Sorting the arguments: Deferred argument ('rdi'): [000077] -----+------ * LCL_VAR ref V03 tmp1 Replaced with placeholder node: [000091] ----------L- * ARGPLACE ref Deferred argument ('rsi'): [000072] -----+------ * CNS_INT ref null Replaced with placeholder node: [000092] ----------L- * ARGPLACE ref Shuffled argument table: rdi rsi ArgTable for 78.CALL after fgMorphArgs: fgArgTabEntry[arg 0 77.LCL_VAR ref, 1 reg: rdi, align=1, lateArgInx=0, processed] fgArgTabEntry[arg 1 72.CNS_INT ref, 1 reg: rsi, align=1, lateArgInx=1, processed] fgMorphTree BB19, STMT00018 (after) [000078] --CXG+------ * CALL void Xunit.Sdk.AssertEqualityComparer`1[Int64][System.Int64]..ctor [000077] -----+------ this in rdi +--* LCL_VAR ref V03 tmp1 [000072] -----+------ arg1 in rsi \--* CNS_INT ref null fgMorphTree BB19, STMT00016 (before) [000070] --C-G------- * CALL void Xunit.Assert.NotEqual [000010] ------------ arg0 +--* LCL_VAR long V00 loc0 [000011] ------------ arg1 +--* LCL_VAR long V01 loc1 [000079] ------------ arg2 \--* LCL_VAR ref V03 tmp1