****** START compiling TestEntrypoint:Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter[System.__Canon]() (MethodHash=1f1113fb) Generating code for Windows x86 OPTIONS: compCodeOpt = BLENDED_CODE OPTIONS: compDbgCode = true OPTIONS: compDbgInfo = true OPTIONS: compDbgEnC = false OPTIONS: compProcedureSplitting = false OPTIONS: compProcedureSplittingEH = false OPTIONS: Jit invoked for ngen IL to import: IL_0000 fe 16 17 00 00 1b constrained. 0x1B000017 IL_0006 fe 06 2a 00 00 2b ldftn 0x2B00002A IL_000c fe 13 volatile. IL_000e 80 03 00 00 0a stsfld 0xA000003 IL_0013 fe 13 volatile. IL_0015 7e 03 00 00 0a ldsfld 0xA000003 IL_001a 29 01 00 00 11 calli 0x11000001 IL_001f 72 6f 40 05 70 ldstr 0x7005406F IL_0024 72 be 39 05 70 ldstr 0x700539BE IL_0029 28 02 00 00 0a call 0xA000002 IL_002e 2a ret 'GenCtxt' passed in register ecx ; Initial local variable assignments ; ; V00 TypeCtx int *************** In compInitDebuggingInfo() for TestEntrypoint:Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter[System.__Canon]() getVars() returned cVars = 0, extendOthers = true info.compVarScopesCount = 1 VarNum LVNum Name Beg End 0: 00h 00h V00 TypeCtx 000h 02Fh New Basic Block BB01 [0000] created. New scratch BB01 Debuggable code - Add new BB01 [0000] to perform initialization of variables info.compStmtOffsetsCount = 0 info.compStmtOffsetsImplicit = 0007h ( STACK_EMPTY NOP CALL_SITE ) *************** In fgFindBasicBlocks() for TestEntrypoint:Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter[System.__Canon]() weight= 65 : state 181 [ constrained ] weight=102 : state 173 [ ldftn ] weight=-44 : state 178 [ volatile ] weight=125 : state 114 [ stsfld ] weight=-44 : state 178 [ volatile ] weight=159 : state 112 [ ldsfld ] weight= 65 : state 41 [ calli ] weight= 66 : state 102 [ ldstr ] weight= 66 : state 102 [ ldstr ] weight= 79 : state 40 [ call ] weight= 19 : state 42 [ ret ] Jump targets: none New Basic Block BB02 [0001] created. BB02 [0001] [000..02F) Setting edge weights for BB01 -> BB02 to [0 .. 3.402823e+38] setting likelihood of BB01 -> BB02 to 1 Inline candidate looks like a wrapper method. Multiplier increased to 1. Inline candidate callsite is hot. Multiplier increased to 4. Callsite has profile data: 1. Multiplier limited to 16.8. calleeNativeSizeEstimate=658 callsiteNativeSizeEstimate=55 benefit multiplier=16.8 threshold=924 Native estimate for function size is within threshold for inlining 65.8 <= 92.4 (multiplier = 16.8) INLINER: during 'prejit' result 'PreJIT Success' reason 'PreJIT Success' for 'n/a' calling 'TestEntrypoint:Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter[System.__Canon]()' INLINER: during 'prejit' result 'PreJIT Success' reason 'PreJIT Success' CLFLG_MINOPT set for method TestEntrypoint:Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter[System.__Canon]() IL Code Size,Instr 47, 8, Basic Block count 2, Local Variable Num,Ref count 1, 0 for method TestEntrypoint:Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter[System.__Canon]() OPTIONS: opts.MinOpts() == true Basic block list for 'TestEntrypoint:Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter[System.__Canon]()' ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [???..???)-> BB02 (always) i internal q BB02 [0001] 1 BB01 1 [000..02F) (return) ---------------------------------------------------------------------------------------------------------------------------------------------- *************** Starting PHASE Pre-import *************** Finishing PHASE Pre-import Trees after Pre-import ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [???..???)-> BB02 (always) i internal q BB02 [0001] 1 BB01 1 [000..02F) (return) ---------------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [0000] [???..???) -> BB02 (always), preds={} succs={BB02} ***** BB01 [0000] STMT00000 ( ??? ... ??? ) [000000] ----------- * NOP void ------------ BB02 [0001] [000..02F) (return), preds={BB01} succs={} ------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist *************** Starting PHASE Profile incorporation BBOPT not set *************** Finishing PHASE Profile incorporation [no changes] *************** Starting PHASE Importation Marking leading BBF_INTERNAL block BB01 as BBF_IMPORTED impImportBlockPending for BB02 Importing BB02 (PC=000) of 'TestEntrypoint:Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter[System.__Canon]()' [ 0] 0 (0x000) constrained. (1B000017) ldftn 2B00002A [ 1] 12 (0x00c) volatile.stsfld 0A000003 STMT00001 ( 0x000[E-] ... ??? ) [000006] VACXGO----- * STOREIND int [000005] --CXG------ +--* ADD byref [000003] H-CXG------ | +--* CALL help byref CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE [000004] ----------- | \--* CNS_INT int 8 Fseq[FtnHolder] [000002] --C-G------ \--* CALL help int CORINFO_HELP_READYTORUN_GENERIC_HANDLE [000001] !---------- arg0 \--* LCL_VAR int V00 TypeCtx [ 0] 19 (0x013) volatile.ldsfld 0A000003 [ 1] 26 (0x01a) calli 11000001 In Compiler::impImportCall: opcode is calli, kind=0, callRetType is void, structSize is 0 Marking call [000011] as fat pointer candidate STMT00002 ( 0x013[E-] ... ??? ) [000011] --CXG------ * CALL ind void [000010] V-CXGO----- calli tgt \--* IND int [000009] --CXG------ \--* ADD byref [000007] H-CXG------ +--* CALL help byref CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE [000008] ----------- \--* CNS_INT int 8 Fseq[FtnHolder] [ 0] 31 (0x01f) ldstr 7005406F [ 1] 36 (0x024) ldstr 700539BE [ 2] 41 (0x029) call 0A000002 In Compiler::impImportCall: opcode is call, kind=0, callRetType is void, structSize is 0 STMT00003 ( 0x01F[E-] ... ??? ) [000014] --C-G------ * CALL void Statics:CheckForFailure(System.String,System.String) [000012] ----------- arg0 +--* CNS_STR ref [000013] ----------- arg1 \--* CNS_STR ref [ 0] 46 (0x02e) ret STMT00004 ( 0x02E[E-] ... ??? ) [000015] ----------- * RETURN void *************** Finishing PHASE Importation Trees after Importation ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [???..???)-> BB02 (always) i internal q BB02 [0001] 1 BB01 1 [000..02F) (return) i ---------------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [0000] [???..???) -> BB02 (always), preds={} succs={BB02} ***** BB01 [0000] STMT00000 ( ??? ... ??? ) [000000] ----------- * NOP void ------------ BB02 [0001] [000..02F) (return), preds={BB01} succs={} ***** BB02 [0001] STMT00001 ( 0x000[E-] ... 0x00E ) [000006] VACXGO----- * STOREIND int [000005] --CXG------ +--* ADD byref [000003] H-CXG------ | +--* CALL help byref CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE [000004] ----------- | \--* CNS_INT int 8 Fseq[FtnHolder] [000002] --C-G------ \--* CALL help int CORINFO_HELP_READYTORUN_GENERIC_HANDLE [000001] !---------- arg0 \--* LCL_VAR int V00 TypeCtx ***** BB02 [0001] STMT00002 ( 0x013[E-] ... 0x02E ) [000011] --CXG------ * CALL ind void [000010] V-CXGO----- calli tgt \--* IND int [000009] --CXG------ \--* ADD byref [000007] H-CXG------ +--* CALL help byref CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE [000008] ----------- \--* CNS_INT int 8 Fseq[FtnHolder] ***** BB02 [0001] STMT00003 ( 0x01F[E-] ... ??? ) [000014] --C-G------ * CALL void Statics:CheckForFailure(System.String,System.String) [000012] ----------- arg0 +--* CNS_STR ref [000013] ----------- arg1 \--* CNS_STR ref ***** BB02 [0001] STMT00004 ( 0x02E[E-] ... ??? ) [000015] ----------- * RETURN void ------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist Checking Profile Weights (flags:0x16) No blocks were profiled, so nothing to check *************** Starting PHASE Expand patchpoints -- no patchpoints to transform *************** Finishing PHASE Expand patchpoints [no changes] *************** Starting PHASE Indirect call transform *** FatPointerCall: transforming STMT00002 New Basic Block BB03 [0002] created. Setting edge weights for BB02 -> BB03 to [0 .. 3.402823e+38] setting likelihood of BB02 -> BB03 to 1 New Basic Block BB04 [0003] created. New Basic Block BB05 [0004] created. New Basic Block BB06 [0005] created. removing useless STMT00002 ( 0x013[E-] ... 0x02E ) [000011] --CXG------ * CALL ind void [000010] V-CXGO----- calli tgt \--* IND int [000009] --CXG------ \--* ADD byref [000007] H-CXG------ +--* CALL help byref CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE [000008] ----------- \--* CNS_INT int 8 Fseq[FtnHolder] from BB02 Setting edge weights for BB02 -> BB04 to [0 .. 3.402823e+38] setting likelihood of BB02 -> BB04 to 1 Setting edge weights for BB04 -> BB05 to [0 .. 3.402823e+38] setting likelihood of BB04 -> BB05 to 0.5 Setting edge weights for BB04 -> BB06 to [0 .. 3.402823e+38] setting likelihood of BB04 -> BB06 to 0.5 Setting edge weights for BB05 -> BB03 to [0 .. 3.402823e+38] setting likelihood of BB05 -> BB03 to 1 Setting edge weights for BB06 -> BB03 to [0 .. 3.402823e+38] setting likelihood of BB06 -> BB03 to 1 -- 1 calls transformed *************** Finishing PHASE Indirect call transform Trees after Indirect call transform ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [???..???)-> BB02 (always) i internal q BB02 [0001] 1 BB01 1 [000..01F)-> BB04 (always) i q BB04 [0003] 1 BB02 1 [???..???)-> BB06,BB05 ( cond ) i internal q BB05 [0004] 1 BB04 0.80 [???..???)-> BB03 (always) i internal BB06 [0005] 1 BB04 0.20 [???..???)-> BB03 (always) i internal q BB03 [0002] 2 BB05,BB06 1 [01F..02F) (return) i internal ---------------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [0000] [???..???) -> BB02 (always), preds={} succs={BB02} ***** BB01 [0000] STMT00000 ( ??? ... ??? ) [000000] ----------- * NOP void ------------ BB02 [0001] [000..01F) -> BB04 (always), preds={BB01} succs={BB04} ***** BB02 [0001] STMT00001 ( 0x000[E-] ... 0x00E ) [000006] VACXGO----- * STOREIND int [000005] --CXG------ +--* ADD byref [000003] H-CXG------ | +--* CALL help byref CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE [000004] ----------- | \--* CNS_INT int 8 Fseq[FtnHolder] [000002] --C-G------ \--* CALL help int CORINFO_HELP_READYTORUN_GENERIC_HANDLE [000001] !---------- arg0 \--* LCL_VAR int V00 TypeCtx ------------ BB04 [0003] [???..???) -> BB06,BB05 (cond), preds={BB02} succs={BB05,BB06} ***** BB04 [0003] STMT00005 ( 0x013[E-] ... ??? ) [000024] --CXGO----- * JTRUE void [000023] --CXGO----- \--* NE int [000021] --CXGO----- +--* AND int [000017] V-CXGO----- | +--* IND int [000018] --CXG------ | | \--* ADD byref [000019] H-CXG------ | | +--* CALL help byref CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE [000020] ----------- | | \--* CNS_INT int 8 Fseq[FtnHolder] [000016] ----------- | \--* CNS_INT int 2 [000022] ----------- \--* CNS_INT int 0 ------------ BB05 [0004] [???..???) -> BB03 (always), preds={BB04} succs={BB03} ***** BB05 [0004] STMT00006 ( 0x013[E-] ... ??? ) [000025] --CXG------ * CALL ind void [000026] V-CXGO----- calli tgt \--* IND int [000027] --CXG------ \--* ADD byref [000028] H-CXG------ +--* CALL help byref CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE [000029] ----------- \--* CNS_INT int 8 Fseq[FtnHolder] ------------ BB06 [0005] [???..???) -> BB03 (always), preds={BB04} succs={BB03} ***** BB06 [0005] STMT00007 ( 0x013[E-] ... ??? ) [000046] --CXG------ * CALL ind void [000045] --CXGO----- gctx +--* IND int [000044] --CXGO----- | \--* ADD int [000037] --CXGO----- | +--* SUB int [000038] V-CXGO----- | | +--* IND int [000039] --CXG------ | | | \--* ADD byref [000040] H-CXG------ | | | +--* CALL help byref CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE [000041] ----------- | | | \--* CNS_INT int 8 Fseq[FtnHolder] [000042] ----------- | | \--* CNS_INT int 2 [000043] ----------- | \--* CNS_INT int 4 [000036] --CXGO----- calli tgt \--* IND int [000035] --CXGO----- \--* SUB int [000030] V-CXGO----- +--* IND int [000031] --CXG------ | \--* ADD byref [000032] H-CXG------ | +--* CALL help byref CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE [000033] ----------- | \--* CNS_INT int 8 Fseq[FtnHolder] [000034] ----------- \--* CNS_INT int 2 ------------ BB03 [0002] [01F..02F) (return), preds={BB05,BB06} succs={} ***** BB03 [0002] STMT00003 ( 0x01F[E-] ... ??? ) [000014] --C-G------ * CALL void Statics:CheckForFailure(System.String,System.String) [000012] ----------- arg0 +--* CNS_STR ref [000013] ----------- arg1 \--* CNS_STR ref ***** BB03 [0002] STMT00004 ( 0x02E[E-] ... ??? ) [000015] ----------- * RETURN void ------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist Checking Profile Weights (flags:0x16) No blocks were profiled, so nothing to check *************** Starting PHASE Post-import *************** Finishing PHASE Post-import [no changes] *************** Starting PHASE Morph - Init New BlockSet epoch 1, # of blocks (including unused BB00): 7, bitset array size: 1 (short) *************** Finishing PHASE Morph - Init [no changes] *************** Starting PHASE Morph - Inlining *************** Finishing PHASE Morph - Inlining [no changes] *************** 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 preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [???..???)-> BB02 (always) i keep internal q BB02 [0001] 1 BB01 1 [000..01F)-> BB04 (always) i q BB04 [0003] 1 BB02 1 [???..???)-> BB06,BB05 ( cond ) i internal q BB05 [0004] 1 BB04 0.80 [???..???)-> BB03 (always) i internal BB06 [0005] 1 BB04 0.20 [???..???)-> BB03 (always) i internal q BB03 [0002] 2 BB05,BB06 1 [01F..02F) (return) i internal ---------------------------------------------------------------------------------------------------------------------------------------------- *************** Exception Handling table is empty *************** Finishing PHASE Morph - Add internal blocks [no changes] *************** 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 Morph - Promote Structs promotion opt flag not enabled *************** Finishing PHASE Morph - Promote Structs [no changes] *************** Starting PHASE Morph - Structs/AddrExp LocalAddressVisitor visiting statement: STMT00000 ( ??? ... ??? ) [000000] ----------- * NOP void LocalAddressVisitor visiting statement: STMT00001 ( 0x000[E-] ... 0x00E ) [000006] VACXGO----- * STOREIND int [000005] --CXG------ +--* ADD byref [000003] H-CXG------ | +--* CALL help byref CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE [000004] ----------- | \--* CNS_INT int 8 Fseq[FtnHolder] [000002] --C-G------ \--* CALL help int CORINFO_HELP_READYTORUN_GENERIC_HANDLE [000001] !---------- arg0 \--* LCL_VAR int V00 TypeCtx LocalAddressVisitor visiting statement: STMT00005 ( 0x013[E-] ... ??? ) [000024] --CXGO----- * JTRUE void [000023] --CXGO----- \--* NE int [000021] --CXGO----- +--* AND int [000017] V-CXGO----- | +--* IND int [000018] --CXG------ | | \--* ADD byref [000019] H-CXG------ | | +--* CALL help byref CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE [000020] ----------- | | \--* CNS_INT int 8 Fseq[FtnHolder] [000016] ----------- | \--* CNS_INT int 2 [000022] ----------- \--* CNS_INT int 0 LocalAddressVisitor visiting statement: STMT00006 ( 0x013[E-] ... ??? ) [000025] --CXG------ * CALL ind void [000026] V-CXGO----- calli tgt \--* IND int [000027] --CXG------ \--* ADD byref [000028] H-CXG------ +--* CALL help byref CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE [000029] ----------- \--* CNS_INT int 8 Fseq[FtnHolder] LocalAddressVisitor visiting statement: STMT00007 ( 0x013[E-] ... ??? ) [000046] --CXG------ * CALL ind void [000045] --CXGO----- gctx +--* IND int [000044] --CXGO----- | \--* ADD int [000037] --CXGO----- | +--* SUB int [000038] V-CXGO----- | | +--* IND int [000039] --CXG------ | | | \--* ADD byref [000040] H-CXG------ | | | +--* CALL help byref CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE [000041] ----------- | | | \--* CNS_INT int 8 Fseq[FtnHolder] [000042] ----------- | | \--* CNS_INT int 2 [000043] ----------- | \--* CNS_INT int 4 [000036] --CXGO----- calli tgt \--* IND int [000035] --CXGO----- \--* SUB int [000030] V-CXGO----- +--* IND int [000031] --CXG------ | \--* ADD byref [000032] H-CXG------ | +--* CALL help byref CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE [000033] ----------- | \--* CNS_INT int 8 Fseq[FtnHolder] [000034] ----------- \--* CNS_INT int 2 LocalAddressVisitor visiting statement: STMT00003 ( 0x01F[E-] ... ??? ) [000014] --C-G------ * CALL void Statics:CheckForFailure(System.String,System.String) [000012] ----------- arg0 +--* CNS_STR ref [000013] ----------- arg1 \--* CNS_STR ref LocalAddressVisitor visiting statement: STMT00004 ( 0x02E[E-] ... ??? ) [000015] ----------- * RETURN void *************** Finishing PHASE Morph - Structs/AddrExp [no changes] *************** Starting PHASE Early liveness *************** Finishing PHASE Early liveness [no changes] *************** Starting PHASE Forward Substitution *************** Finishing PHASE Forward Substitution [no changes] *************** Starting PHASE Physical promotion *************** Finishing PHASE Physical promotion [no changes] *************** Starting PHASE Identify candidates for implicit byref copy omission *************** Finishing PHASE Identify candidates for implicit byref copy omission [no changes] *************** Starting PHASE Morph - ByRefs *************** Finishing PHASE Morph - ByRefs [no changes] *************** Starting PHASE Morph - Global compEnregLocals() is false, setting doNotEnreg flag for all locals. Local V00 should not be enregistered because: opts.compFlags & CLFLG_REGVAR is not set Morphing BB01 fgMorphTree BB01, STMT00000 (before) [000000] ----------- * NOP void Morphing BB02 fgMorphTree BB02, STMT00001 (before) [000006] VACXGO----- * STOREIND int [000005] --CXG------ +--* ADD byref [000003] H-CXG------ | +--* CALL help byref CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE [000004] ----------- | \--* CNS_INT int 8 Fseq[FtnHolder] [000002] --C-G------ \--* CALL help int CORINFO_HELP_READYTORUN_GENERIC_HANDLE [000001] !---------- arg0 \--* LCL_VAR int V00 TypeCtx Initializing arg info for 3.CALL: Args for call [000003] CALL after AddFinalArgsAndDetermineABIInfo: Morphing args for 3.CALL: Args for [000003].CALL after fgMorphArgs: OutgoingArgsStackSize is 0 Initializing arg info for 2.CALL: Args for call [000002] CALL after AddFinalArgsAndDetermineABIInfo: CallArg[[000001].LCL_VAR int (By value), 1 reg: ecx, byteAlignment=4] Morphing args for 2.CALL: Sorting the arguments: Deferred argument ('ecx'): [000001] !----+----- * LCL_VAR int V00 TypeCtx Moved to late list Register placement order: ecx Args for [000002].CALL after fgMorphArgs: CallArg[[000001].LCL_VAR int (By value), 1 reg: ecx, byteAlignment=4, isLate, processed] OutgoingArgsStackSize is 0 Morphing BB04 fgMorphTree BB04, STMT00005 (before) [000024] --CXGO----- * JTRUE void [000023] --CXGO----- \--* NE int [000021] --CXGO----- +--* AND int [000017] V-CXGO----- | +--* IND int [000018] --CXG------ | | \--* ADD byref [000019] H-CXG------ | | +--* CALL help byref CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE [000020] ----------- | | \--* CNS_INT int 8 Fseq[FtnHolder] [000016] ----------- | \--* CNS_INT int 2 [000022] ----------- \--* CNS_INT int 0 Initializing arg info for 19.CALL: Args for call [000019] CALL after AddFinalArgsAndDetermineABIInfo: Morphing args for 19.CALL: Args for [000019].CALL after fgMorphArgs: OutgoingArgsStackSize is 0 Morphing BB05 fgMorphTree BB05, STMT00006 (before) [000025] --CXG------ * CALL ind void [000026] V-CXGO----- calli tgt \--* IND int [000027] --CXG------ \--* ADD byref [000028] H-CXG------ +--* CALL help byref CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE [000029] ----------- \--* CNS_INT int 8 Fseq[FtnHolder] Initializing arg info for 25.CALL: Args for call [000025] CALL after AddFinalArgsAndDetermineABIInfo: Morphing args for 25.CALL: Initializing arg info for 28.CALL: Args for call [000028] CALL after AddFinalArgsAndDetermineABIInfo: Morphing args for 28.CALL: Args for [000028].CALL after fgMorphArgs: OutgoingArgsStackSize is 0 Args for [000025].CALL after fgMorphArgs: OutgoingArgsStackSize is 0 Morphing BB06 fgMorphTree BB06, STMT00007 (before) [000046] --CXG------ * CALL ind void [000045] --CXGO----- gctx +--* IND int [000044] --CXGO----- | \--* ADD int [000037] --CXGO----- | +--* SUB int [000038] V-CXGO----- | | +--* IND int [000039] --CXG------ | | | \--* ADD byref [000040] H-CXG------ | | | +--* CALL help byref CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE [000041] ----------- | | | \--* CNS_INT int 8 Fseq[FtnHolder] [000042] ----------- | | \--* CNS_INT int 2 [000043] ----------- | \--* CNS_INT int 4 [000036] --CXGO----- calli tgt \--* IND int [000035] --CXGO----- \--* SUB int [000030] V-CXGO----- +--* IND int [000031] --CXG------ | \--* ADD byref [000032] H-CXG------ | +--* CALL help byref CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE [000033] ----------- | \--* CNS_INT int 8 Fseq[FtnHolder] [000034] ----------- \--* CNS_INT int 2 Initializing arg info for 46.CALL: Args for call [000046] CALL after AddFinalArgsAndDetermineABIInfo: CallArg[[000045].IND int (By value), 1 reg: ecx, byteAlignment=4, wellKnown[InstParam]] Morphing args for 46.CALL: Initializing arg info for 40.CALL: Args for call [000040] CALL after AddFinalArgsAndDetermineABIInfo: Morphing args for 40.CALL: Args for [000040].CALL after fgMorphArgs: OutgoingArgsStackSize is 0 Initializing arg info for 32.CALL: Args for call [000032] CALL after AddFinalArgsAndDetermineABIInfo: Morphing args for 32.CALL: Args for [000032].CALL after fgMorphArgs: OutgoingArgsStackSize is 0 Sorting the arguments: Deferred argument ('ecx'): [000045] --CXG+----- * IND int [000044] --CXG+----- \--* ADD int [000037] --CXG+----- +--* ADD int [000038] V-CXG+----- | +--* IND int [000039] --CXG+----- | | \--* ADD byref [000040] H-CXG+----- | | +--* CALL help byref CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE [000041] -----+----- | | \--* CNS_INT int 8 Fseq[FtnHolder] [000042] -----+----- | \--* CNS_INT int -2 [000043] -----+----- \--* CNS_INT int 4 Moved to late list Register placement order: ecx Args for [000046].CALL after fgMorphArgs: CallArg[[000045].IND int (By value), 1 reg: ecx, byteAlignment=4, isLate, processed, wellKnown[InstParam]] OutgoingArgsStackSize is 0 fgMorphTree BB06, STMT00007 (after) [000046] --CXG+----- * CALL ind void [000036] --CXG+----- calli tgt \--* IND int [000035] --CXG+----- \--* ADD int [000030] V-CXG+----- +--* IND int [000031] --CXG+----- | \--* ADD byref [000032] H-CXG+----- | +--* CALL help byref CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE [000033] -----+----- | \--* CNS_INT int 8 Fseq[FtnHolder] [000034] -----+----- \--* CNS_INT int -2 [000045] --CXG+----- gctx in ecx \--* IND int [000044] --CXG+----- \--* ADD int [000037] --CXG+----- +--* ADD int [000038] V-CXG+----- | +--* IND int [000039] --CXG+----- | | \--* ADD byref [000040] H-CXG+----- | | +--* CALL help byref CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE [000041] -----+----- | | \--* CNS_INT int 8 Fseq[FtnHolder] [000042] -----+----- | \--* CNS_INT int -2 [000043] -----+----- \--* CNS_INT int 4 Morphing BB03 fgMorphTree BB03, STMT00003 (before) [000014] --C-G------ * CALL void Statics:CheckForFailure(System.String,System.String) [000012] ----------- arg0 +--* CNS_STR ref [000013] ----------- arg1 \--* CNS_STR ref Initializing arg info for 14.CALL: Args for call [000014] CALL after AddFinalArgsAndDetermineABIInfo: CallArg[[000012].CNS_STR ref (By value), 1 reg: ecx, byteAlignment=4] CallArg[[000013].CNS_STR ref (By value), 1 reg: edx, byteAlignment=4] Morphing args for 14.CALL: Sorting the arguments: Deferred argument ('ecx'): [000051] H----+----- * CNS_INT(h) ref '"Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverStri' Moved to late list Deferred argument ('edx'): [000052] H----+----- * CNS_INT(h) ref '"valuetype GenericValuetype`1'IFaceCuriouslyRecurringGe' Moved to late list Register placement order: ecx edx Args for [000014].CALL after fgMorphArgs: CallArg[[000051].CNS_INT ref (By value), 1 reg: ecx, byteAlignment=4, isLate, processed] CallArg[[000052].CNS_INT ref (By value), 1 reg: edx, byteAlignment=4, isLate, processed] OutgoingArgsStackSize is 0 fgMorphTree BB03, STMT00003 (after) [000014] --CXG+----- * CALL void Statics:CheckForFailure(System.String,System.String) [000051] H----+----- arg0 in ecx +--* CNS_INT(h) ref '"Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverStri' [000052] H----+----- arg1 in edx \--* CNS_INT(h) ref '"valuetype GenericValuetype`1'IFaceCuriouslyRecurringGe' fgMorphTree BB03, STMT00004 (before) [000015] ----------- * RETURN void *************** Finishing PHASE Morph - Global Trees after Morph - Global ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [???..???)-> BB02 (always) i keep internal q BB02 [0001] 1 BB01 1 [000..01F)-> BB04 (always) i hascall q BB04 [0003] 1 BB02 1 [???..???)-> BB06,BB05 ( cond ) i internal hascall q BB05 [0004] 1 BB04 0.80 [???..???)-> BB03 (always) i internal hascall gcsafe BB06 [0005] 1 BB04 0.20 [???..???)-> BB03 (always) i internal hascall gcsafe q BB03 [0002] 2 BB05,BB06 1 [01F..02F) (return) i internal hascall gcsafe ---------------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [0000] [???..???) -> BB02 (always), preds={} succs={BB02} ***** BB01 [0000] STMT00000 ( ??? ... ??? ) [000000] -----+----- * NOP void ------------ BB02 [0001] [000..01F) -> BB04 (always), preds={BB01} succs={BB04} ***** BB02 [0001] STMT00001 ( 0x000[E-] ... 0x00E ) [000006] VACXG+----- * STOREIND int [000005] --CXG+----- +--* ADD byref [000003] H-CXG+----- | +--* CALL help byref CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE [000004] -----+----- | \--* CNS_INT int 8 Fseq[FtnHolder] [000002] --C-G+----- \--* CALL help int CORINFO_HELP_READYTORUN_GENERIC_HANDLE [000001] !----+----- arg0 in ecx \--* LCL_VAR int V00 TypeCtx ------------ BB04 [0003] [???..???) -> BB06,BB05 (cond), preds={BB02} succs={BB05,BB06} ***** BB04 [0003] STMT00005 ( 0x013[E-] ... ??? ) [000024] --CXG+----- * JTRUE void [000023] J-CXG+-N--- \--* NE int [000021] --CXG+----- +--* AND int [000017] V-CXG+----- | +--* IND int [000018] --CXG+----- | | \--* ADD byref [000019] H-CXG+----- | | +--* CALL help byref CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE [000020] -----+----- | | \--* CNS_INT int 8 Fseq[FtnHolder] [000016] -----+----- | \--* CNS_INT int 2 [000022] -----+----- \--* CNS_INT int 0 ------------ BB05 [0004] [???..???) -> BB03 (always), preds={BB04} succs={BB03} ***** BB05 [0004] STMT00006 ( 0x013[E-] ... ??? ) [000025] --CXG+----- * CALL ind void [000026] V-CXG+----- calli tgt \--* IND int [000027] --CXG+----- \--* ADD byref [000028] H-CXG+----- +--* CALL help byref CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE [000029] -----+----- \--* CNS_INT int 8 Fseq[FtnHolder] ------------ BB06 [0005] [???..???) -> BB03 (always), preds={BB04} succs={BB03} ***** BB06 [0005] STMT00007 ( 0x013[E-] ... ??? ) [000046] --CXG+----- * CALL ind void [000036] --CXG+----- calli tgt \--* IND int [000035] --CXG+----- \--* ADD int [000030] V-CXG+----- +--* IND int [000031] --CXG+----- | \--* ADD byref [000032] H-CXG+----- | +--* CALL help byref CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE [000033] -----+----- | \--* CNS_INT int 8 Fseq[FtnHolder] [000034] -----+----- \--* CNS_INT int -2 [000045] --CXG+----- gctx in ecx \--* IND int [000044] --CXG+----- \--* ADD int [000037] --CXG+----- +--* ADD int [000038] V-CXG+----- | +--* IND int [000039] --CXG+----- | | \--* ADD byref [000040] H-CXG+----- | | +--* CALL help byref CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE [000041] -----+----- | | \--* CNS_INT int 8 Fseq[FtnHolder] [000042] -----+----- | \--* CNS_INT int -2 [000043] -----+----- \--* CNS_INT int 4 ------------ BB03 [0002] [01F..02F) (return), preds={BB05,BB06} succs={} ***** BB03 [0002] STMT00003 ( 0x01F[E-] ... ??? ) [000014] --CXG+----- * CALL void Statics:CheckForFailure(System.String,System.String) [000051] H----+----- arg0 in ecx +--* CNS_INT(h) ref '"Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverStri' [000052] H----+----- arg1 in edx \--* CNS_INT(h) ref '"valuetype GenericValuetype`1'IFaceCuriouslyRecurringGe' ***** BB03 [0002] STMT00004 ( 0x02E[E-] ... ??? ) [000015] -----+----- * RETURN void ------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist Checking Profile Weights (flags:0x16) No blocks were profiled, so nothing to check *************** Starting PHASE Post-Morph *************** In fgMarkDemotedImplicitByRefArgs() *************** Finishing PHASE Post-Morph Trees after Post-Morph ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [???..???)-> BB02 (always) i keep internal q BB02 [0001] 1 BB01 1 [000..01F)-> BB04 (always) i hascall q BB04 [0003] 1 BB02 1 [???..???)-> BB06,BB05 ( cond ) i internal hascall q BB05 [0004] 1 BB04 0.80 [???..???)-> BB03 (always) i internal hascall gcsafe BB06 [0005] 1 BB04 0.20 [???..???)-> BB03 (always) i internal hascall gcsafe q BB03 [0002] 2 BB05,BB06 1 [01F..02F) (return) i internal hascall gcsafe ---------------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [0000] [???..???) -> BB02 (always), preds={} succs={BB02} ***** BB01 [0000] STMT00000 ( ??? ... ??? ) [000000] -----+----- * NOP void ------------ BB02 [0001] [000..01F) -> BB04 (always), preds={BB01} succs={BB04} ***** BB02 [0001] STMT00001 ( 0x000[E-] ... 0x00E ) [000006] VACXG+----- * STOREIND int [000005] --CXG+----- +--* ADD byref [000003] H-CXG+----- | +--* CALL help byref CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE [000004] -----+----- | \--* CNS_INT int 8 Fseq[FtnHolder] [000002] --C-G+----- \--* CALL help int CORINFO_HELP_READYTORUN_GENERIC_HANDLE [000001] !----+----- arg0 in ecx \--* LCL_VAR int V00 TypeCtx ------------ BB04 [0003] [???..???) -> BB06,BB05 (cond), preds={BB02} succs={BB05,BB06} ***** BB04 [0003] STMT00005 ( 0x013[E-] ... ??? ) [000024] --CXG+----- * JTRUE void [000023] J-CXG+-N--- \--* NE int [000021] --CXG+----- +--* AND int [000017] V-CXG+----- | +--* IND int [000018] --CXG+----- | | \--* ADD byref [000019] H-CXG+----- | | +--* CALL help byref CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE [000020] -----+----- | | \--* CNS_INT int 8 Fseq[FtnHolder] [000016] -----+----- | \--* CNS_INT int 2 [000022] -----+----- \--* CNS_INT int 0 ------------ BB05 [0004] [???..???) -> BB03 (always), preds={BB04} succs={BB03} ***** BB05 [0004] STMT00006 ( 0x013[E-] ... ??? ) [000025] --CXG+----- * CALL ind void [000026] V-CXG+----- calli tgt \--* IND int [000027] --CXG+----- \--* ADD byref [000028] H-CXG+----- +--* CALL help byref CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE [000029] -----+----- \--* CNS_INT int 8 Fseq[FtnHolder] ------------ BB06 [0005] [???..???) -> BB03 (always), preds={BB04} succs={BB03} ***** BB06 [0005] STMT00007 ( 0x013[E-] ... ??? ) [000046] --CXG+----- * CALL ind void [000036] --CXG+----- calli tgt \--* IND int [000035] --CXG+----- \--* ADD int [000030] V-CXG+----- +--* IND int [000031] --CXG+----- | \--* ADD byref [000032] H-CXG+----- | +--* CALL help byref CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE [000033] -----+----- | \--* CNS_INT int 8 Fseq[FtnHolder] [000034] -----+----- \--* CNS_INT int -2 [000045] --CXG+----- gctx in ecx \--* IND int [000044] --CXG+----- \--* ADD int [000037] --CXG+----- +--* ADD int [000038] V-CXG+----- | +--* IND int [000039] --CXG+----- | | \--* ADD byref [000040] H-CXG+----- | | +--* CALL help byref CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE [000041] -----+----- | | \--* CNS_INT int 8 Fseq[FtnHolder] [000042] -----+----- | \--* CNS_INT int -2 [000043] -----+----- \--* CNS_INT int 4 ------------ BB03 [0002] [01F..02F) (return), preds={BB05,BB06} succs={} ***** BB03 [0002] STMT00003 ( 0x01F[E-] ... ??? ) [000014] --CXG+----- * CALL void Statics:CheckForFailure(System.String,System.String) [000051] H----+----- arg0 in ecx +--* CNS_INT(h) ref '"Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverStri' [000052] H----+----- arg1 in edx \--* CNS_INT(h) ref '"valuetype GenericValuetype`1'IFaceCuriouslyRecurringGe' ***** BB03 [0002] STMT00004 ( 0x02E[E-] ... ??? ) [000015] -----+----- * RETURN void ------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist Checking Profile Weights (flags:0x16) No blocks were profiled, so nothing to check *************** Starting PHASE GS Cookie No GS security needed *************** Finishing PHASE GS Cookie [no changes] *************** Starting PHASE Compute edge weights (1, false) ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [???..???)-> BB02 (always) i keep internal q BB02 [0001] 1 BB01 1 [000..01F)-> BB04 (always) i hascall q BB04 [0003] 1 BB02 1 [???..???)-> BB06,BB05 ( cond ) i internal hascall q BB05 [0004] 1 BB04 0.80 [???..???)-> BB03 (always) i internal hascall gcsafe BB06 [0005] 1 BB04 0.20 [???..???)-> BB03 (always) i internal hascall gcsafe q BB03 [0002] 2 BB05,BB06 1 [01F..02F) (return) i internal hascall gcsafe ---------------------------------------------------------------------------------------------------------------------------------------------- -- no profile data, so using default called count -- not optimizing or no profile data, so not computing edge weights *************** Finishing PHASE Compute edge weights (1, false) [no changes] *************** Starting PHASE Create EH funclets *************** Finishing PHASE Create EH funclets [no changes] *************** Starting PHASE Morph array ops No multi-dimensional array references in the function *************** Finishing PHASE Morph array ops [no changes] *************** Starting PHASE Mark local vars *************** In lvaMarkLocalVars() *** lvaComputeRefCounts *** *************** Finishing PHASE Mark local vars [no changes] *************** Starting PHASE Find oper order *************** In fgFindOperOrder() *************** Finishing PHASE Find oper order Trees after Find oper order ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [???..???)-> BB02 (always) i keep internal q BB02 [0001] 1 BB01 1 [000..01F)-> BB04 (always) i hascall q BB04 [0003] 1 BB02 1 [???..???)-> BB06,BB05 ( cond ) i internal hascall q BB05 [0004] 1 BB04 0.80 [???..???)-> BB03 (always) i internal hascall gcsafe BB06 [0005] 1 BB04 0.20 [???..???)-> BB03 (always) i internal hascall gcsafe q BB03 [0002] 2 BB05,BB06 1 [01F..02F) (return) i internal hascall gcsafe ---------------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [0000] [???..???) -> BB02 (always), preds={} succs={BB02} ***** BB01 [0000] STMT00000 ( ??? ... ??? ) ( 0, 0) [000000] ----------- * NOP void ------------ BB02 [0001] [000..01F) -> BB04 (always), preds={BB01} succs={BB04} ***** BB02 [0001] STMT00001 ( 0x000[E-] ... 0x00E ) ( 35, 17) [000006] VACXGO----- * STOREIND int ( 15, 6) [000005] --CXG--N--- +--* ADD byref ( 14, 5) [000003] H-CXG------ | +--* CALL help byref CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE ( 1, 1) [000004] ----------- | \--* CNS_INT int 8 Fseq[FtnHolder] ( 17, 8) [000002] --C-G------ \--* CALL help int CORINFO_HELP_READYTORUN_GENERIC_HANDLE ( 3, 2) [000001] !---------- arg0 in ecx \--* LCL_VAR int V00 TypeCtx ------------ BB04 [0003] [???..???) -> BB06,BB05 (cond), preds={BB02} succs={BB05,BB06} ***** BB04 [0003] STMT00005 ( 0x013[E-] ... ??? ) ( 23, 14) [000024] --CXGO----- * JTRUE void ( 21, 12) [000023] J-CXGO-N--- \--* NE int ( 19, 10) [000021] --CXGO----- +--* AND int ( 17, 8) [000017] V-CXGO----- | +--* IND int ( 15, 6) [000018] --CXG--N--- | | \--* ADD byref ( 14, 5) [000019] H-CXG------ | | +--* CALL help byref CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE ( 1, 1) [000020] ----------- | | \--* CNS_INT int 8 Fseq[FtnHolder] ( 1, 1) [000016] ----------- | \--* CNS_INT int 2 ( 1, 1) [000022] ----------- \--* CNS_INT int 0 ------------ BB05 [0004] [???..???) -> BB03 (always), preds={BB04} succs={BB03} ***** BB05 [0004] STMT00006 ( 0x013[E-] ... ??? ) ( 34, 10) [000025] --CXGO----- * CALL ind void ( 17, 8) [000026] V-CXGO----- calli tgt \--* IND int ( 15, 6) [000027] --CXG--N--- \--* ADD byref ( 14, 5) [000028] H-CXG------ +--* CALL help byref CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE ( 1, 1) [000029] ----------- \--* CNS_INT int 8 Fseq[FtnHolder] ------------ BB06 [0005] [???..???) -> BB03 (always), preds={BB04} succs={BB03} ***** BB06 [0005] STMT00007 ( 0x013[E-] ... ??? ) ( 57, 25) [000046] --CXGO----- * CALL ind void ( 20, 11) [000036] --CXGO----- calli tgt \--* IND int ( 18, 9) [000035] --CXGO-N--- \--* ADD int ( 17, 8) [000030] V-CXGO----- +--* IND int ( 15, 6) [000031] --CXG--N--- | \--* ADD byref ( 14, 5) [000032] H-CXG------ | +--* CALL help byref CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE ( 1, 1) [000033] ----------- | \--* CNS_INT int 8 Fseq[FtnHolder] ( 1, 1) [000034] ----------- \--* CNS_INT int -2 ( 20, 11) [000045] --CXGO----- gctx in ecx \--* IND int ( 20, 11) [000044] --CXGO-N--- \--* ADD int ( 19, 10) [000037] --CXGO-N--- +--* ADD int ( 17, 8) [000038] V-CXGO----- | +--* IND int ( 15, 6) [000039] --CXG--N--- | | \--* ADD byref ( 14, 5) [000040] H-CXG------ | | +--* CALL help byref CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE ( 1, 1) [000041] ----------- | | \--* CNS_INT int 8 Fseq[FtnHolder] ( 1, 1) [000042] ----------- | \--* CNS_INT int -2 ( 1, 1) [000043] ----------- \--* CNS_INT int 4 ------------ BB03 [0002] [01F..02F) (return), preds={BB05,BB06} succs={} ***** BB03 [0002] STMT00003 ( 0x01F[E-] ... ??? ) ( 16, 15) [000014] --CXG------ * CALL void Statics:CheckForFailure(System.String,System.String) ( 1, 4) [000051] H---------- arg0 in ecx +--* CNS_INT(h) ref '"Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverStri' ( 1, 4) [000052] H---------- arg1 in edx \--* CNS_INT(h) ref '"valuetype GenericValuetype`1'IFaceCuriouslyRecurringGe' ***** BB03 [0002] STMT00004 ( 0x02E[E-] ... ??? ) ( 0, 0) [000015] ----------- * RETURN void ------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist *************** Starting PHASE Set block order *************** In fgSetBlockOrder() The biggest BB has 17 tree nodes *************** Finishing PHASE Set block order Trees after Set block order ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [???..???)-> BB02 (always) i keep internal q BB02 [0001] 1 BB01 1 [000..01F)-> BB04 (always) i hascall q BB04 [0003] 1 BB02 1 [???..???)-> BB06,BB05 ( cond ) i internal hascall q BB05 [0004] 1 BB04 0.80 [???..???)-> BB03 (always) i internal hascall gcsafe BB06 [0005] 1 BB04 0.20 [???..???)-> BB03 (always) i internal hascall gcsafe q BB03 [0002] 2 BB05,BB06 1 [01F..02F) (return) i internal hascall gcsafe ---------------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [0000] [???..???) -> BB02 (always), preds={} succs={BB02} ***** BB01 [0000] STMT00000 ( ??? ... ??? ) N001 ( 0, 0) [000000] ----------- * NOP void ------------ BB02 [0001] [000..01F) -> BB04 (always), preds={BB01} succs={BB04} ***** BB02 [0001] STMT00001 ( 0x000[E-] ... 0x00E ) N006 ( 35, 17) [000006] VACXGO----- * STOREIND int N003 ( 15, 6) [000005] --CXG--N--- +--* ADD byref N001 ( 14, 5) [000003] H-CXG------ | +--* CALL help byref CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE N002 ( 1, 1) [000004] ----------- | \--* CNS_INT int 8 Fseq[FtnHolder] N005 ( 17, 8) [000002] --C-G------ \--* CALL help int CORINFO_HELP_READYTORUN_GENERIC_HANDLE N004 ( 3, 2) [000001] !---------- arg0 in ecx \--* LCL_VAR int V00 TypeCtx ------------ BB04 [0003] [???..???) -> BB06,BB05 (cond), preds={BB02} succs={BB05,BB06} ***** BB04 [0003] STMT00005 ( 0x013[E-] ... ??? ) N009 ( 23, 14) [000024] --CXGO----- * JTRUE void N008 ( 21, 12) [000023] J-CXGO-N--- \--* NE int N006 ( 19, 10) [000021] --CXGO----- +--* AND int N004 ( 17, 8) [000017] V-CXGO----- | +--* IND int N003 ( 15, 6) [000018] --CXG--N--- | | \--* ADD byref N001 ( 14, 5) [000019] H-CXG------ | | +--* CALL help byref CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE N002 ( 1, 1) [000020] ----------- | | \--* CNS_INT int 8 Fseq[FtnHolder] N005 ( 1, 1) [000016] ----------- | \--* CNS_INT int 2 N007 ( 1, 1) [000022] ----------- \--* CNS_INT int 0 ------------ BB05 [0004] [???..???) -> BB03 (always), preds={BB04} succs={BB03} ***** BB05 [0004] STMT00006 ( 0x013[E-] ... ??? ) N005 ( 34, 10) [000025] --CXGO----- * CALL ind void N004 ( 17, 8) [000026] V-CXGO----- calli tgt \--* IND int N003 ( 15, 6) [000027] --CXG--N--- \--* ADD byref N001 ( 14, 5) [000028] H-CXG------ +--* CALL help byref CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE N002 ( 1, 1) [000029] ----------- \--* CNS_INT int 8 Fseq[FtnHolder] ------------ BB06 [0005] [???..???) -> BB03 (always), preds={BB04} succs={BB03} ***** BB06 [0005] STMT00007 ( 0x013[E-] ... ??? ) N017 ( 57, 25) [000046] --CXGO----- * CALL ind void N016 ( 20, 11) [000036] --CXGO----- calli tgt \--* IND int N015 ( 18, 9) [000035] --CXGO-N--- \--* ADD int N013 ( 17, 8) [000030] V-CXGO----- +--* IND int N012 ( 15, 6) [000031] --CXG--N--- | \--* ADD byref N010 ( 14, 5) [000032] H-CXG------ | +--* CALL help byref CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE N011 ( 1, 1) [000033] ----------- | \--* CNS_INT int 8 Fseq[FtnHolder] N014 ( 1, 1) [000034] ----------- \--* CNS_INT int -2 N009 ( 20, 11) [000045] --CXGO----- gctx in ecx \--* IND int N008 ( 20, 11) [000044] --CXGO-N--- \--* ADD int N006 ( 19, 10) [000037] --CXGO-N--- +--* ADD int N004 ( 17, 8) [000038] V-CXGO----- | +--* IND int N003 ( 15, 6) [000039] --CXG--N--- | | \--* ADD byref N001 ( 14, 5) [000040] H-CXG------ | | +--* CALL help byref CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE N002 ( 1, 1) [000041] ----------- | | \--* CNS_INT int 8 Fseq[FtnHolder] N005 ( 1, 1) [000042] ----------- | \--* CNS_INT int -2 N007 ( 1, 1) [000043] ----------- \--* CNS_INT int 4 ------------ BB03 [0002] [01F..02F) (return), preds={BB05,BB06} succs={} ***** BB03 [0002] STMT00003 ( 0x01F[E-] ... ??? ) N003 ( 16, 15) [000014] --CXG------ * CALL void Statics:CheckForFailure(System.String,System.String) N001 ( 1, 4) [000051] H---------- arg0 in ecx +--* CNS_INT(h) ref '"Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverStri' N002 ( 1, 4) [000052] H---------- arg1 in edx \--* CNS_INT(h) ref '"valuetype GenericValuetype`1'IFaceCuriouslyRecurringGe' ***** BB03 [0002] STMT00004 ( 0x02E[E-] ... ??? ) N001 ( 0, 0) [000015] ----------- * RETURN void ------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist *************** Starting PHASE Stress gtSplitTree *************** Finishing PHASE Stress gtSplitTree [no changes] *************** Starting PHASE Expand casts *************** Finishing PHASE Expand casts [no changes] *************** Starting PHASE Expand runtime lookups *************** Finishing PHASE Expand runtime lookups [no changes] *************** Starting PHASE Expand static init Expanding static initialization for 'Statics', call: [000003] in BB02 New Basic Block BB07 [0006] created. BB04 previous predecessor was BB02, now is BB07 Setting edge weights for BB02 -> BB07 to [0 .. 3.402823e+38] setting likelihood of BB07 -> BB04 to 1 setting likelihood of BB02 -> BB07 to 1 lvaGrabTemp returning 1 (V01 loc0) called for fgMakeTemp is creating a new local variable. New Basic Block BB08 [0007] created. New Basic Block BB09 [0008] created. Setting edge weights for BB09 -> BB07 to [0 .. 3.402823e+38] setting likelihood of BB09 -> BB07 to 1 Setting edge weights for BB08 -> BB07 to [0 .. 3.402823e+38] Setting edge weights for BB08 -> BB09 to [0 .. 3.402823e+38] Compacting BB08 into BB02: *************** In fgDebugCheckBBlist Expanding static initialization for 'Statics', call: [000019] in BB04 New Basic Block BB10 [0009] created. BB05 previous predecessor was BB04, now is BB10 BB06 previous predecessor was BB04, now is BB10 Setting edge weights for BB04 -> BB10 to [0 .. 3.402823e+38] setting likelihood of BB04 -> BB10 to 1 lvaGrabTemp returning 2 (V02 tmp1) called for fgMakeTemp is creating a new local variable. New Basic Block BB11 [0010] created. New Basic Block BB12 [0011] created. Setting edge weights for BB12 -> BB10 to [0 .. 3.402823e+38] setting likelihood of BB12 -> BB10 to 1 Setting edge weights for BB11 -> BB10 to [0 .. 3.402823e+38] Setting edge weights for BB11 -> BB12 to [0 .. 3.402823e+38] Compacting BB11 into BB04: *************** In fgDebugCheckBBlist Expanding static initialization for 'Statics', call: [000028] in BB05 New Basic Block BB13 [0012] created. BB03 previous predecessor was BB05, now is BB13 Setting edge weights for BB05 -> BB13 to [0 .. 3.402823e+38] setting likelihood of BB13 -> BB03 to 1 setting likelihood of BB05 -> BB13 to 1 lvaGrabTemp returning 3 (V03 tmp2) called for fgMakeTemp is creating a new local variable. New Basic Block BB14 [0013] created. New Basic Block BB15 [0014] created. Setting edge weights for BB15 -> BB13 to [0 .. 3.402823e+38] setting likelihood of BB15 -> BB13 to 1 Setting edge weights for BB14 -> BB13 to [0 .. 3.402823e+38] Setting edge weights for BB14 -> BB15 to [0 .. 3.402823e+38] Compacting BB14 into BB05: *************** In fgDebugCheckBBlist Expanding static initialization for 'Statics', call: [000040] in BB06 New Basic Block BB16 [0015] created. BB03 previous predecessor was BB06, now is BB16 Setting edge weights for BB06 -> BB16 to [0 .. 3.402823e+38] setting likelihood of BB16 -> BB03 to 1 setting likelihood of BB06 -> BB16 to 1 lvaGrabTemp returning 4 (V04 tmp3) called for fgMakeTemp is creating a new local variable. New Basic Block BB17 [0016] created. New Basic Block BB18 [0017] created. Setting edge weights for BB18 -> BB16 to [0 .. 3.402823e+38] setting likelihood of BB18 -> BB16 to 1 Setting edge weights for BB17 -> BB16 to [0 .. 3.402823e+38] Setting edge weights for BB17 -> BB18 to [0 .. 3.402823e+38] Compacting BB17 into BB06: *************** In fgDebugCheckBBlist Expanding static initialization for 'Statics', call: [000032] in BB16 lvaGrabTemp returning 5 (V05 tmp4) called for Spilling to split statement for tree. Splitting BB16 after statement STMT00016 New Basic Block BB19 [0018] created. BB03 previous predecessor was BB16, now is BB19 Setting edge weights for BB16 -> BB19 to [0 .. 3.402823e+38] setting likelihood of BB19 -> BB03 to 1 setting likelihood of BB16 -> BB19 to 1 lvaGrabTemp returning 6 (V06 tmp5) called for fgMakeTemp is creating a new local variable. New Basic Block BB20 [0019] created. New Basic Block BB21 [0020] created. Setting edge weights for BB21 -> BB19 to [0 .. 3.402823e+38] setting likelihood of BB21 -> BB19 to 1 Setting edge weights for BB20 -> BB19 to [0 .. 3.402823e+38] Setting edge weights for BB20 -> BB21 to [0 .. 3.402823e+38] Compacting BB20 into BB16: *************** In fgDebugCheckBBlist *************** Finishing PHASE Expand static init Trees after Expand static init ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [???..???)-> BB02 (always) i keep internal q BB02 [0001] 1 BB01 1 [???..???)-> BB07,BB09 ( cond ) i hascall BB09 [0008] 1 BB02 0 [???..???)-> BB07 (always) rare internal q BB07 [0006] 2 BB02,BB09 1 [000..01F)-> BB04 (always) i hascall q BB04 [0003] 1 BB07 1 [???..???)-> BB10,BB12 ( cond ) i internal hascall BB12 [0011] 1 BB04 0 [???..???)-> BB10 (always) rare internal q BB10 [0009] 2 BB04,BB12 1 [???..???)-> BB06,BB05 ( cond ) i internal hascall q BB05 [0004] 1 BB10 0.80 [???..???)-> BB13,BB15 ( cond ) i internal hascall gcsafe BB15 [0014] 1 BB05 0 [???..???)-> BB13 (always) rare internal q BB13 [0012] 2 BB05,BB15 0.80 [???..???)-> BB03 (always) i internal hascall gcsafe BB06 [0005] 1 BB10 0.20 [???..???)-> BB16,BB18 ( cond ) i internal hascall gcsafe BB18 [0017] 1 BB06 0 [???..???)-> BB16 (always) rare internal q BB16 [0015] 2 BB06,BB18 0.20 [???..???)-> BB19,BB21 ( cond ) i internal hascall gcsafe BB21 [0020] 1 BB16 0 [???..???)-> BB19 (always) rare internal q BB19 [0018] 2 BB16,BB21 0.20 [013..???)-> BB03 (always) i internal hascall gcsafe q BB03 [0002] 2 BB13,BB19 1 [01F..02F) (return) i internal hascall gcsafe ---------------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [0000] [???..???) -> BB02 (always), preds={} succs={BB02} ***** BB01 [0000] STMT00000 ( ??? ... ??? ) N001 ( 0, 0) [000000] ----------- * NOP void ------------ BB02 [0001] [???..???) -> BB07,BB09 (cond), preds={BB01} succs={BB09,BB07} ***** BB02 [0001] STMT00008 ( 0x000[E-] ... ??? ) N010 ( 15, 16) [000063] -A--G------ * JTRUE void N009 ( 13, 14) [000062] JA--G------ \--* EQ int N007 ( 11, 12) [000060] nA--G------ +--* IND int N006 ( 9, 10) [000059] -A-----N--- | \--* ADD int N004 ( 8, 9) [000056] -A--------- | +--* COMMA int N002 ( 5, 7) [000054] DA--------- | | +--* STORE_LCL_VAR int V01 loc0 N001 ( 1, 4) [000053] H---------- | | | \--* CNS_INT(h) int 0x430FB8 global ptr N003 ( 3, 2) [000055] ----------- | | \--* LCL_VAR int V01 loc0 N005 ( 1, 1) [000058] ----------- | \--* CNS_INT int -4 N008 ( 1, 1) [000061] ----------- \--* CNS_INT int 0 ------------ BB09 [0008] [???..???) -> BB07 (always), preds={BB02} succs={BB07} ***** BB09 [0008] STMT00009 ( 0x000[E-] ... ??? ) N001 ( 14, 5) [000003] H-CXG------ * CALL help byref CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE ------------ BB07 [0006] [000..01F) -> BB04 (always), preds={BB02,BB09} succs={BB04} ***** BB07 [0006] STMT00001 ( 0x000[E-] ... 0x00E ) N006 ( 24, 14) [000006] VAC-GO----- * STOREIND int N003 ( 4, 3) [000005] ----G--N--- +--* ADD byref N001 ( 3, 2) [000057] ----------- | +--* LCL_VAR int V01 loc0 N002 ( 1, 1) [000004] ----------- | \--* CNS_INT int 8 Fseq[FtnHolder] N005 ( 17, 8) [000002] --C-G------ \--* CALL help int CORINFO_HELP_READYTORUN_GENERIC_HANDLE N004 ( 3, 2) [000001] !---------- arg0 in ecx \--* LCL_VAR int V00 TypeCtx ------------ BB04 [0003] [???..???) -> BB10,BB12 (cond), preds={BB07} succs={BB12,BB10} ***** BB04 [0003] STMT00010 ( 0x013[E-] ... ??? ) N010 ( 15, 16) [000074] -A--G------ * JTRUE void N009 ( 13, 14) [000073] JA--G------ \--* EQ int N007 ( 11, 12) [000071] nA--G------ +--* IND int N006 ( 9, 10) [000070] -A-----N--- | \--* ADD int N004 ( 8, 9) [000067] -A--------- | +--* COMMA int N002 ( 5, 7) [000065] DA--------- | | +--* STORE_LCL_VAR int V02 tmp1 N001 ( 1, 4) [000064] H---------- | | | \--* CNS_INT(h) int 0x430FB8 global ptr N003 ( 3, 2) [000066] ----------- | | \--* LCL_VAR int V02 tmp1 N005 ( 1, 1) [000069] ----------- | \--* CNS_INT int -4 N008 ( 1, 1) [000072] ----------- \--* CNS_INT int 0 ------------ BB12 [0011] [???..???) -> BB10 (always), preds={BB04} succs={BB10} ***** BB12 [0011] STMT00011 ( 0x013[E-] ... ??? ) N001 ( 14, 5) [000019] H-CXG------ * CALL help byref CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE ------------ BB10 [0009] [???..???) -> BB06,BB05 (cond), preds={BB04,BB12} succs={BB05,BB06} ***** BB10 [0009] STMT00005 ( 0x013[E-] ... ??? ) N009 ( 12, 11) [000024] ----GO----- * JTRUE void N008 ( 10, 9) [000023] J---GO-N--- \--* NE int N006 ( 8, 7) [000021] ----GO----- +--* AND int N004 ( 6, 5) [000017] V---GO----- | +--* IND int N003 ( 4, 3) [000018] ----G--N--- | | \--* ADD byref N001 ( 3, 2) [000068] ----------- | | +--* LCL_VAR int V02 tmp1 N002 ( 1, 1) [000020] ----------- | | \--* CNS_INT int 8 Fseq[FtnHolder] N005 ( 1, 1) [000016] ----------- | \--* CNS_INT int 2 N007 ( 1, 1) [000022] ----------- \--* CNS_INT int 0 ------------ BB05 [0004] [???..???) -> BB13,BB15 (cond), preds={BB10} succs={BB15,BB13} ***** BB05 [0004] STMT00012 ( 0x013[E-] ... ??? ) N010 ( 15, 16) [000085] -A--G------ * JTRUE void N009 ( 13, 14) [000084] JA--G------ \--* EQ int N007 ( 11, 12) [000082] nA--G------ +--* IND int N006 ( 9, 10) [000081] -A-----N--- | \--* ADD int N004 ( 8, 9) [000078] -A--------- | +--* COMMA int N002 ( 5, 7) [000076] DA--------- | | +--* STORE_LCL_VAR int V03 tmp2 N001 ( 1, 4) [000075] H---------- | | | \--* CNS_INT(h) int 0x430FB8 global ptr N003 ( 3, 2) [000077] ----------- | | \--* LCL_VAR int V03 tmp2 N005 ( 1, 1) [000080] ----------- | \--* CNS_INT int -4 N008 ( 1, 1) [000083] ----------- \--* CNS_INT int 0 ------------ BB15 [0014] [???..???) -> BB13 (always), preds={BB05} succs={BB13} ***** BB15 [0014] STMT00013 ( 0x013[E-] ... ??? ) N001 ( 14, 5) [000028] H-CXG------ * CALL help byref CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE ------------ BB13 [0012] [???..???) -> BB03 (always), preds={BB05,BB15} succs={BB03} ***** BB13 [0012] STMT00006 ( 0x013[E-] ... ??? ) N005 ( 23, 7) [000025] --CXGO----- * CALL ind void N004 ( 6, 5) [000026] V---GO----- calli tgt \--* IND int N003 ( 4, 3) [000027] ----G--N--- \--* ADD byref N001 ( 3, 2) [000079] ----------- +--* LCL_VAR int V03 tmp2 N002 ( 1, 1) [000029] ----------- \--* CNS_INT int 8 Fseq[FtnHolder] ------------ BB06 [0005] [???..???) -> BB16,BB18 (cond), preds={BB10} succs={BB18,BB16} ***** BB06 [0005] STMT00014 ( 0x013[E-] ... ??? ) N010 ( 15, 16) [000096] -A--G------ * JTRUE void N009 ( 13, 14) [000095] JA--G------ \--* EQ int N007 ( 11, 12) [000093] nA--G------ +--* IND int N006 ( 9, 10) [000092] -A-----N--- | \--* ADD int N004 ( 8, 9) [000089] -A--------- | +--* COMMA int N002 ( 5, 7) [000087] DA--------- | | +--* STORE_LCL_VAR int V04 tmp3 N001 ( 1, 4) [000086] H---------- | | | \--* CNS_INT(h) int 0x430FB8 global ptr N003 ( 3, 2) [000088] ----------- | | \--* LCL_VAR int V04 tmp3 N005 ( 1, 1) [000091] ----------- | \--* CNS_INT int -4 N008 ( 1, 1) [000094] ----------- \--* CNS_INT int 0 ------------ BB18 [0017] [???..???) -> BB16 (always), preds={BB06} succs={BB16} ***** BB18 [0017] STMT00015 ( 0x013[E-] ... ??? ) N001 ( 14, 5) [000040] H-CXG------ * CALL help byref CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE ------------ BB16 [0015] [???..???) -> BB19,BB21 (cond), preds={BB06,BB18} succs={BB21,BB19} ***** BB16 [0015] STMT00016 ( 0x013[E-] ... ??? ) N010 ( 13, 11) [000097] DA-XGO----- * STORE_LCL_VAR int V05 tmp4 N009 ( 9, 8) [000045] ---XGO----- \--* IND int N008 ( 9, 8) [000044] ----GO-N--- \--* ADD int N006 ( 8, 7) [000037] ----GO-N--- +--* ADD int N004 ( 6, 5) [000038] V---GO----- | +--* IND int N003 ( 4, 3) [000039] ----G--N--- | | \--* ADD byref N001 ( 3, 2) [000090] ----------- | | +--* LCL_VAR int V04 tmp3 N002 ( 1, 1) [000041] ----------- | | \--* CNS_INT int 8 Fseq[FtnHolder] N005 ( 1, 1) [000042] ----------- | \--* CNS_INT int -2 N007 ( 1, 1) [000043] ----------- \--* CNS_INT int 4 ***** BB16 [0015] STMT00017 ( 0x013[E-] ... ??? ) N010 ( 15, 16) [000109] -A--G------ * JTRUE void N009 ( 13, 14) [000108] JA--G------ \--* EQ int N007 ( 11, 12) [000106] nA--G------ +--* IND int N006 ( 9, 10) [000105] -A-----N--- | \--* ADD int N004 ( 8, 9) [000102] -A--------- | +--* COMMA int N002 ( 5, 7) [000100] DA--------- | | +--* STORE_LCL_VAR int V06 tmp5 N001 ( 1, 4) [000099] H---------- | | | \--* CNS_INT(h) int 0x430FB8 global ptr N003 ( 3, 2) [000101] ----------- | | \--* LCL_VAR int V06 tmp5 N005 ( 1, 1) [000104] ----------- | \--* CNS_INT int -4 N008 ( 1, 1) [000107] ----------- \--* CNS_INT int 0 ------------ BB21 [0020] [???..???) -> BB19 (always), preds={BB16} succs={BB19} ***** BB21 [0020] STMT00018 ( 0x013[E-] ... ??? ) N001 ( 14, 5) [000032] H-CXG------ * CALL help byref CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE ------------ BB19 [0018] [013..???) -> BB03 (always), preds={BB16,BB21} succs={BB03} ***** BB19 [0018] STMT00007 ( 0x013[E-] ... ??? ) N009 ( 29, 13) [000046] --CXGO----- * CALL ind void N008 ( 9, 8) [000036] ---XGO----- calli tgt \--* IND int N007 ( 7, 6) [000035] ----GO-N--- \--* ADD int N005 ( 6, 5) [000030] V---GO----- +--* IND int N004 ( 4, 3) [000031] ----G--N--- | \--* ADD byref N002 ( 3, 2) [000103] ----------- | +--* LCL_VAR int V06 tmp5 N003 ( 1, 1) [000033] ----------- | \--* CNS_INT int 8 Fseq[FtnHolder] N006 ( 1, 1) [000034] ----------- \--* CNS_INT int -2 N001 ( 3, 2) [000098] ----------- gctx in ecx \--* LCL_VAR int V05 tmp4 ------------ BB03 [0002] [01F..02F) (return), preds={BB13,BB19} succs={} ***** BB03 [0002] STMT00003 ( 0x01F[E-] ... ??? ) N003 ( 16, 15) [000014] --CXG------ * CALL void Statics:CheckForFailure(System.String,System.String) N001 ( 1, 4) [000051] H---------- arg0 in ecx +--* CNS_INT(h) ref '"Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverStri' N002 ( 1, 4) [000052] H---------- arg1 in edx \--* CNS_INT(h) ref '"valuetype GenericValuetype`1'IFaceCuriouslyRecurringGe' ***** BB03 [0002] STMT00004 ( 0x02E[E-] ... ??? ) N001 ( 0, 0) [000015] ----------- * RETURN void ------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist *************** Starting PHASE Expand TLS access Nothing to expand. *************** Finishing PHASE Expand TLS access [no changes] *************** Starting PHASE Insert GC Polls *************** Finishing PHASE Insert GC Polls [no changes] *************** Starting PHASE Create throw helper blocks *************** Finishing PHASE Create throw helper blocks [no changes] *************** Starting PHASE Determine first cold block No procedure splitting will be done for this method *************** Finishing PHASE Determine first cold block [no changes] *************** Starting PHASE Rationalize IR *************** Finishing PHASE Rationalize IR Trees after Rationalize IR ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [???..???)-> BB02 (always) i LIR keep internal q BB02 [0001] 1 BB01 1 [???..???)-> BB07,BB09 ( cond ) i LIR hascall BB09 [0008] 1 BB02 0 [???..???)-> BB07 (always) LIR rare internal q BB07 [0006] 2 BB02,BB09 1 [000..01F)-> BB04 (always) i LIR hascall q BB04 [0003] 1 BB07 1 [???..???)-> BB10,BB12 ( cond ) i LIR internal hascall BB12 [0011] 1 BB04 0 [???..???)-> BB10 (always) LIR rare internal q BB10 [0009] 2 BB04,BB12 1 [???..???)-> BB06,BB05 ( cond ) i LIR internal hascall q BB05 [0004] 1 BB10 0.80 [???..???)-> BB13,BB15 ( cond ) i LIR internal hascall gcsafe BB15 [0014] 1 BB05 0 [???..???)-> BB13 (always) LIR rare internal q BB13 [0012] 2 BB05,BB15 0.80 [???..???)-> BB03 (always) i LIR internal hascall gcsafe BB06 [0005] 1 BB10 0.20 [???..???)-> BB16,BB18 ( cond ) i LIR internal hascall gcsafe BB18 [0017] 1 BB06 0 [???..???)-> BB16 (always) LIR rare internal q BB16 [0015] 2 BB06,BB18 0.20 [???..???)-> BB19,BB21 ( cond ) i LIR internal hascall gcsafe BB21 [0020] 1 BB16 0 [???..???)-> BB19 (always) LIR rare internal q BB19 [0018] 2 BB16,BB21 0.20 [013..???)-> BB03 (always) i LIR internal hascall gcsafe q BB03 [0002] 2 BB13,BB19 1 [01F..02F) (return) i LIR internal hascall gcsafe ---------------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [0000] [???..???) -> BB02 (always), preds={} succs={BB02} N001 ( 0, 0) [000000] ----------- NOP void ------------ BB02 [0001] [???..???) -> BB07,BB09 (cond), preds={BB01} succs={BB09,BB07} [000110] ----------- IL_OFFSET void INLRT @ 0x000[E-] N001 ( 1, 4) [000053] H---------- t53 = CNS_INT(h) int 0x430FB8 global ptr /--* t53 int N002 ( 5, 7) [000054] DA--------- * STORE_LCL_VAR int V01 loc0 N003 ( 3, 2) [000055] ----------- t55 = LCL_VAR int V01 loc0 N005 ( 1, 1) [000058] ----------- t58 = CNS_INT int -4 /--* t55 int +--* t58 int N006 ( 9, 10) [000059] -A-----N--- t59 = * ADD int /--* t59 int N007 ( 11, 12) [000060] nA--G------ t60 = * IND int N008 ( 1, 1) [000061] ----------- t61 = CNS_INT int 0 /--* t60 int +--* t61 int N009 ( 13, 14) [000062] JA--G------ t62 = * EQ int /--* t62 int N010 ( 15, 16) [000063] -A--G------ * JTRUE void ------------ BB09 [0008] [???..???) -> BB07 (always), preds={BB02} succs={BB07} [000111] ----------- IL_OFFSET void INLRT @ 0x000[E-] N001 ( 14, 5) [000003] H-CXG------ u3 = CALL help byref CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE ------------ BB07 [0006] [000..01F) -> BB04 (always), preds={BB02,BB09} succs={BB04} [000112] ----------- IL_OFFSET void INLRT @ 0x000[E-] N001 ( 3, 2) [000057] ----------- t57 = LCL_VAR int V01 loc0 N002 ( 1, 1) [000004] ----------- t4 = CNS_INT int 8 Fseq[FtnHolder] /--* t57 int +--* t4 int N003 ( 4, 3) [000005] ----G--N--- t5 = * ADD byref N004 ( 3, 2) [000001] !---------- t1 = LCL_VAR int V00 TypeCtx /--* t1 int arg0 in ecx N005 ( 17, 8) [000002] --C-G------ t2 = * CALL help int CORINFO_HELP_READYTORUN_GENERIC_HANDLE /--* t5 byref +--* t2 int N006 ( 24, 14) [000006] VAC-GO----- * STOREIND int ------------ BB04 [0003] [???..???) -> BB10,BB12 (cond), preds={BB07} succs={BB12,BB10} [000113] ----------- IL_OFFSET void INLRT @ 0x013[E-] N001 ( 1, 4) [000064] H---------- t64 = CNS_INT(h) int 0x430FB8 global ptr /--* t64 int N002 ( 5, 7) [000065] DA--------- * STORE_LCL_VAR int V02 tmp1 N003 ( 3, 2) [000066] ----------- t66 = LCL_VAR int V02 tmp1 N005 ( 1, 1) [000069] ----------- t69 = CNS_INT int -4 /--* t66 int +--* t69 int N006 ( 9, 10) [000070] -A-----N--- t70 = * ADD int /--* t70 int N007 ( 11, 12) [000071] nA--G------ t71 = * IND int N008 ( 1, 1) [000072] ----------- t72 = CNS_INT int 0 /--* t71 int +--* t72 int N009 ( 13, 14) [000073] JA--G------ t73 = * EQ int /--* t73 int N010 ( 15, 16) [000074] -A--G------ * JTRUE void ------------ BB12 [0011] [???..???) -> BB10 (always), preds={BB04} succs={BB10} [000114] ----------- IL_OFFSET void INLRT @ 0x013[E-] N001 ( 14, 5) [000019] H-CXG------ u19 = CALL help byref CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE ------------ BB10 [0009] [???..???) -> BB06,BB05 (cond), preds={BB04,BB12} succs={BB05,BB06} [000115] ----------- IL_OFFSET void INLRT @ 0x013[E-] N001 ( 3, 2) [000068] ----------- t68 = LCL_VAR int V02 tmp1 N002 ( 1, 1) [000020] ----------- t20 = CNS_INT int 8 Fseq[FtnHolder] /--* t68 int +--* t20 int N003 ( 4, 3) [000018] ----G--N--- t18 = * ADD byref /--* t18 byref N004 ( 6, 5) [000017] V---GO----- t17 = * IND int N005 ( 1, 1) [000016] ----------- t16 = CNS_INT int 2 /--* t17 int +--* t16 int N006 ( 8, 7) [000021] ----GO----- t21 = * AND int N007 ( 1, 1) [000022] ----------- t22 = CNS_INT int 0 /--* t21 int +--* t22 int N008 ( 10, 9) [000023] J---GO-N--- t23 = * NE int /--* t23 int N009 ( 12, 11) [000024] ----GO----- * JTRUE void ------------ BB05 [0004] [???..???) -> BB13,BB15 (cond), preds={BB10} succs={BB15,BB13} [000116] ----------- IL_OFFSET void INLRT @ 0x013[E-] N001 ( 1, 4) [000075] H---------- t75 = CNS_INT(h) int 0x430FB8 global ptr /--* t75 int N002 ( 5, 7) [000076] DA--------- * STORE_LCL_VAR int V03 tmp2 N003 ( 3, 2) [000077] ----------- t77 = LCL_VAR int V03 tmp2 N005 ( 1, 1) [000080] ----------- t80 = CNS_INT int -4 /--* t77 int +--* t80 int N006 ( 9, 10) [000081] -A-----N--- t81 = * ADD int /--* t81 int N007 ( 11, 12) [000082] nA--G------ t82 = * IND int N008 ( 1, 1) [000083] ----------- t83 = CNS_INT int 0 /--* t82 int +--* t83 int N009 ( 13, 14) [000084] JA--G------ t84 = * EQ int /--* t84 int N010 ( 15, 16) [000085] -A--G------ * JTRUE void ------------ BB15 [0014] [???..???) -> BB13 (always), preds={BB05} succs={BB13} [000117] ----------- IL_OFFSET void INLRT @ 0x013[E-] N001 ( 14, 5) [000028] H-CXG------ u28 = CALL help byref CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE ------------ BB13 [0012] [???..???) -> BB03 (always), preds={BB05,BB15} succs={BB03} [000118] ----------- IL_OFFSET void INLRT @ 0x013[E-] N001 ( 3, 2) [000079] ----------- t79 = LCL_VAR int V03 tmp2 N002 ( 1, 1) [000029] ----------- t29 = CNS_INT int 8 Fseq[FtnHolder] /--* t79 int +--* t29 int N003 ( 4, 3) [000027] ----G--N--- t27 = * ADD byref /--* t27 byref N004 ( 6, 5) [000026] V---GO----- t26 = * IND int /--* t26 int calli tgt N005 ( 23, 7) [000025] --CXGO----- * CALL ind void ------------ BB06 [0005] [???..???) -> BB16,BB18 (cond), preds={BB10} succs={BB18,BB16} [000119] ----------- IL_OFFSET void INLRT @ 0x013[E-] N001 ( 1, 4) [000086] H---------- t86 = CNS_INT(h) int 0x430FB8 global ptr /--* t86 int N002 ( 5, 7) [000087] DA--------- * STORE_LCL_VAR int V04 tmp3 N003 ( 3, 2) [000088] ----------- t88 = LCL_VAR int V04 tmp3 N005 ( 1, 1) [000091] ----------- t91 = CNS_INT int -4 /--* t88 int +--* t91 int N006 ( 9, 10) [000092] -A-----N--- t92 = * ADD int /--* t92 int N007 ( 11, 12) [000093] nA--G------ t93 = * IND int N008 ( 1, 1) [000094] ----------- t94 = CNS_INT int 0 /--* t93 int +--* t94 int N009 ( 13, 14) [000095] JA--G------ t95 = * EQ int /--* t95 int N010 ( 15, 16) [000096] -A--G------ * JTRUE void ------------ BB18 [0017] [???..???) -> BB16 (always), preds={BB06} succs={BB16} [000120] ----------- IL_OFFSET void INLRT @ 0x013[E-] N001 ( 14, 5) [000040] H-CXG------ u40 = CALL help byref CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE ------------ BB16 [0015] [???..???) -> BB19,BB21 (cond), preds={BB06,BB18} succs={BB21,BB19} [000121] ----------- IL_OFFSET void INLRT @ 0x013[E-] N001 ( 3, 2) [000090] ----------- t90 = LCL_VAR int V04 tmp3 N002 ( 1, 1) [000041] ----------- t41 = CNS_INT int 8 Fseq[FtnHolder] /--* t90 int +--* t41 int N003 ( 4, 3) [000039] ----G--N--- t39 = * ADD byref /--* t39 byref N004 ( 6, 5) [000038] V---GO----- t38 = * IND int N005 ( 1, 1) [000042] ----------- t42 = CNS_INT int -2 /--* t38 int +--* t42 int N006 ( 8, 7) [000037] ----GO-N--- t37 = * ADD int N007 ( 1, 1) [000043] ----------- t43 = CNS_INT int 4 /--* t37 int +--* t43 int N008 ( 9, 8) [000044] ----GO-N--- t44 = * ADD int /--* t44 int N009 ( 9, 8) [000045] ---XGO----- t45 = * IND int /--* t45 int N010 ( 13, 11) [000097] DA-XGO----- * STORE_LCL_VAR int V05 tmp4 [000122] ----------- IL_OFFSET void INLRT @ 0x013[E-] N001 ( 1, 4) [000099] H---------- t99 = CNS_INT(h) int 0x430FB8 global ptr /--* t99 int N002 ( 5, 7) [000100] DA--------- * STORE_LCL_VAR int V06 tmp5 N003 ( 3, 2) [000101] ----------- t101 = LCL_VAR int V06 tmp5 N005 ( 1, 1) [000104] ----------- t104 = CNS_INT int -4 /--* t101 int +--* t104 int N006 ( 9, 10) [000105] -A-----N--- t105 = * ADD int /--* t105 int N007 ( 11, 12) [000106] nA--G------ t106 = * IND int N008 ( 1, 1) [000107] ----------- t107 = CNS_INT int 0 /--* t106 int +--* t107 int N009 ( 13, 14) [000108] JA--G------ t108 = * EQ int /--* t108 int N010 ( 15, 16) [000109] -A--G------ * JTRUE void ------------ BB21 [0020] [???..???) -> BB19 (always), preds={BB16} succs={BB19} [000123] ----------- IL_OFFSET void INLRT @ 0x013[E-] N001 ( 14, 5) [000032] H-CXG------ u32 = CALL help byref CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE ------------ BB19 [0018] [013..???) -> BB03 (always), preds={BB16,BB21} succs={BB03} [000124] ----------- IL_OFFSET void INLRT @ 0x013[E-] N001 ( 3, 2) [000098] ----------- t98 = LCL_VAR int V05 tmp4 N002 ( 3, 2) [000103] ----------- t103 = LCL_VAR int V06 tmp5 N003 ( 1, 1) [000033] ----------- t33 = CNS_INT int 8 Fseq[FtnHolder] /--* t103 int +--* t33 int N004 ( 4, 3) [000031] ----G--N--- t31 = * ADD byref /--* t31 byref N005 ( 6, 5) [000030] V---GO----- t30 = * IND int N006 ( 1, 1) [000034] ----------- t34 = CNS_INT int -2 /--* t30 int +--* t34 int N007 ( 7, 6) [000035] ----GO-N--- t35 = * ADD int /--* t35 int N008 ( 9, 8) [000036] ---XGO----- t36 = * IND int /--* t98 int gctx in ecx +--* t36 int calli tgt N009 ( 29, 13) [000046] --CXGO----- * CALL ind void ------------ BB03 [0002] [01F..02F) (return), preds={BB13,BB19} succs={} [000125] ----------- IL_OFFSET void INLRT @ 0x01F[E-] N001 ( 1, 4) [000051] H---------- t51 = CNS_INT(h) ref '"Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverStri' N002 ( 1, 4) [000052] H---------- t52 = CNS_INT(h) ref '"valuetype GenericValuetype`1'IFaceCuriouslyRecurringGe' /--* t51 ref arg0 in ecx +--* t52 ref arg1 in edx N003 ( 16, 15) [000014] --CXG------ * CALL void Statics:CheckForFailure(System.String,System.String) [000126] ----------- IL_OFFSET void INLRT @ 0x02E[E-] N001 ( 0, 0) [000015] ----------- RETURN void ------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist *************** Starting PHASE Lowering nodeinfo compEnregLocals() is false, setting doNotEnreg flag for all locals. Local V00 should not be enregistered because: opts.compFlags & CLFLG_REGVAR is not set Local V01 should not be enregistered because: opts.compFlags & CLFLG_REGVAR is not set Local V02 should not be enregistered because: opts.compFlags & CLFLG_REGVAR is not set Local V03 should not be enregistered because: opts.compFlags & CLFLG_REGVAR is not set Local V04 should not be enregistered because: opts.compFlags & CLFLG_REGVAR is not set Local V05 should not be enregistered because: opts.compFlags & CLFLG_REGVAR is not set Local V06 should not be enregistered because: opts.compFlags & CLFLG_REGVAR is not set lowering store lcl var/field (before): N001 ( 1, 4) [000053] H---------- t53 = CNS_INT(h) int 0x430FB8 global ptr /--* t53 int N002 ( 5, 7) [000054] DA--------- * STORE_LCL_VAR int V01 loc0 lowering store lcl var/field (after): N001 ( 1, 4) [000053] H---------- t53 = CNS_INT(h) int 0x430FB8 global ptr /--* t53 int N002 ( 5, 7) [000054] DA--------- * STORE_LCL_VAR int V01 loc0 Addressing mode: Base N003 ( 3, 2) [000055] ----------- * LCL_VAR int V01 loc0 + -4 Removing unused node: N005 ( 1, 1) [000058] -c--------- * CNS_INT int -4 New addressing mode node: N006 ( 9, 10) [000059] ----------- * LEA(b+-4) int Lowering JTRUE: N003 ( 3, 2) [000055] ----------- t55 = LCL_VAR int V01 loc0 /--* t55 int N006 ( 9, 10) [000059] -c--------- t59 = * LEA(b+-4) int /--* t59 int N007 ( 11, 12) [000060] nA--G------ t60 = * IND int N008 ( 1, 1) [000061] -c--------- t61 = CNS_INT int 0 /--* t60 int +--* t61 int N009 ( 13, 14) [000062] JA--G------ t62 = * EQ int /--* t62 int N010 ( 15, 16) [000063] -A--G------ * JTRUE void Lowering condition: N003 ( 3, 2) [000055] ----------- t55 = LCL_VAR int V01 loc0 /--* t55 int N006 ( 9, 10) [000059] -c--------- t59 = * LEA(b+-4) int /--* t59 int N007 ( 11, 12) [000060] nA--G------ t60 = * IND int N008 ( 1, 1) [000061] -c--------- t61 = CNS_INT int 0 /--* t60 int +--* t61 int N009 ( 13, 14) [000062] JA--G------ t62 = * EQ int Lowering JTRUE Result: N003 ( 3, 2) [000055] ----------- t55 = LCL_VAR int V01 loc0 /--* t55 int N006 ( 9, 10) [000059] -c--------- t59 = * LEA(b+-4) int /--* t59 int N007 ( 11, 12) [000060] nA--G------ t60 = * IND int N008 ( 1, 1) [000061] -c--------- t61 = CNS_INT int 0 /--* t60 int +--* t61 int N009 ( 13, 14) [000062] -A--G------ * CMP void N010 ( 15, 16) [000063] -A--G------ JCC void cond=UEQ lowering call (before): N001 ( 14, 5) [000003] H-CXG------ u3 = CALL help byref CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE args: ====== late: ====== lowering call (after): N001 ( 14, 5) [000003] H-CXG------ u3 = CALL help byref CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE lowering call (before): N004 ( 3, 2) [000001] !---------- t1 = LCL_VAR int V00 TypeCtx /--* t1 int arg0 in ecx N005 ( 17, 8) [000002] --C-G------ t2 = * CALL help int CORINFO_HELP_READYTORUN_GENERIC_HANDLE args: ====== late: ====== lowering arg : N004 ( 3, 2) [000001] !---------- * LCL_VAR int V00 TypeCtx new node is : [000127] ----------- * PUTARG_REG int REG ecx lowering call (after): N004 ( 3, 2) [000001] !---------- t1 = LCL_VAR int V00 TypeCtx /--* t1 int [000127] ----------- t127 = * PUTARG_REG int REG ecx /--* t127 int arg0 in ecx N005 ( 17, 8) [000002] --C-G------ t2 = * CALL help int CORINFO_HELP_READYTORUN_GENERIC_HANDLE Addressing mode: Base N001 ( 3, 2) [000057] ----------- * LCL_VAR int V01 loc0 + 8 Removing unused node: N002 ( 1, 1) [000004] -c--------- * CNS_INT int 8 Fseq[FtnHolder] New addressing mode node: N003 ( 4, 3) [000005] ----------- * LEA(b+8) byref Lower of StoreInd didn't mark the node as self contained for reason: oper is not supported N001 ( 3, 2) [000057] ----------- t57 = LCL_VAR int V01 loc0 /--* t57 int N003 ( 4, 3) [000005] ----------- t5 = * LEA(b+8) byref N004 ( 3, 2) [000001] !---------- t1 = LCL_VAR int V00 TypeCtx /--* t1 int [000127] ----------- t127 = * PUTARG_REG int REG ecx /--* t127 int arg0 in ecx N005 ( 17, 8) [000002] --C-G------ t2 = * CALL help int CORINFO_HELP_READYTORUN_GENERIC_HANDLE /--* t5 byref +--* t2 int N006 ( 24, 14) [000006] VAC-GO----- * STOREIND int lowering store lcl var/field (before): N001 ( 1, 4) [000064] H---------- t64 = CNS_INT(h) int 0x430FB8 global ptr /--* t64 int N002 ( 5, 7) [000065] DA--------- * STORE_LCL_VAR int V02 tmp1 lowering store lcl var/field (after): N001 ( 1, 4) [000064] H---------- t64 = CNS_INT(h) int 0x430FB8 global ptr /--* t64 int N002 ( 5, 7) [000065] DA--------- * STORE_LCL_VAR int V02 tmp1 Addressing mode: Base N003 ( 3, 2) [000066] ----------- * LCL_VAR int V02 tmp1 + -4 Removing unused node: N005 ( 1, 1) [000069] -c--------- * CNS_INT int -4 New addressing mode node: N006 ( 9, 10) [000070] ----------- * LEA(b+-4) int Lowering JTRUE: N003 ( 3, 2) [000066] ----------- t66 = LCL_VAR int V02 tmp1 /--* t66 int N006 ( 9, 10) [000070] -c--------- t70 = * LEA(b+-4) int /--* t70 int N007 ( 11, 12) [000071] nA--G------ t71 = * IND int N008 ( 1, 1) [000072] -c--------- t72 = CNS_INT int 0 /--* t71 int +--* t72 int N009 ( 13, 14) [000073] JA--G------ t73 = * EQ int /--* t73 int N010 ( 15, 16) [000074] -A--G------ * JTRUE void Lowering condition: N003 ( 3, 2) [000066] ----------- t66 = LCL_VAR int V02 tmp1 /--* t66 int N006 ( 9, 10) [000070] -c--------- t70 = * LEA(b+-4) int /--* t70 int N007 ( 11, 12) [000071] nA--G------ t71 = * IND int N008 ( 1, 1) [000072] -c--------- t72 = CNS_INT int 0 /--* t71 int +--* t72 int N009 ( 13, 14) [000073] JA--G------ t73 = * EQ int Lowering JTRUE Result: N003 ( 3, 2) [000066] ----------- t66 = LCL_VAR int V02 tmp1 /--* t66 int N006 ( 9, 10) [000070] -c--------- t70 = * LEA(b+-4) int /--* t70 int N007 ( 11, 12) [000071] nA--G------ t71 = * IND int N008 ( 1, 1) [000072] -c--------- t72 = CNS_INT int 0 /--* t71 int +--* t72 int N009 ( 13, 14) [000073] -A--G------ * CMP void N010 ( 15, 16) [000074] -A--G------ JCC void cond=UEQ lowering call (before): N001 ( 14, 5) [000019] H-CXG------ u19 = CALL help byref CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE args: ====== late: ====== lowering call (after): N001 ( 14, 5) [000019] H-CXG------ u19 = CALL help byref CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE Addressing mode: Base N001 ( 3, 2) [000068] ----------- * LCL_VAR int V02 tmp1 + 8 Removing unused node: N002 ( 1, 1) [000020] -c--------- * CNS_INT int 8 Fseq[FtnHolder] New addressing mode node: N003 ( 4, 3) [000018] ----------- * LEA(b+8) byref Lowering JTRUE: N001 ( 3, 2) [000068] ----------- t68 = LCL_VAR int V02 tmp1 /--* t68 int N003 ( 4, 3) [000018] -c--------- t18 = * LEA(b+8) byref /--* t18 byref N004 ( 6, 5) [000017] V---GO----- t17 = * IND int N005 ( 1, 1) [000016] -c--------- t16 = CNS_INT int 2 /--* t17 int +--* t16 int N006 ( 8, 7) [000021] ----GO----- t21 = * AND int N007 ( 1, 1) [000022] -c--------- t22 = CNS_INT int 0 /--* t21 int +--* t22 int N008 ( 10, 9) [000023] J---GO-N--- t23 = * NE int /--* t23 int N009 ( 12, 11) [000024] ----GO----- * JTRUE void Lowering condition: N001 ( 3, 2) [000068] ----------- t68 = LCL_VAR int V02 tmp1 /--* t68 int N003 ( 4, 3) [000018] -c--------- t18 = * LEA(b+8) byref /--* t18 byref N004 ( 6, 5) [000017] V---GO----- t17 = * IND int N005 ( 1, 1) [000016] -c--------- t16 = CNS_INT int 2 /--* t17 int +--* t16 int N006 ( 8, 7) [000021] ----GO----- t21 = * AND int N007 ( 1, 1) [000022] -c--------- t22 = CNS_INT int 0 /--* t21 int +--* t22 int N008 ( 10, 9) [000023] J---GO-N--- t23 = * NE int Lowering JTRUE Result: N001 ( 3, 2) [000068] ----------- t68 = LCL_VAR int V02 tmp1 /--* t68 int N003 ( 4, 3) [000018] -c--------- t18 = * LEA(b+8) byref /--* t18 byref N004 ( 6, 5) [000017] V---GO----- t17 = * IND int N005 ( 1, 1) [000016] -c--------- t16 = CNS_INT int 2 /--* t17 int +--* t16 int N006 ( 8, 7) [000021] ----GO----- t21 = * AND int N007 ( 1, 1) [000022] -c--------- t22 = CNS_INT int 0 /--* t21 int +--* t22 int N008 ( 10, 9) [000023] ----GO-N--- * CMP void N009 ( 12, 11) [000024] ----GO----- JCC void cond=UNE lowering store lcl var/field (before): N001 ( 1, 4) [000075] H---------- t75 = CNS_INT(h) int 0x430FB8 global ptr /--* t75 int N002 ( 5, 7) [000076] DA--------- * STORE_LCL_VAR int V03 tmp2 lowering store lcl var/field (after): N001 ( 1, 4) [000075] H---------- t75 = CNS_INT(h) int 0x430FB8 global ptr /--* t75 int N002 ( 5, 7) [000076] DA--------- * STORE_LCL_VAR int V03 tmp2 Addressing mode: Base N003 ( 3, 2) [000077] ----------- * LCL_VAR int V03 tmp2 + -4 Removing unused node: N005 ( 1, 1) [000080] -c--------- * CNS_INT int -4 New addressing mode node: N006 ( 9, 10) [000081] ----------- * LEA(b+-4) int Lowering JTRUE: N003 ( 3, 2) [000077] ----------- t77 = LCL_VAR int V03 tmp2 /--* t77 int N006 ( 9, 10) [000081] -c--------- t81 = * LEA(b+-4) int /--* t81 int N007 ( 11, 12) [000082] nA--G------ t82 = * IND int N008 ( 1, 1) [000083] -c--------- t83 = CNS_INT int 0 /--* t82 int +--* t83 int N009 ( 13, 14) [000084] JA--G------ t84 = * EQ int /--* t84 int N010 ( 15, 16) [000085] -A--G------ * JTRUE void Lowering condition: N003 ( 3, 2) [000077] ----------- t77 = LCL_VAR int V03 tmp2 /--* t77 int N006 ( 9, 10) [000081] -c--------- t81 = * LEA(b+-4) int /--* t81 int N007 ( 11, 12) [000082] nA--G------ t82 = * IND int N008 ( 1, 1) [000083] -c--------- t83 = CNS_INT int 0 /--* t82 int +--* t83 int N009 ( 13, 14) [000084] JA--G------ t84 = * EQ int Lowering JTRUE Result: N003 ( 3, 2) [000077] ----------- t77 = LCL_VAR int V03 tmp2 /--* t77 int N006 ( 9, 10) [000081] -c--------- t81 = * LEA(b+-4) int /--* t81 int N007 ( 11, 12) [000082] nA--G------ t82 = * IND int N008 ( 1, 1) [000083] -c--------- t83 = CNS_INT int 0 /--* t82 int +--* t83 int N009 ( 13, 14) [000084] -A--G------ * CMP void N010 ( 15, 16) [000085] -A--G------ JCC void cond=UEQ lowering call (before): N001 ( 14, 5) [000028] H-CXG------ u28 = CALL help byref CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE args: ====== late: ====== lowering call (after): N001 ( 14, 5) [000028] H-CXG------ u28 = CALL help byref CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE Addressing mode: Base N001 ( 3, 2) [000079] ----------- * LCL_VAR int V03 tmp2 + 8 Removing unused node: N002 ( 1, 1) [000029] -c--------- * CNS_INT int 8 Fseq[FtnHolder] New addressing mode node: N003 ( 4, 3) [000027] ----------- * LEA(b+8) byref lowering call (before): N001 ( 3, 2) [000079] ----------- t79 = LCL_VAR int V03 tmp2 /--* t79 int N003 ( 4, 3) [000027] -c--------- t27 = * LEA(b+8) byref /--* t27 byref N004 ( 6, 5) [000026] V---GO----- t26 = * IND int /--* t26 int calli tgt N005 ( 23, 7) [000025] --CXGO----- * CALL ind void args: ====== late: ====== lowering call (after): N001 ( 3, 2) [000079] ----------- t79 = LCL_VAR int V03 tmp2 /--* t79 int N003 ( 4, 3) [000027] -c--------- t27 = * LEA(b+8) byref /--* t27 byref N004 ( 6, 5) [000026] Vc--GO----- t26 = * IND int REG NA /--* t26 int calli tgt N005 ( 23, 7) [000025] --CXGO----- * CALL ind void lowering store lcl var/field (before): N001 ( 1, 4) [000086] H---------- t86 = CNS_INT(h) int 0x430FB8 global ptr /--* t86 int N002 ( 5, 7) [000087] DA--------- * STORE_LCL_VAR int V04 tmp3 lowering store lcl var/field (after): N001 ( 1, 4) [000086] H---------- t86 = CNS_INT(h) int 0x430FB8 global ptr /--* t86 int N002 ( 5, 7) [000087] DA--------- * STORE_LCL_VAR int V04 tmp3 Addressing mode: Base N003 ( 3, 2) [000088] ----------- * LCL_VAR int V04 tmp3 + -4 Removing unused node: N005 ( 1, 1) [000091] -c--------- * CNS_INT int -4 New addressing mode node: N006 ( 9, 10) [000092] ----------- * LEA(b+-4) int Lowering JTRUE: N003 ( 3, 2) [000088] ----------- t88 = LCL_VAR int V04 tmp3 /--* t88 int N006 ( 9, 10) [000092] -c--------- t92 = * LEA(b+-4) int /--* t92 int N007 ( 11, 12) [000093] nA--G------ t93 = * IND int N008 ( 1, 1) [000094] -c--------- t94 = CNS_INT int 0 /--* t93 int +--* t94 int N009 ( 13, 14) [000095] JA--G------ t95 = * EQ int /--* t95 int N010 ( 15, 16) [000096] -A--G------ * JTRUE void Lowering condition: N003 ( 3, 2) [000088] ----------- t88 = LCL_VAR int V04 tmp3 /--* t88 int N006 ( 9, 10) [000092] -c--------- t92 = * LEA(b+-4) int /--* t92 int N007 ( 11, 12) [000093] nA--G------ t93 = * IND int N008 ( 1, 1) [000094] -c--------- t94 = CNS_INT int 0 /--* t93 int +--* t94 int N009 ( 13, 14) [000095] JA--G------ t95 = * EQ int Lowering JTRUE Result: N003 ( 3, 2) [000088] ----------- t88 = LCL_VAR int V04 tmp3 /--* t88 int N006 ( 9, 10) [000092] -c--------- t92 = * LEA(b+-4) int /--* t92 int N007 ( 11, 12) [000093] nA--G------ t93 = * IND int N008 ( 1, 1) [000094] -c--------- t94 = CNS_INT int 0 /--* t93 int +--* t94 int N009 ( 13, 14) [000095] -A--G------ * CMP void N010 ( 15, 16) [000096] -A--G------ JCC void cond=UEQ lowering call (before): N001 ( 14, 5) [000040] H-CXG------ u40 = CALL help byref CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE args: ====== late: ====== lowering call (after): N001 ( 14, 5) [000040] H-CXG------ u40 = CALL help byref CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE Addressing mode: Base N001 ( 3, 2) [000090] ----------- * LCL_VAR int V04 tmp3 + 8 Removing unused node: N002 ( 1, 1) [000041] -c--------- * CNS_INT int 8 Fseq[FtnHolder] New addressing mode node: N003 ( 4, 3) [000039] ----------- * LEA(b+8) byref Addressing mode: Base N004 ( 6, 5) [000038] V---GO----- * IND int + 2 Removing unused node: N007 ( 1, 1) [000043] -c--------- * CNS_INT int 4 Removing unused node: N006 ( 8, 7) [000037] ----GO-N--- * ADD int Removing unused node: N005 ( 1, 1) [000042] -c--------- * CNS_INT int -2 New addressing mode node: N008 ( 9, 8) [000044] ----------- * LEA(b+2) int lowering store lcl var/field (before): N001 ( 3, 2) [000090] ----------- t90 = LCL_VAR int V04 tmp3 /--* t90 int N003 ( 4, 3) [000039] -c--------- t39 = * LEA(b+8) byref /--* t39 byref N004 ( 6, 5) [000038] V---GO----- t38 = * IND int /--* t38 int N008 ( 9, 8) [000044] -c--------- t44 = * LEA(b+2) int /--* t44 int N009 ( 9, 8) [000045] ---XGO----- t45 = * IND int /--* t45 int N010 ( 13, 11) [000097] DA-XGO----- * STORE_LCL_VAR int V05 tmp4 lowering store lcl var/field (after): N001 ( 3, 2) [000090] ----------- t90 = LCL_VAR int V04 tmp3 /--* t90 int N003 ( 4, 3) [000039] -c--------- t39 = * LEA(b+8) byref /--* t39 byref N004 ( 6, 5) [000038] V---GO----- t38 = * IND int /--* t38 int N008 ( 9, 8) [000044] -c--------- t44 = * LEA(b+2) int /--* t44 int N009 ( 9, 8) [000045] ---XGO----- t45 = * IND int /--* t45 int N010 ( 13, 11) [000097] DA-XGO----- * STORE_LCL_VAR int V05 tmp4 lowering store lcl var/field (before): N001 ( 1, 4) [000099] H---------- t99 = CNS_INT(h) int 0x430FB8 global ptr /--* t99 int N002 ( 5, 7) [000100] DA--------- * STORE_LCL_VAR int V06 tmp5 lowering store lcl var/field (after): N001 ( 1, 4) [000099] H---------- t99 = CNS_INT(h) int 0x430FB8 global ptr /--* t99 int N002 ( 5, 7) [000100] DA--------- * STORE_LCL_VAR int V06 tmp5 Addressing mode: Base N003 ( 3, 2) [000101] ----------- * LCL_VAR int V06 tmp5 + -4 Removing unused node: N005 ( 1, 1) [000104] -c--------- * CNS_INT int -4 New addressing mode node: N006 ( 9, 10) [000105] ----------- * LEA(b+-4) int Lowering JTRUE: N003 ( 3, 2) [000101] ----------- t101 = LCL_VAR int V06 tmp5 /--* t101 int N006 ( 9, 10) [000105] -c--------- t105 = * LEA(b+-4) int /--* t105 int N007 ( 11, 12) [000106] nA--G------ t106 = * IND int N008 ( 1, 1) [000107] -c--------- t107 = CNS_INT int 0 /--* t106 int +--* t107 int N009 ( 13, 14) [000108] JA--G------ t108 = * EQ int /--* t108 int N010 ( 15, 16) [000109] -A--G------ * JTRUE void Lowering condition: N003 ( 3, 2) [000101] ----------- t101 = LCL_VAR int V06 tmp5 /--* t101 int N006 ( 9, 10) [000105] -c--------- t105 = * LEA(b+-4) int /--* t105 int N007 ( 11, 12) [000106] nA--G------ t106 = * IND int N008 ( 1, 1) [000107] -c--------- t107 = CNS_INT int 0 /--* t106 int +--* t107 int N009 ( 13, 14) [000108] JA--G------ t108 = * EQ int Lowering JTRUE Result: N003 ( 3, 2) [000101] ----------- t101 = LCL_VAR int V06 tmp5 /--* t101 int N006 ( 9, 10) [000105] -c--------- t105 = * LEA(b+-4) int /--* t105 int N007 ( 11, 12) [000106] nA--G------ t106 = * IND int N008 ( 1, 1) [000107] -c--------- t107 = CNS_INT int 0 /--* t106 int +--* t107 int N009 ( 13, 14) [000108] -A--G------ * CMP void N010 ( 15, 16) [000109] -A--G------ JCC void cond=UEQ lowering call (before): N001 ( 14, 5) [000032] H-CXG------ u32 = CALL help byref CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE args: ====== late: ====== lowering call (after): N001 ( 14, 5) [000032] H-CXG------ u32 = CALL help byref CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE Addressing mode: Base N002 ( 3, 2) [000103] ----------- * LCL_VAR int V06 tmp5 + 8 Removing unused node: N003 ( 1, 1) [000033] -c--------- * CNS_INT int 8 Fseq[FtnHolder] New addressing mode node: N004 ( 4, 3) [000031] ----------- * LEA(b+8) byref Addressing mode: Base N005 ( 6, 5) [000030] V---GO----- * IND int + -2 Removing unused node: N006 ( 1, 1) [000034] -c--------- * CNS_INT int -2 New addressing mode node: N007 ( 7, 6) [000035] ----------- * LEA(b+-2) int lowering call (before): N001 ( 3, 2) [000098] ----------- t98 = LCL_VAR int V05 tmp4 N002 ( 3, 2) [000103] ----------- t103 = LCL_VAR int V06 tmp5 /--* t103 int N004 ( 4, 3) [000031] -c--------- t31 = * LEA(b+8) byref /--* t31 byref N005 ( 6, 5) [000030] V---GO----- t30 = * IND int /--* t30 int N007 ( 7, 6) [000035] -c--------- t35 = * LEA(b+-2) int /--* t35 int N008 ( 9, 8) [000036] ---XGO----- t36 = * IND int /--* t98 int gctx in ecx +--* t36 int calli tgt N009 ( 29, 13) [000046] --CXGO----- * CALL ind void args: ====== late: ====== lowering arg : N001 ( 3, 2) [000098] ----------- * LCL_VAR int V05 tmp4 new node is : [000128] ----------- * PUTARG_REG int REG ecx lowering call (after): N001 ( 3, 2) [000098] ----------- t98 = LCL_VAR int V05 tmp4 /--* t98 int [000128] ----------- t128 = * PUTARG_REG int REG ecx N002 ( 3, 2) [000103] ----------- t103 = LCL_VAR int V06 tmp5 /--* t103 int N004 ( 4, 3) [000031] -c--------- t31 = * LEA(b+8) byref /--* t31 byref N005 ( 6, 5) [000030] V---GO----- t30 = * IND int /--* t30 int N007 ( 7, 6) [000035] -c--------- t35 = * LEA(b+-2) int /--* t35 int N008 ( 9, 8) [000036] -c-XGO----- t36 = * IND int REG NA /--* t128 int gctx in ecx +--* t36 int calli tgt N009 ( 29, 13) [000046] --CXGO----- * CALL ind void lowering call (before): N001 ( 1, 4) [000051] H---------- t51 = CNS_INT(h) ref '"Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverStri' N002 ( 1, 4) [000052] H---------- t52 = CNS_INT(h) ref '"valuetype GenericValuetype`1'IFaceCuriouslyRecurringGe' /--* t51 ref arg0 in ecx +--* t52 ref arg1 in edx N003 ( 16, 15) [000014] --CXG------ * CALL void Statics:CheckForFailure(System.String,System.String) args: ====== late: ====== lowering arg : N001 ( 1, 4) [000051] H---------- * CNS_INT(h) ref '"Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverStri' new node is : [000129] ----------- * PUTARG_REG ref REG ecx lowering arg : N002 ( 1, 4) [000052] H---------- * CNS_INT(h) ref '"valuetype GenericValuetype`1'IFaceCuriouslyRecurringGe' new node is : [000130] ----------- * PUTARG_REG ref REG edx lowering call (after): N001 ( 1, 4) [000051] H---------- t51 = CNS_INT(h) ref '"Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverStri' /--* t51 ref [000129] ----------- t129 = * PUTARG_REG ref REG ecx N002 ( 1, 4) [000052] H---------- t52 = CNS_INT(h) ref '"valuetype GenericValuetype`1'IFaceCuriouslyRecurringGe' /--* t52 ref [000130] ----------- t130 = * PUTARG_REG ref REG edx /--* t129 ref arg0 in ecx +--* t130 ref arg1 in edx N003 ( 16, 15) [000014] --CXG------ * CALL void Statics:CheckForFailure(System.String,System.String) lowering GT_RETURN N001 ( 0, 0) [000015] ----------- * RETURN void ============ Lower has completed modifying nodes. ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [???..???)-> BB02 (always) i LIR keep internal q BB02 [0001] 1 BB01 1 [???..???)-> BB07,BB09 ( cond ) i LIR hascall BB09 [0008] 1 BB02 0 [???..???)-> BB07 (always) LIR rare internal q BB07 [0006] 2 BB02,BB09 1 [000..01F)-> BB04 (always) i LIR hascall q BB04 [0003] 1 BB07 1 [???..???)-> BB10,BB12 ( cond ) i LIR internal hascall BB12 [0011] 1 BB04 0 [???..???)-> BB10 (always) LIR rare internal q BB10 [0009] 2 BB04,BB12 1 [???..???)-> BB06,BB05 ( cond ) i LIR internal hascall q BB05 [0004] 1 BB10 0.80 [???..???)-> BB13,BB15 ( cond ) i LIR internal hascall gcsafe BB15 [0014] 1 BB05 0 [???..???)-> BB13 (always) LIR rare internal q BB13 [0012] 2 BB05,BB15 0.80 [???..???)-> BB03 (always) i LIR internal hascall gcsafe BB06 [0005] 1 BB10 0.20 [???..???)-> BB16,BB18 ( cond ) i LIR internal hascall gcsafe BB18 [0017] 1 BB06 0 [???..???)-> BB16 (always) LIR rare internal q BB16 [0015] 2 BB06,BB18 0.20 [???..???)-> BB19,BB21 ( cond ) i LIR internal hascall gcsafe BB21 [0020] 1 BB16 0 [???..???)-> BB19 (always) LIR rare internal q BB19 [0018] 2 BB16,BB21 0.20 [013..???)-> BB03 (always) i LIR internal hascall gcsafe q BB03 [0002] 2 BB13,BB19 1 [01F..02F) (return) i LIR internal hascall gcsafe ---------------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [0000] [???..???) -> BB02 (always), preds={} succs={BB02} N001 ( 0, 0) [000000] ----------- NOP void ------------ BB02 [0001] [???..???) -> BB07,BB09 (cond), preds={BB01} succs={BB09,BB07} [000110] ----------- IL_OFFSET void INLRT @ 0x000[E-] N001 ( 1, 4) [000053] H---------- t53 = CNS_INT(h) int 0x430FB8 global ptr /--* t53 int N002 ( 5, 7) [000054] DA--------- * STORE_LCL_VAR int V01 loc0 N003 ( 3, 2) [000055] ----------- t55 = LCL_VAR int V01 loc0 /--* t55 int N006 ( 9, 10) [000059] -c--------- t59 = * LEA(b+-4) int /--* t59 int N007 ( 11, 12) [000060] nA--G------ t60 = * IND int N008 ( 1, 1) [000061] -c--------- t61 = CNS_INT int 0 /--* t60 int +--* t61 int N009 ( 13, 14) [000062] -A--G------ * CMP void N010 ( 15, 16) [000063] -A--G------ JCC void cond=UEQ ------------ BB09 [0008] [???..???) -> BB07 (always), preds={BB02} succs={BB07} [000111] ----------- IL_OFFSET void INLRT @ 0x000[E-] N001 ( 14, 5) [000003] H-CXG------ u3 = CALL help byref CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE ------------ BB07 [0006] [000..01F) -> BB04 (always), preds={BB02,BB09} succs={BB04} [000112] ----------- IL_OFFSET void INLRT @ 0x000[E-] N001 ( 3, 2) [000057] ----------- t57 = LCL_VAR int V01 loc0 /--* t57 int N003 ( 4, 3) [000005] -c--------- t5 = * LEA(b+8) byref N004 ( 3, 2) [000001] !---------- t1 = LCL_VAR int V00 TypeCtx /--* t1 int [000127] ----------- t127 = * PUTARG_REG int REG ecx /--* t127 int arg0 in ecx N005 ( 17, 8) [000002] --C-G------ t2 = * CALL help int CORINFO_HELP_READYTORUN_GENERIC_HANDLE /--* t5 byref +--* t2 int N006 ( 24, 14) [000006] VAC-GO----- * STOREIND int ------------ BB04 [0003] [???..???) -> BB10,BB12 (cond), preds={BB07} succs={BB12,BB10} [000113] ----------- IL_OFFSET void INLRT @ 0x013[E-] N001 ( 1, 4) [000064] H---------- t64 = CNS_INT(h) int 0x430FB8 global ptr /--* t64 int N002 ( 5, 7) [000065] DA--------- * STORE_LCL_VAR int V02 tmp1 N003 ( 3, 2) [000066] ----------- t66 = LCL_VAR int V02 tmp1 /--* t66 int N006 ( 9, 10) [000070] -c--------- t70 = * LEA(b+-4) int /--* t70 int N007 ( 11, 12) [000071] nA--G------ t71 = * IND int N008 ( 1, 1) [000072] -c--------- t72 = CNS_INT int 0 /--* t71 int +--* t72 int N009 ( 13, 14) [000073] -A--G------ * CMP void N010 ( 15, 16) [000074] -A--G------ JCC void cond=UEQ ------------ BB12 [0011] [???..???) -> BB10 (always), preds={BB04} succs={BB10} [000114] ----------- IL_OFFSET void INLRT @ 0x013[E-] N001 ( 14, 5) [000019] H-CXG------ u19 = CALL help byref CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE ------------ BB10 [0009] [???..???) -> BB06,BB05 (cond), preds={BB04,BB12} succs={BB05,BB06} [000115] ----------- IL_OFFSET void INLRT @ 0x013[E-] N001 ( 3, 2) [000068] ----------- t68 = LCL_VAR int V02 tmp1 /--* t68 int N003 ( 4, 3) [000018] -c--------- t18 = * LEA(b+8) byref /--* t18 byref N004 ( 6, 5) [000017] V---GO----- t17 = * IND int N005 ( 1, 1) [000016] -c--------- t16 = CNS_INT int 2 /--* t17 int +--* t16 int N006 ( 8, 7) [000021] ----GO----- t21 = * AND int N007 ( 1, 1) [000022] -c--------- t22 = CNS_INT int 0 /--* t21 int +--* t22 int N008 ( 10, 9) [000023] ----GO-N--- * CMP void N009 ( 12, 11) [000024] ----GO----- JCC void cond=UNE ------------ BB05 [0004] [???..???) -> BB13,BB15 (cond), preds={BB10} succs={BB15,BB13} [000116] ----------- IL_OFFSET void INLRT @ 0x013[E-] N001 ( 1, 4) [000075] H---------- t75 = CNS_INT(h) int 0x430FB8 global ptr /--* t75 int N002 ( 5, 7) [000076] DA--------- * STORE_LCL_VAR int V03 tmp2 N003 ( 3, 2) [000077] ----------- t77 = LCL_VAR int V03 tmp2 /--* t77 int N006 ( 9, 10) [000081] -c--------- t81 = * LEA(b+-4) int /--* t81 int N007 ( 11, 12) [000082] nA--G------ t82 = * IND int N008 ( 1, 1) [000083] -c--------- t83 = CNS_INT int 0 /--* t82 int +--* t83 int N009 ( 13, 14) [000084] -A--G------ * CMP void N010 ( 15, 16) [000085] -A--G------ JCC void cond=UEQ ------------ BB15 [0014] [???..???) -> BB13 (always), preds={BB05} succs={BB13} [000117] ----------- IL_OFFSET void INLRT @ 0x013[E-] N001 ( 14, 5) [000028] H-CXG------ u28 = CALL help byref CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE ------------ BB13 [0012] [???..???) -> BB03 (always), preds={BB05,BB15} succs={BB03} [000118] ----------- IL_OFFSET void INLRT @ 0x013[E-] N001 ( 3, 2) [000079] ----------- t79 = LCL_VAR int V03 tmp2 /--* t79 int N003 ( 4, 3) [000027] -c--------- t27 = * LEA(b+8) byref /--* t27 byref N004 ( 6, 5) [000026] Vc--GO----- t26 = * IND int REG NA /--* t26 int calli tgt N005 ( 23, 7) [000025] --CXGO----- * CALL ind void ------------ BB06 [0005] [???..???) -> BB16,BB18 (cond), preds={BB10} succs={BB18,BB16} [000119] ----------- IL_OFFSET void INLRT @ 0x013[E-] N001 ( 1, 4) [000086] H---------- t86 = CNS_INT(h) int 0x430FB8 global ptr /--* t86 int N002 ( 5, 7) [000087] DA--------- * STORE_LCL_VAR int V04 tmp3 N003 ( 3, 2) [000088] ----------- t88 = LCL_VAR int V04 tmp3 /--* t88 int N006 ( 9, 10) [000092] -c--------- t92 = * LEA(b+-4) int /--* t92 int N007 ( 11, 12) [000093] nA--G------ t93 = * IND int N008 ( 1, 1) [000094] -c--------- t94 = CNS_INT int 0 /--* t93 int +--* t94 int N009 ( 13, 14) [000095] -A--G------ * CMP void N010 ( 15, 16) [000096] -A--G------ JCC void cond=UEQ ------------ BB18 [0017] [???..???) -> BB16 (always), preds={BB06} succs={BB16} [000120] ----------- IL_OFFSET void INLRT @ 0x013[E-] N001 ( 14, 5) [000040] H-CXG------ u40 = CALL help byref CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE ------------ BB16 [0015] [???..???) -> BB19,BB21 (cond), preds={BB06,BB18} succs={BB21,BB19} [000121] ----------- IL_OFFSET void INLRT @ 0x013[E-] N001 ( 3, 2) [000090] ----------- t90 = LCL_VAR int V04 tmp3 /--* t90 int N003 ( 4, 3) [000039] -c--------- t39 = * LEA(b+8) byref /--* t39 byref N004 ( 6, 5) [000038] V---GO----- t38 = * IND int /--* t38 int N008 ( 9, 8) [000044] -c--------- t44 = * LEA(b+2) int /--* t44 int N009 ( 9, 8) [000045] ---XGO----- t45 = * IND int /--* t45 int N010 ( 13, 11) [000097] DA-XGO----- * STORE_LCL_VAR int V05 tmp4 [000122] ----------- IL_OFFSET void INLRT @ 0x013[E-] N001 ( 1, 4) [000099] H---------- t99 = CNS_INT(h) int 0x430FB8 global ptr /--* t99 int N002 ( 5, 7) [000100] DA--------- * STORE_LCL_VAR int V06 tmp5 N003 ( 3, 2) [000101] ----------- t101 = LCL_VAR int V06 tmp5 /--* t101 int N006 ( 9, 10) [000105] -c--------- t105 = * LEA(b+-4) int /--* t105 int N007 ( 11, 12) [000106] nA--G------ t106 = * IND int N008 ( 1, 1) [000107] -c--------- t107 = CNS_INT int 0 /--* t106 int +--* t107 int N009 ( 13, 14) [000108] -A--G------ * CMP void N010 ( 15, 16) [000109] -A--G------ JCC void cond=UEQ ------------ BB21 [0020] [???..???) -> BB19 (always), preds={BB16} succs={BB19} [000123] ----------- IL_OFFSET void INLRT @ 0x013[E-] N001 ( 14, 5) [000032] H-CXG------ u32 = CALL help byref CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE ------------ BB19 [0018] [013..???) -> BB03 (always), preds={BB16,BB21} succs={BB03} [000124] ----------- IL_OFFSET void INLRT @ 0x013[E-] N001 ( 3, 2) [000098] ----------- t98 = LCL_VAR int V05 tmp4 /--* t98 int [000128] ----------- t128 = * PUTARG_REG int REG ecx N002 ( 3, 2) [000103] ----------- t103 = LCL_VAR int V06 tmp5 /--* t103 int N004 ( 4, 3) [000031] -c--------- t31 = * LEA(b+8) byref /--* t31 byref N005 ( 6, 5) [000030] V---GO----- t30 = * IND int /--* t30 int N007 ( 7, 6) [000035] -c--------- t35 = * LEA(b+-2) int /--* t35 int N008 ( 9, 8) [000036] -c-XGO----- t36 = * IND int REG NA /--* t128 int gctx in ecx +--* t36 int calli tgt N009 ( 29, 13) [000046] --CXGO----- * CALL ind void ------------ BB03 [0002] [01F..02F) (return), preds={BB13,BB19} succs={} [000125] ----------- IL_OFFSET void INLRT @ 0x01F[E-] N001 ( 1, 4) [000051] H---------- t51 = CNS_INT(h) ref '"Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverStri' /--* t51 ref [000129] ----------- t129 = * PUTARG_REG ref REG ecx N002 ( 1, 4) [000052] H---------- t52 = CNS_INT(h) ref '"valuetype GenericValuetype`1'IFaceCuriouslyRecurringGe' /--* t52 ref [000130] ----------- t130 = * PUTARG_REG ref REG edx /--* t129 ref arg0 in ecx +--* t130 ref arg1 in edx N003 ( 16, 15) [000014] --CXG------ * CALL void Statics:CheckForFailure(System.String,System.String) [000126] ----------- IL_OFFSET void INLRT @ 0x02E[E-] N001 ( 0, 0) [000015] ----------- RETURN void ------------------------------------------------------------------------------------------------------------------- *** lvaComputeRefCounts *** *************** In fgLocalVarLiveness() ; Initial local variable assignments ; ; V00 TypeCtx int do-not-enreg[] ; V01 loc0 int do-not-enreg[] "fgMakeTemp is creating a new local variable" ; V02 tmp1 int do-not-enreg[] "fgMakeTemp is creating a new local variable" ; V03 tmp2 int do-not-enreg[] "fgMakeTemp is creating a new local variable" ; V04 tmp3 int do-not-enreg[] "fgMakeTemp is creating a new local variable" ; V05 tmp4 int do-not-enreg[] "Spilling to split statement for tree" ; V06 tmp5 int do-not-enreg[] "fgMakeTemp is creating a new local variable" In fgLocalVarLivenessInit *************** In fgPerBlockLocalVarLiveness() *************** In fgInterBlockLocalVarLiveness() *************** In fgExtendDbgLifetimes() Marking vars alive over their entire scope : Local variable scopes = 1 VarNum LVNum Name Beg End Sorted by enter scope: 0: 00h 00h V00 TypeCtx 000h 02Fh <-- next enter scope Sorted by exit scope: 0: 00h 00h V00 TypeCtx 000h 02Fh <-- next exit scope Scope info: block BB01 marking in scope: {} Scope info: block BB02 marking in scope: {} Scope info: block BB09 marking in scope: {} Scope info: block BB07 marking in scope: {} Scope info: block BB04 marking in scope: {} Scope info: block BB12 marking in scope: {} Scope info: block BB10 marking in scope: {} Scope info: block BB05 marking in scope: {} Scope info: block BB15 marking in scope: {} Scope info: block BB13 marking in scope: {} Scope info: block BB06 marking in scope: {} Scope info: block BB18 marking in scope: {} Scope info: block BB16 marking in scope: {} Scope info: block BB21 marking in scope: {} Scope info: block BB19 marking in scope: {} Scope info: block BB03 marking in scope: {} Debug scopes: BB01: {} BB02: {} BB09: {} BB07: {} BB04: {} BB12: {} BB10: {} BB05: {} BB15: {} BB13: {} BB06: {} BB18: {} BB16: {} BB21: {} BB19: {} BB03: {} Scope info: block BB01 UNmarking in scope: {} BB liveness after fgExtendDbgLifetimes(): BB01 IN (0)={} + ByrefExposed + GcHeap OUT(0)={} + ByrefExposed + GcHeap BB02 IN (0)={} + ByrefExposed + GcHeap OUT(0)={} + ByrefExposed + GcHeap BB09 IN (0)={} + ByrefExposed + GcHeap OUT(0)={} + ByrefExposed + GcHeap BB07 IN (0)={} + ByrefExposed + GcHeap OUT(0)={} + ByrefExposed + GcHeap BB04 IN (0)={} + ByrefExposed + GcHeap OUT(0)={} + ByrefExposed + GcHeap BB12 IN (0)={} + ByrefExposed + GcHeap OUT(0)={} + ByrefExposed + GcHeap BB10 IN (0)={} + ByrefExposed + GcHeap OUT(0)={} + ByrefExposed + GcHeap BB05 IN (0)={} + ByrefExposed + GcHeap OUT(0)={} + ByrefExposed + GcHeap BB15 IN (0)={} + ByrefExposed + GcHeap OUT(0)={} + ByrefExposed + GcHeap BB13 IN (0)={} + ByrefExposed + GcHeap OUT(0)={} + ByrefExposed + GcHeap BB06 IN (0)={} + ByrefExposed + GcHeap OUT(0)={} + ByrefExposed + GcHeap BB18 IN (0)={} + ByrefExposed + GcHeap OUT(0)={} + ByrefExposed + GcHeap BB16 IN (0)={} + ByrefExposed + GcHeap OUT(0)={} + ByrefExposed + GcHeap BB21 IN (0)={} + ByrefExposed + GcHeap OUT(0)={} + ByrefExposed + GcHeap BB19 IN (0)={} + ByrefExposed + GcHeap OUT(0)={} + ByrefExposed + GcHeap BB03 IN (0)={} + ByrefExposed + GcHeap OUT(0)={} + ByrefExposed + GcHeap *************** In fgRemoveDeadBlocks() New BlockSet epoch 2, # of blocks (including unused BB00): 22, bitset array size: 1 (short) Removing unreachable blocks for fgRemoveDeadBlocks iteration #1 *************** In fgDebugCheckBBlist *** lvaComputeRefCounts *** *************** Finishing PHASE Lowering nodeinfo Trees after Lowering nodeinfo ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [???..???)-> BB02 (always) i LIR keep internal q BB02 [0001] 1 BB01 1 [???..???)-> BB07,BB09 ( cond ) i LIR hascall BB09 [0008] 1 BB02 0 [???..???)-> BB07 (always) LIR rare internal q BB07 [0006] 2 BB02,BB09 1 [000..01F)-> BB04 (always) i LIR hascall q BB04 [0003] 1 BB07 1 [???..???)-> BB10,BB12 ( cond ) i LIR internal hascall BB12 [0011] 1 BB04 0 [???..???)-> BB10 (always) LIR rare internal q BB10 [0009] 2 BB04,BB12 1 [???..???)-> BB06,BB05 ( cond ) i LIR internal hascall q BB05 [0004] 1 BB10 0.80 [???..???)-> BB13,BB15 ( cond ) i LIR internal hascall gcsafe BB15 [0014] 1 BB05 0 [???..???)-> BB13 (always) LIR rare internal q BB13 [0012] 2 BB05,BB15 0.80 [???..???)-> BB03 (always) i LIR internal hascall gcsafe BB06 [0005] 1 BB10 0.20 [???..???)-> BB16,BB18 ( cond ) i LIR internal hascall gcsafe BB18 [0017] 1 BB06 0 [???..???)-> BB16 (always) LIR rare internal q BB16 [0015] 2 BB06,BB18 0.20 [???..???)-> BB19,BB21 ( cond ) i LIR internal hascall gcsafe BB21 [0020] 1 BB16 0 [???..???)-> BB19 (always) LIR rare internal q BB19 [0018] 2 BB16,BB21 0.20 [013..???)-> BB03 (always) i LIR internal hascall gcsafe q BB03 [0002] 2 BB13,BB19 1 [01F..02F) (return) i LIR internal hascall gcsafe ---------------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [0000] [???..???) -> BB02 (always), preds={} succs={BB02} N001 ( 0, 0) [000000] ----------- NOP void ------------ BB02 [0001] [???..???) -> BB07,BB09 (cond), preds={BB01} succs={BB09,BB07} [000110] ----------- IL_OFFSET void INLRT @ 0x000[E-] N001 ( 1, 4) [000053] H---------- t53 = CNS_INT(h) int 0x430FB8 global ptr /--* t53 int N002 ( 5, 7) [000054] DA--------- * STORE_LCL_VAR int V01 loc0 N003 ( 3, 2) [000055] ----------- t55 = LCL_VAR int V01 loc0 /--* t55 int N006 ( 9, 10) [000059] -c--------- t59 = * LEA(b+-4) int /--* t59 int N007 ( 11, 12) [000060] nA--G------ t60 = * IND int N008 ( 1, 1) [000061] -c--------- t61 = CNS_INT int 0 /--* t60 int +--* t61 int N009 ( 13, 14) [000062] -A--G------ * CMP void N010 ( 15, 16) [000063] -A--G------ JCC void cond=UEQ ------------ BB09 [0008] [???..???) -> BB07 (always), preds={BB02} succs={BB07} [000111] ----------- IL_OFFSET void INLRT @ 0x000[E-] N001 ( 14, 5) [000003] H-CXG------ u3 = CALL help byref CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE ------------ BB07 [0006] [000..01F) -> BB04 (always), preds={BB02,BB09} succs={BB04} [000112] ----------- IL_OFFSET void INLRT @ 0x000[E-] N001 ( 3, 2) [000057] ----------- t57 = LCL_VAR int V01 loc0 /--* t57 int N003 ( 4, 3) [000005] -c--------- t5 = * LEA(b+8) byref N004 ( 3, 2) [000001] !---------- t1 = LCL_VAR int V00 TypeCtx /--* t1 int [000127] ----------- t127 = * PUTARG_REG int REG ecx /--* t127 int arg0 in ecx N005 ( 17, 8) [000002] --C-G------ t2 = * CALL help int CORINFO_HELP_READYTORUN_GENERIC_HANDLE /--* t5 byref +--* t2 int N006 ( 24, 14) [000006] VAC-GO----- * STOREIND int ------------ BB04 [0003] [???..???) -> BB10,BB12 (cond), preds={BB07} succs={BB12,BB10} [000113] ----------- IL_OFFSET void INLRT @ 0x013[E-] N001 ( 1, 4) [000064] H---------- t64 = CNS_INT(h) int 0x430FB8 global ptr /--* t64 int N002 ( 5, 7) [000065] DA--------- * STORE_LCL_VAR int V02 tmp1 N003 ( 3, 2) [000066] ----------- t66 = LCL_VAR int V02 tmp1 /--* t66 int N006 ( 9, 10) [000070] -c--------- t70 = * LEA(b+-4) int /--* t70 int N007 ( 11, 12) [000071] nA--G------ t71 = * IND int N008 ( 1, 1) [000072] -c--------- t72 = CNS_INT int 0 /--* t71 int +--* t72 int N009 ( 13, 14) [000073] -A--G------ * CMP void N010 ( 15, 16) [000074] -A--G------ JCC void cond=UEQ ------------ BB12 [0011] [???..???) -> BB10 (always), preds={BB04} succs={BB10} [000114] ----------- IL_OFFSET void INLRT @ 0x013[E-] N001 ( 14, 5) [000019] H-CXG------ u19 = CALL help byref CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE ------------ BB10 [0009] [???..???) -> BB06,BB05 (cond), preds={BB04,BB12} succs={BB05,BB06} [000115] ----------- IL_OFFSET void INLRT @ 0x013[E-] N001 ( 3, 2) [000068] ----------- t68 = LCL_VAR int V02 tmp1 /--* t68 int N003 ( 4, 3) [000018] -c--------- t18 = * LEA(b+8) byref /--* t18 byref N004 ( 6, 5) [000017] V---GO----- t17 = * IND int N005 ( 1, 1) [000016] -c--------- t16 = CNS_INT int 2 /--* t17 int +--* t16 int N006 ( 8, 7) [000021] ----GO----- t21 = * AND int N007 ( 1, 1) [000022] -c--------- t22 = CNS_INT int 0 /--* t21 int +--* t22 int N008 ( 10, 9) [000023] ----GO-N--- * CMP void N009 ( 12, 11) [000024] ----GO----- JCC void cond=UNE ------------ BB05 [0004] [???..???) -> BB13,BB15 (cond), preds={BB10} succs={BB15,BB13} [000116] ----------- IL_OFFSET void INLRT @ 0x013[E-] N001 ( 1, 4) [000075] H---------- t75 = CNS_INT(h) int 0x430FB8 global ptr /--* t75 int N002 ( 5, 7) [000076] DA--------- * STORE_LCL_VAR int V03 tmp2 N003 ( 3, 2) [000077] ----------- t77 = LCL_VAR int V03 tmp2 /--* t77 int N006 ( 9, 10) [000081] -c--------- t81 = * LEA(b+-4) int /--* t81 int N007 ( 11, 12) [000082] nA--G------ t82 = * IND int N008 ( 1, 1) [000083] -c--------- t83 = CNS_INT int 0 /--* t82 int +--* t83 int N009 ( 13, 14) [000084] -A--G------ * CMP void N010 ( 15, 16) [000085] -A--G------ JCC void cond=UEQ ------------ BB15 [0014] [???..???) -> BB13 (always), preds={BB05} succs={BB13} [000117] ----------- IL_OFFSET void INLRT @ 0x013[E-] N001 ( 14, 5) [000028] H-CXG------ u28 = CALL help byref CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE ------------ BB13 [0012] [???..???) -> BB03 (always), preds={BB05,BB15} succs={BB03} [000118] ----------- IL_OFFSET void INLRT @ 0x013[E-] N001 ( 3, 2) [000079] ----------- t79 = LCL_VAR int V03 tmp2 /--* t79 int N003 ( 4, 3) [000027] -c--------- t27 = * LEA(b+8) byref /--* t27 byref N004 ( 6, 5) [000026] Vc--GO----- t26 = * IND int REG NA /--* t26 int calli tgt N005 ( 23, 7) [000025] --CXGO----- * CALL ind void ------------ BB06 [0005] [???..???) -> BB16,BB18 (cond), preds={BB10} succs={BB18,BB16} [000119] ----------- IL_OFFSET void INLRT @ 0x013[E-] N001 ( 1, 4) [000086] H---------- t86 = CNS_INT(h) int 0x430FB8 global ptr /--* t86 int N002 ( 5, 7) [000087] DA--------- * STORE_LCL_VAR int V04 tmp3 N003 ( 3, 2) [000088] ----------- t88 = LCL_VAR int V04 tmp3 /--* t88 int N006 ( 9, 10) [000092] -c--------- t92 = * LEA(b+-4) int /--* t92 int N007 ( 11, 12) [000093] nA--G------ t93 = * IND int N008 ( 1, 1) [000094] -c--------- t94 = CNS_INT int 0 /--* t93 int +--* t94 int N009 ( 13, 14) [000095] -A--G------ * CMP void N010 ( 15, 16) [000096] -A--G------ JCC void cond=UEQ ------------ BB18 [0017] [???..???) -> BB16 (always), preds={BB06} succs={BB16} [000120] ----------- IL_OFFSET void INLRT @ 0x013[E-] N001 ( 14, 5) [000040] H-CXG------ u40 = CALL help byref CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE ------------ BB16 [0015] [???..???) -> BB19,BB21 (cond), preds={BB06,BB18} succs={BB21,BB19} [000121] ----------- IL_OFFSET void INLRT @ 0x013[E-] N001 ( 3, 2) [000090] ----------- t90 = LCL_VAR int V04 tmp3 /--* t90 int N003 ( 4, 3) [000039] -c--------- t39 = * LEA(b+8) byref /--* t39 byref N004 ( 6, 5) [000038] V---GO----- t38 = * IND int /--* t38 int N008 ( 9, 8) [000044] -c--------- t44 = * LEA(b+2) int /--* t44 int N009 ( 9, 8) [000045] ---XGO----- t45 = * IND int /--* t45 int N010 ( 13, 11) [000097] DA-XGO----- * STORE_LCL_VAR int V05 tmp4 [000122] ----------- IL_OFFSET void INLRT @ 0x013[E-] N001 ( 1, 4) [000099] H---------- t99 = CNS_INT(h) int 0x430FB8 global ptr /--* t99 int N002 ( 5, 7) [000100] DA--------- * STORE_LCL_VAR int V06 tmp5 N003 ( 3, 2) [000101] ----------- t101 = LCL_VAR int V06 tmp5 /--* t101 int N006 ( 9, 10) [000105] -c--------- t105 = * LEA(b+-4) int /--* t105 int N007 ( 11, 12) [000106] nA--G------ t106 = * IND int N008 ( 1, 1) [000107] -c--------- t107 = CNS_INT int 0 /--* t106 int +--* t107 int N009 ( 13, 14) [000108] -A--G------ * CMP void N010 ( 15, 16) [000109] -A--G------ JCC void cond=UEQ ------------ BB21 [0020] [???..???) -> BB19 (always), preds={BB16} succs={BB19} [000123] ----------- IL_OFFSET void INLRT @ 0x013[E-] N001 ( 14, 5) [000032] H-CXG------ u32 = CALL help byref CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE ------------ BB19 [0018] [013..???) -> BB03 (always), preds={BB16,BB21} succs={BB03} [000124] ----------- IL_OFFSET void INLRT @ 0x013[E-] N001 ( 3, 2) [000098] ----------- t98 = LCL_VAR int V05 tmp4 /--* t98 int [000128] ----------- t128 = * PUTARG_REG int REG ecx N002 ( 3, 2) [000103] ----------- t103 = LCL_VAR int V06 tmp5 /--* t103 int N004 ( 4, 3) [000031] -c--------- t31 = * LEA(b+8) byref /--* t31 byref N005 ( 6, 5) [000030] V---GO----- t30 = * IND int /--* t30 int N007 ( 7, 6) [000035] -c--------- t35 = * LEA(b+-2) int /--* t35 int N008 ( 9, 8) [000036] -c-XGO----- t36 = * IND int REG NA /--* t128 int gctx in ecx +--* t36 int calli tgt N009 ( 29, 13) [000046] --CXGO----- * CALL ind void ------------ BB03 [0002] [01F..02F) (return), preds={BB13,BB19} succs={} [000125] ----------- IL_OFFSET void INLRT @ 0x01F[E-] N001 ( 1, 4) [000051] H---------- t51 = CNS_INT(h) ref '"Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverStri' /--* t51 ref [000129] ----------- t129 = * PUTARG_REG ref REG ecx N002 ( 1, 4) [000052] H---------- t52 = CNS_INT(h) ref '"valuetype GenericValuetype`1'IFaceCuriouslyRecurringGe' /--* t52 ref [000130] ----------- t130 = * PUTARG_REG ref REG edx /--* t129 ref arg0 in ecx +--* t130 ref arg1 in edx N003 ( 16, 15) [000014] --CXG------ * CALL void Statics:CheckForFailure(System.String,System.String) [000126] ----------- IL_OFFSET void INLRT @ 0x02E[E-] N001 ( 0, 0) [000015] ----------- RETURN void ------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist *************** Starting PHASE Calculate stack level slots *************** Finishing PHASE Calculate stack level slots [no changes] *************** Starting PHASE Linear scan register alloc Clearing modified regs. buildIntervals ======== ----------------- LIVENESS: ----------------- BB01 use: {} def: {} in: {} out: {} BB02 use: {} def: {} in: {} out: {} BB09 use: {} def: {} in: {} out: {} BB07 use: {} def: {} in: {} out: {} BB04 use: {} def: {} in: {} out: {} BB12 use: {} def: {} in: {} out: {} BB10 use: {} def: {} in: {} out: {} BB05 use: {} def: {} in: {} out: {} BB15 use: {} def: {} in: {} out: {} BB13 use: {} def: {} in: {} out: {} BB06 use: {} def: {} in: {} out: {} BB18 use: {} def: {} in: {} out: {} BB16 use: {} def: {} in: {} out: {} BB21 use: {} def: {} in: {} out: {} BB19 use: {} def: {} in: {} out: {} BB03 use: {} def: {} in: {} out: {} FP callee save candidate vars: None floatVarCount = 0; hasLoops = false, singleExit = true TUPLE STYLE DUMP BEFORE LSRA Start LSRA Block Sequence: Current block: BB01 Succ block: BB02, Criteria: weight, Worklist: [BB02 ] Current block: BB02 Succ block: BB09, Criteria: weight, Worklist: [BB09 ] Succ block: BB07, Criteria: weight, Worklist: [BB07 BB09 ] Current block: BB07 Succ block: BB04, Criteria: bbNum, Worklist: [BB04 BB09 ] Current block: BB04 Succ block: BB12, Criteria: weight, Worklist: [BB09 BB12 ] Succ block: BB10, Criteria: bbNum, Worklist: [BB10 BB09 BB12 ] Current block: BB10 Succ block: BB05, Criteria: bbNum, Worklist: [BB05 BB09 BB12 ] Succ block: BB06, Criteria: bbNum, Worklist: [BB05 BB06 BB09 BB12 ] Current block: BB05 Succ block: BB15, Criteria: weight, Worklist: [BB06 BB09 BB12 BB15 ] Succ block: BB13, Criteria: bbNum, Worklist: [BB06 BB13 BB09 BB12 BB15 ] Current block: BB06 Succ block: BB18, Criteria: weight, Worklist: [BB13 BB09 BB12 BB15 BB18 ] Succ block: BB16, Criteria: bbNum, Worklist: [BB13 BB16 BB09 BB12 BB15 BB18 ] Current block: BB13 Succ block: BB03, Criteria: bbNum, Worklist: [BB03 BB16 BB09 BB12 BB15 BB18 ] Current block: BB03 Current block: BB16 Succ block: BB21, Criteria: weight, Worklist: [BB09 BB12 BB15 BB18 BB21 ] Succ block: BB19, Criteria: bbNum, Worklist: [BB19 BB09 BB12 BB15 BB18 BB21 ] Current block: BB19 Current block: BB09 Current block: BB12 Current block: BB15 Current block: BB18 Current block: BB21 Final LSRA Block Sequence: BB01 ( 1 ) BB02 ( 1 ) critical-out BB07 ( 1 ) critical-in BB04 ( 1 ) critical-out BB10 ( 1 ) critical-in BB05 ( 0.80) critical-out BB06 ( 0.20) critical-out BB13 ( 0.80) critical-in BB03 ( 1 ) BB16 ( 0.20) critical-in critical-out BB19 ( 0.20) critical-in BB09 ( 0 ) BB12 ( 0 ) BB15 ( 0 ) BB18 ( 0 ) BB21 ( 0 ) BB01 [0000] [???..???) -> BB02 (always), preds={} succs={BB02} ===== N001. NOP BB02 [0001] [???..???) -> BB07,BB09 (cond), preds={BB01} succs={BB09,BB07} ===== N000. IL_OFFSET INLRT @ 0x000[E-] N001. t53 = CNS_INT(h) 0x430FB8 global ptr N002. V01 MEM; t53 N003. t55 = V01 MEM N006. t59 = LEA(b+-4); t55 N007. t60 = IND ; t59 N008. CNS_INT 0 N009. CMP ; t60 N010. JCC cond=UEQ BB07 [0006] [000..01F) -> BB04 (always), preds={BB02,BB09} succs={BB04} ===== N000. IL_OFFSET INLRT @ 0x000[E-] N001. t57 = V01 MEM N003. t5 = LEA(b+8) ; t57 N004. t1 = V00 MEM N000. t127 = PUTARG_REG; t1 N005. t2 = CALL help; t127 N006. STOREIND ; t5,t2 BB04 [0003] [???..???) -> BB10,BB12 (cond), preds={BB07} succs={BB12,BB10} ===== N000. IL_OFFSET INLRT @ 0x013[E-] N001. t64 = CNS_INT(h) 0x430FB8 global ptr N002. V02 MEM; t64 N003. t66 = V02 MEM N006. t70 = LEA(b+-4); t66 N007. t71 = IND ; t70 N008. CNS_INT 0 N009. CMP ; t71 N010. JCC cond=UEQ BB10 [0009] [???..???) -> BB06,BB05 (cond), preds={BB04,BB12} succs={BB05,BB06} ===== N000. IL_OFFSET INLRT @ 0x013[E-] N001. t68 = V02 MEM N003. t18 = LEA(b+8) ; t68 N004. t17 = IND ; t18 N005. CNS_INT 2 N006. t21 = AND ; t17 N007. CNS_INT 0 N008. CMP ; t21 N009. JCC cond=UNE BB05 [0004] [???..???) -> BB13,BB15 (cond), preds={BB10} succs={BB15,BB13} ===== N000. IL_OFFSET INLRT @ 0x013[E-] N001. t75 = CNS_INT(h) 0x430FB8 global ptr N002. V03 MEM; t75 N003. t77 = V03 MEM N006. t81 = LEA(b+-4); t77 N007. t82 = IND ; t81 N008. CNS_INT 0 N009. CMP ; t82 N010. JCC cond=UEQ BB06 [0005] [???..???) -> BB16,BB18 (cond), preds={BB10} succs={BB18,BB16} ===== N000. IL_OFFSET INLRT @ 0x013[E-] N001. t86 = CNS_INT(h) 0x430FB8 global ptr N002. V04 MEM; t86 N003. t88 = V04 MEM N006. t92 = LEA(b+-4); t88 N007. t93 = IND ; t92 N008. CNS_INT 0 N009. CMP ; t93 N010. JCC cond=UEQ BB13 [0012] [???..???) -> BB03 (always), preds={BB05,BB15} succs={BB03} ===== N000. IL_OFFSET INLRT @ 0x013[E-] N001. t79 = V03 MEM N003. t27 = LEA(b+8) ; t79 N004. t26 = IND ; t27 N005. CALL ind ; t26 BB03 [0002] [01F..02F) (return), preds={BB13,BB19} succs={} ===== N000. IL_OFFSET INLRT @ 0x01F[E-] N001. t51 = CNS_INT(h) '"Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverStri' N000. t129 = PUTARG_REG; t51 N002. t52 = CNS_INT(h) '"valuetype GenericValuetype`1'IFaceCuriouslyRecurringGe' N000. t130 = PUTARG_REG; t52 N003. CALL ; t129,t130 N000. IL_OFFSET INLRT @ 0x02E[E-] N001. RETURN BB16 [0015] [???..???) -> BB19,BB21 (cond), preds={BB06,BB18} succs={BB21,BB19} ===== N000. IL_OFFSET INLRT @ 0x013[E-] N001. t90 = V04 MEM N003. t39 = LEA(b+8) ; t90 N004. t38 = IND ; t39 N008. t44 = LEA(b+2) ; t38 N009. t45 = IND ; t44 N010. V05 MEM; t45 N000. IL_OFFSET INLRT @ 0x013[E-] N001. t99 = CNS_INT(h) 0x430FB8 global ptr N002. V06 MEM; t99 N003. t101 = V06 MEM N006. t105 = LEA(b+-4); t101 N007. t106 = IND ; t105 N008. CNS_INT 0 N009. CMP ; t106 N010. JCC cond=UEQ BB19 [0018] [013..???) -> BB03 (always), preds={BB16,BB21} succs={BB03} ===== N000. IL_OFFSET INLRT @ 0x013[E-] N001. t98 = V05 MEM N000. t128 = PUTARG_REG; t98 N002. t103 = V06 MEM N004. t31 = LEA(b+8) ; t103 N005. t30 = IND ; t31 N007. t35 = LEA(b+-2); t30 N008. t36 = IND ; t35 N009. CALL ind ; t128,t36 BB09 [0008] [???..???) -> BB07 (always), preds={BB02} succs={BB07} ===== N000. IL_OFFSET INLRT @ 0x000[E-] N001. CALL help BB12 [0011] [???..???) -> BB10 (always), preds={BB04} succs={BB10} ===== N000. IL_OFFSET INLRT @ 0x013[E-] N001. CALL help BB15 [0014] [???..???) -> BB13 (always), preds={BB05} succs={BB13} ===== N000. IL_OFFSET INLRT @ 0x013[E-] N001. CALL help BB18 [0017] [???..???) -> BB16 (always), preds={BB06} succs={BB16} ===== N000. IL_OFFSET INLRT @ 0x013[E-] N001. CALL help BB21 [0020] [???..???) -> BB19 (always), preds={BB16} succs={BB19} ===== N000. IL_OFFSET INLRT @ 0x013[E-] N001. CALL help buildIntervals second part ======== Int arg V00 in reg ecx NEW BLOCK BB01 BB01 regmask=[eax] minReg=1 wt=100.00> BB01 regmask=[ecx] minReg=1 wt=100.00> BB01 regmask=[edi] minReg=1 wt=100.00> DefList: { } N004 ( 0, 0) [000000] ----------- * NOP void REG NA NEW BLOCK BB02 Setting BB01 as the predecessor for determining incoming variable registers of BB02 DefList: { } N008 (???,???) [000110] ----------- * IL_OFFSET void INLRT @ 0x000[E-] REG NA DefList: { } N010 ( 1, 4) [000053] H---------- * CNS_INT(h) int 0x430FB8 global ptr REG NA Interval 0: int RefPositions {} physReg:NA Preferences=[allInt] Aversions=[allMask] CNS_INT BB02 regmask=[allInt] minReg=1 wt=400.00> DefList: { N010.t53. CNS_INT } N012 ( 5, 7) [000054] DA--------- * STORE_LCL_VAR int V01 loc0 NA REG NA BB02 regmask=[allInt] minReg=1 last wt=100.00> DefList: { } N014 ( 3, 2) [000055] ----------- * LCL_VAR int V01 loc0 NA REG NA Interval 1: int RefPositions {} physReg:NA Preferences=[allInt] Aversions=[allMask] LCL_VAR BB02 regmask=[allInt] minReg=1 wt=400.00> DefList: { N014.t55. LCL_VAR } N016 ( 9, 10) [000059] -c--------- * LEA(b+-4) int REG NA Contained DefList: { N014.t55. LCL_VAR } N018 ( 11, 12) [000060] nA--G------ * IND int REG NA Contained DefList: { N014.t55. LCL_VAR } N020 ( 1, 1) [000061] -c--------- * CNS_INT int 0 REG NA Contained DefList: { N014.t55. LCL_VAR } N022 ( 13, 14) [000062] -A--G------ * CMP void REG NA BB02 regmask=[allInt] minReg=1 last wt=100.00> DefList: { } N024 ( 15, 16) [000063] -A--G------ * JCC void cond=UEQ REG NA NEW BLOCK BB07 Setting BB02 as the predecessor for determining incoming variable registers of BB07 DefList: { } N028 (???,???) [000112] ----------- * IL_OFFSET void INLRT @ 0x000[E-] REG NA DefList: { } N030 ( 3, 2) [000057] ----------- * LCL_VAR int V01 loc0 NA REG NA Interval 2: int RefPositions {} physReg:NA Preferences=[allInt] Aversions=[allMask] LCL_VAR BB07 regmask=[allInt] minReg=1 wt=400.00> DefList: { N030.t57. LCL_VAR } N032 ( 4, 3) [000005] -c--------- * LEA(b+8) byref REG NA Contained DefList: { N030.t57. LCL_VAR } N034 ( 3, 2) [000001] !---------- * LCL_VAR int V00 TypeCtx NA REG NA Interval 3: int RefPositions {} physReg:NA Preferences=[allInt] Aversions=[allMask] LCL_VAR BB07 regmask=[allInt] minReg=1 wt=400.00> DefList: { N030.t57. LCL_VAR; N034.t1. LCL_VAR } N036 (???,???) [000127] ----------- * PUTARG_REG int REG ecx BB07 regmask=[ecx] minReg=1 wt=100.00> BB07 regmask=[ecx] minReg=1 last fixed wt=100.00> Interval 4: int RefPositions {} physReg:NA Preferences=[allInt] Aversions=[allMask] BB07 regmask=[ecx] minReg=1 wt=100.00> PUTARG_REG BB07 regmask=[ecx] minReg=1 fixed wt=400.00> DefList: { N030.t57. LCL_VAR; N036.t127. PUTARG_REG } N038 ( 17, 8) [000002] --C-G------ * CALL help int CORINFO_HELP_READYTORUN_GENERIC_HANDLE REG NA BB07 regmask=[ecx] minReg=1 wt=100.00> BB07 regmask=[ecx] minReg=1 last fixed wt=100.00> BB07 regmask=[eax] minReg=1 wt=100.00> BB07 regmask=[ecx] minReg=1 wt=100.00> BB07 regmask=[edx] minReg=1 wt=100.00> Interval 5: int RefPositions {} physReg:NA Preferences=[allInt] Aversions=[allMask] BB07 regmask=[eax] minReg=1 wt=100.00> CALL BB07 regmask=[eax] minReg=1 fixed wt=400.00> DefList: { N030.t57. LCL_VAR; N038.t2. CALL } N040 ( 24, 14) [000006] VAC-GO----- * STOREIND int REG NA BB07 regmask=[allInt] minReg=1 last wt=100.00> BB07 regmask=[allInt] minReg=1 last wt=100.00> NEW BLOCK BB04 Setting BB07 as the predecessor for determining incoming variable registers of BB04 DefList: { } N044 (???,???) [000113] ----------- * IL_OFFSET void INLRT @ 0x013[E-] REG NA DefList: { } N046 ( 1, 4) [000064] H---------- * CNS_INT(h) int 0x430FB8 global ptr REG NA Interval 6: int RefPositions {} physReg:NA Preferences=[allInt] Aversions=[allMask] CNS_INT BB04 regmask=[allInt] minReg=1 wt=400.00> DefList: { N046.t64. CNS_INT } N048 ( 5, 7) [000065] DA--------- * STORE_LCL_VAR int V02 tmp1 NA REG NA BB04 regmask=[allInt] minReg=1 last wt=100.00> DefList: { } N050 ( 3, 2) [000066] ----------- * LCL_VAR int V02 tmp1 NA REG NA Interval 7: int RefPositions {} physReg:NA Preferences=[allInt] Aversions=[allMask] LCL_VAR BB04 regmask=[allInt] minReg=1 wt=400.00> DefList: { N050.t66. LCL_VAR } N052 ( 9, 10) [000070] -c--------- * LEA(b+-4) int REG NA Contained DefList: { N050.t66. LCL_VAR } N054 ( 11, 12) [000071] nA--G------ * IND int REG NA Contained DefList: { N050.t66. LCL_VAR } N056 ( 1, 1) [000072] -c--------- * CNS_INT int 0 REG NA Contained DefList: { N050.t66. LCL_VAR } N058 ( 13, 14) [000073] -A--G------ * CMP void REG NA BB04 regmask=[allInt] minReg=1 last wt=100.00> DefList: { } N060 ( 15, 16) [000074] -A--G------ * JCC void cond=UEQ REG NA NEW BLOCK BB10 Setting BB04 as the predecessor for determining incoming variable registers of BB10 DefList: { } N064 (???,???) [000115] ----------- * IL_OFFSET void INLRT @ 0x013[E-] REG NA DefList: { } N066 ( 3, 2) [000068] ----------- * LCL_VAR int V02 tmp1 NA REG NA Interval 8: int RefPositions {} physReg:NA Preferences=[allInt] Aversions=[allMask] LCL_VAR BB10 regmask=[allInt] minReg=1 wt=400.00> DefList: { N066.t68. LCL_VAR } N068 ( 4, 3) [000018] -c--------- * LEA(b+8) byref REG NA Contained DefList: { N066.t68. LCL_VAR } N070 ( 6, 5) [000017] V---GO----- * IND int REG NA BB10 regmask=[allInt] minReg=1 last wt=100.00> Interval 9: int RefPositions {} physReg:NA Preferences=[allInt] Aversions=[allMask] IND BB10 regmask=[allInt] minReg=1 wt=400.00> DefList: { N070.t17. IND } N072 ( 1, 1) [000016] -c--------- * CNS_INT int 2 REG NA Contained DefList: { N070.t17. IND } N074 ( 8, 7) [000021] ----GO----- * AND int REG NA BB10 regmask=[allInt] minReg=1 last wt=100.00> Interval 10: int RefPositions {} physReg:NA Preferences=[allInt] Aversions=[allMask] AND BB10 regmask=[allInt] minReg=1 wt=400.00> Assigning related to DefList: { N074.t21. AND } N076 ( 1, 1) [000022] -c--------- * CNS_INT int 0 REG NA Contained DefList: { N074.t21. AND } N078 ( 10, 9) [000023] ----GO-N--- * CMP void REG NA BB10 regmask=[allInt] minReg=1 last wt=100.00> DefList: { } N080 ( 12, 11) [000024] ----GO----- * JCC void cond=UNE REG NA NEW BLOCK BB05 Setting BB10 as the predecessor for determining incoming variable registers of BB05 DefList: { } N084 (???,???) [000116] ----------- * IL_OFFSET void INLRT @ 0x013[E-] REG NA DefList: { } N086 ( 1, 4) [000075] H---------- * CNS_INT(h) int 0x430FB8 global ptr REG NA Interval 11: int RefPositions {} physReg:NA Preferences=[allInt] Aversions=[allMask] CNS_INT BB05 regmask=[allInt] minReg=1 wt=320.00> DefList: { N086.t75. CNS_INT } N088 ( 5, 7) [000076] DA--------- * STORE_LCL_VAR int V03 tmp2 NA REG NA BB05 regmask=[allInt] minReg=1 last wt=80.00> DefList: { } N090 ( 3, 2) [000077] ----------- * LCL_VAR int V03 tmp2 NA REG NA Interval 12: int RefPositions {} physReg:NA Preferences=[allInt] Aversions=[allMask] LCL_VAR BB05 regmask=[allInt] minReg=1 wt=320.00> DefList: { N090.t77. LCL_VAR } N092 ( 9, 10) [000081] -c--------- * LEA(b+-4) int REG NA Contained DefList: { N090.t77. LCL_VAR } N094 ( 11, 12) [000082] nA--G------ * IND int REG NA Contained DefList: { N090.t77. LCL_VAR } N096 ( 1, 1) [000083] -c--------- * CNS_INT int 0 REG NA Contained DefList: { N090.t77. LCL_VAR } N098 ( 13, 14) [000084] -A--G------ * CMP void REG NA BB05 regmask=[allInt] minReg=1 last wt=80.00> DefList: { } N100 ( 15, 16) [000085] -A--G------ * JCC void cond=UEQ REG NA NEW BLOCK BB06 Setting BB10 as the predecessor for determining incoming variable registers of BB06 DefList: { } N104 (???,???) [000119] ----------- * IL_OFFSET void INLRT @ 0x013[E-] REG NA DefList: { } N106 ( 1, 4) [000086] H---------- * CNS_INT(h) int 0x430FB8 global ptr REG NA Interval 13: int RefPositions {} physReg:NA Preferences=[allInt] Aversions=[allMask] CNS_INT BB06 regmask=[allInt] minReg=1 wt=80.00> DefList: { N106.t86. CNS_INT } N108 ( 5, 7) [000087] DA--------- * STORE_LCL_VAR int V04 tmp3 NA REG NA BB06 regmask=[allInt] minReg=1 last wt=20.00> DefList: { } N110 ( 3, 2) [000088] ----------- * LCL_VAR int V04 tmp3 NA REG NA Interval 14: int RefPositions {} physReg:NA Preferences=[allInt] Aversions=[allMask] LCL_VAR BB06 regmask=[allInt] minReg=1 wt=80.00> DefList: { N110.t88. LCL_VAR } N112 ( 9, 10) [000092] -c--------- * LEA(b+-4) int REG NA Contained DefList: { N110.t88. LCL_VAR } N114 ( 11, 12) [000093] nA--G------ * IND int REG NA Contained DefList: { N110.t88. LCL_VAR } N116 ( 1, 1) [000094] -c--------- * CNS_INT int 0 REG NA Contained DefList: { N110.t88. LCL_VAR } N118 ( 13, 14) [000095] -A--G------ * CMP void REG NA BB06 regmask=[allInt] minReg=1 last wt=20.00> DefList: { } N120 ( 15, 16) [000096] -A--G------ * JCC void cond=UEQ REG NA NEW BLOCK BB13 Setting BB05 as the predecessor for determining incoming variable registers of BB13 DefList: { } N124 (???,???) [000118] ----------- * IL_OFFSET void INLRT @ 0x013[E-] REG NA DefList: { } N126 ( 3, 2) [000079] ----------- * LCL_VAR int V03 tmp2 NA REG NA Interval 15: int RefPositions {} physReg:NA Preferences=[allInt] Aversions=[allMask] LCL_VAR BB13 regmask=[allInt] minReg=1 wt=320.00> DefList: { N126.t79. LCL_VAR } N128 ( 4, 3) [000027] -c--------- * LEA(b+8) byref REG NA Contained DefList: { N126.t79. LCL_VAR } N130 ( 6, 5) [000026] Vc--GO----- * IND int REG NA Contained DefList: { N126.t79. LCL_VAR } N132 ( 23, 7) [000025] --CXGO----- * CALL ind void REG NA BB13 regmask=[allInt] minReg=1 last wt=80.00> BB13 regmask=[eax] minReg=1 wt=80.00> BB13 regmask=[ecx] minReg=1 wt=80.00> BB13 regmask=[edx] minReg=1 wt=80.00> NEW BLOCK BB03 Setting BB13 as the predecessor for determining incoming variable registers of BB03 DefList: { } N136 (???,???) [000125] ----------- * IL_OFFSET void INLRT @ 0x01F[E-] REG NA DefList: { } N138 ( 1, 4) [000051] H---------- * CNS_INT(h) ref '"Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverStri' REG NA Interval 16: ref RefPositions {} physReg:NA Preferences=[allInt] Aversions=[allMask] CNS_INT BB03 regmask=[allInt] minReg=1 wt=400.00> DefList: { N138.t51. CNS_INT } N140 (???,???) [000129] ----------- * PUTARG_REG ref REG ecx BB03 regmask=[ecx] minReg=1 wt=100.00> BB03 regmask=[ecx] minReg=1 last fixed wt=100.00> Interval 17: ref RefPositions {} physReg:NA Preferences=[allInt] Aversions=[allMask] BB03 regmask=[ecx] minReg=1 wt=100.00> PUTARG_REG BB03 regmask=[ecx] minReg=1 fixed wt=400.00> DefList: { N140.t129. PUTARG_REG } N142 ( 1, 4) [000052] H---------- * CNS_INT(h) ref '"valuetype GenericValuetype`1'IFaceCuriouslyRecurringGe' REG NA Interval 18: ref RefPositions {} physReg:NA Preferences=[allInt] Aversions=[allMask] CNS_INT BB03 regmask=[allInt] minReg=1 wt=400.00> DefList: { N140.t129. PUTARG_REG; N142.t52. CNS_INT } N144 (???,???) [000130] ----------- * PUTARG_REG ref REG edx BB03 regmask=[edx] minReg=1 wt=100.00> BB03 regmask=[edx] minReg=1 last fixed wt=100.00> Interval 19: ref RefPositions {} physReg:NA Preferences=[allInt] Aversions=[allMask] BB03 regmask=[edx] minReg=1 wt=100.00> PUTARG_REG BB03 regmask=[edx] minReg=1 fixed wt=400.00> DefList: { N140.t129. PUTARG_REG; N144.t130. PUTARG_REG } N146 ( 16, 15) [000014] --CXG------ * CALL void Statics:CheckForFailure(System.String,System.String) REG NA BB03 regmask=[ecx] minReg=1 wt=100.00> BB03 regmask=[ecx] minReg=1 last fixed wt=100.00> BB03 regmask=[edx] minReg=1 wt=100.00> BB03 regmask=[edx] minReg=1 last fixed wt=100.00> BB03 regmask=[eax] minReg=1 wt=100.00> BB03 regmask=[ecx] minReg=1 wt=100.00> BB03 regmask=[edx] minReg=1 wt=100.00> DefList: { } N148 (???,???) [000126] ----------- * IL_OFFSET void INLRT @ 0x02E[E-] REG NA DefList: { } N150 ( 0, 0) [000015] ----------- * RETURN void REG NA NEW BLOCK BB16 Setting BB06 as the predecessor for determining incoming variable registers of BB16 DefList: { } N154 (???,???) [000121] ----------- * IL_OFFSET void INLRT @ 0x013[E-] REG NA DefList: { } N156 ( 3, 2) [000090] ----------- * LCL_VAR int V04 tmp3 NA REG NA Interval 20: int RefPositions {} physReg:NA Preferences=[allInt] Aversions=[allMask] LCL_VAR BB16 regmask=[allInt] minReg=1 wt=80.00> DefList: { N156.t90. LCL_VAR } N158 ( 4, 3) [000039] -c--------- * LEA(b+8) byref REG NA Contained DefList: { N156.t90. LCL_VAR } N160 ( 6, 5) [000038] V---GO----- * IND int REG NA BB16 regmask=[allInt] minReg=1 last wt=20.00> Interval 21: int RefPositions {} physReg:NA Preferences=[allInt] Aversions=[allMask] IND BB16 regmask=[allInt] minReg=1 wt=80.00> DefList: { N160.t38. IND } N162 ( 9, 8) [000044] -c--------- * LEA(b+2) int REG NA Contained DefList: { N160.t38. IND } N164 ( 9, 8) [000045] ---XGO----- * IND int REG NA BB16 regmask=[allInt] minReg=1 last wt=20.00> Interval 22: int RefPositions {} physReg:NA Preferences=[allInt] Aversions=[allMask] IND BB16 regmask=[allInt] minReg=1 wt=80.00> DefList: { N164.t45. IND } N166 ( 13, 11) [000097] DA-XGO----- * STORE_LCL_VAR int V05 tmp4 NA REG NA BB16 regmask=[allInt] minReg=1 last wt=20.00> DefList: { } N168 (???,???) [000122] ----------- * IL_OFFSET void INLRT @ 0x013[E-] REG NA DefList: { } N170 ( 1, 4) [000099] H---------- * CNS_INT(h) int 0x430FB8 global ptr REG NA Interval 23: int RefPositions {} physReg:NA Preferences=[allInt] Aversions=[allMask] CNS_INT BB16 regmask=[allInt] minReg=1 wt=80.00> DefList: { N170.t99. CNS_INT } N172 ( 5, 7) [000100] DA--------- * STORE_LCL_VAR int V06 tmp5 NA REG NA BB16 regmask=[allInt] minReg=1 last wt=20.00> DefList: { } N174 ( 3, 2) [000101] ----------- * LCL_VAR int V06 tmp5 NA REG NA Interval 24: int RefPositions {} physReg:NA Preferences=[allInt] Aversions=[allMask] LCL_VAR BB16 regmask=[allInt] minReg=1 wt=80.00> DefList: { N174.t101. LCL_VAR } N176 ( 9, 10) [000105] -c--------- * LEA(b+-4) int REG NA Contained DefList: { N174.t101. LCL_VAR } N178 ( 11, 12) [000106] nA--G------ * IND int REG NA Contained DefList: { N174.t101. LCL_VAR } N180 ( 1, 1) [000107] -c--------- * CNS_INT int 0 REG NA Contained DefList: { N174.t101. LCL_VAR } N182 ( 13, 14) [000108] -A--G------ * CMP void REG NA BB16 regmask=[allInt] minReg=1 last wt=20.00> DefList: { } N184 ( 15, 16) [000109] -A--G------ * JCC void cond=UEQ REG NA NEW BLOCK BB19 Setting BB16 as the predecessor for determining incoming variable registers of BB19 DefList: { } N188 (???,???) [000124] ----------- * IL_OFFSET void INLRT @ 0x013[E-] REG NA DefList: { } N190 ( 3, 2) [000098] ----------- * LCL_VAR int V05 tmp4 NA REG NA Interval 25: int RefPositions {} physReg:NA Preferences=[allInt] Aversions=[allMask] LCL_VAR BB19 regmask=[allInt] minReg=1 wt=80.00> DefList: { N190.t98. LCL_VAR } N192 (???,???) [000128] ----------- * PUTARG_REG int REG ecx BB19 regmask=[ecx] minReg=1 wt=20.00> BB19 regmask=[ecx] minReg=1 last fixed wt=20.00> Interval 26: int RefPositions {} physReg:NA Preferences=[allInt] Aversions=[allMask] BB19 regmask=[ecx] minReg=1 wt=20.00> PUTARG_REG BB19 regmask=[ecx] minReg=1 fixed wt=80.00> DefList: { N192.t128. PUTARG_REG } N194 ( 3, 2) [000103] ----------- * LCL_VAR int V06 tmp5 NA REG NA Interval 27: int RefPositions {} physReg:NA Preferences=[allInt] Aversions=[allMask] LCL_VAR BB19 regmask=[allInt] minReg=1 wt=80.00> DefList: { N192.t128. PUTARG_REG; N194.t103. LCL_VAR } N196 ( 4, 3) [000031] -c--------- * LEA(b+8) byref REG NA Contained DefList: { N192.t128. PUTARG_REG; N194.t103. LCL_VAR } N198 ( 6, 5) [000030] V---GO----- * IND int REG NA BB19 regmask=[allInt] minReg=1 last wt=20.00> Interval 28: int RefPositions {} physReg:NA Preferences=[allInt] Aversions=[allMask] IND BB19 regmask=[allInt] minReg=1 wt=80.00> DefList: { N192.t128. PUTARG_REG; N198.t30. IND } N200 ( 7, 6) [000035] -c--------- * LEA(b+-2) int REG NA Contained DefList: { N192.t128. PUTARG_REG; N198.t30. IND } N202 ( 9, 8) [000036] -c-XGO----- * IND int REG NA Contained DefList: { N192.t128. PUTARG_REG; N198.t30. IND } N204 ( 29, 13) [000046] --CXGO----- * CALL ind void REG NA BB19 regmask=[ecx] minReg=1 wt=20.00> BB19 regmask=[ecx] minReg=1 last fixed wt=20.00> BB19 regmask=[allInt] minReg=1 last wt=20.00> BB19 regmask=[eax] minReg=1 wt=20.00> BB19 regmask=[ecx] minReg=1 wt=20.00> BB19 regmask=[edx] minReg=1 wt=20.00> NEW BLOCK BB09 Setting BB02 as the predecessor for determining incoming variable registers of BB09 firstColdLoc = 208 DefList: { } N208 (???,???) [000111] ----------- * IL_OFFSET void INLRT @ 0x000[E-] REG NA DefList: { } N210 ( 14, 5) [000003] H-CXG------ * CALL help byref CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE REG NA BB09 regmask=[eax] minReg=1 wt=0.00> BB09 regmask=[ecx] minReg=1 wt=0.00> BB09 regmask=[edx] minReg=1 wt=0.00> Interval 29: byref RefPositions {} physReg:NA Preferences=[allInt] Aversions=[allMask] BB09 regmask=[eax] minReg=1 wt=0.00> CALL BB09 regmask=[eax] minReg=1 fixed wt=0.00> NEW BLOCK BB12 Setting BB04 as the predecessor for determining incoming variable registers of BB12 DefList: { } N214 (???,???) [000114] ----------- * IL_OFFSET void INLRT @ 0x013[E-] REG NA DefList: { } N216 ( 14, 5) [000019] H-CXG------ * CALL help byref CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE REG NA BB12 regmask=[eax] minReg=1 wt=0.00> BB12 regmask=[ecx] minReg=1 wt=0.00> BB12 regmask=[edx] minReg=1 wt=0.00> Interval 30: byref RefPositions {} physReg:NA Preferences=[allInt] Aversions=[allMask] BB12 regmask=[eax] minReg=1 wt=0.00> CALL BB12 regmask=[eax] minReg=1 fixed wt=0.00> NEW BLOCK BB15 Setting BB05 as the predecessor for determining incoming variable registers of BB15 DefList: { } N220 (???,???) [000117] ----------- * IL_OFFSET void INLRT @ 0x013[E-] REG NA DefList: { } N222 ( 14, 5) [000028] H-CXG------ * CALL help byref CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE REG NA BB15 regmask=[eax] minReg=1 wt=0.00> BB15 regmask=[ecx] minReg=1 wt=0.00> BB15 regmask=[edx] minReg=1 wt=0.00> Interval 31: byref RefPositions {} physReg:NA Preferences=[allInt] Aversions=[allMask] BB15 regmask=[eax] minReg=1 wt=0.00> CALL BB15 regmask=[eax] minReg=1 fixed wt=0.00> NEW BLOCK BB18 Setting BB06 as the predecessor for determining incoming variable registers of BB18 DefList: { } N226 (???,???) [000120] ----------- * IL_OFFSET void INLRT @ 0x013[E-] REG NA DefList: { } N228 ( 14, 5) [000040] H-CXG------ * CALL help byref CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE REG NA BB18 regmask=[eax] minReg=1 wt=0.00> BB18 regmask=[ecx] minReg=1 wt=0.00> BB18 regmask=[edx] minReg=1 wt=0.00> Interval 32: byref RefPositions {} physReg:NA Preferences=[allInt] Aversions=[allMask] BB18 regmask=[eax] minReg=1 wt=0.00> CALL BB18 regmask=[eax] minReg=1 fixed wt=0.00> NEW BLOCK BB21 Setting BB16 as the predecessor for determining incoming variable registers of BB21 DefList: { } N232 (???,???) [000123] ----------- * IL_OFFSET void INLRT @ 0x013[E-] REG NA DefList: { } N234 ( 14, 5) [000032] H-CXG------ * CALL help byref CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE REG NA BB21 regmask=[eax] minReg=1 wt=0.00> BB21 regmask=[ecx] minReg=1 wt=0.00> BB21 regmask=[edx] minReg=1 wt=0.00> Interval 33: byref RefPositions {} physReg:NA Preferences=[allInt] Aversions=[allMask] BB21 regmask=[eax] minReg=1 wt=0.00> CALL BB21 regmask=[eax] minReg=1 fixed wt=0.00> Linear scan intervals BEFORE VALIDATING INTERVALS: Interval 0: int (constant) RefPositions {#5@11 #6@12} physReg:NA Preferences=[allInt] Aversions=[allMask] Interval 1: int RefPositions {#7@15 #8@22} physReg:NA Preferences=[allInt] Aversions=[allMask] Interval 2: int RefPositions {#10@31 #23@40} physReg:NA Preferences=[allInt] Aversions=[allMask] Interval 3: int RefPositions {#11@35 #13@36} physReg:NA Preferences=[ecx] Aversions=[allMask] Interval 4: int RefPositions {#15@37 #17@38} physReg:NA Preferences=[ecx] Aversions=[allMask] Interval 5: int RefPositions {#22@39 #24@40} physReg:NA Preferences=[eax] Aversions=[allMask] Interval 6: int (constant) RefPositions {#26@47 #27@48} physReg:NA Preferences=[allInt] Aversions=[allMask] Interval 7: int RefPositions {#28@51 #29@58} physReg:NA Preferences=[allInt] Aversions=[allMask] Interval 8: int RefPositions {#31@67 #32@70} physReg:NA Preferences=[allInt] Aversions=[allMask] Interval 9: int RefPositions {#33@71 #34@74} physReg:NA Preferences=[allInt] Aversions=[allMask] RelatedInterval Interval 10: int RefPositions {#35@75 #36@78} physReg:NA Preferences=[allInt] Aversions=[allMask] Interval 11: int (constant) RefPositions {#38@87 #39@88} physReg:NA Preferences=[allInt] Aversions=[allMask] Interval 12: int RefPositions {#40@91 #41@98} physReg:NA Preferences=[allInt] Aversions=[allMask] Interval 13: int (constant) RefPositions {#43@107 #44@108} physReg:NA Preferences=[allInt] Aversions=[allMask] Interval 14: int RefPositions {#45@111 #46@118} physReg:NA Preferences=[allInt] Aversions=[allMask] Interval 15: int RefPositions {#48@127 #49@132} physReg:NA Preferences=[allInt] Aversions=[allMask] Interval 16: ref (constant) RefPositions {#54@139 #56@140} physReg:NA Preferences=[ecx] Aversions=[allMask] Interval 17: ref RefPositions {#58@141 #65@146} physReg:NA Preferences=[ecx] Aversions=[allMask] Interval 18: ref (constant) RefPositions {#59@143 #61@144} physReg:NA Preferences=[edx] Aversions=[allMask] Interval 19: ref RefPositions {#63@145 #67@146} physReg:NA Preferences=[edx] Aversions=[allMask] Interval 20: int RefPositions {#72@157 #73@160} physReg:NA Preferences=[allInt] Aversions=[allMask] Interval 21: int RefPositions {#74@161 #75@164} physReg:NA Preferences=[allInt] Aversions=[allMask] Interval 22: int RefPositions {#76@165 #77@166} physReg:NA Preferences=[allInt] Aversions=[allMask] Interval 23: int (constant) RefPositions {#78@171 #79@172} physReg:NA Preferences=[allInt] Aversions=[allMask] Interval 24: int RefPositions {#80@175 #81@182} physReg:NA Preferences=[allInt] Aversions=[allMask] Interval 25: int RefPositions {#83@191 #85@192} physReg:NA Preferences=[ecx] Aversions=[allMask] Interval 26: int RefPositions {#87@193 #92@204} physReg:NA Preferences=[ecx] Aversions=[allMask] Interval 27: int RefPositions {#88@195 #89@198} physReg:NA Preferences=[allInt] Aversions=[allMask] Interval 28: int RefPositions {#90@199 #93@204} physReg:NA Preferences=[allInt] Aversions=[allMask] Interval 29: byref RefPositions {#102@211} physReg:NA Preferences=[eax] Aversions=[allMask] Interval 30: byref RefPositions {#108@217} physReg:NA Preferences=[eax] Aversions=[allMask] Interval 31: byref RefPositions {#114@223} physReg:NA Preferences=[eax] Aversions=[allMask] Interval 32: byref RefPositions {#120@229} physReg:NA Preferences=[eax] Aversions=[allMask] Interval 33: byref RefPositions {#126@235} physReg:NA Preferences=[eax] Aversions=[allMask] ------------ REFPOSITIONS BEFORE VALIDATING INTERVALS: ------------ BB01 regmask=[eax] minReg=1 last wt=100.00> BB01 regmask=[ecx] minReg=1 last wt=100.00> BB01 regmask=[edi] minReg=1 last wt=100.00> CNS_INT BB02 regmask=[allInt] minReg=1 wt=400.00> BB02 regmask=[allInt] minReg=1 last wt=100.00> LCL_VAR BB02 regmask=[allInt] minReg=1 wt=400.00> BB02 regmask=[allInt] minReg=1 last wt=100.00> LCL_VAR BB07 regmask=[allInt] minReg=1 wt=400.00> LCL_VAR BB07 regmask=[ecx] minReg=1 wt=400.00> BB07 regmask=[ecx] minReg=1 wt=100.00> BB07 regmask=[ecx] minReg=1 last fixed wt=100.00> BB07 regmask=[ecx] minReg=1 wt=100.00> PUTARG_REG BB07 regmask=[ecx] minReg=1 fixed wt=400.00> BB07 regmask=[ecx] minReg=1 wt=100.00> BB07 regmask=[ecx] minReg=1 last fixed wt=100.00> BB07 regmask=[eax] minReg=1 last wt=100.00> BB07 regmask=[ecx] minReg=1 last wt=100.00> BB07 regmask=[edx] minReg=1 last wt=100.00> BB07 regmask=[eax] minReg=1 wt=100.00> CALL BB07 regmask=[eax] minReg=1 fixed wt=400.00> BB07 regmask=[allInt] minReg=1 last wt=100.00> BB07 regmask=[allInt] minReg=1 last wt=100.00> CNS_INT BB04 regmask=[allInt] minReg=1 wt=400.00> BB04 regmask=[allInt] minReg=1 last wt=100.00> LCL_VAR BB04 regmask=[allInt] minReg=1 wt=400.00> BB04 regmask=[allInt] minReg=1 last wt=100.00> LCL_VAR BB10 regmask=[allInt] minReg=1 wt=400.00> BB10 regmask=[allInt] minReg=1 last wt=100.00> IND BB10 regmask=[allInt] minReg=1 wt=400.00> BB10 regmask=[allInt] minReg=1 last wt=100.00> AND BB10 regmask=[allInt] minReg=1 wt=400.00> BB10 regmask=[allInt] minReg=1 last regOptional wt=100.00> CNS_INT BB05 regmask=[allInt] minReg=1 wt=320.00> BB05 regmask=[allInt] minReg=1 last wt=80.00> LCL_VAR BB05 regmask=[allInt] minReg=1 wt=320.00> BB05 regmask=[allInt] minReg=1 last wt=80.00> CNS_INT BB06 regmask=[allInt] minReg=1 wt=80.00> BB06 regmask=[allInt] minReg=1 last wt=20.00> LCL_VAR BB06 regmask=[allInt] minReg=1 wt=80.00> BB06 regmask=[allInt] minReg=1 last wt=20.00> LCL_VAR BB13 regmask=[allInt] minReg=1 wt=320.00> BB13 regmask=[allInt] minReg=1 last wt=80.00> BB13 regmask=[eax] minReg=1 last wt=80.00> BB13 regmask=[ecx] minReg=1 last wt=80.00> BB13 regmask=[edx] minReg=1 last wt=80.00> CNS_INT BB03 regmask=[ecx] minReg=1 wt=400.00> BB03 regmask=[ecx] minReg=1 wt=100.00> BB03 regmask=[ecx] minReg=1 last fixed wt=100.00> BB03 regmask=[ecx] minReg=1 wt=100.00> PUTARG_REG BB03 regmask=[ecx] minReg=1 fixed wt=400.00> CNS_INT BB03 regmask=[edx] minReg=1 wt=400.00> BB03 regmask=[edx] minReg=1 wt=100.00> BB03 regmask=[edx] minReg=1 last fixed wt=100.00> BB03 regmask=[edx] minReg=1 wt=100.00> PUTARG_REG BB03 regmask=[edx] minReg=1 fixed wt=400.00> BB03 regmask=[ecx] minReg=1 wt=100.00> BB03 regmask=[ecx] minReg=1 last fixed wt=100.00> BB03 regmask=[edx] minReg=1 wt=100.00> BB03 regmask=[edx] minReg=1 last fixed wt=100.00> BB03 regmask=[eax] minReg=1 last wt=100.00> BB03 regmask=[ecx] minReg=1 last wt=100.00> BB03 regmask=[edx] minReg=1 last wt=100.00> LCL_VAR BB16 regmask=[allInt] minReg=1 wt=80.00> BB16 regmask=[allInt] minReg=1 last wt=20.00> IND BB16 regmask=[allInt] minReg=1 wt=80.00> BB16 regmask=[allInt] minReg=1 last wt=20.00> IND BB16 regmask=[allInt] minReg=1 wt=80.00> BB16 regmask=[allInt] minReg=1 last wt=20.00> CNS_INT BB16 regmask=[allInt] minReg=1 wt=80.00> BB16 regmask=[allInt] minReg=1 last wt=20.00> LCL_VAR BB16 regmask=[allInt] minReg=1 wt=80.00> BB16 regmask=[allInt] minReg=1 last wt=20.00> LCL_VAR BB19 regmask=[ecx] minReg=1 wt=80.00> BB19 regmask=[ecx] minReg=1 wt=20.00> BB19 regmask=[ecx] minReg=1 last fixed wt=20.00> BB19 regmask=[ecx] minReg=1 wt=20.00> PUTARG_REG BB19 regmask=[ecx] minReg=1 fixed wt=80.00> LCL_VAR BB19 regmask=[allInt] minReg=1 wt=80.00> BB19 regmask=[allInt] minReg=1 last wt=20.00> IND BB19 regmask=[allInt] minReg=1 wt=80.00> BB19 regmask=[ecx] minReg=1 wt=20.00> BB19 regmask=[ecx] minReg=1 last fixed wt=20.00> BB19 regmask=[allInt] minReg=1 last wt=20.00> BB19 regmask=[eax] minReg=1 last wt=20.00> BB19 regmask=[ecx] minReg=1 last wt=20.00> BB19 regmask=[edx] minReg=1 last wt=20.00> BB09 regmask=[eax] minReg=1 last wt=0.00> BB09 regmask=[ecx] minReg=1 last wt=0.00> BB09 regmask=[edx] minReg=1 last wt=0.00> BB09 regmask=[eax] minReg=1 wt=0.00> CALL BB09 regmask=[eax] minReg=1 last fixed local wt=0.00> BB12 regmask=[eax] minReg=1 last wt=0.00> BB12 regmask=[ecx] minReg=1 last wt=0.00> BB12 regmask=[edx] minReg=1 last wt=0.00> BB12 regmask=[eax] minReg=1 wt=0.00> CALL BB12 regmask=[eax] minReg=1 last fixed local wt=0.00> BB15 regmask=[eax] minReg=1 last wt=0.00> BB15 regmask=[ecx] minReg=1 last wt=0.00> BB15 regmask=[edx] minReg=1 last wt=0.00> BB15 regmask=[eax] minReg=1 wt=0.00> CALL BB15 regmask=[eax] minReg=1 last fixed local wt=0.00> BB18 regmask=[eax] minReg=1 last wt=0.00> BB18 regmask=[ecx] minReg=1 last wt=0.00> BB18 regmask=[edx] minReg=1 last wt=0.00> BB18 regmask=[eax] minReg=1 wt=0.00> CALL BB18 regmask=[eax] minReg=1 last fixed local wt=0.00> BB21 regmask=[eax] minReg=1 last wt=0.00> BB21 regmask=[ecx] minReg=1 last wt=0.00> BB21 regmask=[edx] minReg=1 last wt=0.00> BB21 regmask=[eax] minReg=1 wt=0.00> CALL BB21 regmask=[eax] minReg=1 last fixed local wt=0.00> TUPLE STYLE DUMP WITH REF POSITIONS Incoming Parameters: BB01 [0000] [???..???) -> BB02 (always), preds={} succs={BB02} ===== N004. NOP N008. IL_OFFSET INLRT @ 0x000[E-] N010. CNS_INT(h) 0x430FB8 global ptr N012. V01 MEM N014. V01 MEM N016. LEA(b+-4) N018. IND N020. CNS_INT 0 N022. CMP N024. JCC cond=UEQ N028. IL_OFFSET INLRT @ 0x000[E-] N030. V01 MEM N032. LEA(b+8) N034. V00 MEM N036. PUTARG_REG N038. CALL help N040. STOREIND N044. IL_OFFSET INLRT @ 0x013[E-] N046. CNS_INT(h) 0x430FB8 global ptr N048. V02 MEM N050. V02 MEM N052. LEA(b+-4) N054. IND N056. CNS_INT 0 N058. CMP N060. JCC cond=UEQ N064. IL_OFFSET INLRT @ 0x013[E-] N066. V02 MEM N068. LEA(b+8) N070. IND N072. CNS_INT 2 N074. AND N076. CNS_INT 0 N078. CMP N080. JCC cond=UNE N084. IL_OFFSET INLRT @ 0x013[E-] N086. CNS_INT(h) 0x430FB8 global ptr N088. V03 MEM N090. V03 MEM N092. LEA(b+-4) N094. IND N096. CNS_INT 0 N098. CMP N100. JCC cond=UEQ N104. IL_OFFSET INLRT @ 0x013[E-] N106. CNS_INT(h) 0x430FB8 global ptr N108. V04 MEM N110. V04 MEM N112. LEA(b+-4) N114. IND N116. CNS_INT 0 N118. CMP N120. JCC cond=UEQ N124. IL_OFFSET INLRT @ 0x013[E-] N126. V03 MEM N128. LEA(b+8) N130. IND N132. CALL ind N136. IL_OFFSET INLRT @ 0x01F[E-] N138. CNS_INT(h) '"Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverStri' N140. PUTARG_REG N142. CNS_INT(h) '"valuetype GenericValuetype`1'IFaceCuriouslyRecurringGe' N144. PUTARG_REG N146. CALL N148. IL_OFFSET INLRT @ 0x02E[E-] N150. RETURN N154. IL_OFFSET INLRT @ 0x013[E-] N156. V04 MEM N158. LEA(b+8) N160. IND N162. LEA(b+2) N164. IND N166. V05 MEM N168. IL_OFFSET INLRT @ 0x013[E-] N170. CNS_INT(h) 0x430FB8 global ptr N172. V06 MEM N174. V06 MEM N176. LEA(b+-4) N178. IND N180. CNS_INT 0 N182. CMP N184. JCC cond=UEQ N188. IL_OFFSET INLRT @ 0x013[E-] N190. V05 MEM N192. PUTARG_REG N194. V06 MEM N196. LEA(b+8) N198. IND N200. LEA(b+-2) N202. IND N204. CALL ind N208. IL_OFFSET INLRT @ 0x000[E-] N210. CALL help N214. IL_OFFSET INLRT @ 0x013[E-] N216. CALL help N220. IL_OFFSET INLRT @ 0x013[E-] N222. CALL help N226. IL_OFFSET INLRT @ 0x013[E-] N228. CALL help N232. IL_OFFSET INLRT @ 0x013[E-] N234. CALL help Linear scan intervals after buildIntervals: Interval 0: int (constant) RefPositions {#5@11 #6@12} physReg:NA Preferences=[allInt] Aversions=[allMask] Interval 1: int RefPositions {#7@15 #8@22} physReg:NA Preferences=[allInt] Aversions=[allMask] Interval 2: int RefPositions {#10@31 #23@40} physReg:NA Preferences=[allInt] Aversions=[allMask] Interval 3: int RefPositions {#11@35 #13@36} physReg:NA Preferences=[ecx] Aversions=[allMask] Interval 4: int RefPositions {#15@37 #17@38} physReg:NA Preferences=[ecx] Aversions=[allMask] Interval 5: int RefPositions {#22@39 #24@40} physReg:NA Preferences=[eax] Aversions=[allMask] Interval 6: int (constant) RefPositions {#26@47 #27@48} physReg:NA Preferences=[allInt] Aversions=[allMask] Interval 7: int RefPositions {#28@51 #29@58} physReg:NA Preferences=[allInt] Aversions=[allMask] Interval 8: int RefPositions {#31@67 #32@70} physReg:NA Preferences=[allInt] Aversions=[allMask] Interval 9: int RefPositions {#33@71 #34@74} physReg:NA Preferences=[allInt] Aversions=[allMask] RelatedInterval Interval 10: int RefPositions {#35@75 #36@78} physReg:NA Preferences=[allInt] Aversions=[allMask] Interval 11: int (constant) RefPositions {#38@87 #39@88} physReg:NA Preferences=[allInt] Aversions=[allMask] Interval 12: int RefPositions {#40@91 #41@98} physReg:NA Preferences=[allInt] Aversions=[allMask] Interval 13: int (constant) RefPositions {#43@107 #44@108} physReg:NA Preferences=[allInt] Aversions=[allMask] Interval 14: int RefPositions {#45@111 #46@118} physReg:NA Preferences=[allInt] Aversions=[allMask] Interval 15: int RefPositions {#48@127 #49@132} physReg:NA Preferences=[allInt] Aversions=[allMask] Interval 16: ref (constant) RefPositions {#54@139 #56@140} physReg:NA Preferences=[ecx] Aversions=[allMask] Interval 17: ref RefPositions {#58@141 #65@146} physReg:NA Preferences=[ecx] Aversions=[allMask] Interval 18: ref (constant) RefPositions {#59@143 #61@144} physReg:NA Preferences=[edx] Aversions=[allMask] Interval 19: ref RefPositions {#63@145 #67@146} physReg:NA Preferences=[edx] Aversions=[allMask] Interval 20: int RefPositions {#72@157 #73@160} physReg:NA Preferences=[allInt] Aversions=[allMask] Interval 21: int RefPositions {#74@161 #75@164} physReg:NA Preferences=[allInt] Aversions=[allMask] Interval 22: int RefPositions {#76@165 #77@166} physReg:NA Preferences=[allInt] Aversions=[allMask] Interval 23: int (constant) RefPositions {#78@171 #79@172} physReg:NA Preferences=[allInt] Aversions=[allMask] Interval 24: int RefPositions {#80@175 #81@182} physReg:NA Preferences=[allInt] Aversions=[allMask] Interval 25: int RefPositions {#83@191 #85@192} physReg:NA Preferences=[ecx] Aversions=[allMask] Interval 26: int RefPositions {#87@193 #92@204} physReg:NA Preferences=[ecx] Aversions=[allMask] Interval 27: int RefPositions {#88@195 #89@198} physReg:NA Preferences=[allInt] Aversions=[allMask] Interval 28: int RefPositions {#90@199 #93@204} physReg:NA Preferences=[allInt] Aversions=[allMask] Interval 29: byref RefPositions {#102@211} physReg:NA Preferences=[eax] Aversions=[allMask] Interval 30: byref RefPositions {#108@217} physReg:NA Preferences=[eax] Aversions=[allMask] Interval 31: byref RefPositions {#114@223} physReg:NA Preferences=[eax] Aversions=[allMask] Interval 32: byref RefPositions {#120@229} physReg:NA Preferences=[eax] Aversions=[allMask] Interval 33: byref RefPositions {#126@235} physReg:NA Preferences=[eax] Aversions=[allMask] *************** In LinearScan::allocateRegistersMinimal() Linear scan intervals before allocateRegistersMinimal: Interval 0: int (constant) RefPositions {#5@11 #6@12} physReg:NA Preferences=[allInt] Aversions=[allMask] Interval 1: int RefPositions {#7@15 #8@22} physReg:NA Preferences=[allInt] Aversions=[allMask] Interval 2: int RefPositions {#10@31 #23@40} physReg:NA Preferences=[allInt] Aversions=[allMask] Interval 3: int RefPositions {#11@35 #13@36} physReg:NA Preferences=[ecx] Aversions=[allMask] Interval 4: int RefPositions {#15@37 #17@38} physReg:NA Preferences=[ecx] Aversions=[allMask] Interval 5: int RefPositions {#22@39 #24@40} physReg:NA Preferences=[eax] Aversions=[allMask] Interval 6: int (constant) RefPositions {#26@47 #27@48} physReg:NA Preferences=[allInt] Aversions=[allMask] Interval 7: int RefPositions {#28@51 #29@58} physReg:NA Preferences=[allInt] Aversions=[allMask] Interval 8: int RefPositions {#31@67 #32@70} physReg:NA Preferences=[allInt] Aversions=[allMask] Interval 9: int RefPositions {#33@71 #34@74} physReg:NA Preferences=[allInt] Aversions=[allMask] RelatedInterval Interval 10: int RefPositions {#35@75 #36@78} physReg:NA Preferences=[allInt] Aversions=[allMask] Interval 11: int (constant) RefPositions {#38@87 #39@88} physReg:NA Preferences=[allInt] Aversions=[allMask] Interval 12: int RefPositions {#40@91 #41@98} physReg:NA Preferences=[allInt] Aversions=[allMask] Interval 13: int (constant) RefPositions {#43@107 #44@108} physReg:NA Preferences=[allInt] Aversions=[allMask] Interval 14: int RefPositions {#45@111 #46@118} physReg:NA Preferences=[allInt] Aversions=[allMask] Interval 15: int RefPositions {#48@127 #49@132} physReg:NA Preferences=[allInt] Aversions=[allMask] Interval 16: ref (constant) RefPositions {#54@139 #56@140} physReg:NA Preferences=[ecx] Aversions=[allMask] Interval 17: ref RefPositions {#58@141 #65@146} physReg:NA Preferences=[ecx] Aversions=[allMask] Interval 18: ref (constant) RefPositions {#59@143 #61@144} physReg:NA Preferences=[edx] Aversions=[allMask] Interval 19: ref RefPositions {#63@145 #67@146} physReg:NA Preferences=[edx] Aversions=[allMask] Interval 20: int RefPositions {#72@157 #73@160} physReg:NA Preferences=[allInt] Aversions=[allMask] Interval 21: int RefPositions {#74@161 #75@164} physReg:NA Preferences=[allInt] Aversions=[allMask] Interval 22: int RefPositions {#76@165 #77@166} physReg:NA Preferences=[allInt] Aversions=[allMask] Interval 23: int (constant) RefPositions {#78@171 #79@172} physReg:NA Preferences=[allInt] Aversions=[allMask] Interval 24: int RefPositions {#80@175 #81@182} physReg:NA Preferences=[allInt] Aversions=[allMask] Interval 25: int RefPositions {#83@191 #85@192} physReg:NA Preferences=[ecx] Aversions=[allMask] Interval 26: int RefPositions {#87@193 #92@204} physReg:NA Preferences=[ecx] Aversions=[allMask] Interval 27: int RefPositions {#88@195 #89@198} physReg:NA Preferences=[allInt] Aversions=[allMask] Interval 28: int RefPositions {#90@199 #93@204} physReg:NA Preferences=[allInt] Aversions=[allMask] Interval 29: byref RefPositions {#102@211} physReg:NA Preferences=[eax] Aversions=[allMask] Interval 30: byref RefPositions {#108@217} physReg:NA Preferences=[eax] Aversions=[allMask] Interval 31: byref RefPositions {#114@223} physReg:NA Preferences=[eax] Aversions=[allMask] Interval 32: byref RefPositions {#120@229} physReg:NA Preferences=[eax] Aversions=[allMask] Interval 33: byref RefPositions {#126@235} physReg:NA Preferences=[eax] Aversions=[allMask] ------------ REFPOSITIONS BEFORE ALLOCATION: ------------ BB01 regmask=[eax] minReg=1 last wt=100.00> BB01 regmask=[ecx] minReg=1 last wt=100.00> BB01 regmask=[edi] minReg=1 last wt=100.00> CNS_INT BB02 regmask=[allInt] minReg=1 wt=400.00> BB02 regmask=[allInt] minReg=1 last wt=100.00> LCL_VAR BB02 regmask=[allInt] minReg=1 wt=400.00> BB02 regmask=[allInt] minReg=1 last wt=100.00> LCL_VAR BB07 regmask=[allInt] minReg=1 wt=400.00> LCL_VAR BB07 regmask=[ecx] minReg=1 wt=400.00> BB07 regmask=[ecx] minReg=1 wt=100.00> BB07 regmask=[ecx] minReg=1 last fixed wt=100.00> BB07 regmask=[ecx] minReg=1 wt=100.00> PUTARG_REG BB07 regmask=[ecx] minReg=1 fixed wt=400.00> BB07 regmask=[ecx] minReg=1 wt=100.00> BB07 regmask=[ecx] minReg=1 last fixed wt=100.00> BB07 regmask=[eax] minReg=1 last wt=100.00> BB07 regmask=[ecx] minReg=1 last wt=100.00> BB07 regmask=[edx] minReg=1 last wt=100.00> BB07 regmask=[eax] minReg=1 wt=100.00> CALL BB07 regmask=[eax] minReg=1 fixed wt=400.00> BB07 regmask=[allInt] minReg=1 last wt=100.00> BB07 regmask=[allInt] minReg=1 last wt=100.00> CNS_INT BB04 regmask=[allInt] minReg=1 wt=400.00> BB04 regmask=[allInt] minReg=1 last wt=100.00> LCL_VAR BB04 regmask=[allInt] minReg=1 wt=400.00> BB04 regmask=[allInt] minReg=1 last wt=100.00> LCL_VAR BB10 regmask=[allInt] minReg=1 wt=400.00> BB10 regmask=[allInt] minReg=1 last wt=100.00> IND BB10 regmask=[allInt] minReg=1 wt=400.00> BB10 regmask=[allInt] minReg=1 last wt=100.00> AND BB10 regmask=[allInt] minReg=1 wt=400.00> BB10 regmask=[allInt] minReg=1 last regOptional wt=100.00> CNS_INT BB05 regmask=[allInt] minReg=1 wt=320.00> BB05 regmask=[allInt] minReg=1 last wt=80.00> LCL_VAR BB05 regmask=[allInt] minReg=1 wt=320.00> BB05 regmask=[allInt] minReg=1 last wt=80.00> CNS_INT BB06 regmask=[allInt] minReg=1 wt=80.00> BB06 regmask=[allInt] minReg=1 last wt=20.00> LCL_VAR BB06 regmask=[allInt] minReg=1 wt=80.00> BB06 regmask=[allInt] minReg=1 last wt=20.00> LCL_VAR BB13 regmask=[allInt] minReg=1 wt=320.00> BB13 regmask=[allInt] minReg=1 last wt=80.00> BB13 regmask=[eax] minReg=1 last wt=80.00> BB13 regmask=[ecx] minReg=1 last wt=80.00> BB13 regmask=[edx] minReg=1 last wt=80.00> CNS_INT BB03 regmask=[ecx] minReg=1 wt=400.00> BB03 regmask=[ecx] minReg=1 wt=100.00> BB03 regmask=[ecx] minReg=1 last fixed wt=100.00> BB03 regmask=[ecx] minReg=1 wt=100.00> PUTARG_REG BB03 regmask=[ecx] minReg=1 fixed wt=400.00> CNS_INT BB03 regmask=[edx] minReg=1 wt=400.00> BB03 regmask=[edx] minReg=1 wt=100.00> BB03 regmask=[edx] minReg=1 last fixed wt=100.00> BB03 regmask=[edx] minReg=1 wt=100.00> PUTARG_REG BB03 regmask=[edx] minReg=1 fixed wt=400.00> BB03 regmask=[ecx] minReg=1 wt=100.00> BB03 regmask=[ecx] minReg=1 last fixed wt=100.00> BB03 regmask=[edx] minReg=1 wt=100.00> BB03 regmask=[edx] minReg=1 last fixed wt=100.00> BB03 regmask=[eax] minReg=1 last wt=100.00> BB03 regmask=[ecx] minReg=1 last wt=100.00> BB03 regmask=[edx] minReg=1 last wt=100.00> LCL_VAR BB16 regmask=[allInt] minReg=1 wt=80.00> BB16 regmask=[allInt] minReg=1 last wt=20.00> IND BB16 regmask=[allInt] minReg=1 wt=80.00> BB16 regmask=[allInt] minReg=1 last wt=20.00> IND BB16 regmask=[allInt] minReg=1 wt=80.00> BB16 regmask=[allInt] minReg=1 last wt=20.00> CNS_INT BB16 regmask=[allInt] minReg=1 wt=80.00> BB16 regmask=[allInt] minReg=1 last wt=20.00> LCL_VAR BB16 regmask=[allInt] minReg=1 wt=80.00> BB16 regmask=[allInt] minReg=1 last wt=20.00> LCL_VAR BB19 regmask=[ecx] minReg=1 wt=80.00> BB19 regmask=[ecx] minReg=1 wt=20.00> BB19 regmask=[ecx] minReg=1 last fixed wt=20.00> BB19 regmask=[ecx] minReg=1 wt=20.00> PUTARG_REG BB19 regmask=[ecx] minReg=1 fixed wt=80.00> LCL_VAR BB19 regmask=[allInt] minReg=1 wt=80.00> BB19 regmask=[allInt] minReg=1 last wt=20.00> IND BB19 regmask=[allInt] minReg=1 wt=80.00> BB19 regmask=[ecx] minReg=1 wt=20.00> BB19 regmask=[ecx] minReg=1 last fixed wt=20.00> BB19 regmask=[allInt] minReg=1 last wt=20.00> BB19 regmask=[eax] minReg=1 last wt=20.00> BB19 regmask=[ecx] minReg=1 last wt=20.00> BB19 regmask=[edx] minReg=1 last wt=20.00> BB09 regmask=[eax] minReg=1 last wt=0.00> BB09 regmask=[ecx] minReg=1 last wt=0.00> BB09 regmask=[edx] minReg=1 last wt=0.00> BB09 regmask=[eax] minReg=1 wt=0.00> CALL BB09 regmask=[eax] minReg=1 last fixed local wt=0.00> BB12 regmask=[eax] minReg=1 last wt=0.00> BB12 regmask=[ecx] minReg=1 last wt=0.00> BB12 regmask=[edx] minReg=1 last wt=0.00> BB12 regmask=[eax] minReg=1 wt=0.00> CALL BB12 regmask=[eax] minReg=1 last fixed local wt=0.00> BB15 regmask=[eax] minReg=1 last wt=0.00> BB15 regmask=[ecx] minReg=1 last wt=0.00> BB15 regmask=[edx] minReg=1 last wt=0.00> BB15 regmask=[eax] minReg=1 wt=0.00> CALL BB15 regmask=[eax] minReg=1 last fixed local wt=0.00> BB18 regmask=[eax] minReg=1 last wt=0.00> BB18 regmask=[ecx] minReg=1 last wt=0.00> BB18 regmask=[edx] minReg=1 last wt=0.00> BB18 regmask=[eax] minReg=1 wt=0.00> CALL BB18 regmask=[eax] minReg=1 last fixed local wt=0.00> BB21 regmask=[eax] minReg=1 last wt=0.00> BB21 regmask=[ecx] minReg=1 last wt=0.00> BB21 regmask=[edx] minReg=1 last wt=0.00> BB21 regmask=[eax] minReg=1 wt=0.00> CALL BB21 regmask=[eax] minReg=1 last fixed local wt=0.00> Allocating Registers -------------------- The following table has one or more rows for each RefPosition that is handled during allocation. The columns are: (1) Loc: LSRA location, (2) RP#: RefPosition number, (3) Name, (4) Type (e.g. Def, Use, Fixd, Parm, DDef (Dummy Def), ExpU (Exposed Use), Kill) followed by a '*' if it is a last use, and a 'D' if it is delayRegFree, (5) Action taken during allocation. Some actions include (a) Alloc a new register, (b) Keep an existing register, (c) Spill a register, (d) ReLod (Reload) a register. If an ALL-CAPS name such as COVRS is displayed, it is a score name from lsra_score.h, with a trailing '(A)' indicating alloc, '(C)' indicating copy, and '(R)' indicating re-use. See dumpLsraAllocationEvent() for details. The subsequent columns show the Interval occupying each register, if any, followed by 'a' if it is active, 'p' if it is a large vector that has been partially spilled, and 'i' if it is inactive. Columns are only printed up to the last modified register, which may increase during allocation, in which case additional columns will appear. Registers which are not marked modified have ---- in their column. --------------------------------------------+----+----+----+----+ TreeID Loc RP# Name Type Action Reg |eax |ecx |edx |edi | --------------------------------------------+----+----+----+----+ | | | | | 0.#0 BB1 PredBB0 | | | | | 3.#1 eax Kill Keep eax | | | | | 3.#2 ecx Kill Keep ecx | | | | | 3.#3 edi Kill Keep edi | | | | | --------------------------------------------+----+----+----+----+ TreeID Loc RP# Name Type Action Reg |eax |ecx |edx |edi | --------------------------------------------+----+----+----+----+ 6.#4 BB2 PredBB1 | | | | | [000053] 11.#5 C0 Def ORDER(A) eax |C0 a| | | | [000054] 12.#6 C0 Use * Keep eax |C0 a| | | | [000055] 15.#7 I1 Def ORDER(A) eax |I1 a| | | | [000062] 22.#8 I1 Use * Keep eax |I1 a| | | | --------------------------------------------+----+----+----+----+ TreeID Loc RP# Name Type Action Reg |eax |ecx |edx |edi | --------------------------------------------+----+----+----+----+ 26.#9 BB7 PredBB2 | | | | | [000057] 31.#10 I2 Def ORDER(A) eax |I2 a| | | | [000001] 35.#11 I3 Def Alloc ecx |I2 a|I3 a| | | [000127] 36.#12 ecx Fixd Keep ecx |I2 a|I3 a| | | 36.#13 I3 Use * Keep ecx |I2 a|I3 a| | | 37.#14 ecx Fixd Keep ecx |I2 a| | | | 37.#15 I4 Def Alloc ecx |I2 a|I4 a| | | [000002] 38.#16 ecx Fixd Keep ecx |I2 a|I4 a| | | 38.#17 I4 Use * Keep ecx |I2 a|I4 a| | | 39.#18 eax Kill Spill eax | | | | | Keep eax | | | | | 39.#19 ecx Kill Keep ecx | | | | | 39.#20 edx Kill Keep edx | | | | | 39.#21 eax Fixd Keep eax | | | | | 39.#22 I5 Def Alloc eax |I5 a| | | | [000006] 40.#23 I2 Use * ReLod NA |I5 a| | | | ORDER(A) edx |I5 a| |I2 a| | 40.#24 I5 Use * Keep eax |I5 a| |I2 a| | --------------------------------------------+----+----+----+----+ TreeID Loc RP# Name Type Action Reg |eax |ecx |edx |edi | --------------------------------------------+----+----+----+----+ 42.#25 BB4 PredBB7 | | | | | [000064] 47.#26 C6 Def ORDER(A) eax |C6 a| | | | [000065] 48.#27 C6 Use * Keep eax |C6 a| | | | [000066] 51.#28 I7 Def ORDER(A) eax |I7 a| | | | [000073] 58.#29 I7 Use * Keep eax |I7 a| | | | --------------------------------------------+----+----+----+----+ TreeID Loc RP# Name Type Action Reg |eax |ecx |edx |edi | --------------------------------------------+----+----+----+----+ 62.#30 BB10 PredBB4 | | | | | [000068] 67.#31 I8 Def ORDER(A) eax |I8 a| | | | [000017] 70.#32 I8 Use * Keep eax |I8 a| | | | 71.#33 I9 Def ORDER(A) eax |I9 a| | | | [000021] 74.#34 I9 Use * Keep eax |I9 a| | | | 75.#35 I10 Def ORDER(A) eax |I10a| | | | [000023] 78.#36 I10 Use * Keep eax |I10a| | | | --------------------------------------------+----+----+----+----+ TreeID Loc RP# Name Type Action Reg |eax |ecx |edx |edi | --------------------------------------------+----+----+----+----+ 82.#37 BB5 PredBB10 | | | | | [000075] 87.#38 C11 Def ORDER(A) eax |C11a| | | | [000076] 88.#39 C11 Use * Keep eax |C11a| | | | [000077] 91.#40 I12 Def ORDER(A) eax |I12a| | | | [000084] 98.#41 I12 Use * Keep eax |I12a| | | | --------------------------------------------+----+----+----+----+ TreeID Loc RP# Name Type Action Reg |eax |ecx |edx |edi | --------------------------------------------+----+----+----+----+ 102.#42 BB6 PredBB10 | | | | | [000086] 107.#43 C13 Def ORDER(A) eax |C13a| | | | [000087] 108.#44 C13 Use * Keep eax |C13a| | | | [000088] 111.#45 I14 Def ORDER(A) eax |I14a| | | | [000095] 118.#46 I14 Use * Keep eax |I14a| | | | --------------------------------------------+----+----+----+----+ TreeID Loc RP# Name Type Action Reg |eax |ecx |edx |edi | --------------------------------------------+----+----+----+----+ 122.#47 BB13 PredBB5 | | | | | [000079] 127.#48 I15 Def ORDER(A) eax |I15a| | | | [000025] 132.#49 I15 Use * Keep eax |I15a| | | | 133.#50 eax Kill Keep eax | | | | | 133.#51 ecx Kill Keep ecx | | | | | 133.#52 edx Kill Keep edx | | | | | --------------------------------------------+----+----+----+----+ TreeID Loc RP# Name Type Action Reg |eax |ecx |edx |edi | --------------------------------------------+----+----+----+----+ 134.#53 BB3 PredBB13 | | | | | [000051] 139.#54 C16 Def Alloc ecx | |C16a| | | [000129] 140.#55 ecx Fixd Keep ecx | |C16a| | | 140.#56 C16 Use * Keep ecx | |C16a| | | 141.#57 ecx Fixd Keep ecx | | | | | 141.#58 I17 Def Alloc ecx | |I17a| | | [000052] 143.#59 C18 Def Alloc edx | |I17a|C18a| | [000130] 144.#60 edx Fixd Keep edx | |I17a|C18a| | 144.#61 C18 Use * Keep edx | |I17a|C18a| | 145.#62 edx Fixd Keep edx | |I17a| | | 145.#63 I19 Def Alloc edx | |I17a|I19a| | [000014] 146.#64 ecx Fixd Keep ecx | |I17a|I19a| | 146.#65 I17 Use * Keep ecx | |I17a|I19a| | 146.#66 edx Fixd Keep edx | |I17a|I19a| | 146.#67 I19 Use * Keep edx | |I17a|I19a| | 147.#68 eax Kill Keep eax | | | | | 147.#69 ecx Kill Keep ecx | | | | | 147.#70 edx Kill Keep edx | | | | | --------------------------------------------+----+----+----+----+ TreeID Loc RP# Name Type Action Reg |eax |ecx |edx |edi | --------------------------------------------+----+----+----+----+ 152.#71 BB16 PredBB6 | | | | | [000090] 157.#72 I20 Def ORDER(A) eax |I20a| | | | [000038] 160.#73 I20 Use * Keep eax |I20a| | | | 161.#74 I21 Def ORDER(A) eax |I21a| | | | [000045] 164.#75 I21 Use * Keep eax |I21a| | | | 165.#76 I22 Def ORDER(A) eax |I22a| | | | [000097] 166.#77 I22 Use * Keep eax |I22a| | | | [000099] 171.#78 C23 Def ORDER(A) eax |C23a| | | | [000100] 172.#79 C23 Use * Keep eax |C23a| | | | [000101] 175.#80 I24 Def ORDER(A) eax |I24a| | | | [000108] 182.#81 I24 Use * Keep eax |I24a| | | | --------------------------------------------+----+----+----+----+ TreeID Loc RP# Name Type Action Reg |eax |ecx |edx |edi | --------------------------------------------+----+----+----+----+ 186.#82 BB19 PredBB16 | | | | | [000098] 191.#83 I25 Def Alloc ecx | |I25a| | | [000128] 192.#84 ecx Fixd Keep ecx | |I25a| | | 192.#85 I25 Use * Keep ecx | |I25a| | | 193.#86 ecx Fixd Keep ecx | | | | | 193.#87 I26 Def Alloc ecx | |I26a| | | [000103] 195.#88 I27 Def ORDER(A) eax |I27a|I26a| | | [000030] 198.#89 I27 Use * Keep eax |I27a|I26a| | | 199.#90 I28 Def ORDER(A) eax |I28a|I26a| | | [000046] 204.#91 ecx Fixd Keep ecx |I28a|I26a| | | 204.#92 I26 Use * Keep ecx |I28a|I26a| | | 204.#93 I28 Use * Keep eax |I28a|I26a| | | 205.#94 eax Kill Keep eax | | | | | 205.#95 ecx Kill Keep ecx | | | | | 205.#96 edx Kill Keep edx | | | | | --------------------------------------------+----+----+----+----+ TreeID Loc RP# Name Type Action Reg |eax |ecx |edx |edi | --------------------------------------------+----+----+----+----+ 206.#97 BB9 PredBB2 | | | | | [000003] 211.#98 eax Kill Keep eax | | | | | 211.#99 ecx Kill Keep ecx | | | | | 211.#100 edx Kill Keep edx | | | | | 211.#101 eax Fixd Keep eax | | | | | 211.#102 I29 Def * Alloc eax |I29a| | | | --------------------------------------------+----+----+----+----+ TreeID Loc RP# Name Type Action Reg |eax |ecx |edx |edi | --------------------------------------------+----+----+----+----+ 212.#103 BB12 PredBB4 | | | | | [000019] 217.#104 eax Kill Keep eax | | | | | 217.#105 ecx Kill Keep ecx | | | | | 217.#106 edx Kill Keep edx | | | | | 217.#107 eax Fixd Keep eax | | | | | 217.#108 I30 Def * Alloc eax |I30a| | | | --------------------------------------------+----+----+----+----+ TreeID Loc RP# Name Type Action Reg |eax |ecx |edx |edi | --------------------------------------------+----+----+----+----+ 218.#109 BB15 PredBB5 | | | | | [000028] 223.#110 eax Kill Keep eax | | | | | 223.#111 ecx Kill Keep ecx | | | | | 223.#112 edx Kill Keep edx | | | | | 223.#113 eax Fixd Keep eax | | | | | 223.#114 I31 Def * Alloc eax |I31a| | | | --------------------------------------------+----+----+----+----+ TreeID Loc RP# Name Type Action Reg |eax |ecx |edx |edi | --------------------------------------------+----+----+----+----+ 224.#115 BB18 PredBB6 | | | | | [000040] 229.#116 eax Kill Keep eax | | | | | 229.#117 ecx Kill Keep ecx | | | | | 229.#118 edx Kill Keep edx | | | | | 229.#119 eax Fixd Keep eax | | | | | 229.#120 I32 Def * Alloc eax |I32a| | | | --------------------------------------------+----+----+----+----+ TreeID Loc RP# Name Type Action Reg |eax |ecx |edx |edi | --------------------------------------------+----+----+----+----+ 230.#121 BB21 PredBB16 | | | | | [000032] 235.#122 eax Kill Keep eax | | | | | 235.#123 ecx Kill Keep ecx | | | | | 235.#124 edx Kill Keep edx | | | | | 235.#125 eax Fixd Keep eax | | | | | 235.#126 I33 Def * Alloc eax |I33a| | | | 236.#127 END | | | | | ------------ REFPOSITIONS AFTER ALLOCATION: ------------ BB01 regmask=[eax] minReg=1 last wt=100.00> BB01 regmask=[ecx] minReg=1 last wt=100.00> BB01 regmask=[edi] minReg=1 last wt=100.00> CNS_INT BB02 regmask=[eax] minReg=1 wt=400.00> BB02 regmask=[eax] minReg=1 last wt=100.00> LCL_VAR BB02 regmask=[eax] minReg=1 wt=400.00> BB02 regmask=[eax] minReg=1 last wt=100.00> LCL_VAR BB07 regmask=[eax] minReg=1 spillAfter singleDefSpill wt=400.00> LCL_VAR BB07 regmask=[ecx] minReg=1 wt=400.00> BB07 regmask=[ecx] minReg=1 wt=100.00> BB07 regmask=[ecx] minReg=1 last fixed wt=100.00> BB07 regmask=[ecx] minReg=1 wt=100.00> PUTARG_REG BB07 regmask=[ecx] minReg=1 fixed wt=400.00> BB07 regmask=[ecx] minReg=1 wt=100.00> BB07 regmask=[ecx] minReg=1 last fixed wt=100.00> BB07 regmask=[eax] minReg=1 last wt=100.00> BB07 regmask=[ecx] minReg=1 last wt=100.00> BB07 regmask=[edx] minReg=1 last wt=100.00> BB07 regmask=[eax] minReg=1 wt=100.00> CALL BB07 regmask=[eax] minReg=1 fixed wt=400.00> BB07 regmask=[edx] minReg=1 last reload wt=100.00> BB07 regmask=[eax] minReg=1 last wt=100.00> CNS_INT BB04 regmask=[eax] minReg=1 wt=400.00> BB04 regmask=[eax] minReg=1 last wt=100.00> LCL_VAR BB04 regmask=[eax] minReg=1 wt=400.00> BB04 regmask=[eax] minReg=1 last wt=100.00> LCL_VAR BB10 regmask=[eax] minReg=1 wt=400.00> BB10 regmask=[eax] minReg=1 last wt=100.00> IND BB10 regmask=[eax] minReg=1 wt=400.00> BB10 regmask=[eax] minReg=1 last wt=100.00> AND BB10 regmask=[eax] minReg=1 wt=400.00> BB10 regmask=[eax] minReg=1 last regOptional wt=100.00> CNS_INT BB05 regmask=[eax] minReg=1 wt=320.00> BB05 regmask=[eax] minReg=1 last wt=80.00> LCL_VAR BB05 regmask=[eax] minReg=1 wt=320.00> BB05 regmask=[eax] minReg=1 last wt=80.00> CNS_INT BB06 regmask=[eax] minReg=1 wt=80.00> BB06 regmask=[eax] minReg=1 last wt=20.00> LCL_VAR BB06 regmask=[eax] minReg=1 wt=80.00> BB06 regmask=[eax] minReg=1 last wt=20.00> LCL_VAR BB13 regmask=[eax] minReg=1 wt=320.00> BB13 regmask=[eax] minReg=1 last wt=80.00> BB13 regmask=[eax] minReg=1 last wt=80.00> BB13 regmask=[ecx] minReg=1 last wt=80.00> BB13 regmask=[edx] minReg=1 last wt=80.00> CNS_INT BB03 regmask=[ecx] minReg=1 wt=400.00> BB03 regmask=[ecx] minReg=1 wt=100.00> BB03 regmask=[ecx] minReg=1 last fixed wt=100.00> BB03 regmask=[ecx] minReg=1 wt=100.00> PUTARG_REG BB03 regmask=[ecx] minReg=1 fixed wt=400.00> CNS_INT BB03 regmask=[edx] minReg=1 wt=400.00> BB03 regmask=[edx] minReg=1 wt=100.00> BB03 regmask=[edx] minReg=1 last fixed wt=100.00> BB03 regmask=[edx] minReg=1 wt=100.00> PUTARG_REG BB03 regmask=[edx] minReg=1 fixed wt=400.00> BB03 regmask=[ecx] minReg=1 wt=100.00> BB03 regmask=[ecx] minReg=1 last fixed wt=100.00> BB03 regmask=[edx] minReg=1 wt=100.00> BB03 regmask=[edx] minReg=1 last fixed wt=100.00> BB03 regmask=[eax] minReg=1 last wt=100.00> BB03 regmask=[ecx] minReg=1 last wt=100.00> BB03 regmask=[edx] minReg=1 last wt=100.00> LCL_VAR BB16 regmask=[eax] minReg=1 wt=80.00> BB16 regmask=[eax] minReg=1 last wt=20.00> IND BB16 regmask=[eax] minReg=1 wt=80.00> BB16 regmask=[eax] minReg=1 last wt=20.00> IND BB16 regmask=[eax] minReg=1 wt=80.00> BB16 regmask=[eax] minReg=1 last wt=20.00> CNS_INT BB16 regmask=[eax] minReg=1 wt=80.00> BB16 regmask=[eax] minReg=1 last wt=20.00> LCL_VAR BB16 regmask=[eax] minReg=1 wt=80.00> BB16 regmask=[eax] minReg=1 last wt=20.00> LCL_VAR BB19 regmask=[ecx] minReg=1 wt=80.00> BB19 regmask=[ecx] minReg=1 wt=20.00> BB19 regmask=[ecx] minReg=1 last fixed wt=20.00> BB19 regmask=[ecx] minReg=1 wt=20.00> PUTARG_REG BB19 regmask=[ecx] minReg=1 fixed wt=80.00> LCL_VAR BB19 regmask=[eax] minReg=1 wt=80.00> BB19 regmask=[eax] minReg=1 last wt=20.00> IND BB19 regmask=[eax] minReg=1 wt=80.00> BB19 regmask=[ecx] minReg=1 wt=20.00> BB19 regmask=[ecx] minReg=1 last fixed wt=20.00> BB19 regmask=[eax] minReg=1 last wt=20.00> BB19 regmask=[eax] minReg=1 last wt=20.00> BB19 regmask=[ecx] minReg=1 last wt=20.00> BB19 regmask=[edx] minReg=1 last wt=20.00> BB09 regmask=[eax] minReg=1 last wt=0.00> BB09 regmask=[ecx] minReg=1 last wt=0.00> BB09 regmask=[edx] minReg=1 last wt=0.00> BB09 regmask=[eax] minReg=1 wt=0.00> CALL BB09 regmask=[eax] minReg=1 last fixed local wt=0.00> BB12 regmask=[eax] minReg=1 last wt=0.00> BB12 regmask=[ecx] minReg=1 last wt=0.00> BB12 regmask=[edx] minReg=1 last wt=0.00> BB12 regmask=[eax] minReg=1 wt=0.00> CALL BB12 regmask=[eax] minReg=1 last fixed local wt=0.00> BB15 regmask=[eax] minReg=1 last wt=0.00> BB15 regmask=[ecx] minReg=1 last wt=0.00> BB15 regmask=[edx] minReg=1 last wt=0.00> BB15 regmask=[eax] minReg=1 wt=0.00> CALL BB15 regmask=[eax] minReg=1 last fixed local wt=0.00> BB18 regmask=[eax] minReg=1 last wt=0.00> BB18 regmask=[ecx] minReg=1 last wt=0.00> BB18 regmask=[edx] minReg=1 last wt=0.00> BB18 regmask=[eax] minReg=1 wt=0.00> CALL BB18 regmask=[eax] minReg=1 last fixed local wt=0.00> BB21 regmask=[eax] minReg=1 last wt=0.00> BB21 regmask=[ecx] minReg=1 last wt=0.00> BB21 regmask=[edx] minReg=1 last wt=0.00> BB21 regmask=[eax] minReg=1 wt=0.00> CALL BB21 regmask=[eax] minReg=1 last fixed local wt=0.00> Active intervals at end of allocation: Max spill for int is 1 Max spill for int is 1 Trees after linear scan register allocator (LSRA) ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [???..???)-> BB02 (always) i LIR keep internal q BB02 [0001] 1 BB01 1 [???..???)-> BB07,BB09 ( cond ) i LIR hascall BB09 [0008] 1 BB02 0 [???..???)-> BB07 (always) LIR rare internal q BB07 [0006] 2 BB02,BB09 1 [000..01F)-> BB04 (always) i LIR hascall q BB04 [0003] 1 BB07 1 [???..???)-> BB10,BB12 ( cond ) i LIR internal hascall BB12 [0011] 1 BB04 0 [???..???)-> BB10 (always) LIR rare internal q BB10 [0009] 2 BB04,BB12 1 [???..???)-> BB06,BB05 ( cond ) i LIR internal hascall q BB05 [0004] 1 BB10 0.80 [???..???)-> BB13,BB15 ( cond ) i LIR internal hascall gcsafe BB15 [0014] 1 BB05 0 [???..???)-> BB13 (always) LIR rare internal q BB13 [0012] 2 BB05,BB15 0.80 [???..???)-> BB03 (always) i LIR internal hascall gcsafe BB06 [0005] 1 BB10 0.20 [???..???)-> BB16,BB18 ( cond ) i LIR internal hascall gcsafe BB18 [0017] 1 BB06 0 [???..???)-> BB16 (always) LIR rare internal q BB16 [0015] 2 BB06,BB18 0.20 [???..???)-> BB19,BB21 ( cond ) i LIR internal hascall gcsafe BB21 [0020] 1 BB16 0 [???..???)-> BB19 (always) LIR rare internal q BB19 [0018] 2 BB16,BB21 0.20 [013..???)-> BB03 (always) i LIR internal hascall gcsafe q BB03 [0002] 2 BB13,BB19 1 [01F..02F) (return) i LIR internal hascall gcsafe ---------------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [0000] [???..???) -> BB02 (always), preds={} succs={BB02} N004 ( 0, 0) [000000] ----------- NOP void REG NA ------------ BB02 [0001] [???..???) -> BB07,BB09 (cond), preds={BB01} succs={BB09,BB07} N008 (???,???) [000110] ----------- IL_OFFSET void INLRT @ 0x000[E-] REG NA N010 ( 1, 4) [000053] H---------- t53 = CNS_INT(h) int 0x430FB8 global ptr REG eax /--* t53 int N012 ( 5, 7) [000054] DA--------- * STORE_LCL_VAR int V01 loc0 NA REG NA N014 ( 3, 2) [000055] ----------- t55 = LCL_VAR int V01 loc0 eax REG eax /--* t55 int N016 ( 9, 10) [000059] -c--------- t59 = * LEA(b+-4) int REG NA /--* t59 int N018 ( 11, 12) [000060] nA--G------ t60 = * IND int REG NA N020 ( 1, 1) [000061] -c--------- t61 = CNS_INT int 0 REG NA /--* t60 int +--* t61 int N022 ( 13, 14) [000062] -A--G------ * CMP void REG NA N024 ( 15, 16) [000063] -A--G------ JCC void cond=UEQ REG NA ------------ BB09 [0008] [???..???) -> BB07 (always), preds={BB02} succs={BB07} N208 (???,???) [000111] ----------- IL_OFFSET void INLRT @ 0x000[E-] REG NA N210 ( 14, 5) [000003] H-CXG------ u3 = CALL help byref CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE REG eax ------------ BB07 [0006] [000..01F) -> BB04 (always), preds={BB02,BB09} succs={BB04} N028 (???,???) [000112] ----------- IL_OFFSET void INLRT @ 0x000[E-] REG NA N030 ( 3, 2) [000057] ----------Z t57 = LCL_VAR int V01 loc0 eax REG eax /--* t57 int [000131] ----------- t131 = * RELOAD int REG edx /--* t131 int N032 ( 4, 3) [000005] -c--------- t5 = * LEA(b+8) byref REG NA N034 ( 3, 2) [000001] !---------- t1 = LCL_VAR int V00 TypeCtx ecx REG ecx /--* t1 int N036 (???,???) [000127] ----------- t127 = * PUTARG_REG int REG ecx /--* t127 int arg0 in ecx N038 ( 17, 8) [000002] --C-G------ t2 = * CALL help int CORINFO_HELP_READYTORUN_GENERIC_HANDLE REG eax /--* t5 byref +--* t2 int N040 ( 24, 14) [000006] VAC-GO----- * STOREIND int REG NA ------------ BB04 [0003] [???..???) -> BB10,BB12 (cond), preds={BB07} succs={BB12,BB10} N044 (???,???) [000113] ----------- IL_OFFSET void INLRT @ 0x013[E-] REG NA N046 ( 1, 4) [000064] H---------- t64 = CNS_INT(h) int 0x430FB8 global ptr REG eax /--* t64 int N048 ( 5, 7) [000065] DA--------- * STORE_LCL_VAR int V02 tmp1 NA REG NA N050 ( 3, 2) [000066] ----------- t66 = LCL_VAR int V02 tmp1 eax REG eax /--* t66 int N052 ( 9, 10) [000070] -c--------- t70 = * LEA(b+-4) int REG NA /--* t70 int N054 ( 11, 12) [000071] nA--G------ t71 = * IND int REG NA N056 ( 1, 1) [000072] -c--------- t72 = CNS_INT int 0 REG NA /--* t71 int +--* t72 int N058 ( 13, 14) [000073] -A--G------ * CMP void REG NA N060 ( 15, 16) [000074] -A--G------ JCC void cond=UEQ REG NA ------------ BB12 [0011] [???..???) -> BB10 (always), preds={BB04} succs={BB10} N214 (???,???) [000114] ----------- IL_OFFSET void INLRT @ 0x013[E-] REG NA N216 ( 14, 5) [000019] H-CXG------ u19 = CALL help byref CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE REG eax ------------ BB10 [0009] [???..???) -> BB06,BB05 (cond), preds={BB04,BB12} succs={BB05,BB06} N064 (???,???) [000115] ----------- IL_OFFSET void INLRT @ 0x013[E-] REG NA N066 ( 3, 2) [000068] ----------- t68 = LCL_VAR int V02 tmp1 eax REG eax /--* t68 int N068 ( 4, 3) [000018] -c--------- t18 = * LEA(b+8) byref REG NA /--* t18 byref N070 ( 6, 5) [000017] V---GO----- t17 = * IND int REG eax N072 ( 1, 1) [000016] -c--------- t16 = CNS_INT int 2 REG NA /--* t17 int +--* t16 int N074 ( 8, 7) [000021] ----GO----- t21 = * AND int REG eax N076 ( 1, 1) [000022] -c--------- t22 = CNS_INT int 0 REG NA /--* t21 int +--* t22 int N078 ( 10, 9) [000023] ----GO-N--- * CMP void REG NA N080 ( 12, 11) [000024] ----GO----- JCC void cond=UNE REG NA ------------ BB05 [0004] [???..???) -> BB13,BB15 (cond), preds={BB10} succs={BB15,BB13} N084 (???,???) [000116] ----------- IL_OFFSET void INLRT @ 0x013[E-] REG NA N086 ( 1, 4) [000075] H---------- t75 = CNS_INT(h) int 0x430FB8 global ptr REG eax /--* t75 int N088 ( 5, 7) [000076] DA--------- * STORE_LCL_VAR int V03 tmp2 NA REG NA N090 ( 3, 2) [000077] ----------- t77 = LCL_VAR int V03 tmp2 eax REG eax /--* t77 int N092 ( 9, 10) [000081] -c--------- t81 = * LEA(b+-4) int REG NA /--* t81 int N094 ( 11, 12) [000082] nA--G------ t82 = * IND int REG NA N096 ( 1, 1) [000083] -c--------- t83 = CNS_INT int 0 REG NA /--* t82 int +--* t83 int N098 ( 13, 14) [000084] -A--G------ * CMP void REG NA N100 ( 15, 16) [000085] -A--G------ JCC void cond=UEQ REG NA ------------ BB15 [0014] [???..???) -> BB13 (always), preds={BB05} succs={BB13} N220 (???,???) [000117] ----------- IL_OFFSET void INLRT @ 0x013[E-] REG NA N222 ( 14, 5) [000028] H-CXG------ u28 = CALL help byref CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE REG eax ------------ BB13 [0012] [???..???) -> BB03 (always), preds={BB05,BB15} succs={BB03} N124 (???,???) [000118] ----------- IL_OFFSET void INLRT @ 0x013[E-] REG NA N126 ( 3, 2) [000079] ----------- t79 = LCL_VAR int V03 tmp2 eax REG eax /--* t79 int N128 ( 4, 3) [000027] -c--------- t27 = * LEA(b+8) byref REG NA /--* t27 byref N130 ( 6, 5) [000026] Vc--GO----- t26 = * IND int REG NA /--* t26 int calli tgt N132 ( 23, 7) [000025] --CXGO----- * CALL ind void REG NA ------------ BB06 [0005] [???..???) -> BB16,BB18 (cond), preds={BB10} succs={BB18,BB16} N104 (???,???) [000119] ----------- IL_OFFSET void INLRT @ 0x013[E-] REG NA N106 ( 1, 4) [000086] H---------- t86 = CNS_INT(h) int 0x430FB8 global ptr REG eax /--* t86 int N108 ( 5, 7) [000087] DA--------- * STORE_LCL_VAR int V04 tmp3 NA REG NA N110 ( 3, 2) [000088] ----------- t88 = LCL_VAR int V04 tmp3 eax REG eax /--* t88 int N112 ( 9, 10) [000092] -c--------- t92 = * LEA(b+-4) int REG NA /--* t92 int N114 ( 11, 12) [000093] nA--G------ t93 = * IND int REG NA N116 ( 1, 1) [000094] -c--------- t94 = CNS_INT int 0 REG NA /--* t93 int +--* t94 int N118 ( 13, 14) [000095] -A--G------ * CMP void REG NA N120 ( 15, 16) [000096] -A--G------ JCC void cond=UEQ REG NA ------------ BB18 [0017] [???..???) -> BB16 (always), preds={BB06} succs={BB16} N226 (???,???) [000120] ----------- IL_OFFSET void INLRT @ 0x013[E-] REG NA N228 ( 14, 5) [000040] H-CXG------ u40 = CALL help byref CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE REG eax ------------ BB16 [0015] [???..???) -> BB19,BB21 (cond), preds={BB06,BB18} succs={BB21,BB19} N154 (???,???) [000121] ----------- IL_OFFSET void INLRT @ 0x013[E-] REG NA N156 ( 3, 2) [000090] ----------- t90 = LCL_VAR int V04 tmp3 eax REG eax /--* t90 int N158 ( 4, 3) [000039] -c--------- t39 = * LEA(b+8) byref REG NA /--* t39 byref N160 ( 6, 5) [000038] V---GO----- t38 = * IND int REG eax /--* t38 int N162 ( 9, 8) [000044] -c--------- t44 = * LEA(b+2) int REG NA /--* t44 int N164 ( 9, 8) [000045] ---XGO----- t45 = * IND int REG eax /--* t45 int N166 ( 13, 11) [000097] DA-XGO----- * STORE_LCL_VAR int V05 tmp4 NA REG NA N168 (???,???) [000122] ----------- IL_OFFSET void INLRT @ 0x013[E-] REG NA N170 ( 1, 4) [000099] H---------- t99 = CNS_INT(h) int 0x430FB8 global ptr REG eax /--* t99 int N172 ( 5, 7) [000100] DA--------- * STORE_LCL_VAR int V06 tmp5 NA REG NA N174 ( 3, 2) [000101] ----------- t101 = LCL_VAR int V06 tmp5 eax REG eax /--* t101 int N176 ( 9, 10) [000105] -c--------- t105 = * LEA(b+-4) int REG NA /--* t105 int N178 ( 11, 12) [000106] nA--G------ t106 = * IND int REG NA N180 ( 1, 1) [000107] -c--------- t107 = CNS_INT int 0 REG NA /--* t106 int +--* t107 int N182 ( 13, 14) [000108] -A--G------ * CMP void REG NA N184 ( 15, 16) [000109] -A--G------ JCC void cond=UEQ REG NA ------------ BB21 [0020] [???..???) -> BB19 (always), preds={BB16} succs={BB19} N232 (???,???) [000123] ----------- IL_OFFSET void INLRT @ 0x013[E-] REG NA N234 ( 14, 5) [000032] H-CXG------ u32 = CALL help byref CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE REG eax ------------ BB19 [0018] [013..???) -> BB03 (always), preds={BB16,BB21} succs={BB03} N188 (???,???) [000124] ----------- IL_OFFSET void INLRT @ 0x013[E-] REG NA N190 ( 3, 2) [000098] ----------- t98 = LCL_VAR int V05 tmp4 ecx REG ecx /--* t98 int N192 (???,???) [000128] ----------- t128 = * PUTARG_REG int REG ecx N194 ( 3, 2) [000103] ----------- t103 = LCL_VAR int V06 tmp5 eax REG eax /--* t103 int N196 ( 4, 3) [000031] -c--------- t31 = * LEA(b+8) byref REG NA /--* t31 byref N198 ( 6, 5) [000030] V---GO----- t30 = * IND int REG eax /--* t30 int N200 ( 7, 6) [000035] -c--------- t35 = * LEA(b+-2) int REG NA /--* t35 int N202 ( 9, 8) [000036] -c-XGO----- t36 = * IND int REG NA /--* t128 int gctx in ecx +--* t36 int calli tgt N204 ( 29, 13) [000046] --CXGO----- * CALL ind void REG NA ------------ BB03 [0002] [01F..02F) (return), preds={BB13,BB19} succs={} N136 (???,???) [000125] ----------- IL_OFFSET void INLRT @ 0x01F[E-] REG NA N138 ( 1, 4) [000051] H---------- t51 = CNS_INT(h) ref '"Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverStri' REG ecx /--* t51 ref N140 (???,???) [000129] ----------- t129 = * PUTARG_REG ref REG ecx N142 ( 1, 4) [000052] H---------- t52 = CNS_INT(h) ref '"valuetype GenericValuetype`1'IFaceCuriouslyRecurringGe' REG edx /--* t52 ref N144 (???,???) [000130] ----------- t130 = * PUTARG_REG ref REG edx /--* t129 ref arg0 in ecx +--* t130 ref arg1 in edx N146 ( 16, 15) [000014] --CXG------ * CALL void Statics:CheckForFailure(System.String,System.String) REG NA N148 (???,???) [000126] ----------- IL_OFFSET void INLRT @ 0x02E[E-] REG NA N150 ( 0, 0) [000015] ----------- RETURN void REG NA ------------------------------------------------------------------------------------------------------------------- Final allocation --------------------------------------------+----+----+----+----+ TreeID Loc RP# Name Type Action Reg |eax |ecx |edx |edi | --------------------------------------------+----+----+----+----+ 0.#0 BB1 PredBB0 | | | | | 3.#1 eax Kill Keep eax | | | | | 3.#2 ecx Kill Keep ecx | | | | | 3.#3 edi Kill Keep edi | | | | | --------------------------------------------+----+----+----+----+ TreeID Loc RP# Name Type Action Reg |eax |ecx |edx |edi | --------------------------------------------+----+----+----+----+ 6.#4 BB2 PredBB1 | | | | | [000053] 11.#5 C0 Def Alloc eax |C0 a| | | | [000054] 12.#6 C0 Use * Keep eax |C0 i| | | | [000055] 15.#7 I1 Def Alloc eax |I1 a| | | | [000062] 22.#8 I1 Use * Keep eax |I1 i| | | | --------------------------------------------+----+----+----+----+ TreeID Loc RP# Name Type Action Reg |eax |ecx |edx |edi | --------------------------------------------+----+----+----+----+ 26.#9 BB7 PredBB2 | | | | | [000057] 31.#10 I2 Def Alloc eax | | | | | Spill eax | | | | | [000001] 35.#11 I3 Def Alloc ecx | |I3 a| | | [000127] 36.#12 ecx Fixd Keep ecx | |I3 a| | | 36.#13 I3 Use * Keep ecx | |I3 i| | | 37.#14 ecx Fixd Keep ecx | | | | | 37.#15 I4 Def Alloc ecx | |I4 a| | | [000002] 38.#16 ecx Fixd Keep ecx | |I4 a| | | 38.#17 I4 Use * Keep ecx | |I4 i| | | 39.#18 eax Kill Keep eax | | | | | 39.#19 ecx Kill Keep ecx | | | | | 39.#20 edx Kill Keep edx | | | | | 39.#21 eax Fixd Keep eax | | | | | 39.#22 I5 Def Alloc eax |I5 a| | | | [000006] 40.#23 I2 Use * ReLod edx |I5 a| |I2 a| | Keep edx |I5 a| |I2 i| | 40.#24 I5 Use * Keep eax |I5 i| | | | --------------------------------------------+----+----+----+----+ TreeID Loc RP# Name Type Action Reg |eax |ecx |edx |edi | --------------------------------------------+----+----+----+----+ 42.#25 BB4 PredBB7 | | | | | [000064] 47.#26 C6 Def Alloc eax |C6 a| | | | [000065] 48.#27 C6 Use * Keep eax |C6 i| | | | [000066] 51.#28 I7 Def Alloc eax |I7 a| | | | [000073] 58.#29 I7 Use * Keep eax |I7 i| | | | --------------------------------------------+----+----+----+----+ TreeID Loc RP# Name Type Action Reg |eax |ecx |edx |edi | --------------------------------------------+----+----+----+----+ 62.#30 BB10 PredBB4 | | | | | [000068] 67.#31 I8 Def Alloc eax |I8 a| | | | [000017] 70.#32 I8 Use * Keep eax |I8 i| | | | 71.#33 I9 Def Alloc eax |I9 a| | | | [000021] 74.#34 I9 Use * Keep eax |I9 i| | | | 75.#35 I10 Def Alloc eax |I10a| | | | [000023] 78.#36 I10 Use * Keep eax |I10i| | | | --------------------------------------------+----+----+----+----+ TreeID Loc RP# Name Type Action Reg |eax |ecx |edx |edi | --------------------------------------------+----+----+----+----+ 82.#37 BB5 PredBB10 | | | | | [000075] 87.#38 C11 Def Alloc eax |C11a| | | | [000076] 88.#39 C11 Use * Keep eax |C11i| | | | [000077] 91.#40 I12 Def Alloc eax |I12a| | | | [000084] 98.#41 I12 Use * Keep eax |I12i| | | | --------------------------------------------+----+----+----+----+ TreeID Loc RP# Name Type Action Reg |eax |ecx |edx |edi | --------------------------------------------+----+----+----+----+ 102.#42 BB6 PredBB10 | | | | | [000086] 107.#43 C13 Def Alloc eax |C13a| | | | [000087] 108.#44 C13 Use * Keep eax |C13i| | | | [000088] 111.#45 I14 Def Alloc eax |I14a| | | | [000095] 118.#46 I14 Use * Keep eax |I14i| | | | --------------------------------------------+----+----+----+----+ TreeID Loc RP# Name Type Action Reg |eax |ecx |edx |edi | --------------------------------------------+----+----+----+----+ 122.#47 BB13 PredBB5 | | | | | [000079] 127.#48 I15 Def Alloc eax |I15a| | | | [000025] 132.#49 I15 Use * Keep eax |I15i| | | | 133.#50 eax Kill Keep eax | | | | | 133.#51 ecx Kill Keep ecx | | | | | 133.#52 edx Kill Keep edx | | | | | --------------------------------------------+----+----+----+----+ TreeID Loc RP# Name Type Action Reg |eax |ecx |edx |edi | --------------------------------------------+----+----+----+----+ 134.#53 BB3 PredBB13 | | | | | [000051] 139.#54 C16 Def Alloc ecx | |C16a| | | [000129] 140.#55 ecx Fixd Keep ecx | |C16a| | | 140.#56 C16 Use * Keep ecx | |C16i| | | 141.#57 ecx Fixd Keep ecx | | | | | 141.#58 I17 Def Alloc ecx | |I17a| | | [000052] 143.#59 C18 Def Alloc edx | |I17a|C18a| | [000130] 144.#60 edx Fixd Keep edx | |I17a|C18a| | 144.#61 C18 Use * Keep edx | |I17a|C18i| | 145.#62 edx Fixd Keep edx | |I17a| | | 145.#63 I19 Def Alloc edx | |I17a|I19a| | [000014] 146.#64 ecx Fixd Keep ecx | |I17a|I19a| | 146.#65 I17 Use * Keep ecx | |I17i|I19a| | 146.#66 edx Fixd Keep edx | | |I19a| | 146.#67 I19 Use * Keep edx | | |I19i| | 147.#68 eax Kill Keep eax | | | | | 147.#69 ecx Kill Keep ecx | | | | | 147.#70 edx Kill Keep edx | | | | | --------------------------------------------+----+----+----+----+ TreeID Loc RP# Name Type Action Reg |eax |ecx |edx |edi | --------------------------------------------+----+----+----+----+ 152.#71 BB16 PredBB6 | | | | | [000090] 157.#72 I20 Def Alloc eax |I20a| | | | [000038] 160.#73 I20 Use * Keep eax |I20i| | | | 161.#74 I21 Def Alloc eax |I21a| | | | [000045] 164.#75 I21 Use * Keep eax |I21i| | | | 165.#76 I22 Def Alloc eax |I22a| | | | [000097] 166.#77 I22 Use * Keep eax |I22i| | | | [000099] 171.#78 C23 Def Alloc eax |C23a| | | | [000100] 172.#79 C23 Use * Keep eax |C23i| | | | [000101] 175.#80 I24 Def Alloc eax |I24a| | | | [000108] 182.#81 I24 Use * Keep eax |I24i| | | | --------------------------------------------+----+----+----+----+ TreeID Loc RP# Name Type Action Reg |eax |ecx |edx |edi | --------------------------------------------+----+----+----+----+ 186.#82 BB19 PredBB16 | | | | | [000098] 191.#83 I25 Def Alloc ecx | |I25a| | | [000128] 192.#84 ecx Fixd Keep ecx | |I25a| | | 192.#85 I25 Use * Keep ecx | |I25i| | | 193.#86 ecx Fixd Keep ecx | | | | | 193.#87 I26 Def Alloc ecx | |I26a| | | [000103] 195.#88 I27 Def Alloc eax |I27a|I26a| | | [000030] 198.#89 I27 Use * Keep eax |I27i|I26a| | | 199.#90 I28 Def Alloc eax |I28a|I26a| | | [000046] 204.#91 ecx Fixd Keep ecx |I28a|I26a| | | 204.#92 I26 Use * Keep ecx |I28a|I26i| | | 204.#93 I28 Use * Keep eax |I28i| | | | 205.#94 eax Kill Keep eax | | | | | 205.#95 ecx Kill Keep ecx | | | | | 205.#96 edx Kill Keep edx | | | | | --------------------------------------------+----+----+----+----+ TreeID Loc RP# Name Type Action Reg |eax |ecx |edx |edi | --------------------------------------------+----+----+----+----+ 206.#97 BB9 PredBB2 | | | | | [000003] 211.#98 eax Kill Keep eax | | | | | 211.#99 ecx Kill Keep ecx | | | | | 211.#100 edx Kill Keep edx | | | | | 211.#101 eax Fixd Keep eax | | | | | 211.#102 I29 Def * Alloc eax |I29i| | | | --------------------------------------------+----+----+----+----+ TreeID Loc RP# Name Type Action Reg |eax |ecx |edx |edi | --------------------------------------------+----+----+----+----+ 212.#103 BB12 PredBB4 | | | | | [000019] 217.#104 eax Kill Keep eax | | | | | 217.#105 ecx Kill Keep ecx | | | | | 217.#106 edx Kill Keep edx | | | | | 217.#107 eax Fixd Keep eax | | | | | 217.#108 I30 Def * Alloc eax |I30i| | | | --------------------------------------------+----+----+----+----+ TreeID Loc RP# Name Type Action Reg |eax |ecx |edx |edi | --------------------------------------------+----+----+----+----+ 218.#109 BB15 PredBB5 | | | | | [000028] 223.#110 eax Kill Keep eax | | | | | 223.#111 ecx Kill Keep ecx | | | | | 223.#112 edx Kill Keep edx | | | | | 223.#113 eax Fixd Keep eax | | | | | 223.#114 I31 Def * Alloc eax |I31i| | | | --------------------------------------------+----+----+----+----+ TreeID Loc RP# Name Type Action Reg |eax |ecx |edx |edi | --------------------------------------------+----+----+----+----+ 224.#115 BB18 PredBB6 | | | | | [000040] 229.#116 eax Kill Keep eax | | | | | 229.#117 ecx Kill Keep ecx | | | | | 229.#118 edx Kill Keep edx | | | | | 229.#119 eax Fixd Keep eax | | | | | 229.#120 I32 Def * Alloc eax |I32i| | | | --------------------------------------------+----+----+----+----+ TreeID Loc RP# Name Type Action Reg |eax |ecx |edx |edi | --------------------------------------------+----+----+----+----+ 230.#121 BB21 PredBB16 | | | | | [000032] 235.#122 eax Kill Keep eax | | | | | 235.#123 ecx Kill Keep ecx | | | | | 235.#124 edx Kill Keep edx | | | | | 235.#125 eax Fixd Keep eax | | | | | 235.#126 I33 Def * Alloc eax |I33i| | | | Recording the maximum number of concurrent spills: int: 1 pre-allocated temp #1, slot 0, size = 4 ---------- LSRA Stats ---------- Register selection order: ABCDEFGHIJKLMNOPQ Total Tracked Vars: 0 Total Reg Cand Vars: 0 Total number of Intervals: 33 Total number of RefPositions: 127 Total Number of spill temps created: 1 .......... BB02 [ 100.00]: REG_ORDER = 2 BB07 [ 100.00]: SpillCount = 1, REG_ORDER = 2 BB04 [ 100.00]: REG_ORDER = 2 BB10 [ 100.00]: REG_ORDER = 3 BB05 [ 80.00]: REG_ORDER = 2 BB13 [ 80.00]: REG_ORDER = 1 BB06 [ 20.00]: REG_ORDER = 2 BB16 [ 20.00]: REG_ORDER = 5 BB19 [ 20.00]: REG_ORDER = 2 .......... Total SpillCount : 1 Weighted: 100.000000 Total CopyReg : 0 Weighted: 0.000000 Total ResolutionMovs : 0 Weighted: 0.000000 Total SplitEdges : 0 Weighted: 0.000000 .......... Total REG_ORDER [#13] : 21 Weighted: 1320.000000 TUPLE STYLE DUMP WITH REGISTER ASSIGNMENTS Incoming Parameters: BB01 [0000] [???..???) -> BB02 (always), preds={} succs={BB02} ===== N004. NOP BB02 [0001] [???..???) -> BB07,BB09 (cond), preds={BB01} succs={BB09,BB07} ===== N008. IL_OFFSET INLRT @ 0x000[E-] N010. eax = CNS_INT(h) 0x430FB8 global ptr N012. V01 MEM; eax N014. eax = V01 MEM N016. STK = LEA(b+-4); eax N018. STK = IND ; STK N020. CNS_INT 0 N022. CMP ; STK N024. JCC cond=UEQ BB07 [0006] [000..01F) -> BB04 (always), preds={BB02,BB09} succs={BB04} ===== N028. IL_OFFSET INLRT @ 0x000[E-] S N030. eax = V01 MEM N000. edx = RELOAD ; eax N032. STK = LEA(b+8) ; edx N034. ecx = V00 MEM N036. ecx = PUTARG_REG; ecx N038. eax = CALL help; ecx N040. STOREIND ; STK,eax BB04 [0003] [???..???) -> BB10,BB12 (cond), preds={BB07} succs={BB12,BB10} ===== N044. IL_OFFSET INLRT @ 0x013[E-] N046. eax = CNS_INT(h) 0x430FB8 global ptr N048. V02 MEM; eax N050. eax = V02 MEM N052. STK = LEA(b+-4); eax N054. STK = IND ; STK N056. CNS_INT 0 N058. CMP ; STK N060. JCC cond=UEQ BB10 [0009] [???..???) -> BB06,BB05 (cond), preds={BB04,BB12} succs={BB05,BB06} ===== N064. IL_OFFSET INLRT @ 0x013[E-] N066. eax = V02 MEM N068. STK = LEA(b+8) ; eax N070. eax = IND ; STK N072. CNS_INT 2 N074. eax = AND ; eax N076. CNS_INT 0 N078. CMP ; eax N080. JCC cond=UNE BB05 [0004] [???..???) -> BB13,BB15 (cond), preds={BB10} succs={BB15,BB13} ===== N084. IL_OFFSET INLRT @ 0x013[E-] N086. eax = CNS_INT(h) 0x430FB8 global ptr N088. V03 MEM; eax N090. eax = V03 MEM N092. STK = LEA(b+-4); eax N094. STK = IND ; STK N096. CNS_INT 0 N098. CMP ; STK N100. JCC cond=UEQ BB06 [0005] [???..???) -> BB16,BB18 (cond), preds={BB10} succs={BB18,BB16} ===== N104. IL_OFFSET INLRT @ 0x013[E-] N106. eax = CNS_INT(h) 0x430FB8 global ptr N108. V04 MEM; eax N110. eax = V04 MEM N112. STK = LEA(b+-4); eax N114. STK = IND ; STK N116. CNS_INT 0 N118. CMP ; STK N120. JCC cond=UEQ BB13 [0012] [???..???) -> BB03 (always), preds={BB05,BB15} succs={BB03} ===== N124. IL_OFFSET INLRT @ 0x013[E-] N126. eax = V03 MEM N128. STK = LEA(b+8) ; eax N130. STK = IND ; STK N132. CALL ind ; STK BB03 [0002] [01F..02F) (return), preds={BB13,BB19} succs={} ===== N136. IL_OFFSET INLRT @ 0x01F[E-] N138. ecx = CNS_INT(h) '"Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverStri' N140. ecx = PUTARG_REG; ecx N142. edx = CNS_INT(h) '"valuetype GenericValuetype`1'IFaceCuriouslyRecurringGe' N144. edx = PUTARG_REG; edx N146. CALL ; ecx,edx N148. IL_OFFSET INLRT @ 0x02E[E-] N150. RETURN BB16 [0015] [???..???) -> BB19,BB21 (cond), preds={BB06,BB18} succs={BB21,BB19} ===== N154. IL_OFFSET INLRT @ 0x013[E-] N156. eax = V04 MEM N158. STK = LEA(b+8) ; eax N160. eax = IND ; STK N162. STK = LEA(b+2) ; eax N164. eax = IND ; STK N166. V05 MEM; eax N168. IL_OFFSET INLRT @ 0x013[E-] N170. eax = CNS_INT(h) 0x430FB8 global ptr N172. V06 MEM; eax N174. eax = V06 MEM N176. STK = LEA(b+-4); eax N178. STK = IND ; STK N180. CNS_INT 0 N182. CMP ; STK N184. JCC cond=UEQ BB19 [0018] [013..???) -> BB03 (always), preds={BB16,BB21} succs={BB03} ===== N188. IL_OFFSET INLRT @ 0x013[E-] N190. ecx = V05 MEM N192. ecx = PUTARG_REG; ecx N194. eax = V06 MEM N196. STK = LEA(b+8) ; eax N198. eax = IND ; STK N200. STK = LEA(b+-2); eax N202. STK = IND ; STK N204. CALL ind ; ecx,STK BB09 [0008] [???..???) -> BB07 (always), preds={BB02} succs={BB07} ===== N208. IL_OFFSET INLRT @ 0x000[E-] * N210. eax = CALL help BB12 [0011] [???..???) -> BB10 (always), preds={BB04} succs={BB10} ===== N214. IL_OFFSET INLRT @ 0x013[E-] * N216. eax = CALL help BB15 [0014] [???..???) -> BB13 (always), preds={BB05} succs={BB13} ===== N220. IL_OFFSET INLRT @ 0x013[E-] * N222. eax = CALL help BB18 [0017] [???..???) -> BB16 (always), preds={BB06} succs={BB16} ===== N226. IL_OFFSET INLRT @ 0x013[E-] * N228. eax = CALL help BB21 [0020] [???..???) -> BB19 (always), preds={BB16} succs={BB19} ===== N232. IL_OFFSET INLRT @ 0x013[E-] * N234. eax = CALL help *************** Finishing PHASE Linear scan register alloc Trees after Linear scan register alloc ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [???..???)-> BB02 (always) i LIR keep internal q BB02 [0001] 1 BB01 1 [???..???)-> BB07,BB09 ( cond ) i LIR hascall BB09 [0008] 1 BB02 0 [???..???)-> BB07 (always) LIR rare internal q BB07 [0006] 2 BB02,BB09 1 [000..01F)-> BB04 (always) i LIR hascall q BB04 [0003] 1 BB07 1 [???..???)-> BB10,BB12 ( cond ) i LIR internal hascall BB12 [0011] 1 BB04 0 [???..???)-> BB10 (always) LIR rare internal q BB10 [0009] 2 BB04,BB12 1 [???..???)-> BB06,BB05 ( cond ) i LIR internal hascall q BB05 [0004] 1 BB10 0.80 [???..???)-> BB13,BB15 ( cond ) i LIR internal hascall gcsafe BB15 [0014] 1 BB05 0 [???..???)-> BB13 (always) LIR rare internal q BB13 [0012] 2 BB05,BB15 0.80 [???..???)-> BB03 (always) i LIR internal hascall gcsafe BB06 [0005] 1 BB10 0.20 [???..???)-> BB16,BB18 ( cond ) i LIR internal hascall gcsafe BB18 [0017] 1 BB06 0 [???..???)-> BB16 (always) LIR rare internal q BB16 [0015] 2 BB06,BB18 0.20 [???..???)-> BB19,BB21 ( cond ) i LIR internal hascall gcsafe BB21 [0020] 1 BB16 0 [???..???)-> BB19 (always) LIR rare internal q BB19 [0018] 2 BB16,BB21 0.20 [013..???)-> BB03 (always) i LIR internal hascall gcsafe q BB03 [0002] 2 BB13,BB19 1 [01F..02F) (return) i LIR internal hascall gcsafe ---------------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [0000] [???..???) -> BB02 (always), preds={} succs={BB02} N004 ( 0, 0) [000000] ----------- NOP void REG NA ------------ BB02 [0001] [???..???) -> BB07,BB09 (cond), preds={BB01} succs={BB09,BB07} N008 (???,???) [000110] ----------- IL_OFFSET void INLRT @ 0x000[E-] REG NA N010 ( 1, 4) [000053] H---------- t53 = CNS_INT(h) int 0x430FB8 global ptr REG eax /--* t53 int N012 ( 5, 7) [000054] DA--------- * STORE_LCL_VAR int V01 loc0 NA REG NA N014 ( 3, 2) [000055] ----------- t55 = LCL_VAR int V01 loc0 eax REG eax /--* t55 int N016 ( 9, 10) [000059] -c--------- t59 = * LEA(b+-4) int REG NA /--* t59 int N018 ( 11, 12) [000060] nA--G------ t60 = * IND int REG NA N020 ( 1, 1) [000061] -c--------- t61 = CNS_INT int 0 REG NA /--* t60 int +--* t61 int N022 ( 13, 14) [000062] -A--G------ * CMP void REG NA N024 ( 15, 16) [000063] -A--G------ JCC void cond=UEQ REG NA ------------ BB09 [0008] [???..???) -> BB07 (always), preds={BB02} succs={BB07} N208 (???,???) [000111] ----------- IL_OFFSET void INLRT @ 0x000[E-] REG NA N210 ( 14, 5) [000003] H-CXG------ u3 = CALL help byref CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE REG eax ------------ BB07 [0006] [000..01F) -> BB04 (always), preds={BB02,BB09} succs={BB04} N028 (???,???) [000112] ----------- IL_OFFSET void INLRT @ 0x000[E-] REG NA N030 ( 3, 2) [000057] ----------Z t57 = LCL_VAR int V01 loc0 eax REG eax /--* t57 int [000131] ----------- t131 = * RELOAD int REG edx /--* t131 int N032 ( 4, 3) [000005] -c--------- t5 = * LEA(b+8) byref REG NA N034 ( 3, 2) [000001] !---------- t1 = LCL_VAR int V00 TypeCtx ecx REG ecx /--* t1 int N036 (???,???) [000127] ----------- t127 = * PUTARG_REG int REG ecx /--* t127 int arg0 in ecx N038 ( 17, 8) [000002] --C-G------ t2 = * CALL help int CORINFO_HELP_READYTORUN_GENERIC_HANDLE REG eax /--* t5 byref +--* t2 int N040 ( 24, 14) [000006] VAC-GO----- * STOREIND int REG NA ------------ BB04 [0003] [???..???) -> BB10,BB12 (cond), preds={BB07} succs={BB12,BB10} N044 (???,???) [000113] ----------- IL_OFFSET void INLRT @ 0x013[E-] REG NA N046 ( 1, 4) [000064] H---------- t64 = CNS_INT(h) int 0x430FB8 global ptr REG eax /--* t64 int N048 ( 5, 7) [000065] DA--------- * STORE_LCL_VAR int V02 tmp1 NA REG NA N050 ( 3, 2) [000066] ----------- t66 = LCL_VAR int V02 tmp1 eax REG eax /--* t66 int N052 ( 9, 10) [000070] -c--------- t70 = * LEA(b+-4) int REG NA /--* t70 int N054 ( 11, 12) [000071] nA--G------ t71 = * IND int REG NA N056 ( 1, 1) [000072] -c--------- t72 = CNS_INT int 0 REG NA /--* t71 int +--* t72 int N058 ( 13, 14) [000073] -A--G------ * CMP void REG NA N060 ( 15, 16) [000074] -A--G------ JCC void cond=UEQ REG NA ------------ BB12 [0011] [???..???) -> BB10 (always), preds={BB04} succs={BB10} N214 (???,???) [000114] ----------- IL_OFFSET void INLRT @ 0x013[E-] REG NA N216 ( 14, 5) [000019] H-CXG------ u19 = CALL help byref CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE REG eax ------------ BB10 [0009] [???..???) -> BB06,BB05 (cond), preds={BB04,BB12} succs={BB05,BB06} N064 (???,???) [000115] ----------- IL_OFFSET void INLRT @ 0x013[E-] REG NA N066 ( 3, 2) [000068] ----------- t68 = LCL_VAR int V02 tmp1 eax REG eax /--* t68 int N068 ( 4, 3) [000018] -c--------- t18 = * LEA(b+8) byref REG NA /--* t18 byref N070 ( 6, 5) [000017] V---GO----- t17 = * IND int REG eax N072 ( 1, 1) [000016] -c--------- t16 = CNS_INT int 2 REG NA /--* t17 int +--* t16 int N074 ( 8, 7) [000021] ----GO----- t21 = * AND int REG eax N076 ( 1, 1) [000022] -c--------- t22 = CNS_INT int 0 REG NA /--* t21 int +--* t22 int N078 ( 10, 9) [000023] ----GO-N--- * CMP void REG NA N080 ( 12, 11) [000024] ----GO----- JCC void cond=UNE REG NA ------------ BB05 [0004] [???..???) -> BB13,BB15 (cond), preds={BB10} succs={BB15,BB13} N084 (???,???) [000116] ----------- IL_OFFSET void INLRT @ 0x013[E-] REG NA N086 ( 1, 4) [000075] H---------- t75 = CNS_INT(h) int 0x430FB8 global ptr REG eax /--* t75 int N088 ( 5, 7) [000076] DA--------- * STORE_LCL_VAR int V03 tmp2 NA REG NA N090 ( 3, 2) [000077] ----------- t77 = LCL_VAR int V03 tmp2 eax REG eax /--* t77 int N092 ( 9, 10) [000081] -c--------- t81 = * LEA(b+-4) int REG NA /--* t81 int N094 ( 11, 12) [000082] nA--G------ t82 = * IND int REG NA N096 ( 1, 1) [000083] -c--------- t83 = CNS_INT int 0 REG NA /--* t82 int +--* t83 int N098 ( 13, 14) [000084] -A--G------ * CMP void REG NA N100 ( 15, 16) [000085] -A--G------ JCC void cond=UEQ REG NA ------------ BB15 [0014] [???..???) -> BB13 (always), preds={BB05} succs={BB13} N220 (???,???) [000117] ----------- IL_OFFSET void INLRT @ 0x013[E-] REG NA N222 ( 14, 5) [000028] H-CXG------ u28 = CALL help byref CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE REG eax ------------ BB13 [0012] [???..???) -> BB03 (always), preds={BB05,BB15} succs={BB03} N124 (???,???) [000118] ----------- IL_OFFSET void INLRT @ 0x013[E-] REG NA N126 ( 3, 2) [000079] ----------- t79 = LCL_VAR int V03 tmp2 eax REG eax /--* t79 int N128 ( 4, 3) [000027] -c--------- t27 = * LEA(b+8) byref REG NA /--* t27 byref N130 ( 6, 5) [000026] Vc--GO----- t26 = * IND int REG NA /--* t26 int calli tgt N132 ( 23, 7) [000025] --CXGO----- * CALL ind void REG NA ------------ BB06 [0005] [???..???) -> BB16,BB18 (cond), preds={BB10} succs={BB18,BB16} N104 (???,???) [000119] ----------- IL_OFFSET void INLRT @ 0x013[E-] REG NA N106 ( 1, 4) [000086] H---------- t86 = CNS_INT(h) int 0x430FB8 global ptr REG eax /--* t86 int N108 ( 5, 7) [000087] DA--------- * STORE_LCL_VAR int V04 tmp3 NA REG NA N110 ( 3, 2) [000088] ----------- t88 = LCL_VAR int V04 tmp3 eax REG eax /--* t88 int N112 ( 9, 10) [000092] -c--------- t92 = * LEA(b+-4) int REG NA /--* t92 int N114 ( 11, 12) [000093] nA--G------ t93 = * IND int REG NA N116 ( 1, 1) [000094] -c--------- t94 = CNS_INT int 0 REG NA /--* t93 int +--* t94 int N118 ( 13, 14) [000095] -A--G------ * CMP void REG NA N120 ( 15, 16) [000096] -A--G------ JCC void cond=UEQ REG NA ------------ BB18 [0017] [???..???) -> BB16 (always), preds={BB06} succs={BB16} N226 (???,???) [000120] ----------- IL_OFFSET void INLRT @ 0x013[E-] REG NA N228 ( 14, 5) [000040] H-CXG------ u40 = CALL help byref CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE REG eax ------------ BB16 [0015] [???..???) -> BB19,BB21 (cond), preds={BB06,BB18} succs={BB21,BB19} N154 (???,???) [000121] ----------- IL_OFFSET void INLRT @ 0x013[E-] REG NA N156 ( 3, 2) [000090] ----------- t90 = LCL_VAR int V04 tmp3 eax REG eax /--* t90 int N158 ( 4, 3) [000039] -c--------- t39 = * LEA(b+8) byref REG NA /--* t39 byref N160 ( 6, 5) [000038] V---GO----- t38 = * IND int REG eax /--* t38 int N162 ( 9, 8) [000044] -c--------- t44 = * LEA(b+2) int REG NA /--* t44 int N164 ( 9, 8) [000045] ---XGO----- t45 = * IND int REG eax /--* t45 int N166 ( 13, 11) [000097] DA-XGO----- * STORE_LCL_VAR int V05 tmp4 NA REG NA N168 (???,???) [000122] ----------- IL_OFFSET void INLRT @ 0x013[E-] REG NA N170 ( 1, 4) [000099] H---------- t99 = CNS_INT(h) int 0x430FB8 global ptr REG eax /--* t99 int N172 ( 5, 7) [000100] DA--------- * STORE_LCL_VAR int V06 tmp5 NA REG NA N174 ( 3, 2) [000101] ----------- t101 = LCL_VAR int V06 tmp5 eax REG eax /--* t101 int N176 ( 9, 10) [000105] -c--------- t105 = * LEA(b+-4) int REG NA /--* t105 int N178 ( 11, 12) [000106] nA--G------ t106 = * IND int REG NA N180 ( 1, 1) [000107] -c--------- t107 = CNS_INT int 0 REG NA /--* t106 int +--* t107 int N182 ( 13, 14) [000108] -A--G------ * CMP void REG NA N184 ( 15, 16) [000109] -A--G------ JCC void cond=UEQ REG NA ------------ BB21 [0020] [???..???) -> BB19 (always), preds={BB16} succs={BB19} N232 (???,???) [000123] ----------- IL_OFFSET void INLRT @ 0x013[E-] REG NA N234 ( 14, 5) [000032] H-CXG------ u32 = CALL help byref CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE REG eax ------------ BB19 [0018] [013..???) -> BB03 (always), preds={BB16,BB21} succs={BB03} N188 (???,???) [000124] ----------- IL_OFFSET void INLRT @ 0x013[E-] REG NA N190 ( 3, 2) [000098] ----------- t98 = LCL_VAR int V05 tmp4 ecx REG ecx /--* t98 int N192 (???,???) [000128] ----------- t128 = * PUTARG_REG int REG ecx N194 ( 3, 2) [000103] ----------- t103 = LCL_VAR int V06 tmp5 eax REG eax /--* t103 int N196 ( 4, 3) [000031] -c--------- t31 = * LEA(b+8) byref REG NA /--* t31 byref N198 ( 6, 5) [000030] V---GO----- t30 = * IND int REG eax /--* t30 int N200 ( 7, 6) [000035] -c--------- t35 = * LEA(b+-2) int REG NA /--* t35 int N202 ( 9, 8) [000036] -c-XGO----- t36 = * IND int REG NA /--* t128 int gctx in ecx +--* t36 int calli tgt N204 ( 29, 13) [000046] --CXGO----- * CALL ind void REG NA ------------ BB03 [0002] [01F..02F) (return), preds={BB13,BB19} succs={} N136 (???,???) [000125] ----------- IL_OFFSET void INLRT @ 0x01F[E-] REG NA N138 ( 1, 4) [000051] H---------- t51 = CNS_INT(h) ref '"Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverStri' REG ecx /--* t51 ref N140 (???,???) [000129] ----------- t129 = * PUTARG_REG ref REG ecx N142 ( 1, 4) [000052] H---------- t52 = CNS_INT(h) ref '"valuetype GenericValuetype`1'IFaceCuriouslyRecurringGe' REG edx /--* t52 ref N144 (???,???) [000130] ----------- t130 = * PUTARG_REG ref REG edx /--* t129 ref arg0 in ecx +--* t130 ref arg1 in edx N146 ( 16, 15) [000014] --CXG------ * CALL void Statics:CheckForFailure(System.String,System.String) REG NA N148 (???,???) [000126] ----------- IL_OFFSET void INLRT @ 0x02E[E-] REG NA N150 ( 0, 0) [000015] ----------- RETURN void REG NA ------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist *************** Starting PHASE Place 'align' instructions *************** In placeLoopAlignInstructions() Not aligning loops; ShouldAlignLoops is false *************** Finishing PHASE Place 'align' instructions [no changes] *************** In genGenerateCode() ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [???..???)-> BB02 (always) i LIR keep internal q BB02 [0001] 1 BB01 1 [???..???)-> BB07,BB09 ( cond ) i LIR hascall BB09 [0008] 1 BB02 0 [???..???)-> BB07 (always) LIR rare internal q BB07 [0006] 2 BB02,BB09 1 [000..01F)-> BB04 (always) i LIR hascall q BB04 [0003] 1 BB07 1 [???..???)-> BB10,BB12 ( cond ) i LIR internal hascall BB12 [0011] 1 BB04 0 [???..???)-> BB10 (always) LIR rare internal q BB10 [0009] 2 BB04,BB12 1 [???..???)-> BB06,BB05 ( cond ) i LIR internal hascall q BB05 [0004] 1 BB10 0.80 [???..???)-> BB13,BB15 ( cond ) i LIR internal hascall gcsafe BB15 [0014] 1 BB05 0 [???..???)-> BB13 (always) LIR rare internal q BB13 [0012] 2 BB05,BB15 0.80 [???..???)-> BB03 (always) i LIR internal hascall gcsafe BB06 [0005] 1 BB10 0.20 [???..???)-> BB16,BB18 ( cond ) i LIR internal hascall gcsafe BB18 [0017] 1 BB06 0 [???..???)-> BB16 (always) LIR rare internal q BB16 [0015] 2 BB06,BB18 0.20 [???..???)-> BB19,BB21 ( cond ) i LIR internal hascall gcsafe BB21 [0020] 1 BB16 0 [???..???)-> BB19 (always) LIR rare internal q BB19 [0018] 2 BB16,BB21 0.20 [013..???)-> BB03 (always) i LIR internal hascall gcsafe q BB03 [0002] 2 BB13,BB19 1 [01F..02F) (return) i LIR internal hascall gcsafe ---------------------------------------------------------------------------------------------------------------------------------------------- *************** Starting PHASE Generate code *************** In fgDebugCheckBBlist Finalizing stack frame Modified regs: [eax ecx edx edi] Callee-saved registers pushed: 1 [edi] *************** In lvaAssignFrameOffsets(FINAL_FRAME_LAYOUT) Assign V00 TypeCtx, size=4, stkOffs=-0x14 Assign V01 loc0, size=4, stkOffs=-0x18 Assign V02 tmp1, size=4, stkOffs=-0x1c Assign V03 tmp2, size=4, stkOffs=-0x20 Assign V04 tmp3, size=4, stkOffs=-0x24 Assign V05 tmp4, size=4, stkOffs=-0x28 Assign V06 tmp5, size=4, stkOffs=-0x2c --- delta bump 4 for RA --- delta bump 4 for FP --- virtual stack offset to actual stack offset delta is 8 -- V00 was -20, now -12 -- V01 was -24, now -16 -- V02 was -28, now -20 -- V03 was -32, now -24 -- V04 was -36, now -28 -- V05 was -40, now -32 -- V06 was -44, now -36 ; Final local variable assignments ; ; V00 TypeCtx [V00 ] ( 1, 1 ) int -> [ebp-0x0C] do-not-enreg[] ; V01 loc0 [V01 ] ( 1, 1 ) int -> [ebp-0x10] do-not-enreg[] "fgMakeTemp is creating a new local variable" ; V02 tmp1 [V02 ] ( 1, 1 ) int -> [ebp-0x14] do-not-enreg[] "fgMakeTemp is creating a new local variable" ; V03 tmp2 [V03 ] ( 1, 1 ) int -> [ebp-0x18] do-not-enreg[] "fgMakeTemp is creating a new local variable" ; V04 tmp3 [V04 ] ( 1, 1 ) int -> [ebp-0x1C] do-not-enreg[] "fgMakeTemp is creating a new local variable" ; V05 tmp4 [V05 ] ( 1, 1 ) int -> [ebp-0x20] do-not-enreg[] "Spilling to split statement for tree" ; V06 tmp5 [V06 ] ( 1, 1 ) int -> [ebp-0x24] do-not-enreg[] "fgMakeTemp is creating a new local variable" ; TEMP_01 int -> [ebp-0x28] ; ; Lcl frame size = 36 Created: G_M60420_IG02: ; offs=0x000000, size=0x0000, bbWeight=1, gcrefRegs=00000000 {} Mark labels for codegen BB01 : first block BB07 : branch target BB10 : branch target BB06 : branch target BB13 : branch target BB03 : branch target BB16 : branch target BB19 : branch target *************** After genMarkLabelsForCodegen() ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [???..???)-> BB02 (always) i LIR keep internal label q BB02 [0001] 1 BB01 1 [???..???)-> BB07,BB09 ( cond ) i LIR hascall BB09 [0008] 1 BB02 0 [???..???)-> BB07 (always) LIR rare internal q BB07 [0006] 2 BB02,BB09 1 [000..01F)-> BB04 (always) i LIR label hascall q BB04 [0003] 1 BB07 1 [???..???)-> BB10,BB12 ( cond ) i LIR internal hascall BB12 [0011] 1 BB04 0 [???..???)-> BB10 (always) LIR rare internal q BB10 [0009] 2 BB04,BB12 1 [???..???)-> BB06,BB05 ( cond ) i LIR internal label hascall q BB05 [0004] 1 BB10 0.80 [???..???)-> BB13,BB15 ( cond ) i LIR internal hascall gcsafe BB15 [0014] 1 BB05 0 [???..???)-> BB13 (always) LIR rare internal q BB13 [0012] 2 BB05,BB15 0.80 [???..???)-> BB03 (always) i LIR internal label hascall gcsafe BB06 [0005] 1 BB10 0.20 [???..???)-> BB16,BB18 ( cond ) i LIR internal label hascall gcsafe BB18 [0017] 1 BB06 0 [???..???)-> BB16 (always) LIR rare internal q BB16 [0015] 2 BB06,BB18 0.20 [???..???)-> BB19,BB21 ( cond ) i LIR internal label hascall gcsafe BB21 [0020] 1 BB16 0 [???..???)-> BB19 (always) LIR rare internal q BB19 [0018] 2 BB16,BB21 0.20 [013..???)-> BB03 (always) i LIR internal label hascall gcsafe q BB03 [0002] 2 BB13,BB19 1 [01F..02F) (return) i LIR internal label hascall gcsafe ---------------------------------------------------------------------------------------------------------------------------------------------- Setting stack level from -572662307 to 0 =============== Generating BB01 [0000] [???..???) -> BB02 (always), preds={} succs={BB02} flags=0x00000100.00008039: i LIR keep internal label q BB01 IN (0)={} + ByrefExposed + GcHeap OUT(0)={} + ByrefExposed + GcHeap Liveness not changing: 0000000000000000 {} Live regs: (unchanged) 00000000 {} GC regs: (unchanged) 00000000 {} Byref regs: (unchanged) 00000000 {} L_M60420_BB01: Label: G_M60420_IG02, GCvars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {} Scope info: begin block BB01, IL range [???..???) Scope info: ignoring block beginning Generating: N004 ( 0, 0) [000000] ----------- NOP void REG NA Scope info: ignoring block end Variable Live Range History Dump for BB01 ..None.. =============== Generating BB02 [0001] [???..???) -> BB07,BB09 (cond), preds={BB01} succs={BB09,BB07} flags=0x00000000.10000011: i LIR hascall BB02 IN (0)={} + ByrefExposed + GcHeap OUT(0)={} + ByrefExposed + GcHeap Liveness not changing: 0000000000000000 {} Live regs: (unchanged) 00000000 {} GC regs: (unchanged) 00000000 {} Byref regs: (unchanged) 00000000 {} L_M60420_BB02: Scope info: begin block BB02, IL range [???..???) Scope info: ignoring block beginning Added IP mapping: 0x0000 STACK_EMPTY (G_M60420_IG02,ins#0,ofs#0) label Generating: N008 (???,???) [000110] ----------- IL_OFFSET void INLRT @ 0x000[E-] REG NA Generating: N010 ( 1, 4) [000053] H---------- t53 = CNS_INT(h) int 0x430FB8 global ptr REG eax Mapped BB02 to G_M60420_IG02 IN0001: mov eax, (reloc 0x4000000000430fb8) /--* t53 int Generating: N012 ( 5, 7) [000054] DA--------- * STORE_LCL_VAR int V01 loc0 NA REG NA IN0002: mov dword ptr [V01 ebp-0x10], eax Generating: N014 ( 3, 2) [000055] ----------- t55 = LCL_VAR int V01 loc0 eax REG eax IN0003: mov eax, dword ptr [V01 ebp-0x10] /--* t55 int Generating: N016 ( 9, 10) [000059] -c--------- t59 = * LEA(b+-4) int REG NA /--* t59 int Generating: N018 ( 11, 12) [000060] nA--G------ t60 = * IND int REG NA Generating: N020 ( 1, 1) [000061] -c--------- t61 = CNS_INT int 0 REG NA /--* t60 int +--* t61 int Generating: N022 ( 13, 14) [000062] -A--G------ * CMP void REG NA IN0004: cmp dword ptr [eax-0x04], 0 Generating: N024 ( 15, 16) [000063] -A--G------ JCC void cond=UEQ REG NA IN0005: je L_M60420_BB07 Scope info: ignoring block end Variable Live Range History Dump for BB02 ..None.. =============== Generating BB09 [0008] [???..???) -> BB07 (always), preds={BB02} succs={BB07} flags=0x00000100.00002021: LIR rare internal q BB09 IN (0)={} + ByrefExposed + GcHeap OUT(0)={} + ByrefExposed + GcHeap Liveness not changing: 0000000000000000 {} Live regs: (unchanged) 00000000 {} GC regs: (unchanged) 00000000 {} Byref regs: (unchanged) 00000000 {} L_M60420_BB09: Adding label due to BB weight difference: BBJ_COND BB02 with weight 100 different from BB09 with weight 0 Saved: G_M60420_IG02: ; offs=0x000000, size=0x0015, bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB02 [0001], byref Created: G_M60420_IG03: ; offs=0x000015, size=0x0000, bbWeight=0, gcrefRegs=00000000 {} Label: G_M60420_IG03, GCvars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {} Scope info: begin block BB09, IL range [???..???) Scope info: ignoring block beginning Added IP mapping: NO_MAP (G_M60420_IG03,ins#0,ofs#0) label Added IP mapping: 0x0000 STACK_EMPTY (G_M60420_IG03,ins#0,ofs#0) label Generating: N208 (???,???) [000111] ----------- IL_OFFSET void INLRT @ 0x000[E-] REG NA Generating: N210 ( 14, 5) [000003] H-CXG------ u3 = CALL help byref CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE REG eax Call: GCvars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {} Mapped BB09 to G_M60420_IG03 IN0006: call CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE Byref regs: 00000000 {} => 00000001 {eax} Byref regs: 00000001 {eax} => 00000000 {} Scope info: ignoring block end Variable Live Range History Dump for BB09 ..None.. =============== Generating BB07 [0006] [000..01F) -> BB04 (always), preds={BB02,BB09} succs={BB04} flags=0x00000100.10008011: i LIR label hascall q BB07 IN (0)={} + ByrefExposed + GcHeap OUT(0)={} + ByrefExposed + GcHeap Liveness not changing: 0000000000000000 {} Live regs: (unchanged) 00000000 {} GC regs: (unchanged) 00000000 {} Byref regs: (unchanged) 00000000 {} L_M60420_BB07: Saved: G_M60420_IG03: ; offs=0x000015, size=0x0005, bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB09 [0008], byref Created: G_M60420_IG04: ; offs=0x00001A, size=0x0000, bbWeight=1, gcrefRegs=00000000 {} Label: G_M60420_IG04, GCvars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {} Scope info: begin block BB07, IL range [000..01F) Scope info: opening scope, LVnum=0 [000..02F) Debug: New V00 debug range: first genIPmappingAdd: ignoring duplicate IL offset 0x0 Generating: N028 (???,???) [000112] ----------- IL_OFFSET void INLRT @ 0x000[E-] REG NA Generating: N030 ( 3, 2) [000057] ----------Z t57 = LCL_VAR int V01 loc0 eax REG eax Mapped BB07 to G_M60420_IG04 IN0007: mov eax, dword ptr [V01 ebp-0x10] reused temp #1, slot 0, size = 4 The register eax spilled with [000057] IN0008: mov dword ptr [TEMP_01 ebp-0x28], eax /--* t57 int Generating: [000131] ----------- t131 = * RELOAD int REG edx /--* t131 int Generating: N032 ( 4, 3) [000005] -c--------- t5 = * LEA(b+8) byref REG NA Generating: N034 ( 3, 2) [000001] !---------- t1 = LCL_VAR int V00 TypeCtx ecx REG ecx IN0009: mov ecx, dword ptr [V00 ebp-0x0C] /--* t1 int Generating: N036 (???,???) [000127] ----------- t127 = * PUTARG_REG int REG ecx /--* t127 int arg0 in ecx Generating: N038 ( 17, 8) [000002] --C-G------ t2 = * CALL help int CORINFO_HELP_READYTORUN_GENERIC_HANDLE REG eax Call: GCvars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {} IN000a: call CORINFO_HELP_READYTORUN_GENERIC_HANDLE /--* t5 byref +--* t2 int Generating: N040 ( 24, 14) [000006] VAC-GO----- * STOREIND int REG NA Tree-Node marked unspilled from [000057] IN000b: mov edx, dword ptr [TEMP_01 ebp-0x28] release temp #1, slot 0, size = 4 IN000c: mov dword ptr [edx+0x08], eax Variable Live Range History Dump for BB07 V00 TypeCtx: ebp[-12] (1 slot) [(G_M60420_IG04,ins#0,ofs#0), ...] =============== Generating BB04 [0003] [???..???) -> BB10,BB12 (cond), preds={BB07} succs={BB12,BB10} flags=0x00000000.10000031: i LIR internal hascall BB04 IN (0)={} + ByrefExposed + GcHeap OUT(0)={} + ByrefExposed + GcHeap Liveness not changing: 0000000000000000 {} Live regs: (unchanged) 00000000 {} GC regs: (unchanged) 00000000 {} Byref regs: (unchanged) 00000000 {} L_M60420_BB04: Scope info: begin block BB04, IL range [???..???) Scope info: ignoring block beginning Added IP mapping: NO_MAP (G_M60420_IG04,ins#6,ofs#20) label Added IP mapping: 0x0013 STACK_EMPTY (G_M60420_IG04,ins#6,ofs#20) label Generating: N044 (???,???) [000113] ----------- IL_OFFSET void INLRT @ 0x013[E-] REG NA Generating: N046 ( 1, 4) [000064] H---------- t64 = CNS_INT(h) int 0x430FB8 global ptr REG eax Mapped BB04 to G_M60420_IG04 IN000d: mov eax, (reloc 0x4000000000430fb8) /--* t64 int Generating: N048 ( 5, 7) [000065] DA--------- * STORE_LCL_VAR int V02 tmp1 NA REG NA IN000e: mov dword ptr [V02 ebp-0x14], eax Generating: N050 ( 3, 2) [000066] ----------- t66 = LCL_VAR int V02 tmp1 eax REG eax IN000f: mov eax, dword ptr [V02 ebp-0x14] /--* t66 int Generating: N052 ( 9, 10) [000070] -c--------- t70 = * LEA(b+-4) int REG NA /--* t70 int Generating: N054 ( 11, 12) [000071] nA--G------ t71 = * IND int REG NA Generating: N056 ( 1, 1) [000072] -c--------- t72 = CNS_INT int 0 REG NA /--* t71 int +--* t72 int Generating: N058 ( 13, 14) [000073] -A--G------ * CMP void REG NA IN0010: cmp dword ptr [eax-0x04], 0 Generating: N060 ( 15, 16) [000074] -A--G------ JCC void cond=UEQ REG NA IN0011: je L_M60420_BB10 Scope info: ignoring block end Variable Live Range History Dump for BB04 V00 TypeCtx: ebp[-12] (1 slot) [(G_M60420_IG04,ins#0,ofs#0), ...] =============== Generating BB12 [0011] [???..???) -> BB10 (always), preds={BB04} succs={BB10} flags=0x00000100.00002021: LIR rare internal q BB12 IN (0)={} + ByrefExposed + GcHeap OUT(0)={} + ByrefExposed + GcHeap Liveness not changing: 0000000000000000 {} Live regs: (unchanged) 00000000 {} GC regs: (unchanged) 00000000 {} Byref regs: (unchanged) 00000000 {} L_M60420_BB12: Adding label due to BB weight difference: BBJ_COND BB04 with weight 100 different from BB12 with weight 0 Saved: G_M60420_IG04: ; offs=0x00001A, size=0x0029, bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB07 [0006], BB04 [0003], byref Created: G_M60420_IG05: ; offs=0x000043, size=0x0000, bbWeight=0, gcrefRegs=00000000 {} Label: G_M60420_IG05, GCvars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {} Scope info: begin block BB12, IL range [???..???) Scope info: ignoring block beginning Added IP mapping: NO_MAP (G_M60420_IG05,ins#0,ofs#0) label Added IP mapping: 0x0013 STACK_EMPTY (G_M60420_IG05,ins#0,ofs#0) label Generating: N214 (???,???) [000114] ----------- IL_OFFSET void INLRT @ 0x013[E-] REG NA Generating: N216 ( 14, 5) [000019] H-CXG------ u19 = CALL help byref CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE REG eax Call: GCvars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {} Mapped BB12 to G_M60420_IG05 IN0012: call CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE Byref regs: 00000000 {} => 00000001 {eax} Byref regs: 00000001 {eax} => 00000000 {} Scope info: ignoring block end Variable Live Range History Dump for BB12 V00 TypeCtx: ebp[-12] (1 slot) [(G_M60420_IG04,ins#0,ofs#0), ...] =============== Generating BB10 [0009] [???..???) -> BB06,BB05 (cond), preds={BB04,BB12} succs={BB05,BB06} flags=0x00000100.10008031: i LIR internal label hascall q BB10 IN (0)={} + ByrefExposed + GcHeap OUT(0)={} + ByrefExposed + GcHeap Liveness not changing: 0000000000000000 {} Live regs: (unchanged) 00000000 {} GC regs: (unchanged) 00000000 {} Byref regs: (unchanged) 00000000 {} L_M60420_BB10: Saved: G_M60420_IG05: ; offs=0x000043, size=0x0005, bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB12 [0011], byref Created: G_M60420_IG06: ; offs=0x000048, size=0x0000, bbWeight=1, gcrefRegs=00000000 {} Label: G_M60420_IG06, GCvars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {} Scope info: begin block BB10, IL range [???..???) Scope info: ignoring block beginning Added IP mapping: NO_MAP (G_M60420_IG06,ins#0,ofs#0) label Added IP mapping: 0x0013 STACK_EMPTY (G_M60420_IG06,ins#0,ofs#0) label Generating: N064 (???,???) [000115] ----------- IL_OFFSET void INLRT @ 0x013[E-] REG NA Generating: N066 ( 3, 2) [000068] ----------- t68 = LCL_VAR int V02 tmp1 eax REG eax Mapped BB10 to G_M60420_IG06 IN0013: mov eax, dword ptr [V02 ebp-0x14] /--* t68 int Generating: N068 ( 4, 3) [000018] -c--------- t18 = * LEA(b+8) byref REG NA /--* t18 byref Generating: N070 ( 6, 5) [000017] V---GO----- t17 = * IND int REG eax IN0014: mov eax, dword ptr [eax+0x08] Generating: N072 ( 1, 1) [000016] -c--------- t16 = CNS_INT int 2 REG NA /--* t17 int +--* t16 int Generating: N074 ( 8, 7) [000021] ----GO----- t21 = * AND int REG eax IN0015: and eax, 2 Generating: N076 ( 1, 1) [000022] -c--------- t22 = CNS_INT int 0 REG NA /--* t21 int +--* t22 int Generating: N078 ( 10, 9) [000023] ----GO-N--- * CMP void REG NA IN0016: test eax, eax Generating: N080 ( 12, 11) [000024] ----GO----- JCC void cond=UNE REG NA IN0017: jne L_M60420_BB06 Scope info: ignoring block end Variable Live Range History Dump for BB10 V00 TypeCtx: ebp[-12] (1 slot) [(G_M60420_IG04,ins#0,ofs#0), ...] =============== Generating BB05 [0004] [???..???) -> BB13,BB15 (cond), preds={BB10} succs={BB15,BB13} flags=0x00000000.10080031: i LIR internal hascall gcsafe BB05 IN (0)={} + ByrefExposed + GcHeap OUT(0)={} + ByrefExposed + GcHeap Liveness not changing: 0000000000000000 {} Live regs: (unchanged) 00000000 {} GC regs: (unchanged) 00000000 {} Byref regs: (unchanged) 00000000 {} L_M60420_BB05: Adding label due to BB weight difference: BBJ_COND BB10 with weight 100 different from BB05 with weight 80 Saved: G_M60420_IG06: ; offs=0x000048, size=0x0011, bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB10 [0009], byref Created: G_M60420_IG07: ; offs=0x000059, size=0x0000, bbWeight=0.80, gcrefRegs=00000000 {} Label: G_M60420_IG07, GCvars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {} Scope info: begin block BB05, IL range [???..???) Scope info: ignoring block beginning Added IP mapping: NO_MAP (G_M60420_IG07,ins#0,ofs#0) label Added IP mapping: 0x0013 STACK_EMPTY (G_M60420_IG07,ins#0,ofs#0) label Generating: N084 (???,???) [000116] ----------- IL_OFFSET void INLRT @ 0x013[E-] REG NA Generating: N086 ( 1, 4) [000075] H---------- t75 = CNS_INT(h) int 0x430FB8 global ptr REG eax Mapped BB05 to G_M60420_IG07 IN0018: mov eax, (reloc 0x4000000000430fb8) /--* t75 int Generating: N088 ( 5, 7) [000076] DA--------- * STORE_LCL_VAR int V03 tmp2 NA REG NA IN0019: mov dword ptr [V03 ebp-0x18], eax Generating: N090 ( 3, 2) [000077] ----------- t77 = LCL_VAR int V03 tmp2 eax REG eax IN001a: mov eax, dword ptr [V03 ebp-0x18] /--* t77 int Generating: N092 ( 9, 10) [000081] -c--------- t81 = * LEA(b+-4) int REG NA /--* t81 int Generating: N094 ( 11, 12) [000082] nA--G------ t82 = * IND int REG NA Generating: N096 ( 1, 1) [000083] -c--------- t83 = CNS_INT int 0 REG NA /--* t82 int +--* t83 int Generating: N098 ( 13, 14) [000084] -A--G------ * CMP void REG NA IN001b: cmp dword ptr [eax-0x04], 0 Generating: N100 ( 15, 16) [000085] -A--G------ JCC void cond=UEQ REG NA IN001c: je L_M60420_BB13 Scope info: ignoring block end Variable Live Range History Dump for BB05 V00 TypeCtx: ebp[-12] (1 slot) [(G_M60420_IG04,ins#0,ofs#0), ...] =============== Generating BB15 [0014] [???..???) -> BB13 (always), preds={BB05} succs={BB13} flags=0x00000100.00002021: LIR rare internal q BB15 IN (0)={} + ByrefExposed + GcHeap OUT(0)={} + ByrefExposed + GcHeap Liveness not changing: 0000000000000000 {} Live regs: (unchanged) 00000000 {} GC regs: (unchanged) 00000000 {} Byref regs: (unchanged) 00000000 {} L_M60420_BB15: Adding label due to BB weight difference: BBJ_COND BB05 with weight 80 different from BB15 with weight 0 Saved: G_M60420_IG07: ; offs=0x000059, size=0x0015, bbWeight=0.80, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB05 [0004], byref Created: G_M60420_IG08: ; offs=0x00006E, size=0x0000, bbWeight=0, gcrefRegs=00000000 {} Label: G_M60420_IG08, GCvars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {} Scope info: begin block BB15, IL range [???..???) Scope info: ignoring block beginning Added IP mapping: NO_MAP (G_M60420_IG08,ins#0,ofs#0) label Added IP mapping: 0x0013 STACK_EMPTY (G_M60420_IG08,ins#0,ofs#0) label Generating: N220 (???,???) [000117] ----------- IL_OFFSET void INLRT @ 0x013[E-] REG NA Generating: N222 ( 14, 5) [000028] H-CXG------ u28 = CALL help byref CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE REG eax Call: GCvars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {} Mapped BB15 to G_M60420_IG08 IN001d: call CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE Byref regs: 00000000 {} => 00000001 {eax} Byref regs: 00000001 {eax} => 00000000 {} Scope info: ignoring block end Variable Live Range History Dump for BB15 V00 TypeCtx: ebp[-12] (1 slot) [(G_M60420_IG04,ins#0,ofs#0), ...] =============== Generating BB13 [0012] [???..???) -> BB03 (always), preds={BB05,BB15} succs={BB03} flags=0x00000000.10088031: i LIR internal label hascall gcsafe BB13 IN (0)={} + ByrefExposed + GcHeap OUT(0)={} + ByrefExposed + GcHeap Liveness not changing: 0000000000000000 {} Live regs: (unchanged) 00000000 {} GC regs: (unchanged) 00000000 {} Byref regs: (unchanged) 00000000 {} L_M60420_BB13: Saved: G_M60420_IG08: ; offs=0x00006E, size=0x0005, bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB15 [0014], byref Created: G_M60420_IG09: ; offs=0x000073, size=0x0000, bbWeight=0.80, gcrefRegs=00000000 {} Label: G_M60420_IG09, GCvars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {} Scope info: begin block BB13, IL range [???..???) Scope info: ignoring block beginning Added IP mapping: NO_MAP (G_M60420_IG09,ins#0,ofs#0) label Added IP mapping: 0x0013 STACK_EMPTY (G_M60420_IG09,ins#0,ofs#0) label Generating: N124 (???,???) [000118] ----------- IL_OFFSET void INLRT @ 0x013[E-] REG NA Generating: N126 ( 3, 2) [000079] ----------- t79 = LCL_VAR int V03 tmp2 eax REG eax Mapped BB13 to G_M60420_IG09 IN001e: mov eax, dword ptr [V03 ebp-0x18] /--* t79 int Generating: N128 ( 4, 3) [000027] -c--------- t27 = * LEA(b+8) byref REG NA /--* t27 byref Generating: N130 ( 6, 5) [000026] Vc--GO----- t26 = * IND int REG NA /--* t26 int calli tgt Generating: N132 ( 23, 7) [000025] --CXGO----- * CALL ind void REG NA Call: GCvars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {} IN001f: call [eax+0x08] Scope info: ignoring block end IN0020: jmp L_M60420_BB03 Variable Live Range History Dump for BB13 V00 TypeCtx: ebp[-12] (1 slot) [(G_M60420_IG04,ins#0,ofs#0), ...] =============== Generating BB06 [0005] [???..???) -> BB16,BB18 (cond), preds={BB10} succs={BB18,BB16} flags=0x00000000.10088031: i LIR internal label hascall gcsafe BB06 IN (0)={} + ByrefExposed + GcHeap OUT(0)={} + ByrefExposed + GcHeap Liveness not changing: 0000000000000000 {} Live regs: (unchanged) 00000000 {} GC regs: (unchanged) 00000000 {} Byref regs: (unchanged) 00000000 {} L_M60420_BB06: Saved: G_M60420_IG09: ; offs=0x000073, size=0x000B, bbWeight=0.80, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB13 [0012], byref Created: G_M60420_IG10: ; offs=0x00007E, size=0x0000, bbWeight=0.20, gcrefRegs=00000000 {} Label: G_M60420_IG10, GCvars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {} Scope info: begin block BB06, IL range [???..???) Scope info: ignoring block beginning Added IP mapping: NO_MAP (G_M60420_IG10,ins#0,ofs#0) label Added IP mapping: 0x0013 STACK_EMPTY (G_M60420_IG10,ins#0,ofs#0) label Generating: N104 (???,???) [000119] ----------- IL_OFFSET void INLRT @ 0x013[E-] REG NA Generating: N106 ( 1, 4) [000086] H---------- t86 = CNS_INT(h) int 0x430FB8 global ptr REG eax Mapped BB06 to G_M60420_IG10 IN0021: mov eax, (reloc 0x4000000000430fb8) /--* t86 int Generating: N108 ( 5, 7) [000087] DA--------- * STORE_LCL_VAR int V04 tmp3 NA REG NA IN0022: mov dword ptr [V04 ebp-0x1C], eax Generating: N110 ( 3, 2) [000088] ----------- t88 = LCL_VAR int V04 tmp3 eax REG eax IN0023: mov eax, dword ptr [V04 ebp-0x1C] /--* t88 int Generating: N112 ( 9, 10) [000092] -c--------- t92 = * LEA(b+-4) int REG NA /--* t92 int Generating: N114 ( 11, 12) [000093] nA--G------ t93 = * IND int REG NA Generating: N116 ( 1, 1) [000094] -c--------- t94 = CNS_INT int 0 REG NA /--* t93 int +--* t94 int Generating: N118 ( 13, 14) [000095] -A--G------ * CMP void REG NA IN0024: cmp dword ptr [eax-0x04], 0 Generating: N120 ( 15, 16) [000096] -A--G------ JCC void cond=UEQ REG NA IN0025: je L_M60420_BB16 Scope info: ignoring block end Variable Live Range History Dump for BB06 V00 TypeCtx: ebp[-12] (1 slot) [(G_M60420_IG04,ins#0,ofs#0), ...] =============== Generating BB18 [0017] [???..???) -> BB16 (always), preds={BB06} succs={BB16} flags=0x00000100.00002021: LIR rare internal q BB18 IN (0)={} + ByrefExposed + GcHeap OUT(0)={} + ByrefExposed + GcHeap Liveness not changing: 0000000000000000 {} Live regs: (unchanged) 00000000 {} GC regs: (unchanged) 00000000 {} Byref regs: (unchanged) 00000000 {} L_M60420_BB18: Adding label due to BB weight difference: BBJ_COND BB06 with weight 20 different from BB18 with weight 0 Saved: G_M60420_IG10: ; offs=0x00007E, size=0x0015, bbWeight=0.20, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB06 [0005], byref Created: G_M60420_IG11: ; offs=0x000093, size=0x0000, bbWeight=0, gcrefRegs=00000000 {} Label: G_M60420_IG11, GCvars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {} Scope info: begin block BB18, IL range [???..???) Scope info: ignoring block beginning Added IP mapping: NO_MAP (G_M60420_IG11,ins#0,ofs#0) label Added IP mapping: 0x0013 STACK_EMPTY (G_M60420_IG11,ins#0,ofs#0) label Generating: N226 (???,???) [000120] ----------- IL_OFFSET void INLRT @ 0x013[E-] REG NA Generating: N228 ( 14, 5) [000040] H-CXG------ u40 = CALL help byref CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE REG eax Call: GCvars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {} Mapped BB18 to G_M60420_IG11 IN0026: call CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE Byref regs: 00000000 {} => 00000001 {eax} Byref regs: 00000001 {eax} => 00000000 {} Scope info: ignoring block end Variable Live Range History Dump for BB18 V00 TypeCtx: ebp[-12] (1 slot) [(G_M60420_IG04,ins#0,ofs#0), ...] =============== Generating BB16 [0015] [???..???) -> BB19,BB21 (cond), preds={BB06,BB18} succs={BB21,BB19} flags=0x00000000.10088031: i LIR internal label hascall gcsafe BB16 IN (0)={} + ByrefExposed + GcHeap OUT(0)={} + ByrefExposed + GcHeap Liveness not changing: 0000000000000000 {} Live regs: (unchanged) 00000000 {} GC regs: (unchanged) 00000000 {} Byref regs: (unchanged) 00000000 {} L_M60420_BB16: Saved: G_M60420_IG11: ; offs=0x000093, size=0x0005, bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB18 [0017], byref Created: G_M60420_IG12: ; offs=0x000098, size=0x0000, bbWeight=0.20, gcrefRegs=00000000 {} Label: G_M60420_IG12, GCvars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {} Scope info: begin block BB16, IL range [???..???) Scope info: ignoring block beginning Added IP mapping: NO_MAP (G_M60420_IG12,ins#0,ofs#0) label Added IP mapping: 0x0013 STACK_EMPTY (G_M60420_IG12,ins#0,ofs#0) label Generating: N154 (???,???) [000121] ----------- IL_OFFSET void INLRT @ 0x013[E-] REG NA Generating: N156 ( 3, 2) [000090] ----------- t90 = LCL_VAR int V04 tmp3 eax REG eax Mapped BB16 to G_M60420_IG12 IN0027: mov eax, dword ptr [V04 ebp-0x1C] /--* t90 int Generating: N158 ( 4, 3) [000039] -c--------- t39 = * LEA(b+8) byref REG NA /--* t39 byref Generating: N160 ( 6, 5) [000038] V---GO----- t38 = * IND int REG eax IN0028: mov eax, dword ptr [eax+0x08] /--* t38 int Generating: N162 ( 9, 8) [000044] -c--------- t44 = * LEA(b+2) int REG NA /--* t44 int Generating: N164 ( 9, 8) [000045] ---XGO----- t45 = * IND int REG eax IN0029: mov eax, dword ptr [eax+0x02] /--* t45 int Generating: N166 ( 13, 11) [000097] DA-XGO----- * STORE_LCL_VAR int V05 tmp4 NA REG NA IN002a: mov dword ptr [V05 ebp-0x20], eax genIPmappingAdd: ignoring duplicate IL offset 0x13 Generating: N168 (???,???) [000122] ----------- IL_OFFSET void INLRT @ 0x013[E-] REG NA Generating: N170 ( 1, 4) [000099] H---------- t99 = CNS_INT(h) int 0x430FB8 global ptr REG eax IN002b: mov eax, (reloc 0x4000000000430fb8) /--* t99 int Generating: N172 ( 5, 7) [000100] DA--------- * STORE_LCL_VAR int V06 tmp5 NA REG NA IN002c: mov dword ptr [V06 ebp-0x24], eax Generating: N174 ( 3, 2) [000101] ----------- t101 = LCL_VAR int V06 tmp5 eax REG eax IN002d: mov eax, dword ptr [V06 ebp-0x24] /--* t101 int Generating: N176 ( 9, 10) [000105] -c--------- t105 = * LEA(b+-4) int REG NA /--* t105 int Generating: N178 ( 11, 12) [000106] nA--G------ t106 = * IND int REG NA Generating: N180 ( 1, 1) [000107] -c--------- t107 = CNS_INT int 0 REG NA /--* t106 int +--* t107 int Generating: N182 ( 13, 14) [000108] -A--G------ * CMP void REG NA IN002e: cmp dword ptr [eax-0x04], 0 Generating: N184 ( 15, 16) [000109] -A--G------ JCC void cond=UEQ REG NA IN002f: je L_M60420_BB19 Scope info: ignoring block end Variable Live Range History Dump for BB16 V00 TypeCtx: ebp[-12] (1 slot) [(G_M60420_IG04,ins#0,ofs#0), ...] =============== Generating BB21 [0020] [???..???) -> BB19 (always), preds={BB16} succs={BB19} flags=0x00000100.00002021: LIR rare internal q BB21 IN (0)={} + ByrefExposed + GcHeap OUT(0)={} + ByrefExposed + GcHeap Liveness not changing: 0000000000000000 {} Live regs: (unchanged) 00000000 {} GC regs: (unchanged) 00000000 {} Byref regs: (unchanged) 00000000 {} L_M60420_BB21: Adding label due to BB weight difference: BBJ_COND BB16 with weight 20 different from BB21 with weight 0 Saved: G_M60420_IG12: ; offs=0x000098, size=0x0021, bbWeight=0.20, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB16 [0015], byref Created: G_M60420_IG13: ; offs=0x0000B9, size=0x0000, bbWeight=0, gcrefRegs=00000000 {} Label: G_M60420_IG13, GCvars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {} Scope info: begin block BB21, IL range [???..???) Scope info: ignoring block beginning Added IP mapping: NO_MAP (G_M60420_IG13,ins#0,ofs#0) label Added IP mapping: 0x0013 STACK_EMPTY (G_M60420_IG13,ins#0,ofs#0) label Generating: N232 (???,???) [000123] ----------- IL_OFFSET void INLRT @ 0x013[E-] REG NA Generating: N234 ( 14, 5) [000032] H-CXG------ u32 = CALL help byref CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE REG eax Call: GCvars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {} Mapped BB21 to G_M60420_IG13 IN0030: call CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE Byref regs: 00000000 {} => 00000001 {eax} Byref regs: 00000001 {eax} => 00000000 {} Scope info: ignoring block end Variable Live Range History Dump for BB21 V00 TypeCtx: ebp[-12] (1 slot) [(G_M60420_IG04,ins#0,ofs#0), ...] =============== Generating BB19 [0018] [013..???) -> BB03 (always), preds={BB16,BB21} succs={BB03} flags=0x00000100.10088031: i LIR internal label hascall gcsafe q BB19 IN (0)={} + ByrefExposed + GcHeap OUT(0)={} + ByrefExposed + GcHeap Liveness not changing: 0000000000000000 {} Live regs: (unchanged) 00000000 {} GC regs: (unchanged) 00000000 {} Byref regs: (unchanged) 00000000 {} L_M60420_BB19: Saved: G_M60420_IG13: ; offs=0x0000B9, size=0x0005, bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB21 [0020], byref Created: G_M60420_IG14: ; offs=0x0000BE, size=0x0000, bbWeight=0.20, gcrefRegs=00000000 {} Label: G_M60420_IG14, GCvars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {} Scope info: begin block BB19, IL range [013..???) ILC: D:\runtime\src\coreclr\jit\scopeinfo.cpp:1566 ILC: Assertion failed 'lastBlockILEndOffset < beginOffs' in 'TestEntrypoint:Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter[System.__Canon]()' during 'Generate code' (IL size 47; hash 0x1f1113fb; MinOpts)