****** START compiling TestUtil.TestLog:VerifyOutput():int:this (MethodHash=2053d0cd) Generating code for Windows x64 OPTIONS: compCodeOpt = BLENDED_CODE OPTIONS: compDbgCode = false OPTIONS: compDbgInfo = true OPTIONS: compDbgEnC = false OPTIONS: compProcedureSplitting = false OPTIONS: compProcedureSplittingEH = false OPTIONS: Jit invoked for ngen IL to import: IL_0000 15 ldc.i4.m1 IL_0001 0a stloc.0 IL_0002 02 ldarg.0 IL_0003 28 11 00 00 06 call 0x6000011 IL_0008 0b stloc.1 IL_0009 7e 1c 00 00 0a ldsfld 0xA00001C IL_000e 07 ldloc.1 IL_000f 6f 21 00 00 0a callvirt 0xA000021 IL_0014 2c 05 brfalse.s 5 (IL_001b) IL_0016 1f 64 ldc.i4.s 0x64 IL_0018 0a stloc.0 IL_0019 2b 65 br.s 101 (IL_0080) IL_001b 02 ldarg.0 IL_001c 7b 0b 00 00 04 ldfld 0x400000B IL_0021 6f 30 00 00 0a callvirt 0xA000030 IL_0026 02 ldarg.0 IL_0027 7b 0b 00 00 04 ldfld 0x400000B IL_002c 72 82 01 00 70 ldstr 0x70000182 IL_0031 6f 0f 00 00 0a callvirt 0xA00000F IL_0036 02 ldarg.0 IL_0037 7b 0b 00 00 04 ldfld 0x400000B IL_003c 6f 30 00 00 0a callvirt 0xA000030 IL_0041 02 ldarg.0 IL_0042 7b 0b 00 00 04 ldfld 0x400000B IL_0047 72 92 01 00 70 ldstr 0x70000192 IL_004c 6f 0f 00 00 0a callvirt 0xA00000F IL_0051 02 ldarg.0 IL_0052 7b 0b 00 00 04 ldfld 0x400000B IL_0057 02 ldarg.0 IL_0058 28 15 00 00 06 call 0x6000015 IL_005d 6f 0f 00 00 0a callvirt 0xA00000F IL_0062 02 ldarg.0 IL_0063 7b 0b 00 00 04 ldfld 0x400000B IL_0068 72 b6 01 00 70 ldstr 0x700001B6 IL_006d 6f 0f 00 00 0a callvirt 0xA00000F IL_0072 02 ldarg.0 IL_0073 7b 0b 00 00 04 ldfld 0x400000B IL_0078 07 ldloc.1 IL_0079 6f 0f 00 00 0a callvirt 0xA00000F IL_007e 17 ldc.i4.1 IL_007f 0a stloc.0 IL_0080 06 ldloc.0 IL_0081 2a ret lvaSetClass: setting class for V00 to (4000000000420028) TestUtil.TestLog 'this' passed in register rcx lvaSetClass: setting class for V02 to (4000000000420030) System.String lvaGrabTemp returning 3 (V03 tmp0) (a long lifetime temp) called for OutgoingArgSpace. ; Initial local variable assignments ; ; V00 this ref this class-hnd ; V01 loc0 int ; V02 loc1 ref class-hnd ; V03 OutArgs lclBlk "OutgoingArgSpace" *************** In compInitDebuggingInfo() for TestUtil.TestLog:VerifyOutput():int:this getVars() returned cVars = 0, extendOthers = true info.compVarScopesCount = 3 VarNum LVNum Name Beg End 0: 00h 00h V00 this 000h 082h 1: 01h 01h V01 loc0 000h 082h 2: 02h 02h V02 loc1 000h 082h info.compStmtOffsetsCount = 0 info.compStmtOffsetsImplicit = 0007h ( STACK_EMPTY NOP CALL_SITE ) *************** In fgFindBasicBlocks() for TestUtil.TestLog:VerifyOutput():int:this Marked V02 as a single def local Jump targets: IL_001b IL_0080 New Basic Block BB01 [0000] created. BB01 [000..016) New Basic Block BB02 [0001] created. BB02 [016..01B) New Basic Block BB03 [0002] created. BB03 [01B..080) New Basic Block BB04 [0003] created. BB04 [080..082) INLINER: during 'prejit' result 'failed this callee' reason 'too many il bytes' for 'n/a' calling 'TestUtil.TestLog:VerifyOutput():int:this' INLINER: Marking TestUtil.TestLog:VerifyOutput():int:this as NOINLINE because of too many il bytes INLINER: during 'prejit' result 'failed this callee' reason 'too many il bytes' IL Code Size,Instr 130, 43, Basic Block count 4, Local Variable Num,Ref count 4, 16 for method TestUtil.TestLog:VerifyOutput():int:this OPTIONS: opts.MinOpts() == false Basic block list for 'TestUtil.TestLog:VerifyOutput():int:this' ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..016)-> BB03 ( cond ) BB02 [0001] 1 1 [016..01B)-> BB04 (always) BB03 [0002] 1 1 [01B..080) BB04 [0003] 2 1 [080..082) (return) ----------------------------------------------------------------------------------------------------------------------------------------- *************** Starting PHASE Pre-import *************** Finishing PHASE Pre-import *************** Starting PHASE Importation *************** In impImport() for TestUtil.TestLog:VerifyOutput():int:this impImportBlockPending for BB01 Importing BB01 (PC=000) of 'TestUtil.TestLog:VerifyOutput():int:this' [ 0] 0 (0x000) ldc.i4.m1 -1 [ 1] 1 (0x001) stloc.0 STMT00000 (IL 0x000... ???) [000002] -A---------- * ASG int [000001] D------N---- +--* LCL_VAR int V01 loc0 [000000] ------------ \--* CNS_INT int -1 [ 0] 2 (0x002) ldarg.0 [ 1] 3 (0x003) call 06000011 In Compiler::impImportCall: opcode is call, kind=0, callRetType is ref, structSize is 0 INLINER: during 'impMarkInlineCandidate' result 'failed this callee' reason 'too many il bytes' for 'TestUtil.TestLog:VerifyOutput():int:this' calling 'TestUtil.TestLog:Diff():System.String:this' INLINER: Marking TestUtil.TestLog:Diff():System.String:this as NOINLINE because of too many il bytes INLINER: during 'impMarkInlineCandidate' result 'failed this callee' reason 'too many il bytes' [ 1] 8 (0x008) stloc.1 STMT00001 (IL 0x002... ???) [000006] -AC-G------- * ASG ref [000005] D------N---- +--* LCL_VAR ref V02 loc1 [000004] --C-G------- \--* CALL ref TestUtil.TestLog.Diff [000003] ------------ this in rcx \--* LCL_VAR ref V00 this [ 0] 9 (0x009) ldsfld 0A00001C [ 1] 14 (0x00e) ldloc.1 [ 2] 15 (0x00f) callvirt 0A000021 In Compiler::impImportCall: opcode is callvirt, kind=0, callRetType is bool, structSize is 0 STMT00002 (IL 0x009... ???) [000010] I-C-G------- * CALL nullcheck int System.String.Equals (exactContextHnd=0x4000000000420031) [000009] ------------ arg1 \--* LCL_VAR ref V02 loc1 [ 1] 20 (0x014) brfalse.s STMT00003 (IL ???... ???) [000015] --C--------- * JTRUE void [000014] --C--------- \--* EQ int [000012] --C--------- +--* CAST int <- bool <- int [000011] --C--------- | \--* RET_EXPR int (inl return from call [000010]) [000013] ------------ \--* CNS_INT int 0 impImportBlockPending for BB02 impImportBlockPending for BB03 Importing BB03 (PC=027) of 'TestUtil.TestLog:VerifyOutput():int:this' [ 0] 27 (0x01b) ldarg.0 [ 1] 28 (0x01c) ldfld 0400000B [ 1] 33 (0x021) callvirt 0A000030 In Compiler::impImportCall: opcode is callvirt, kind=4, callRetType is void, structSize is 0 Querying runtime about current class of field TestUtil.TestLog.stdOut (declared as System.IO.TextWriter) Field's current class not available impDevirtualizeCall: Trying to devirtualize virtual call: class for 'this' is System.IO.TextWriter (attrib 21000400) base method is System.IO.TextWriter::WriteLine devirt to System.IO.TextWriter::WriteLine -- inexact or not final [000018] --CXG------- * CALLV ind void System.IO.TextWriter.WriteLine [000017] ---XG------- this in rcx \--* FIELD ref stdOut [000016] ------------ \--* LCL_VAR ref V00 this Class not final or exact, and method not final NOT Marking call [000018] as guarded devirtualization candidate -- disabled by jit config INLINER: during 'impMarkInlineCandidate' result 'failed this call site' reason 'target not direct' for 'TestUtil.TestLog:VerifyOutput():int:this' calling 'System.IO.TextWriter:WriteLine():this' INLINER: during 'impMarkInlineCandidate' result 'failed this call site' reason 'target not direct' STMT00004 (IL 0x01B... ???) [000018] --CXG------- * CALLV ind void System.IO.TextWriter.WriteLine [000017] ---XG------- this in rcx \--* FIELD ref stdOut [000016] ------------ \--* LCL_VAR ref V00 this [ 0] 38 (0x026) ldarg.0 [ 1] 39 (0x027) ldfld 0400000B [ 1] 44 (0x02c) ldstr 70000182 [ 2] 49 (0x031) callvirt 0A00000F In Compiler::impImportCall: opcode is callvirt, kind=4, callRetType is void, structSize is 0 Querying runtime about current class of field TestUtil.TestLog.stdOut (declared as System.IO.TextWriter) Field's current class not available impDevirtualizeCall: Trying to devirtualize virtual call: class for 'this' is System.IO.TextWriter (attrib 21000400) base method is System.IO.TextWriter::WriteLine devirt to System.IO.TextWriter::WriteLine -- inexact or not final [000022] --CXG------- * CALLV ind void System.IO.TextWriter.WriteLine [000020] ---XG------- this in rcx +--* FIELD ref stdOut [000019] ------------ | \--* LCL_VAR ref V00 this [000021] ------------ arg1 \--* CNS_STR ref Class not final or exact, and method not final NOT Marking call [000022] as guarded devirtualization candidate -- disabled by jit config INLINER: during 'impMarkInlineCandidate' result 'failed this call site' reason 'target not direct' for 'TestUtil.TestLog:VerifyOutput():int:this' calling 'System.IO.TextWriter:WriteLine(System.String):this' INLINER: during 'impMarkInlineCandidate' result 'failed this call site' reason 'target not direct' STMT00005 (IL 0x026... ???) [000022] --CXG------- * CALLV ind void System.IO.TextWriter.WriteLine [000020] ---XG------- this in rcx +--* FIELD ref stdOut [000019] ------------ | \--* LCL_VAR ref V00 this [000021] ------------ arg1 \--* CNS_STR ref [ 0] 54 (0x036) ldarg.0 [ 1] 55 (0x037) ldfld 0400000B [ 1] 60 (0x03c) callvirt 0A000030 In Compiler::impImportCall: opcode is callvirt, kind=4, callRetType is void, structSize is 0 Querying runtime about current class of field TestUtil.TestLog.stdOut (declared as System.IO.TextWriter) Field's current class not available impDevirtualizeCall: Trying to devirtualize virtual call: class for 'this' is System.IO.TextWriter (attrib 21000400) base method is System.IO.TextWriter::WriteLine devirt to System.IO.TextWriter::WriteLine -- inexact or not final [000025] --CXG------- * CALLV ind void System.IO.TextWriter.WriteLine [000024] ---XG------- this in rcx \--* FIELD ref stdOut [000023] ------------ \--* LCL_VAR ref V00 this Class not final or exact, and method not final NOT Marking call [000025] as guarded devirtualization candidate -- disabled by jit config INLINER: during 'impMarkInlineCandidate' result 'failed this call site' reason 'target not direct' for 'TestUtil.TestLog:VerifyOutput():int:this' calling 'System.IO.TextWriter:WriteLine():this' INLINER: during 'impMarkInlineCandidate' result 'failed this call site' reason 'target not direct' STMT00006 (IL 0x036... ???) [000025] --CXG------- * CALLV ind void System.IO.TextWriter.WriteLine [000024] ---XG------- this in rcx \--* FIELD ref stdOut [000023] ------------ \--* LCL_VAR ref V00 this [ 0] 65 (0x041) ldarg.0 [ 1] 66 (0x042) ldfld 0400000B [ 1] 71 (0x047) ldstr 70000192 [ 2] 76 (0x04c) callvirt 0A00000F In Compiler::impImportCall: opcode is callvirt, kind=4, callRetType is void, structSize is 0 Querying runtime about current class of field TestUtil.TestLog.stdOut (declared as System.IO.TextWriter) Field's current class not available impDevirtualizeCall: Trying to devirtualize virtual call: class for 'this' is System.IO.TextWriter (attrib 21000400) base method is System.IO.TextWriter::WriteLine devirt to System.IO.TextWriter::WriteLine -- inexact or not final [000029] --CXG------- * CALLV ind void System.IO.TextWriter.WriteLine [000027] ---XG------- this in rcx +--* FIELD ref stdOut [000026] ------------ | \--* LCL_VAR ref V00 this [000028] ------------ arg1 \--* CNS_STR ref Class not final or exact, and method not final NOT Marking call [000029] as guarded devirtualization candidate -- disabled by jit config INLINER: during 'impMarkInlineCandidate' result 'failed this call site' reason 'target not direct' for 'TestUtil.TestLog:VerifyOutput():int:this' calling 'System.IO.TextWriter:WriteLine(System.String):this' INLINER: during 'impMarkInlineCandidate' result 'failed this call site' reason 'target not direct' STMT00007 (IL 0x041... ???) [000029] --CXG------- * CALLV ind void System.IO.TextWriter.WriteLine [000027] ---XG------- this in rcx +--* FIELD ref stdOut [000026] ------------ | \--* LCL_VAR ref V00 this [000028] ------------ arg1 \--* CNS_STR ref [ 0] 81 (0x051) ldarg.0 [ 1] 82 (0x052) ldfld 0400000B [ 1] 87 (0x057) ldarg.0 [ 2] 88 (0x058) call 06000015 In Compiler::impImportCall: opcode is call, kind=0, callRetType is ref, structSize is 0 lvaGrabTemp returning 4 (V04 tmp1) called for impAppendStmt. STMT00009 (IL 0x051... ???) [000035] -A-XG------- * ASG ref [000034] D------N---- +--* LCL_VAR ref V04 tmp1 [000031] ---XG------- \--* FIELD ref stdOut [000030] ------------ \--* LCL_VAR ref V00 this Marked V04 as a single def temp Querying runtime about current class of field TestUtil.TestLog.stdOut (declared as System.IO.TextWriter) Field's current class not available lvaSetClass: setting class for V04 to (40000000004200A8) System.IO.TextWriter STMT00008 (IL 0x051... ???) [000033] I-C-G------- * CALL ref TestUtil.TestLog.get_ExpectedOutput (exactContextHnd=0x4000000000420029) [000032] ------------ this in rcx \--* LCL_VAR ref V00 this [ 2] 93 (0x05d) callvirt 0A00000F In Compiler::impImportCall: opcode is callvirt, kind=4, callRetType is void, structSize is 0 impDevirtualizeCall: Trying to devirtualize virtual call: class for 'this' is System.IO.TextWriter (attrib 21000400) base method is System.IO.TextWriter::WriteLine devirt to System.IO.TextWriter::WriteLine -- inexact or not final [000038] --C-G------- * CALLV ind void System.IO.TextWriter.WriteLine [000036] ------------ this in rcx +--* LCL_VAR ref V04 tmp1 [000037] --C--------- arg1 \--* RET_EXPR ref (inl return from call [000033]) Class not final or exact, and method not final NOT Marking call [000038] as guarded devirtualization candidate -- disabled by jit config INLINER: during 'impMarkInlineCandidate' result 'failed this call site' reason 'target not direct' for 'TestUtil.TestLog:VerifyOutput():int:this' calling 'System.IO.TextWriter:WriteLine(System.String):this' INLINER: during 'impMarkInlineCandidate' result 'failed this call site' reason 'target not direct' STMT00010 (IL ???... ???) [000038] --C-G------- * CALLV ind void System.IO.TextWriter.WriteLine [000036] ------------ this in rcx +--* LCL_VAR ref V04 tmp1 [000037] --C--------- arg1 \--* RET_EXPR ref (inl return from call [000033]) [ 0] 98 (0x062) ldarg.0 [ 1] 99 (0x063) ldfld 0400000B [ 1] 104 (0x068) ldstr 700001B6 [ 2] 109 (0x06d) callvirt 0A00000F In Compiler::impImportCall: opcode is callvirt, kind=4, callRetType is void, structSize is 0 Querying runtime about current class of field TestUtil.TestLog.stdOut (declared as System.IO.TextWriter) Field's current class not available impDevirtualizeCall: Trying to devirtualize virtual call: class for 'this' is System.IO.TextWriter (attrib 21000400) base method is System.IO.TextWriter::WriteLine devirt to System.IO.TextWriter::WriteLine -- inexact or not final [000042] --CXG------- * CALLV ind void System.IO.TextWriter.WriteLine [000040] ---XG------- this in rcx +--* FIELD ref stdOut [000039] ------------ | \--* LCL_VAR ref V00 this [000041] ------------ arg1 \--* CNS_STR ref Class not final or exact, and method not final NOT Marking call [000042] as guarded devirtualization candidate -- disabled by jit config INLINER: during 'impMarkInlineCandidate' result 'failed this call site' reason 'target not direct' for 'TestUtil.TestLog:VerifyOutput():int:this' calling 'System.IO.TextWriter:WriteLine(System.String):this' INLINER: during 'impMarkInlineCandidate' result 'failed this call site' reason 'target not direct' STMT00011 (IL 0x062... ???) [000042] --CXG------- * CALLV ind void System.IO.TextWriter.WriteLine [000040] ---XG------- this in rcx +--* FIELD ref stdOut [000039] ------------ | \--* LCL_VAR ref V00 this [000041] ------------ arg1 \--* CNS_STR ref [ 0] 114 (0x072) ldarg.0 [ 1] 115 (0x073) ldfld 0400000B [ 1] 120 (0x078) ldloc.1 [ 2] 121 (0x079) callvirt 0A00000F In Compiler::impImportCall: opcode is callvirt, kind=4, callRetType is void, structSize is 0 Querying runtime about current class of field TestUtil.TestLog.stdOut (declared as System.IO.TextWriter) Field's current class not available impDevirtualizeCall: Trying to devirtualize virtual call: class for 'this' is System.IO.TextWriter (attrib 21000400) base method is System.IO.TextWriter::WriteLine devirt to System.IO.TextWriter::WriteLine -- inexact or not final [000046] --CXG------- * CALLV ind void System.IO.TextWriter.WriteLine [000044] ---XG------- this in rcx +--* FIELD ref stdOut [000043] ------------ | \--* LCL_VAR ref V00 this [000045] ------------ arg1 \--* LCL_VAR ref V02 loc1 Class not final or exact, and method not final NOT Marking call [000046] as guarded devirtualization candidate -- disabled by jit config INLINER: during 'impMarkInlineCandidate' result 'failed this call site' reason 'target not direct' for 'TestUtil.TestLog:VerifyOutput():int:this' calling 'System.IO.TextWriter:WriteLine(System.String):this' INLINER: during 'impMarkInlineCandidate' result 'failed this call site' reason 'target not direct' STMT00012 (IL 0x072... ???) [000046] --CXG------- * CALLV ind void System.IO.TextWriter.WriteLine [000044] ---XG------- this in rcx +--* FIELD ref stdOut [000043] ------------ | \--* LCL_VAR ref V00 this [000045] ------------ arg1 \--* LCL_VAR ref V02 loc1 [ 0] 126 (0x07e) ldc.i4.1 1 [ 1] 127 (0x07f) stloc.0 STMT00013 (IL 0x07E... ???) [000049] -A---------- * ASG int [000048] D------N---- +--* LCL_VAR int V01 loc0 [000047] ------------ \--* CNS_INT int 1 impImportBlockPending for BB04 Importing BB04 (PC=128) of 'TestUtil.TestLog:VerifyOutput():int:this' [ 0] 128 (0x080) ldloc.0 [ 1] 129 (0x081) ret STMT00014 (IL 0x080... ???) [000051] ------------ * RETURN int [000050] ------------ \--* LCL_VAR int V01 loc0 Importing BB02 (PC=022) of 'TestUtil.TestLog:VerifyOutput():int:this' [ 0] 22 (0x016) ldc.i4.s 100 [ 1] 24 (0x018) stloc.0 STMT00015 (IL 0x016... ???) [000054] -A---------- * ASG int [000053] D------N---- +--* LCL_VAR int V01 loc0 [000052] ------------ \--* CNS_INT int 100 [ 0] 25 (0x019) br.s impImportBlockPending for BB04 *************** Finishing PHASE Importation Trees after Importation ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..016)-> BB03 ( cond ) i BB02 [0001] 1 1 [016..01B)-> BB04 (always) i BB03 [0002] 1 1 [01B..080) i BB04 [0003] 2 1 [080..082) (return) i ----------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [000..016) -> BB03 (cond), preds={} succs={BB02,BB03} ***** BB01 STMT00000 (IL 0x000...0x001) [000002] -A---------- * ASG int [000001] D------N---- +--* LCL_VAR int V01 loc0 [000000] ------------ \--* CNS_INT int -1 ***** BB01 STMT00001 (IL 0x002...0x008) [000006] -AC-G------- * ASG ref [000005] D------N---- +--* LCL_VAR ref V02 loc1 [000004] --C-G------- \--* CALL ref TestUtil.TestLog.Diff [000003] ------------ this in rcx \--* LCL_VAR ref V00 this ***** BB01 STMT00002 (IL 0x009...0x014) [000010] I-C-G------- * CALL nullcheck int System.String.Equals (exactContextHnd=0x4000000000420031) [000009] ------------ arg1 \--* LCL_VAR ref V02 loc1 ***** BB01 STMT00003 (IL ???... ???) [000015] --C--------- * JTRUE void [000014] --C--------- \--* EQ int [000012] --C--------- +--* CAST int <- bool <- int [000011] --C--------- | \--* RET_EXPR int (inl return from call [000010]) [000013] ------------ \--* CNS_INT int 0 ------------ BB02 [016..01B) -> BB04 (always), preds={} succs={BB04} ***** BB02 STMT00015 (IL 0x016...0x018) [000054] -A---------- * ASG int [000053] D------N---- +--* LCL_VAR int V01 loc0 [000052] ------------ \--* CNS_INT int 100 ------------ BB03 [01B..080), preds={} succs={BB04} ***** BB03 STMT00004 (IL 0x01B...0x07F) [000018] --CXG------- * CALLV ind void System.IO.TextWriter.WriteLine [000017] ---XG------- this in rcx \--* FIELD ref stdOut [000016] ------------ \--* LCL_VAR ref V00 this ***** BB03 STMT00005 (IL 0x026... ???) [000022] --CXG------- * CALLV ind void System.IO.TextWriter.WriteLine [000020] ---XG------- this in rcx +--* FIELD ref stdOut [000019] ------------ | \--* LCL_VAR ref V00 this [000021] ------------ arg1 \--* CNS_STR ref ***** BB03 STMT00006 (IL 0x036... ???) [000025] --CXG------- * CALLV ind void System.IO.TextWriter.WriteLine [000024] ---XG------- this in rcx \--* FIELD ref stdOut [000023] ------------ \--* LCL_VAR ref V00 this ***** BB03 STMT00007 (IL 0x041... ???) [000029] --CXG------- * CALLV ind void System.IO.TextWriter.WriteLine [000027] ---XG------- this in rcx +--* FIELD ref stdOut [000026] ------------ | \--* LCL_VAR ref V00 this [000028] ------------ arg1 \--* CNS_STR ref ***** BB03 STMT00009 (IL 0x051... ???) [000035] -A-XG------- * ASG ref [000034] D------N---- +--* LCL_VAR ref V04 tmp1 [000031] ---XG------- \--* FIELD ref stdOut [000030] ------------ \--* LCL_VAR ref V00 this ***** BB03 STMT00008 (IL 0x051... ???) [000033] I-C-G------- * CALL ref TestUtil.TestLog.get_ExpectedOutput (exactContextHnd=0x4000000000420029) [000032] ------------ this in rcx \--* LCL_VAR ref V00 this ***** BB03 STMT00010 (IL ???... ???) [000038] --C-G------- * CALLV ind void System.IO.TextWriter.WriteLine [000036] ------------ this in rcx +--* LCL_VAR ref V04 tmp1 [000037] --C--------- arg1 \--* RET_EXPR ref (inl return from call [000033]) ***** BB03 STMT00011 (IL 0x062... ???) [000042] --CXG------- * CALLV ind void System.IO.TextWriter.WriteLine [000040] ---XG------- this in rcx +--* FIELD ref stdOut [000039] ------------ | \--* LCL_VAR ref V00 this [000041] ------------ arg1 \--* CNS_STR ref ***** BB03 STMT00012 (IL 0x072... ???) [000046] --CXG------- * CALLV ind void System.IO.TextWriter.WriteLine [000044] ---XG------- this in rcx +--* FIELD ref stdOut [000043] ------------ | \--* LCL_VAR ref V00 this [000045] ------------ arg1 \--* LCL_VAR ref V02 loc1 ***** BB03 STMT00013 (IL 0x07E... ???) [000049] -A---------- * ASG int [000048] D------N---- +--* LCL_VAR int V01 loc0 [000047] ------------ \--* CNS_INT int 1 ------------ BB04 [080..082) (return), preds={} succs={} ***** BB04 STMT00014 (IL 0x080...0x081) [000051] ------------ * RETURN int [000050] ------------ \--* LCL_VAR int V01 loc0 ------------------------------------------------------------------------------------------------------------------- *************** Starting PHASE Indirect call transform -- no candidates to transform *************** Finishing PHASE Indirect call transform [no changes] *************** Starting PHASE Expand patchpoints -- no patchpoints to transform *************** Finishing PHASE Expand patchpoints [no changes] *************** Starting PHASE Post-import *************** Finishing PHASE Post-import *************** Starting PHASE Morph - Init New BlockSet epoch 1, # of blocks (including unused BB00): 5, bitset array size: 1 (short) *************** In fgRemoveEmptyBlocks *************** Finishing PHASE Morph - Init *************** In fgDebugCheckBBlist *************** Starting PHASE Morph - Inlining Expanding INLINE_CANDIDATE in statement STMT00002 in BB01: STMT00002 (IL 0x009...0x014) [000010] I-C-G------- * CALL nullcheck int System.String.Equals (exactContextHnd=0x4000000000420031) [000009] ------------ arg1 \--* LCL_VAR ref V02 loc1 thisArg: [000008] ------------ * NOP ref [000007] H----------- \--* CNS_INT(h) ref 0x420068 [ICON_STR_HDL] Argument #1: is a local var [000009] ------------ * LCL_VAR ref V02 loc1 INLINER: inlineInfo.tokenLookupContextHandle for System.String:Equals(System.String):bool:this set to 0x4000000000420031: Invoking compiler for the inlinee method System.String:Equals(System.String):bool:this : IL to import: IL_0000 00 nop IL_0001 02 ldarg.0 IL_0002 03 ldarg.1 IL_0003 fe 01 ceq IL_0005 0a stloc.0 IL_0006 06 ldloc.0 IL_0007 2c 04 brfalse.s 4 (IL_000d) IL_0009 17 ldc.i4.1 IL_000a 0b stloc.1 IL_000b 2b 2f br.s 47 (IL_003c) IL_000d 03 ldarg.1 IL_000e 14 ldnull IL_000f fe 01 ceq IL_0011 0c stloc.2 IL_0012 08 ldloc.2 IL_0013 2c 04 brfalse.s 4 (IL_0019) IL_0015 16 ldc.i4.0 IL_0016 0b stloc.1 IL_0017 2b 23 br.s 35 (IL_003c) IL_0019 02 ldarg.0 IL_001a 28 30 02 00 06 call 0x6000230 IL_001f 03 ldarg.1 IL_0020 6f 30 02 00 06 callvirt 0x6000230 IL_0025 fe 01 ceq IL_0027 16 ldc.i4.0 IL_0028 fe 01 ceq IL_002a 0d stloc.3 IL_002b 09 ldloc.3 IL_002c 2c 04 brfalse.s 4 (IL_0032) IL_002e 16 ldc.i4.0 IL_002f 0b stloc.1 IL_0030 2b 0a br.s 10 (IL_003c) IL_0032 02 ldarg.0 IL_0033 03 ldarg.1 IL_0034 28 35 02 00 06 call 0x6000235 IL_0039 0b stloc.1 IL_003a 2b 00 br.s 0 (IL_003c) IL_003c 07 ldloc.1 IL_003d 2a ret INLINER impTokenLookupContextHandle for System.String:Equals(System.String):bool:this is 0x4000000000420031. *************** In fgFindBasicBlocks() for System.String:Equals(System.String):bool:this weight= 65 : state 2 [ noshow ] weight= 10 : state 3 [ ldarg.0 ] weight= 16 : state 4 [ ldarg.1 ] weight= 20 : state 168 [ ceq ] weight= 20 : state 199 [ stloc.0 -> ldloc.0 ] weight= 27 : state 44 [ brfalse.s ] weight= 28 : state 24 [ ldc.i4.1 ] weight= 34 : state 12 [ stloc.1 ] weight= 44 : state 43 [ br.s ] weight= 16 : state 4 [ ldarg.1 ] weight= 7 : state 21 [ ldnull ] weight= 20 : state 168 [ ceq ] weight=-10 : state 201 [ stloc.2 -> ldloc.2 ] weight= 27 : state 44 [ brfalse.s ] weight= 15 : state 23 [ ldc.i4.0 ] weight= 34 : state 12 [ stloc.1 ] weight= 44 : state 43 [ br.s ] weight= 10 : state 3 [ ldarg.0 ] weight= 79 : state 40 [ call ] weight= 16 : state 4 [ ldarg.1 ] weight= 83 : state 99 [ callvirt ] weight= 20 : state 168 [ ceq ] weight= 15 : state 23 [ ldc.i4.0 ] weight= 20 : state 168 [ ceq ] weight= -4 : state 202 [ stloc.3 -> ldloc.3 ] weight= 27 : state 44 [ brfalse.s ] weight= 15 : state 23 [ ldc.i4.0 ] weight= 34 : state 12 [ stloc.1 ] weight= 44 : state 43 [ br.s ] weight= 10 : state 3 [ ldarg.0 ] weight= 16 : state 4 [ ldarg.1 ] weight= 79 : state 40 [ call ] weight= 34 : state 12 [ stloc.1 ] weight= 44 : state 43 [ br.s ] weight= 9 : state 8 [ ldloc.1 ] 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=987 callsiteNativeSizeEstimate=115 benefit multiplier=2.3 threshold=264 Native estimate for function size exceeds threshold for inlining 98.7 > 26.4 (multiplier = 2.3) Inline expansion aborted, inline not profitable Inlining [000010] failed, so bashing STMT00002 to NOP INLINER: during 'fgInline' result 'failed this call site' reason 'unprofitable inline' for 'TestUtil.TestLog:VerifyOutput():int:this' calling 'System.String:Equals(System.String):bool:this' INLINER: during 'fgInline' result 'failed this call site' reason 'unprofitable inline' Replacing the return expression placeholder [000011] with [000010] [000011] --C--------- * RET_EXPR int (inl return from call [000010]) Inserting the inline return expression [000010] --C-G------- * CALL nullcheck int System.String.Equals [000009] ------------ arg1 \--* LCL_VAR ref V02 loc1 **** Late devirt opportunity [000018] --CXG------- * CALLV ind void System.IO.TextWriter.WriteLine [000017] ---XG------- this in rcx \--* FIELD ref stdOut [000016] ------------ \--* LCL_VAR ref V00 this Querying runtime about current class of field TestUtil.TestLog.stdOut (declared as System.IO.TextWriter) Field's current class not available impDevirtualizeCall: Trying to devirtualize virtual call: class for 'this' is System.IO.TextWriter (attrib 21000400) base method is System.IO.TextWriter::WriteLine devirt to System.IO.TextWriter::WriteLine -- inexact or not final [000018] --CXG------- * CALLV ind void System.IO.TextWriter.WriteLine [000017] ---XG------- this in rcx \--* FIELD ref stdOut [000016] ------------ \--* LCL_VAR ref V00 this Class not final or exact, and method not final No guarded devirt during late devirtualization **** Late devirt opportunity [000022] --CXG------- * CALLV ind void System.IO.TextWriter.WriteLine [000020] ---XG------- this in rcx +--* FIELD ref stdOut [000019] ------------ | \--* LCL_VAR ref V00 this [000021] ------------ arg1 \--* CNS_STR ref Querying runtime about current class of field TestUtil.TestLog.stdOut (declared as System.IO.TextWriter) Field's current class not available impDevirtualizeCall: Trying to devirtualize virtual call: class for 'this' is System.IO.TextWriter (attrib 21000400) base method is System.IO.TextWriter::WriteLine devirt to System.IO.TextWriter::WriteLine -- inexact or not final [000022] --CXG------- * CALLV ind void System.IO.TextWriter.WriteLine [000020] ---XG------- this in rcx +--* FIELD ref stdOut [000019] ------------ | \--* LCL_VAR ref V00 this [000021] ------------ arg1 \--* CNS_STR ref Class not final or exact, and method not final No guarded devirt during late devirtualization **** Late devirt opportunity [000025] --CXG------- * CALLV ind void System.IO.TextWriter.WriteLine [000024] ---XG------- this in rcx \--* FIELD ref stdOut [000023] ------------ \--* LCL_VAR ref V00 this Querying runtime about current class of field TestUtil.TestLog.stdOut (declared as System.IO.TextWriter) Field's current class not available impDevirtualizeCall: Trying to devirtualize virtual call: class for 'this' is System.IO.TextWriter (attrib 21000400) base method is System.IO.TextWriter::WriteLine devirt to System.IO.TextWriter::WriteLine -- inexact or not final [000025] --CXG------- * CALLV ind void System.IO.TextWriter.WriteLine [000024] ---XG------- this in rcx \--* FIELD ref stdOut [000023] ------------ \--* LCL_VAR ref V00 this Class not final or exact, and method not final No guarded devirt during late devirtualization **** Late devirt opportunity [000029] --CXG------- * CALLV ind void System.IO.TextWriter.WriteLine [000027] ---XG------- this in rcx +--* FIELD ref stdOut [000026] ------------ | \--* LCL_VAR ref V00 this [000028] ------------ arg1 \--* CNS_STR ref Querying runtime about current class of field TestUtil.TestLog.stdOut (declared as System.IO.TextWriter) Field's current class not available impDevirtualizeCall: Trying to devirtualize virtual call: class for 'this' is System.IO.TextWriter (attrib 21000400) base method is System.IO.TextWriter::WriteLine devirt to System.IO.TextWriter::WriteLine -- inexact or not final [000029] --CXG------- * CALLV ind void System.IO.TextWriter.WriteLine [000027] ---XG------- this in rcx +--* FIELD ref stdOut [000026] ------------ | \--* LCL_VAR ref V00 this [000028] ------------ arg1 \--* CNS_STR ref Class not final or exact, and method not final No guarded devirt during late devirtualization Querying runtime about current class of field TestUtil.TestLog.stdOut (declared as System.IO.TextWriter) Field's current class not available Expanding INLINE_CANDIDATE in statement STMT00008 in BB03: STMT00008 (IL 0x051... ???) [000033] I-C-G------- * CALL ref TestUtil.TestLog.get_ExpectedOutput (exactContextHnd=0x4000000000420029) [000032] ------------ this in rcx \--* LCL_VAR ref V00 this thisArg: is a local var [000032] ------------ * LCL_VAR ref V00 this INLINER: inlineInfo.tokenLookupContextHandle for TestUtil.TestLog:get_ExpectedOutput():System.String:this set to 0x4000000000420029: Invoking compiler for the inlinee method TestUtil.TestLog:get_ExpectedOutput():System.String:this : IL to import: IL_0000 02 ldarg.0 IL_0001 7b 09 00 00 04 ldfld 0x4000009 IL_0006 6f 1a 00 00 0a callvirt 0xA00001A IL_000b 2a ret INLINER impTokenLookupContextHandle for TestUtil.TestLog:get_ExpectedOutput():System.String:this is 0x4000000000420029. *************** In fgFindBasicBlocks() for TestUtil.TestLog:get_ExpectedOutput():System.String:this Jump targets: none Computing inlinee profile scale: ... call site not profiled New Basic Block BB05 [0004] created. BB05 [000..00C) Basic block list for 'TestUtil.TestLog:get_ExpectedOutput():System.String:this' ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB05 [0004] 1 1 [000..00C) (return) ----------------------------------------------------------------------------------------------------------------------------------------- *************** Inline @[000033] Starting PHASE Pre-import *************** Inline @[000033] Finishing PHASE Pre-import *************** Inline @[000033] Starting PHASE Importation *************** In impImport() for TestUtil.TestLog:get_ExpectedOutput():System.String:this impImportBlockPending for BB05 Importing BB05 (PC=000) of 'TestUtil.TestLog:get_ExpectedOutput():System.String:this' [ 0] 0 (0x000) ldarg.0 [ 1] 1 (0x001) ldfld 04000009 [ 1] 6 (0x006) callvirt 0A00001A In Compiler::impImportCall: opcode is callvirt, kind=4, callRetType is ref, structSize is 0 Querying runtime about current class of field TestUtil.TestLog.expectedOut (declared as System.String) Field's current class not available impDevirtualizeCall: Trying to devirtualize virtual call: class for 'this' is System.String (attrib 20040000) base method is System.Object::ToString devirt to System.String::ToString -- inexact or not final [000057] --CXG------- * CALLV ind ref System.Object.ToString [000056] ---XG------- this in rcx \--* FIELD ref expectedOut [000032] ------------ \--* LCL_VAR ref V00 this Class not final or exact, and method not final NOT Marking call [000057] as guarded devirtualization candidate -- disabled by jit config INLINER: during 'impMarkInlineCandidate' result 'failed this call site' reason 'target not direct' for 'TestUtil.TestLog:get_ExpectedOutput():System.String:this' calling 'System.Object:ToString():System.String:this' INLINER: during 'impMarkInlineCandidate' result 'failed this call site' reason 'target not direct' [ 1] 11 (0x00b) ret Inlinee Return expression (before normalization) => [000057] --CXG------- * CALLV ind ref System.Object.ToString [000056] ---XG------- this in rcx \--* FIELD ref expectedOut [000032] ------------ \--* LCL_VAR ref V00 this Inlinee Return expression (after normalization) => [000057] --CXG------- * CALLV ind ref System.Object.ToString [000056] ---XG------- this in rcx \--* FIELD ref expectedOut [000032] ------------ \--* LCL_VAR ref V00 this ** Note: inlinee IL was partially imported -- imported 0 of 12 bytes of method IL *************** Inline @[000033] Finishing PHASE Importation Trees after Importation ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB05 [0004] 1 1 [000..00C) (return) i ----------------------------------------------------------------------------------------------------------------------------------------- ------------ BB05 [000..00C) (return), preds={} succs={} ------------------------------------------------------------------------------------------------------------------- *************** Inline @[000033] Starting PHASE Indirect call transform -- no candidates to transform *************** Inline @[000033] Finishing PHASE Indirect call transform [no changes] *************** Inline @[000033] Starting PHASE Expand patchpoints -- no patchpoints to transform *************** Inline @[000033] Finishing PHASE Expand patchpoints [no changes] *************** Inline @[000033] Starting PHASE Post-import *************** In fgRemoveEmptyBlocks *************** Inline @[000033] Finishing PHASE Post-import ----------- Statements (and blocks) added due to the inlining of call [000033] ----------- Arguments setup: Inlinee method body:fgInlineAppendStatements: no gc ref inline locals. Return expression for call at [000033] is [000057] --CXG------- * CALLV ind ref System.Object.ToString [000056] ---XG------- this in rcx \--* FIELD ref expectedOut [000032] ------------ \--* LCL_VAR ref V00 this Successfully inlined TestUtil.TestLog:get_ExpectedOutput():System.String:this (12 IL bytes) (depth 1) [below ALWAYS_INLINE size] -------------------------------------------------------------------------------------------- INLINER: during 'fgInline' result 'success' reason 'below ALWAYS_INLINE size' for 'TestUtil.TestLog:VerifyOutput():int:this' calling 'TestUtil.TestLog:get_ExpectedOutput():System.String:this' INLINER: during 'fgInline' result 'success' reason 'below ALWAYS_INLINE size' Replacing the return expression placeholder [000037] with [000057] [000037] --C--------- * RET_EXPR ref (inl return from call [000057]) Inserting the inline return expression [000057] --CXG------- * CALLV ind ref System.Object.ToString [000056] ---XG------- this in rcx \--* FIELD ref expectedOut [000032] ------------ \--* LCL_VAR ref V00 this **** Late devirt opportunity [000057] --CXG------- * CALLV ind ref System.Object.ToString [000056] ---XG------- this in rcx \--* FIELD ref expectedOut [000032] ------------ \--* LCL_VAR ref V00 this Querying runtime about current class of field TestUtil.TestLog.expectedOut (declared as System.String) Field's current class not available impDevirtualizeCall: Trying to devirtualize virtual call: class for 'this' is System.String (attrib 20040000) base method is System.Object::ToString devirt to System.String::ToString -- inexact or not final [000057] --CXG------- * CALLV ind ref System.Object.ToString [000056] ---XG------- this in rcx \--* FIELD ref expectedOut [000032] ------------ \--* LCL_VAR ref V00 this Class not final or exact, and method not final No guarded devirt during late devirtualization **** Late devirt opportunity [000038] --C-G------- * CALLV ind void System.IO.TextWriter.WriteLine [000036] ------------ this in rcx +--* LCL_VAR ref V04 tmp1 [000057] --CXG------- arg1 \--* CALLV ind ref System.Object.ToString [000056] ---XG------- this in rcx \--* FIELD ref expectedOut [000032] ------------ \--* LCL_VAR ref V00 this impDevirtualizeCall: Trying to devirtualize virtual call: class for 'this' is System.IO.TextWriter (attrib 21000400) base method is System.IO.TextWriter::WriteLine devirt to System.IO.TextWriter::WriteLine -- inexact or not final [000038] --C-G------- * CALLV ind void System.IO.TextWriter.WriteLine [000036] ------------ this in rcx +--* LCL_VAR ref V04 tmp1 [000057] --CXG------- arg1 \--* CALLV ind ref System.Object.ToString [000056] ---XG------- this in rcx \--* FIELD ref expectedOut [000032] ------------ \--* LCL_VAR ref V00 this Class not final or exact, and method not final No guarded devirt during late devirtualization **** Late devirt opportunity [000042] --CXG------- * CALLV ind void System.IO.TextWriter.WriteLine [000040] ---XG------- this in rcx +--* FIELD ref stdOut [000039] ------------ | \--* LCL_VAR ref V00 this [000041] ------------ arg1 \--* CNS_STR ref Querying runtime about current class of field TestUtil.TestLog.stdOut (declared as System.IO.TextWriter) Field's current class not available impDevirtualizeCall: Trying to devirtualize virtual call: class for 'this' is System.IO.TextWriter (attrib 21000400) base method is System.IO.TextWriter::WriteLine devirt to System.IO.TextWriter::WriteLine -- inexact or not final [000042] --CXG------- * CALLV ind void System.IO.TextWriter.WriteLine [000040] ---XG------- this in rcx +--* FIELD ref stdOut [000039] ------------ | \--* LCL_VAR ref V00 this [000041] ------------ arg1 \--* CNS_STR ref Class not final or exact, and method not final No guarded devirt during late devirtualization **** Late devirt opportunity [000046] --CXG------- * CALLV ind void System.IO.TextWriter.WriteLine [000044] ---XG------- this in rcx +--* FIELD ref stdOut [000043] ------------ | \--* LCL_VAR ref V00 this [000045] ------------ arg1 \--* LCL_VAR ref V02 loc1 Querying runtime about current class of field TestUtil.TestLog.stdOut (declared as System.IO.TextWriter) Field's current class not available impDevirtualizeCall: Trying to devirtualize virtual call: class for 'this' is System.IO.TextWriter (attrib 21000400) base method is System.IO.TextWriter::WriteLine devirt to System.IO.TextWriter::WriteLine -- inexact or not final [000046] --CXG------- * CALLV ind void System.IO.TextWriter.WriteLine [000044] ---XG------- this in rcx +--* FIELD ref stdOut [000043] ------------ | \--* LCL_VAR ref V00 this [000045] ------------ arg1 \--* LCL_VAR ref V02 loc1 Class not final or exact, and method not final No guarded devirt during late devirtualization **************** Inline Tree Inlines into 06000012 TestUtil.TestLog:VerifyOutput():int:this [0 IL=0003 TR=000004 06000011] [FAILED: too many il bytes] TestUtil.TestLog:Diff():System.String:this [0 IL=0015 TR=000010 0600024E] [FAILED: unprofitable inline] System.String:Equals(System.String):bool:this [0 IL=0033 TR=000018 06002E00] [FAILED: target not direct] System.IO.TextWriter:WriteLine():this [0 IL=0049 TR=000022 06002E0D] [FAILED: target not direct] System.IO.TextWriter:WriteLine(System.String):this [0 IL=0060 TR=000025 06002E00] [FAILED: target not direct] System.IO.TextWriter:WriteLine():this [0 IL=0076 TR=000029 06002E0D] [FAILED: target not direct] System.IO.TextWriter:WriteLine(System.String):this [1 IL=0088 TR=000033 06000015] [below ALWAYS_INLINE size] TestUtil.TestLog:get_ExpectedOutput():System.String:this [0 IL=0093 TR=000038 06002E0D] [FAILED: target not direct] System.IO.TextWriter:WriteLine(System.String):this [0 IL=0109 TR=000042 06002E0D] [FAILED: target not direct] System.IO.TextWriter:WriteLine(System.String):this [0 IL=0121 TR=000046 06002E0D] [FAILED: target not direct] System.IO.TextWriter:WriteLine(System.String):this Budget: initialTime=450, finalTime=436, initialBudget=4500, currentBudget=4500 Budget: initialSize=3095, finalSize=3095 *************** Finishing PHASE Morph - Inlining Trees after Morph - Inlining ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..016)-> BB03 ( cond ) i BB02 [0001] 1 1 [016..01B)-> BB04 (always) i BB03 [0002] 1 1 [01B..080) i BB04 [0003] 2 1 [080..082) (return) i ----------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [000..016) -> BB03 (cond), preds={} succs={BB02,BB03} ***** BB01 STMT00000 (IL 0x000...0x001) [000002] -A---------- * ASG int [000001] D------N---- +--* LCL_VAR int V01 loc0 [000000] ------------ \--* CNS_INT int -1 ***** BB01 STMT00001 (IL 0x002...0x008) [000006] -AC-G------- * ASG ref [000005] D------N---- +--* LCL_VAR ref V02 loc1 [000004] --C-G------- \--* CALL ref TestUtil.TestLog.Diff [000003] ------------ this in rcx \--* LCL_VAR ref V00 this ***** BB01 STMT00003 (IL ???... ???) [000015] --C--------- * JTRUE void [000014] --C--------- \--* EQ int [000012] --C--------- +--* CAST int <- bool <- int [000010] --C-G------- | \--* CALL nullcheck int System.String.Equals [000009] ------------ arg1 | \--* LCL_VAR ref V02 loc1 [000013] ------------ \--* CNS_INT int 0 ------------ BB02 [016..01B) -> BB04 (always), preds={} succs={BB04} ***** BB02 STMT00015 (IL 0x016...0x018) [000054] -A---------- * ASG int [000053] D------N---- +--* LCL_VAR int V01 loc0 [000052] ------------ \--* CNS_INT int 100 ------------ BB03 [01B..080), preds={} succs={BB04} ***** BB03 STMT00004 (IL 0x01B...0x07F) [000018] --CXG------- * CALLV ind void System.IO.TextWriter.WriteLine [000017] ---XG------- this in rcx \--* FIELD ref stdOut [000016] ------------ \--* LCL_VAR ref V00 this ***** BB03 STMT00005 (IL 0x026... ???) [000022] --CXG------- * CALLV ind void System.IO.TextWriter.WriteLine [000020] ---XG------- this in rcx +--* FIELD ref stdOut [000019] ------------ | \--* LCL_VAR ref V00 this [000021] ------------ arg1 \--* CNS_STR ref ***** BB03 STMT00006 (IL 0x036... ???) [000025] --CXG------- * CALLV ind void System.IO.TextWriter.WriteLine [000024] ---XG------- this in rcx \--* FIELD ref stdOut [000023] ------------ \--* LCL_VAR ref V00 this ***** BB03 STMT00007 (IL 0x041... ???) [000029] --CXG------- * CALLV ind void System.IO.TextWriter.WriteLine [000027] ---XG------- this in rcx +--* FIELD ref stdOut [000026] ------------ | \--* LCL_VAR ref V00 this [000028] ------------ arg1 \--* CNS_STR ref ***** BB03 STMT00009 (IL 0x051... ???) [000035] -A-XG------- * ASG ref [000034] D------N---- +--* LCL_VAR ref V04 tmp1 [000031] ---XG------- \--* FIELD ref stdOut [000030] ------------ \--* LCL_VAR ref V00 this ***** BB03 STMT00010 (IL ???... ???) [000038] --C-G------- * CALLV ind void System.IO.TextWriter.WriteLine [000036] ------------ this in rcx +--* LCL_VAR ref V04 tmp1 [000057] --CXG------- arg1 \--* CALLV ind ref System.Object.ToString [000056] ---XG------- this in rcx \--* FIELD ref expectedOut [000032] ------------ \--* LCL_VAR ref V00 this ***** BB03 STMT00011 (IL 0x062... ???) [000042] --CXG------- * CALLV ind void System.IO.TextWriter.WriteLine [000040] ---XG------- this in rcx +--* FIELD ref stdOut [000039] ------------ | \--* LCL_VAR ref V00 this [000041] ------------ arg1 \--* CNS_STR ref ***** BB03 STMT00012 (IL 0x072... ???) [000046] --CXG------- * CALLV ind void System.IO.TextWriter.WriteLine [000044] ---XG------- this in rcx +--* FIELD ref stdOut [000043] ------------ | \--* LCL_VAR ref V00 this [000045] ------------ arg1 \--* LCL_VAR ref V02 loc1 ***** BB03 STMT00013 (IL 0x07E... ???) [000049] -A---------- * ASG int [000048] D------N---- +--* LCL_VAR int V01 loc0 [000047] ------------ \--* CNS_INT int 1 ------------ BB04 [080..082) (return), preds={} succs={} ***** BB04 STMT00014 (IL 0x080...0x081) [000051] ------------ * RETURN int [000050] ------------ \--* LCL_VAR int V01 loc0 ------------------------------------------------------------------------------------------------------------------- *************** Starting PHASE Allocate Objects no newobjs in this method; punting *************** Finishing PHASE Allocate Objects [no changes] *************** Starting PHASE Morph - Add internal blocks *************** After fgAddInternal() ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..016)-> BB03 ( cond ) i BB02 [0001] 1 1 [016..01B)-> BB04 (always) i BB03 [0002] 1 1 [01B..080) i BB04 [0003] 2 1 [080..082) (return) i ----------------------------------------------------------------------------------------------------------------------------------------- *************** Exception Handling table is empty *************** Finishing PHASE Morph - Add internal blocks *************** Starting PHASE Remove empty try *************** In fgRemoveEmptyTry() No EH in this method, nothing to remove. *************** Finishing PHASE Remove empty try [no changes] *************** Starting PHASE Remove empty finally No EH in this method, nothing to remove. *************** Finishing PHASE Remove empty finally [no changes] *************** Starting PHASE Merge callfinally chains No EH in this method, nothing to merge. *************** Finishing PHASE Merge callfinally chains [no changes] *************** Starting PHASE Clone finally No EH in this method, no cloning. *************** Finishing PHASE Clone finally [no changes] *************** Starting PHASE Compute preds Renumbering the basic blocks for fgComputePred *************** Before renumbering the basic blocks ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..016)-> BB03 ( cond ) i BB02 [0001] 1 1 [016..01B)-> BB04 (always) i BB03 [0002] 1 1 [01B..080) i BB04 [0003] 2 1 [080..082) (return) i ----------------------------------------------------------------------------------------------------------------------------------------- *************** Exception Handling table is empty *************** After renumbering the basic blocks =============== No blocks renumbered! New BlockSet epoch 2, # of blocks (including unused BB00): 5, bitset array size: 1 (short) *************** In fgComputePreds() ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..016)-> BB03 ( cond ) i BB02 [0001] 1 1 [016..01B)-> BB04 (always) i BB03 [0002] 1 1 [01B..080) i BB04 [0003] 2 1 [080..082) (return) i ----------------------------------------------------------------------------------------------------------------------------------------- *************** After fgComputePreds() ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..016)-> BB03 ( cond ) i label target BB02 [0001] 1 BB01 1 [016..01B)-> BB04 (always) i BB03 [0002] 1 BB01 1 [01B..080) i label target BB04 [0003] 2 BB02,BB03 1 [080..082) (return) i label target ----------------------------------------------------------------------------------------------------------------------------------------- *************** Finishing PHASE Compute preds *************** Starting PHASE Merge throw blocks *************** In fgTailMergeThrows Method does not have multiple noreturn calls. *************** Finishing PHASE Merge throw blocks [no changes] *************** Starting PHASE Update flow graph early pass *************** In fgUpdateFlowGraph() Before updating the flow graph: ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..016)-> BB03 ( cond ) i label target BB02 [0001] 1 BB01 1 [016..01B)-> BB04 (always) i BB03 [0002] 1 BB01 1 [01B..080) i label target BB04 [0003] 2 BB02,BB03 1 [080..082) (return) i label target ----------------------------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist *************** Finishing PHASE Update flow graph early pass *************** Starting PHASE Morph - Promote Structs *************** In fgResetImplicitByRefRefCount() *************** In fgPromoteStructs() lvaTable before fgPromoteStructs ; Initial local variable assignments ; ; V00 this ref this class-hnd ; V01 loc0 int ; V02 loc1 ref class-hnd ; V03 OutArgs lclBlk "OutgoingArgSpace" ; V04 tmp1 ref class-hnd "impAppendStmt" lvaTable after fgPromoteStructs ; Initial local variable assignments ; ; V00 this ref this class-hnd ; V01 loc0 int ; V02 loc1 ref class-hnd ; V03 OutArgs lclBlk "OutgoingArgSpace" ; V04 tmp1 ref class-hnd "impAppendStmt" *************** Finishing PHASE Morph - Promote Structs *************** Starting PHASE Morph - Structs/AddrExp *************** In fgMarkAddressExposedLocals() LocalAddressVisitor visiting statement: STMT00000 (IL 0x000...0x001) [000002] -A---------- * ASG int [000001] D------N---- +--* LCL_VAR int V01 loc0 [000000] ------------ \--* CNS_INT int -1 LocalAddressVisitor visiting statement: STMT00001 (IL 0x002...0x008) [000006] -AC-G------- * ASG ref [000005] D------N---- +--* LCL_VAR ref V02 loc1 [000004] --C-G------- \--* CALL ref TestUtil.TestLog.Diff [000003] ------------ this in rcx \--* LCL_VAR ref V00 this LocalAddressVisitor visiting statement: STMT00003 (IL ???... ???) [000015] --C--------- * JTRUE void [000014] --C--------- \--* EQ int [000012] --C--------- +--* CAST int <- bool <- int [000010] --C-G------- | \--* CALL nullcheck int System.String.Equals [000009] ------------ arg1 | \--* LCL_VAR ref V02 loc1 [000013] ------------ \--* CNS_INT int 0 LocalAddressVisitor visiting statement: STMT00015 (IL 0x016...0x018) [000054] -A---------- * ASG int [000053] D------N---- +--* LCL_VAR int V01 loc0 [000052] ------------ \--* CNS_INT int 100 LocalAddressVisitor visiting statement: STMT00004 (IL 0x01B...0x07F) [000018] --CXG------- * CALLV ind void System.IO.TextWriter.WriteLine [000017] ---XG------- this in rcx \--* FIELD ref stdOut [000016] ------------ \--* LCL_VAR ref V00 this LocalAddressVisitor visiting statement: STMT00005 (IL 0x026... ???) [000022] --CXG------- * CALLV ind void System.IO.TextWriter.WriteLine [000020] ---XG------- this in rcx +--* FIELD ref stdOut [000019] ------------ | \--* LCL_VAR ref V00 this [000021] ------------ arg1 \--* CNS_STR ref LocalAddressVisitor visiting statement: STMT00006 (IL 0x036... ???) [000025] --CXG------- * CALLV ind void System.IO.TextWriter.WriteLine [000024] ---XG------- this in rcx \--* FIELD ref stdOut [000023] ------------ \--* LCL_VAR ref V00 this LocalAddressVisitor visiting statement: STMT00007 (IL 0x041... ???) [000029] --CXG------- * CALLV ind void System.IO.TextWriter.WriteLine [000027] ---XG------- this in rcx +--* FIELD ref stdOut [000026] ------------ | \--* LCL_VAR ref V00 this [000028] ------------ arg1 \--* CNS_STR ref LocalAddressVisitor visiting statement: STMT00009 (IL 0x051... ???) [000035] -A-XG------- * ASG ref [000034] D------N---- +--* LCL_VAR ref V04 tmp1 [000031] ---XG------- \--* FIELD ref stdOut [000030] ------------ \--* LCL_VAR ref V00 this LocalAddressVisitor visiting statement: STMT00010 (IL ???... ???) [000038] --C-G------- * CALLV ind void System.IO.TextWriter.WriteLine [000036] ------------ this in rcx +--* LCL_VAR ref V04 tmp1 [000057] --CXG------- arg1 \--* CALLV ind ref System.Object.ToString [000056] ---XG------- this in rcx \--* FIELD ref expectedOut [000032] ------------ \--* LCL_VAR ref V00 this LocalAddressVisitor visiting statement: STMT00011 (IL 0x062... ???) [000042] --CXG------- * CALLV ind void System.IO.TextWriter.WriteLine [000040] ---XG------- this in rcx +--* FIELD ref stdOut [000039] ------------ | \--* LCL_VAR ref V00 this [000041] ------------ arg1 \--* CNS_STR ref LocalAddressVisitor visiting statement: STMT00012 (IL 0x072... ???) [000046] --CXG------- * CALLV ind void System.IO.TextWriter.WriteLine [000044] ---XG------- this in rcx +--* FIELD ref stdOut [000043] ------------ | \--* LCL_VAR ref V00 this [000045] ------------ arg1 \--* LCL_VAR ref V02 loc1 LocalAddressVisitor visiting statement: STMT00013 (IL 0x07E... ???) [000049] -A---------- * ASG int [000048] D------N---- +--* LCL_VAR int V01 loc0 [000047] ------------ \--* CNS_INT int 1 LocalAddressVisitor visiting statement: STMT00014 (IL 0x080...0x081) [000051] ------------ * RETURN int [000050] ------------ \--* LCL_VAR int V01 loc0 *************** Finishing PHASE Morph - Structs/AddrExp *************** Starting PHASE Morph - ByRefs *************** In fgRetypeImplicitByRefArgs() *************** Finishing PHASE Morph - ByRefs *************** Starting PHASE Morph - Global *************** In fgMorphBlocks() Morphing BB01 of 'TestUtil.TestLog:VerifyOutput():int:this' fgMorphTree BB01, STMT00000 (before) [000002] -A---------- * ASG int [000001] D------N---- +--* LCL_VAR int V01 loc0 [000000] ------------ \--* CNS_INT int -1 fgMorphTree (before 0): [000002] -A---------- * ASG int [000001] D------N---- +--* LCL_VAR int V01 loc0 [000000] ------------ \--* CNS_INT int -1 fgMorphTree (before 1): [000001] D------N---- * LCL_VAR int V01 loc0 fgMorphTree (after 1): [000001] D------N---- * LCL_VAR int V01 loc0 fgMorphTree (before 2): [000000] ------------ * CNS_INT int -1 fgMorphTree (after 2): [000000] ------------ * CNS_INT int -1 fgMorphTree (after 0): [000002] -A---------- * ASG int [000001] D----+-N---- +--* LCL_VAR int V01 loc0 [000000] -----+------ \--* CNS_INT int -1 GenTreeNode creates assertion: [000002] -A---------- * ASG int In BB01 New Local Constant Assertion: V01 == -1 index=#01, mask=0000000000000001 fgMorphTree BB01, STMT00001 (before) [000006] -AC-G------- * ASG ref [000005] D------N---- +--* LCL_VAR ref V02 loc1 [000004] --C-G------- \--* CALL ref TestUtil.TestLog.Diff [000003] ------------ this in rcx \--* LCL_VAR ref V00 this fgMorphTree (before 3): [000006] -AC-G------- * ASG ref [000005] D------N---- +--* LCL_VAR ref V02 loc1 [000004] --C-G------- \--* CALL ref TestUtil.TestLog.Diff [000003] ------------ this in rcx \--* LCL_VAR ref V00 this fgMorphTree (before 4): [000005] D------N---- * LCL_VAR ref V02 loc1 fgMorphTree (after 4): [000005] D------N---- * LCL_VAR ref V02 loc1 fgMorphTree (before 5): [000004] --C-G------- * CALL ref TestUtil.TestLog.Diff [000003] ------------ this in rcx \--* LCL_VAR ref V00 this Initializing arg info for 4.CALL: ArgTable for 4.CALL after fgInitArgInfo: fgArgTabEntry[arg 0 3.LCL_VAR ref (By ref), 1 reg: rcx, byteAlignment=8] Morphing args for 4.CALL: fgMorphTree (before 6): [000003] ------------ * LCL_VAR ref V00 this fgMorphTree (after 6): [000003] ------------ * LCL_VAR ref V00 this argSlots=1, preallocatedArgCount=4, nextSlotNum=4, nextSlotByteOffset=32, outgoingArgSpaceSize=32 Sorting the arguments: Deferred argument ('rcx'): [000003] -----+------ * LCL_VAR ref V00 this Replaced with placeholder node: [000059] ----------L- * ARGPLACE ref Shuffled argument table: rcx ArgTable for 4.CALL after fgMorphArgs: fgArgTabEntry[arg 0 3.LCL_VAR ref (By ref), 1 reg: rcx, byteAlignment=8, lateArgInx=0, processed] fgMorphTree (after 5): [000004] --CXG------- * CALL ref TestUtil.TestLog.Diff [000003] -----+------ this in rcx \--* LCL_VAR ref V00 this fgMorphTree (after 3): [000006] -ACXG------- * ASG ref [000005] D----+-N---- +--* LCL_VAR ref V02 loc1 [000004] --CXG+------ \--* CALL ref TestUtil.TestLog.Diff [000003] -----+------ this in rcx \--* LCL_VAR ref V00 this fgMorphTree BB01, STMT00001 (after) [000006] -ACXG+------ * ASG ref [000005] D----+-N---- +--* LCL_VAR ref V02 loc1 [000004] --CXG+------ \--* CALL ref TestUtil.TestLog.Diff [000003] -----+------ this in rcx \--* LCL_VAR ref V00 this fgMorphTree BB01, STMT00003 (before) [000015] --C--------- * JTRUE void [000014] --C--------- \--* EQ int [000012] --C--------- +--* CAST int <- bool <- int [000010] --C-G------- | \--* CALL nullcheck int System.String.Equals [000009] ------------ arg1 | \--* LCL_VAR ref V02 loc1 [000013] ------------ \--* CNS_INT int 0 fgMorphTree (before 7): [000015] --C--------- * JTRUE void [000014] --C--------- \--* EQ int [000012] --C--------- +--* CAST int <- bool <- int [000010] --C-G------- | \--* CALL nullcheck int System.String.Equals [000009] ------------ arg1 | \--* LCL_VAR ref V02 loc1 [000013] ------------ \--* CNS_INT int 0 fgMorphTree (before 8): [000014] J-C----N---- * EQ int [000012] --C--------- +--* CAST int <- bool <- int [000010] --C-G------- | \--* CALL nullcheck int System.String.Equals [000009] ------------ arg1 | \--* LCL_VAR ref V02 loc1 [000013] ------------ \--* CNS_INT int 0 fgMorphTree (before 9): [000012] --C--------- * CAST int <- bool <- int [000010] --C-G------- \--* CALL nullcheck int System.String.Equals [000009] ------------ arg1 \--* LCL_VAR ref V02 loc1 fgMorphTree (before 10): [000010] --C-G------- * CALL nullcheck int System.String.Equals [000009] ------------ arg1 \--* LCL_VAR ref V02 loc1 C:\git\runtime\src\coreclr\src\jit\assertionprop.cpp:3839 Assertion failed 'op1 != nullptr' in 'TestUtil.TestLog:VerifyOutput():int:this' during 'Morph - Global' (IL size 130)