****** START compiling System.Collections.Generic.Dictionary`2+Enumerator[int,int]:MoveNext():bool:this (MethodHash=db9e6798) Generating code for Unix arm64 OPTIONS: Tier-1 compilation OPTIONS: compCodeOpt = FAST_CODE OPTIONS: compDbgCode = false OPTIONS: compDbgInfo = true OPTIONS: compDbgEnC = false OPTIONS: compProcedureSplitting = false OPTIONS: compProcedureSplittingEH = false OPTIONS: No PGO data IL to import: IL_0000 02 ldarg.0 IL_0001 7b 45 17 00 0a ldfld 0xA001745 IL_0006 02 ldarg.0 IL_0007 7b 44 17 00 0a ldfld 0xA001744 IL_000c 7b 36 17 00 0a ldfld 0xA001736 IL_0011 2e 4b beq.s 75 (IL_005e) IL_0013 28 24 20 00 06 call 0x6002024 IL_0018 2b 44 br.s 68 (IL_005e) IL_001a 02 ldarg.0 IL_001b 7b 44 17 00 0a ldfld 0xA001744 IL_0020 7b 22 17 00 0a ldfld 0xA001722 IL_0025 02 ldarg.0 IL_0026 02 ldarg.0 IL_0027 7b 46 17 00 0a ldfld 0xA001746 IL_002c 0b stloc.1 IL_002d 07 ldloc.1 IL_002e 17 ldc.i4.1 IL_002f 58 add IL_0030 7d 46 17 00 0a stfld 0xA001746 IL_0035 07 ldloc.1 IL_0036 8f 19 07 00 1b ldelema 0x1B000719 IL_003b 0a stloc.0 IL_003c 06 ldloc.0 IL_003d 7b 25 17 00 0a ldfld 0xA001725 IL_0042 15 ldc.i4.m1 IL_0043 32 19 blt.s 25 (IL_005e) IL_0045 02 ldarg.0 IL_0046 06 ldloc.0 IL_0047 7b 26 17 00 0a ldfld 0xA001726 IL_004c 06 ldloc.0 IL_004d 7b 27 17 00 0a ldfld 0xA001727 IL_0052 73 6f 13 00 0a newobj 0xA00136F IL_0057 7d 48 17 00 0a stfld 0xA001748 IL_005c 17 ldc.i4.1 IL_005d 2a ret IL_005e 02 ldarg.0 IL_005f 7b 46 17 00 0a ldfld 0xA001746 IL_0064 02 ldarg.0 IL_0065 7b 44 17 00 0a ldfld 0xA001744 IL_006a 7b 23 17 00 0a ldfld 0xA001723 IL_006f 37 a9 blt.un.s -87 (IL_001a) IL_0071 02 ldarg.0 IL_0072 02 ldarg.0 IL_0073 7b 44 17 00 0a ldfld 0xA001744 IL_0078 7b 23 17 00 0a ldfld 0xA001723 IL_007d 17 ldc.i4.1 IL_007e 58 add IL_007f 7d 46 17 00 0a stfld 0xA001746 IL_0084 02 ldarg.0 IL_0085 7c 48 17 00 0a ldflda 0xA001748 IL_008a fe 15 d2 05 00 1b initobj 0x1B0005D2 IL_0090 16 ldc.i4.0 IL_0091 2a ret 'this' passed in register x0 lvaGrabTemp returning 3 (V03 tmp0) (a long lifetime temp) called for OutgoingArgSpace. ; Initial local variable assignments ; ; V00 this byref this ; V01 loc0 byref ; V02 loc1 int ; V03 OutArgs lclBlk "OutgoingArgSpace" *************** In compInitDebuggingInfo() for System.Collections.Generic.Dictionary`2+Enumerator[int,int]:MoveNext():bool:this getVars() returned cVars = 0, extendOthers = true info.compVarScopesCount = 3 VarNum LVNum Name Beg End 0: 00h 00h V00 this 000h 092h 1: 01h 01h V01 loc0 000h 092h 2: 02h 02h V02 loc1 000h 092h info.compStmtOffsetsCount = 0 info.compStmtOffsetsImplicit = 0005h ( STACK_EMPTY CALL_SITE ) *************** In fgFindBasicBlocks() for System.Collections.Generic.Dictionary`2+Enumerator[int,int]:MoveNext():bool:this Marked V01 as a single def local Marked V02 as a single def local Jump targets: IL_001a IL_005e New Basic Block BB01 [0000] created. BB01 [000..013) New Basic Block BB02 [0001] created. BB02 [013..01A) New Basic Block BB03 [0002] created. BB03 [01A..045) New Basic Block BB04 [0003] created. BB04 [045..05E) New Basic Block BB05 [0004] created. BB05 [05E..071) New Basic Block BB06 [0005] created. BB06 [071..092) Setting edge weights for BB01 -> BB05 to [0 .. 3.402823e+38] Setting edge weights for BB01 -> BB02 to [0 .. 3.402823e+38] Setting edge weights for BB02 -> BB05 to [0 .. 3.402823e+38] Setting edge weights for BB03 -> BB05 to [0 .. 3.402823e+38] Setting edge weights for BB03 -> BB04 to [0 .. 3.402823e+38] Setting edge weights for BB05 -> BB03 to [0 .. 3.402823e+38] Setting edge weights for BB05 -> BB06 to [0 .. 3.402823e+38] IL Code Size,Instr 146, 53, Basic Block count 6, Local Variable Num,Ref count 4, 18 for method System.Collections.Generic.Dictionary`2+Enumerator[int,int]:MoveNext():bool:this OPTIONS: opts.MinOpts() == false Basic block list for 'System.Collections.Generic.Dictionary`2+Enumerator[int,int]:MoveNext():bool:this' ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..013)-> BB05 ( cond ) BB02 [0001] 1 BB01 1 [013..01A)-> BB05 (always) BB03 [0002] 1 BB05 1 [01A..045)-> BB05 ( cond ) bwd bwd-target BB04 [0003] 1 BB03 1 [045..05E) (return) BB05 [0004] 3 BB01,BB02,BB03 1 [05E..071)-> BB03 ( cond ) bwd bwd-src BB06 [0005] 1 BB05 1 [071..092) (return) ----------------------------------------------------------------------------------------------------------------------------------------- *************** Starting PHASE Pre-import *************** Finishing PHASE Pre-import Trees after Pre-import ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..013)-> BB05 ( cond ) BB02 [0001] 1 BB01 1 [013..01A)-> BB05 (always) BB03 [0002] 1 BB05 1 [01A..045)-> BB05 ( cond ) bwd bwd-target BB04 [0003] 1 BB03 1 [045..05E) (return) BB05 [0004] 3 BB01,BB02,BB03 1 [05E..071)-> BB03 ( cond ) bwd bwd-src BB06 [0005] 1 BB05 1 [071..092) (return) ----------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [000..013) -> BB05 (cond), preds={} succs={BB02,BB05} ------------ BB02 [013..01A) -> BB05 (always), preds={BB01} succs={BB05} ------------ BB03 [01A..045) -> BB05 (cond), preds={BB05} succs={BB04,BB05} ------------ BB04 [045..05E) (return), preds={BB03} succs={} ------------ BB05 [05E..071) -> BB03 (cond), preds={BB01,BB02,BB03} succs={BB06,BB03} ------------ BB06 [071..092) (return), preds={BB05} succs={} ------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist *************** Starting PHASE Profile incorporation BBOPT set, but no profile data available (hr=80004001) *************** Finishing PHASE Profile incorporation [no changes] *************** Starting PHASE Importation impImportBlockPending for BB01 Importing BB01 (PC=000) of 'System.Collections.Generic.Dictionary`2+Enumerator[int,int]:MoveNext():bool:this' [ 0] 0 (0x000) ldarg.0 [ 1] 1 (0x001) ldfld 0A001745 [ 1] 6 (0x006) ldarg.0 [ 2] 7 (0x007) ldfld 0A001744 [ 2] 12 (0x00c) ldfld 0A001736 [ 2] 17 (0x011) beq.s STMT00000 ( 0x000[E-] ... ??? ) [000006] ---XG------ * JTRUE void [000005] ---XG------ \--* EQ int [000001] ---XG------ +--* FIELD int System.Collections.Generic.Dictionary`2+Enumerator[int,int]:_version [000000] ----------- | \--* LCL_VAR byref V00 this [000004] ---XG------ \--* FIELD int System.Collections.Generic.Dictionary`2[int,int]:_version [000003] ---XG------ \--* FIELD ref System.Collections.Generic.Dictionary`2+Enumerator[int,int]:_dictionary [000002] ----------- \--* LCL_VAR byref V00 this impImportBlockPending for BB02 impImportBlockPending for BB05 Importing BB05 (PC=094) of 'System.Collections.Generic.Dictionary`2+Enumerator[int,int]:MoveNext():bool:this' [ 0] 94 (0x05e) ldarg.0 [ 1] 95 (0x05f) ldfld 0A001746 [ 1] 100 (0x064) ldarg.0 [ 2] 101 (0x065) ldfld 0A001744 [ 2] 106 (0x06a) ldfld 0A001723 [ 2] 111 (0x06f) blt.un.s STMT00001 ( 0x05E[E-] ... ??? ) [000013] ---XG------ * JTRUE void [000012] N--XG----U- \--* LT int [000008] ---XG------ +--* FIELD int System.Collections.Generic.Dictionary`2+Enumerator[int,int]:_index [000007] ----------- | \--* LCL_VAR byref V00 this [000011] ---XG------ \--* FIELD int System.Collections.Generic.Dictionary`2[int,int]:_count [000010] ---XG------ \--* FIELD ref System.Collections.Generic.Dictionary`2+Enumerator[int,int]:_dictionary [000009] ----------- \--* LCL_VAR byref V00 this impImportBlockPending for BB06 impImportBlockPending for BB03 Importing BB03 (PC=026) of 'System.Collections.Generic.Dictionary`2+Enumerator[int,int]:MoveNext():bool:this' [ 0] 26 (0x01a) ldarg.0 [ 1] 27 (0x01b) ldfld 0A001744 [ 1] 32 (0x020) ldfld 0A001722 [ 1] 37 (0x025) ldarg.0 [ 2] 38 (0x026) ldarg.0 [ 3] 39 (0x027) ldfld 0A001746 [ 3] 44 (0x02c) stloc.1 lvaGrabTemp returning 4 (V04 tmp1) called for impAppendStmt. STMT00003 ( 0x01A[E-] ... ??? ) [000023] -A-XG------ * ASG ref [000022] D------N--- +--* LCL_VAR ref V04 tmp1 [000016] ---XG------ \--* FIELD ref System.Collections.Generic.Dictionary`2[int,int]:_entries [000015] ---XG------ \--* FIELD ref System.Collections.Generic.Dictionary`2+Enumerator[int,int]:_dictionary [000014] ----------- \--* LCL_VAR byref V00 this Marked V04 as a single def temp Querying runtime about current class of field System.Collections.Generic.Dictionary`2[int,int]:_entries (declared as System.Collections.Generic.Dictionary`2+Entry[int,int][]) Field's current class not available lvaSetClass: setting class for V04 to (0xffff7146b938) System.Collections.Generic.Dictionary`2+Entry[int,int][] STMT00002 ( 0x01A[E-] ... ??? ) [000021] -A-XG------ * ASG int [000020] D------N--- +--* LCL_VAR int V02 loc1 [000019] ---XG------ \--* FIELD int System.Collections.Generic.Dictionary`2+Enumerator[int,int]:_index [000018] ----------- \--* LCL_VAR byref V00 this [ 2] 45 (0x02d) ldloc.1 [ 3] 46 (0x02e) ldc.i4.1 1 [ 4] 47 (0x02f) add [ 3] 48 (0x030) stfld 0A001746 STMT00004 ( ??? ... ??? ) [000029] -A-XG------ * ASG int [000028] ---XG--N--- +--* FIELD int System.Collections.Generic.Dictionary`2+Enumerator[int,int]:_index [000017] ----------- | \--* LCL_VAR byref V00 this [000027] ----------- \--* ADD int [000025] ----------- +--* LCL_VAR int V02 loc1 [000026] ----------- \--* CNS_INT int 1 [ 1] 53 (0x035) ldloc.1 [ 2] 54 (0x036) ldelema 1B000719 [ 1] 59 (0x03b) stloc.0 STMT00005 ( ??? ... ??? ) [000033] -A-XG------ * ASG byref [000032] D------N--- +--* LCL_VAR byref V01 loc0 [000031] ---XG------ \--* INDEX_ADDR byref System.Collections.Generic.Dictionary`2+Entry[] [000024] ----------- +--* LCL_VAR ref V04 tmp1 [000030] ----------- \--* LCL_VAR int V02 loc1 [ 0] 60 (0x03c) ldloc.0 [ 1] 61 (0x03d) ldfld 0A001725 [ 1] 66 (0x042) ldc.i4.m1 -1 [ 2] 67 (0x043) blt.s STMT00006 ( 0x03C[E-] ... ??? ) [000038] ---XG------ * JTRUE void [000037] ---XG------ \--* LT int [000035] ---XG------ +--* FIELD int System.Collections.Generic.Dictionary`2+Entry[int,int]:next [000034] ----------- | \--* LCL_VAR byref V01 loc0 [000036] ----------- \--* CNS_INT int -1 impImportBlockPending for BB04 impImportBlockPending for BB05 Importing BB04 (PC=069) of 'System.Collections.Generic.Dictionary`2+Enumerator[int,int]:MoveNext():bool:this' [ 0] 69 (0x045) ldarg.0 [ 1] 70 (0x046) ldloc.0 [ 2] 71 (0x047) ldfld 0A001726 [ 2] 76 (0x04c) ldloc.0 [ 3] 77 (0x04d) ldfld 0A001727 [ 3] 82 (0x052) newobj lvaGrabTemp returning 5 (V05 tmp2) called for NewObj constructor temp. STMT00007 ( 0x045[E-] ... ??? ) [000046] IA--------- * ASG struct (init) [000044] D------N--- +--* LCL_VAR struct V05 tmp2 [000045] ----------- \--* CNS_INT int 0 0A00136F In Compiler::impImportCall: opcode is newobj, kind=0, callRetType is void, structSize is 0 INLINER: during 'impMarkInlineCandidate' result 'CheckCanInline Success' reason 'CheckCanInline Success' for 'System.Collections.Generic.Dictionary`2+Enumerator[int,int]:MoveNext():bool:this' calling 'System.Collections.Generic.KeyValuePair`2[int,int]:.ctor(int,int):this' INLINER: during 'impMarkInlineCandidate' result 'CheckCanInline Success' reason 'CheckCanInline Success' STMT00008 ( ??? ... ??? ) [000048] I-CXG------ * CALL void System.Collections.Generic.KeyValuePair`2[int,int]:.ctor(int,int):this (exactContextHnd=0x0xffff71465361) [000047] ----------- this +--* LCL_VAR_ADDR byref V05 tmp2 [000041] ---XG------ arg1 +--* FIELD int System.Collections.Generic.Dictionary`2+Entry[int,int]:key [000040] ----------- | \--* LCL_VAR byref V01 loc0 [000043] ---XG------ arg2 \--* FIELD int System.Collections.Generic.Dictionary`2+Entry[int,int]:value [000042] ----------- \--* LCL_VAR byref V01 loc0 [ 2] 87 (0x057) stfld 0A001748 STMT00009 ( 0x057[--] ... ??? ) [000051] -A-XG------ * ASG struct (copy) [000050] ---XG--N--- +--* FIELD struct System.Collections.Generic.Dictionary`2+Enumerator[int,int]:_current [000039] ----------- | \--* LCL_VAR byref V00 this [000049] ----------- \--* LCL_VAR struct V05 tmp2 [ 0] 92 (0x05c) ldc.i4.1 1 [ 1] 93 (0x05d) ret STMT00010 ( 0x05C[E-] ... ??? ) [000053] ----------- * RETURN int [000052] ----------- \--* CNS_INT int 1 Importing BB06 (PC=113) of 'System.Collections.Generic.Dictionary`2+Enumerator[int,int]:MoveNext():bool:this' [ 0] 113 (0x071) ldarg.0 [ 1] 114 (0x072) ldarg.0 [ 2] 115 (0x073) ldfld 0A001744 [ 2] 120 (0x078) ldfld 0A001723 [ 2] 125 (0x07d) ldc.i4.1 1 [ 3] 126 (0x07e) add [ 2] 127 (0x07f) stfld 0A001746 STMT00011 ( 0x071[E-] ... ??? ) [000061] -A-XG------ * ASG int [000060] ---XG--N--- +--* FIELD int System.Collections.Generic.Dictionary`2+Enumerator[int,int]:_index [000054] ----------- | \--* LCL_VAR byref V00 this [000059] ---XG------ \--* ADD int [000057] ---XG------ +--* FIELD int System.Collections.Generic.Dictionary`2[int,int]:_count [000056] ---XG------ | \--* FIELD ref System.Collections.Generic.Dictionary`2+Enumerator[int,int]:_dictionary [000055] ----------- | \--* LCL_VAR byref V00 this [000058] ----------- \--* CNS_INT int 1 [ 0] 132 (0x084) ldarg.0 [ 1] 133 (0x085) ldflda 0A001748 [ 1] 138 (0x08a) initobj 1B0005D2 STMT00012 ( 0x084[E-] ... ??? ) [000066] IA-XG------ * ASG struct (init) [000064] n--XG--N--- +--* OBJ struct [000063] ---XG------ | \--* FIELD_ADDR byref System.Collections.Generic.Dictionary`2+Enumerator[int,int]:_current [000062] ----------- | \--* LCL_VAR byref V00 this [000065] ----------- \--* CNS_INT int 0 [ 0] 144 (0x090) ldc.i4.0 0 [ 1] 145 (0x091) ret STMT00013 ( 0x090[E-] ... ??? ) [000068] ----------- * RETURN int [000067] ----------- \--* CNS_INT int 0 Importing BB02 (PC=019) of 'System.Collections.Generic.Dictionary`2+Enumerator[int,int]:MoveNext():bool:this' [ 0] 19 (0x013) call 06002024 In Compiler::impImportCall: opcode is call, kind=0, callRetType is void, structSize is 0 INLINER: during 'impMarkInlineCandidate' result 'CheckCanInline Success' reason 'CheckCanInline Success' for 'System.Collections.Generic.Dictionary`2+Enumerator[int,int]:MoveNext():bool:this' calling 'System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion()' INLINER: during 'impMarkInlineCandidate' result 'CheckCanInline Success' reason 'CheckCanInline Success' STMT00014 ( 0x013[E-] ... ??? ) [000069] I-C-G------ * CALL void System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion() (exactContextHnd=0x0xffff707e97d9) [ 0] 24 (0x018) br.s impImportBlockPending for BB05 *************** Finishing PHASE Importation Trees after Importation ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..013)-> BB05 ( cond ) i BB02 [0001] 1 BB01 1 [013..01A)-> BB05 (always) i BB03 [0002] 1 BB05 1 [01A..045)-> BB05 ( cond ) i idxlen bwd bwd-target BB04 [0003] 1 BB03 1 [045..05E) (return) i BB05 [0004] 3 BB01,BB02,BB03 1 [05E..071)-> BB03 ( cond ) i bwd bwd-src BB06 [0005] 1 BB05 1 [071..092) (return) i ----------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [000..013) -> BB05 (cond), preds={} succs={BB02,BB05} ***** BB01 STMT00000 ( 0x000[E-] ... 0x011 ) [000006] ---XG------ * JTRUE void [000005] ---XG------ \--* EQ int [000001] ---XG------ +--* FIELD int System.Collections.Generic.Dictionary`2+Enumerator[int,int]:_version [000000] ----------- | \--* LCL_VAR byref V00 this [000004] ---XG------ \--* FIELD int System.Collections.Generic.Dictionary`2[int,int]:_version [000003] ---XG------ \--* FIELD ref System.Collections.Generic.Dictionary`2+Enumerator[int,int]:_dictionary [000002] ----------- \--* LCL_VAR byref V00 this ------------ BB02 [013..01A) -> BB05 (always), preds={BB01} succs={BB05} ***** BB02 STMT00014 ( 0x013[E-] ... 0x018 ) [000069] I-C-G------ * CALL void System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion() (exactContextHnd=0x0xffff707e97d9) ------------ BB03 [01A..045) -> BB05 (cond), preds={BB05} succs={BB04,BB05} ***** BB03 STMT00003 ( 0x01A[E-] ... 0x02C ) [000023] -A-XG------ * ASG ref [000022] D------N--- +--* LCL_VAR ref V04 tmp1 [000016] ---XG------ \--* FIELD ref System.Collections.Generic.Dictionary`2[int,int]:_entries [000015] ---XG------ \--* FIELD ref System.Collections.Generic.Dictionary`2+Enumerator[int,int]:_dictionary [000014] ----------- \--* LCL_VAR byref V00 this ***** BB03 STMT00002 ( 0x01A[E-] ... ??? ) [000021] -A-XG------ * ASG int [000020] D------N--- +--* LCL_VAR int V02 loc1 [000019] ---XG------ \--* FIELD int System.Collections.Generic.Dictionary`2+Enumerator[int,int]:_index [000018] ----------- \--* LCL_VAR byref V00 this ***** BB03 STMT00004 ( ??? ... 0x030 ) [000029] -A-XG------ * ASG int [000028] ---XG--N--- +--* FIELD int System.Collections.Generic.Dictionary`2+Enumerator[int,int]:_index [000017] ----------- | \--* LCL_VAR byref V00 this [000027] ----------- \--* ADD int [000025] ----------- +--* LCL_VAR int V02 loc1 [000026] ----------- \--* CNS_INT int 1 ***** BB03 STMT00005 ( ??? ... 0x03B ) [000033] -A-XG------ * ASG byref [000032] D------N--- +--* LCL_VAR byref V01 loc0 [000031] ---XG------ \--* INDEX_ADDR byref System.Collections.Generic.Dictionary`2+Entry[] [000024] ----------- +--* LCL_VAR ref V04 tmp1 [000030] ----------- \--* LCL_VAR int V02 loc1 ***** BB03 STMT00006 ( 0x03C[E-] ... 0x043 ) [000038] ---XG------ * JTRUE void [000037] ---XG------ \--* LT int [000035] ---XG------ +--* FIELD int System.Collections.Generic.Dictionary`2+Entry[int,int]:next [000034] ----------- | \--* LCL_VAR byref V01 loc0 [000036] ----------- \--* CNS_INT int -1 ------------ BB04 [045..05E) (return), preds={BB03} succs={} ***** BB04 STMT00007 ( 0x045[E-] ... 0x057 ) [000046] IA--------- * ASG struct (init) [000044] D------N--- +--* LCL_VAR struct V05 tmp2 [000045] ----------- \--* CNS_INT int 0 ***** BB04 STMT00008 ( ??? ... ??? ) [000048] I-CXG------ * CALL void System.Collections.Generic.KeyValuePair`2[int,int]:.ctor(int,int):this (exactContextHnd=0x0xffff71465361) [000047] ----------- this +--* LCL_VAR_ADDR byref V05 tmp2 [000041] ---XG------ arg1 +--* FIELD int System.Collections.Generic.Dictionary`2+Entry[int,int]:key [000040] ----------- | \--* LCL_VAR byref V01 loc0 [000043] ---XG------ arg2 \--* FIELD int System.Collections.Generic.Dictionary`2+Entry[int,int]:value [000042] ----------- \--* LCL_VAR byref V01 loc0 ***** BB04 STMT00009 ( 0x057[--] ... ??? ) [000051] -A-XG------ * ASG struct (copy) [000050] ---XG--N--- +--* FIELD struct System.Collections.Generic.Dictionary`2+Enumerator[int,int]:_current [000039] ----------- | \--* LCL_VAR byref V00 this [000049] ----------- \--* LCL_VAR struct V05 tmp2 ***** BB04 STMT00010 ( 0x05C[E-] ... 0x05D ) [000053] ----------- * RETURN int [000052] ----------- \--* CNS_INT int 1 ------------ BB05 [05E..071) -> BB03 (cond), preds={BB01,BB02,BB03} succs={BB06,BB03} ***** BB05 STMT00001 ( 0x05E[E-] ... 0x06F ) [000013] ---XG------ * JTRUE void [000012] N--XG----U- \--* LT int [000008] ---XG------ +--* FIELD int System.Collections.Generic.Dictionary`2+Enumerator[int,int]:_index [000007] ----------- | \--* LCL_VAR byref V00 this [000011] ---XG------ \--* FIELD int System.Collections.Generic.Dictionary`2[int,int]:_count [000010] ---XG------ \--* FIELD ref System.Collections.Generic.Dictionary`2+Enumerator[int,int]:_dictionary [000009] ----------- \--* LCL_VAR byref V00 this ------------ BB06 [071..092) (return), preds={BB05} succs={} ***** BB06 STMT00011 ( 0x071[E-] ... 0x07F ) [000061] -A-XG------ * ASG int [000060] ---XG--N--- +--* FIELD int System.Collections.Generic.Dictionary`2+Enumerator[int,int]:_index [000054] ----------- | \--* LCL_VAR byref V00 this [000059] ---XG------ \--* ADD int [000057] ---XG------ +--* FIELD int System.Collections.Generic.Dictionary`2[int,int]:_count [000056] ---XG------ | \--* FIELD ref System.Collections.Generic.Dictionary`2+Enumerator[int,int]:_dictionary [000055] ----------- | \--* LCL_VAR byref V00 this [000058] ----------- \--* CNS_INT int 1 ***** BB06 STMT00012 ( 0x084[E-] ... 0x08B ) [000066] IA-XG------ * ASG struct (init) [000064] n--XG--N--- +--* OBJ struct [000063] ---XG------ | \--* FIELD_ADDR byref System.Collections.Generic.Dictionary`2+Enumerator[int,int]:_current [000062] ----------- | \--* LCL_VAR byref V00 this [000065] ----------- \--* CNS_INT int 0 ***** BB06 STMT00013 ( 0x090[E-] ... 0x091 ) [000068] ----------- * RETURN int [000067] ----------- \--* CNS_INT int 0 ------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist *************** In fgDebugCheckLoopTable: loop table not valid *************** Starting PHASE Expand patchpoints -- no patchpoints to transform *************** Finishing PHASE Expand patchpoints [no changes] *************** Starting PHASE Indirect call transform -- no candidates to transform *************** Finishing PHASE Indirect call transform [no changes] *************** 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 Expanding INLINE_CANDIDATE in statement STMT00014 in BB02: STMT00014 ( 0x013[E-] ... 0x018 ) [000069] I-C-G------ * CALL void System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion() (exactContextHnd=0x0xffff707e97d9) INLINER: inlineInfo.tokenLookupContextHandle for System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion() set to 0x0xffff707e97d9: Invoking compiler for the inlinee method System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion() : IL to import: IL_0000 28 26 1e 00 06 call 0x6001E26 IL_0005 73 dc 15 00 06 newobj 0x60015DC IL_000a 7a throw INLINER impTokenLookupContextHandle for System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion() is 0x0xffff707e97d9. *************** In compInitDebuggingInfo() for System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion() info.compStmtOffsetsCount = 0 info.compStmtOffsetsImplicit = 0005h ( STACK_EMPTY CALL_SITE ) *************** In fgFindBasicBlocks() for System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion() Jump targets: none New Basic Block BB07 [0006] created. BB07 [000..00B) Basic block list for 'System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion()' ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB07 [0006] 1 0 [000..00B) (throw ) rare ----------------------------------------------------------------------------------------------------------------------------------------- INLINER: during 'fgInline' result 'failed this callee' reason 'does not return' for 'System.Collections.Generic.Dictionary`2+Enumerator[int,int]:MoveNext():bool:this' calling 'System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion()' INLINER: during 'fgInline' result 'failed this callee' reason 'does not return' Querying runtime about current class of field System.Collections.Generic.Dictionary`2[int,int]:_entries (declared as System.Collections.Generic.Dictionary`2+Entry[int,int][]) Field's current class not available Expanding INLINE_CANDIDATE in statement STMT00008 in BB04: STMT00008 ( ??? ... ??? ) [000048] I-CXG------ * CALL void System.Collections.Generic.KeyValuePair`2[int,int]:.ctor(int,int):this (exactContextHnd=0x0xffff71465361) [000047] ----------- this +--* LCL_VAR_ADDR byref V05 tmp2 [000041] ---XG------ arg1 +--* FIELD int System.Collections.Generic.Dictionary`2+Entry[int,int]:key [000040] ----------- | \--* LCL_VAR byref V01 loc0 [000043] ---XG------ arg2 \--* FIELD int System.Collections.Generic.Dictionary`2+Entry[int,int]:value [000042] ----------- \--* LCL_VAR byref V01 loc0 thisArg: is a constant or invariant is byref to a struct local [000047] ----------- * LCL_VAR_ADDR byref V05 tmp2 Argument #1: has global refs has side effects [000041] ---XG------ * FIELD int System.Collections.Generic.Dictionary`2+Entry[int,int]:key [000040] ----------- \--* LCL_VAR byref V01 loc0 Argument #2: has global refs has side effects [000043] ---XG------ * FIELD int System.Collections.Generic.Dictionary`2+Entry[int,int]:value [000042] ----------- \--* LCL_VAR byref V01 loc0 INLINER: inlineInfo.tokenLookupContextHandle for System.Collections.Generic.KeyValuePair`2[int,int]:.ctor(int,int):this set to 0x0xffff71465361: Invoking compiler for the inlinee method System.Collections.Generic.KeyValuePair`2[int,int]:.ctor(int,int):this : IL to import: IL_0000 02 ldarg.0 IL_0001 03 ldarg.1 IL_0002 7d 8f 17 00 0a stfld 0xA00178F IL_0007 02 ldarg.0 IL_0008 04 ldarg.2 IL_0009 7d 90 17 00 0a stfld 0xA001790 IL_000e 2a ret INLINER impTokenLookupContextHandle for System.Collections.Generic.KeyValuePair`2[int,int]:.ctor(int,int):this is 0x0xffff71465361. *************** In compInitDebuggingInfo() for System.Collections.Generic.KeyValuePair`2[int,int]:.ctor(int,int):this info.compStmtOffsetsCount = 0 info.compStmtOffsetsImplicit = 0005h ( STACK_EMPTY CALL_SITE ) *************** In fgFindBasicBlocks() for System.Collections.Generic.KeyValuePair`2[int,int]:.ctor(int,int):this Jump targets: none New Basic Block BB07 [0006] created. BB07 [000..00F) Basic block list for 'System.Collections.Generic.KeyValuePair`2[int,int]:.ctor(int,int):this' ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB07 [0006] 1 1 [000..00F) (return) ----------------------------------------------------------------------------------------------------------------------------------------- *************** Inline @[000048] Starting PHASE Pre-import *************** Inline @[000048] Finishing PHASE Pre-import Trees after Pre-import ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB07 [0006] 1 1 [000..00F) (return) ----------------------------------------------------------------------------------------------------------------------------------------- ------------ BB07 [000..00F) (return), preds={} succs={} ------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist *************** Inline @[000048] Starting PHASE Profile incorporation BBOPT set, but no profile data available (hr=80004001) Computing inlinee profile scale: ... no callee profile data, will use non-pgo weight to scale ... call site not profiled, will use non-pgo weight to scale call site count 100 callee entry count 100 scale 1 Scaling inlinee blocks *************** Inline @[000048] Finishing PHASE Profile incorporation Trees after Profile incorporation ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB07 [0006] 1 1 [000..00F) (return) ----------------------------------------------------------------------------------------------------------------------------------------- ------------ BB07 [000..00F) (return), preds={} succs={} ------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist *************** Inline @[000048] Starting PHASE Importation impImportBlockPending for BB07 Importing BB07 (PC=000) of 'System.Collections.Generic.KeyValuePair`2[int,int]:.ctor(int,int):this' [ 0] 0 (0x000) ldarg.0 [ 1] 1 (0x001) ldarg.1 lvaGrabTemp returning 6 (V06 tmp3) called for Inlining Arg. [ 2] 2 (0x002) stfld 0A00178F STMT00015 ( 0x000[E-] ... ??? ) <- INLRT @ ??? [000073] -A--------- * ASG int [000072] -------N--- +--* FIELD int System.Collections.Generic.KeyValuePair`2[int,int]:key [000070] ----------- | \--* LCL_VAR_ADDR byref V05 tmp2 [000071] ----------- \--* LCL_VAR int V06 tmp3 [ 0] 7 (0x007) ldarg.0 [ 1] 8 (0x008) ldarg.2 lvaGrabTemp returning 7 (V07 tmp4) called for Inlining Arg. [ 2] 9 (0x009) stfld 0A001790 STMT00016 ( 0x007[E-] ... ??? ) <- INLRT @ ??? [000077] -A--------- * ASG int [000076] -------N--- +--* FIELD int System.Collections.Generic.KeyValuePair`2[int,int]:value [000074] ----------- | \--* LCL_VAR_ADDR byref V05 tmp2 [000075] ----------- \--* LCL_VAR int V07 tmp4 [ 0] 14 (0x00e) ret *************** Inline @[000048] Finishing PHASE Importation Trees after Importation ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB07 [0006] 1 1 [000..00F) (return) i ----------------------------------------------------------------------------------------------------------------------------------------- ------------ BB07 [000..00F) (return), preds={} succs={} ***** BB07 STMT00015 ( 0x000[E-] ... ??? ) <- INLRT @ ??? [000073] -A--------- * ASG int [000072] -------N--- +--* FIELD int System.Collections.Generic.KeyValuePair`2[int,int]:key [000070] ----------- | \--* LCL_VAR_ADDR byref V05 tmp2 [000071] ----------- \--* LCL_VAR int V06 tmp3 ***** BB07 STMT00016 ( 0x007[E-] ... ??? ) <- INLRT @ ??? [000077] -A--------- * ASG int [000076] -------N--- +--* FIELD int System.Collections.Generic.KeyValuePair`2[int,int]:value [000074] ----------- | \--* LCL_VAR_ADDR byref V05 tmp2 [000075] ----------- \--* LCL_VAR int V07 tmp4 ------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist *************** In fgDebugCheckLoopTable: loop table not valid *************** Inline @[000048] Starting PHASE Expand patchpoints -- no patchpoints to transform *************** Inline @[000048] Finishing PHASE Expand patchpoints [no changes] *************** Inline @[000048] Starting PHASE Indirect call transform -- no candidates to transform *************** Inline @[000048] Finishing PHASE Indirect call transform [no changes] *************** Inline @[000048] Starting PHASE Post-import *************** Inline @[000048] Finishing PHASE Post-import [no changes] ----------- Statements (and blocks) added due to the inlining of call [000048] ----------- Arguments setup: STMT00017 ( ??? ... ??? ) [000079] -A-XG------ * ASG int [000078] D------N--- +--* LCL_VAR int V06 tmp3 [000041] ---XG------ \--* FIELD int System.Collections.Generic.Dictionary`2+Entry[int,int]:key [000040] ----------- \--* LCL_VAR byref V01 loc0 STMT00018 ( ??? ... ??? ) [000081] -A-XG------ * ASG int [000080] D------N--- +--* LCL_VAR int V07 tmp4 [000043] ---XG------ \--* FIELD int System.Collections.Generic.Dictionary`2+Entry[int,int]:value [000042] ----------- \--* LCL_VAR byref V01 loc0 Inlinee method body: STMT00015 ( INL01 @ 0x000[E-] ... ??? ) <- INLRT @ ??? [000073] -A--------- * ASG int [000072] -------N--- +--* FIELD int System.Collections.Generic.KeyValuePair`2[int,int]:key [000070] ----------- | \--* LCL_VAR_ADDR byref V05 tmp2 [000071] ----------- \--* LCL_VAR int V06 tmp3 STMT00016 ( INL01 @ 0x007[E-] ... ??? ) <- INLRT @ ??? [000077] -A--------- * ASG int [000076] -------N--- +--* FIELD int System.Collections.Generic.KeyValuePair`2[int,int]:value [000074] ----------- | \--* LCL_VAR_ADDR byref V05 tmp2 [000075] ----------- \--* LCL_VAR int V07 tmp4 fgInlineAppendStatements: no gc ref inline locals. Successfully inlined System.Collections.Generic.KeyValuePair`2[int,int]:.ctor(int,int):this (15 IL bytes) (depth 1) [below ALWAYS_INLINE size] -------------------------------------------------------------------------------------------- INLINER: during 'fgInline' result 'success' reason 'below ALWAYS_INLINE size' for 'System.Collections.Generic.Dictionary`2+Enumerator[int,int]:MoveNext():bool:this' calling 'System.Collections.Generic.KeyValuePair`2[int,int]:.ctor(int,int):this' INLINER: during 'fgInline' result 'success' reason 'below ALWAYS_INLINE size' **************** Inline Tree Inlines into 06007925 [via ExtendedDefaultPolicy] System.Collections.Generic.Dictionary`2+Enumerator[int,int]:MoveNext():bool:this: [INL00 IL=0019 TR=000069 06002024] [FAILED: callee: does not return] System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion() [INL01 IL=0082 TR=000048 060079DE] [INLINED: callee: below ALWAYS_INLINE size] System.Collections.Generic.KeyValuePair`2[int,int]:.ctor(int,int):this Budget: initialTime=498, finalTime=514, initialBudget=4980, currentBudget=4980 Budget: initialSize=3460, finalSize=3460 *************** Before renumbering the basic blocks ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..013)-> BB05 ( cond ) i BB02 [0001] 1 BB01 1 [013..01A)-> BB05 (always) i BB03 [0002] 1 BB05 1 [01A..045)-> BB05 ( cond ) i idxlen bwd bwd-target BB04 [0003] 1 BB03 1 [045..05E) (return) i BB05 [0004] 3 BB01,BB02,BB03 1 [05E..071)-> BB03 ( cond ) i bwd bwd-src BB06 [0005] 1 BB05 1 [071..092) (return) i ----------------------------------------------------------------------------------------------------------------------------------------- *************** Exception Handling table is empty =============== No blocks renumbered! New BlockSet epoch 2, # of blocks (including unused BB00): 7, bitset array size: 1 (short) *************** Finishing PHASE Morph - Inlining Trees after Morph - Inlining ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..013)-> BB05 ( cond ) i BB02 [0001] 1 BB01 1 [013..01A)-> BB05 (always) i BB03 [0002] 1 BB05 1 [01A..045)-> BB05 ( cond ) i idxlen bwd bwd-target BB04 [0003] 1 BB03 1 [045..05E) (return) i BB05 [0004] 3 BB01,BB02,BB03 1 [05E..071)-> BB03 ( cond ) i bwd bwd-src BB06 [0005] 1 BB05 1 [071..092) (return) i ----------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [000..013) -> BB05 (cond), preds={} succs={BB02,BB05} ***** BB01 STMT00000 ( 0x000[E-] ... 0x011 ) [000006] ---XG------ * JTRUE void [000005] ---XG------ \--* EQ int [000001] ---XG------ +--* FIELD int System.Collections.Generic.Dictionary`2+Enumerator[int,int]:_version [000000] ----------- | \--* LCL_VAR byref V00 this [000004] ---XG------ \--* FIELD int System.Collections.Generic.Dictionary`2[int,int]:_version [000003] ---XG------ \--* FIELD ref System.Collections.Generic.Dictionary`2+Enumerator[int,int]:_dictionary [000002] ----------- \--* LCL_VAR byref V00 this ------------ BB02 [013..01A) -> BB05 (always), preds={BB01} succs={BB05} ***** BB02 STMT00014 ( 0x013[E-] ... 0x018 ) [000069] --C-G------ * CALL void System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion() ------------ BB03 [01A..045) -> BB05 (cond), preds={BB05} succs={BB04,BB05} ***** BB03 STMT00003 ( 0x01A[E-] ... 0x02C ) [000023] -A-XG------ * ASG ref [000022] D------N--- +--* LCL_VAR ref V04 tmp1 [000016] ---XG------ \--* FIELD ref System.Collections.Generic.Dictionary`2[int,int]:_entries [000015] ---XG------ \--* FIELD ref System.Collections.Generic.Dictionary`2+Enumerator[int,int]:_dictionary [000014] ----------- \--* LCL_VAR byref V00 this ***** BB03 STMT00002 ( 0x01A[E-] ... ??? ) [000021] -A-XG------ * ASG int [000020] D------N--- +--* LCL_VAR int V02 loc1 [000019] ---XG------ \--* FIELD int System.Collections.Generic.Dictionary`2+Enumerator[int,int]:_index [000018] ----------- \--* LCL_VAR byref V00 this ***** BB03 STMT00004 ( ??? ... 0x030 ) [000029] -A-XG------ * ASG int [000028] ---XG--N--- +--* FIELD int System.Collections.Generic.Dictionary`2+Enumerator[int,int]:_index [000017] ----------- | \--* LCL_VAR byref V00 this [000027] ----------- \--* ADD int [000025] ----------- +--* LCL_VAR int V02 loc1 [000026] ----------- \--* CNS_INT int 1 ***** BB03 STMT00005 ( ??? ... 0x03B ) [000033] -A-XG------ * ASG byref [000032] D------N--- +--* LCL_VAR byref V01 loc0 [000031] ---XG------ \--* INDEX_ADDR byref System.Collections.Generic.Dictionary`2+Entry[] [000024] ----------- +--* LCL_VAR ref V04 tmp1 [000030] ----------- \--* LCL_VAR int V02 loc1 ***** BB03 STMT00006 ( 0x03C[E-] ... 0x043 ) [000038] ---XG------ * JTRUE void [000037] ---XG------ \--* LT int [000035] ---XG------ +--* FIELD int System.Collections.Generic.Dictionary`2+Entry[int,int]:next [000034] ----------- | \--* LCL_VAR byref V01 loc0 [000036] ----------- \--* CNS_INT int -1 ------------ BB04 [045..05E) (return), preds={BB03} succs={} ***** BB04 STMT00007 ( 0x045[E-] ... 0x057 ) [000046] IA--------- * ASG struct (init) [000044] D------N--- +--* LCL_VAR struct V05 tmp2 [000045] ----------- \--* CNS_INT int 0 ***** BB04 STMT00017 ( ??? ... ??? ) [000079] -A-XG------ * ASG int [000078] D------N--- +--* LCL_VAR int V06 tmp3 [000041] ---XG------ \--* FIELD int System.Collections.Generic.Dictionary`2+Entry[int,int]:key [000040] ----------- \--* LCL_VAR byref V01 loc0 ***** BB04 STMT00018 ( ??? ... ??? ) [000081] -A-XG------ * ASG int [000080] D------N--- +--* LCL_VAR int V07 tmp4 [000043] ---XG------ \--* FIELD int System.Collections.Generic.Dictionary`2+Entry[int,int]:value [000042] ----------- \--* LCL_VAR byref V01 loc0 ***** BB04 STMT00015 ( INL01 @ 0x000[E-] ... ??? ) <- INLRT @ ??? [000073] -A--------- * ASG int [000072] -------N--- +--* FIELD int System.Collections.Generic.KeyValuePair`2[int,int]:key [000070] ----------- | \--* LCL_VAR_ADDR byref V05 tmp2 [000071] ----------- \--* LCL_VAR int V06 tmp3 ***** BB04 STMT00016 ( INL01 @ 0x007[E-] ... ??? ) <- INLRT @ ??? [000077] -A--------- * ASG int [000076] -------N--- +--* FIELD int System.Collections.Generic.KeyValuePair`2[int,int]:value [000074] ----------- | \--* LCL_VAR_ADDR byref V05 tmp2 [000075] ----------- \--* LCL_VAR int V07 tmp4 ***** BB04 STMT00009 ( 0x057[--] ... ??? ) [000051] -A-XG------ * ASG struct (copy) [000050] ---XG--N--- +--* FIELD struct System.Collections.Generic.Dictionary`2+Enumerator[int,int]:_current [000039] ----------- | \--* LCL_VAR byref V00 this [000049] ----------- \--* LCL_VAR struct V05 tmp2 ***** BB04 STMT00010 ( 0x05C[E-] ... 0x05D ) [000053] ----------- * RETURN int [000052] ----------- \--* CNS_INT int 1 ------------ BB05 [05E..071) -> BB03 (cond), preds={BB01,BB02,BB03} succs={BB06,BB03} ***** BB05 STMT00001 ( 0x05E[E-] ... 0x06F ) [000013] ---XG------ * JTRUE void [000012] N--XG----U- \--* LT int [000008] ---XG------ +--* FIELD int System.Collections.Generic.Dictionary`2+Enumerator[int,int]:_index [000007] ----------- | \--* LCL_VAR byref V00 this [000011] ---XG------ \--* FIELD int System.Collections.Generic.Dictionary`2[int,int]:_count [000010] ---XG------ \--* FIELD ref System.Collections.Generic.Dictionary`2+Enumerator[int,int]:_dictionary [000009] ----------- \--* LCL_VAR byref V00 this ------------ BB06 [071..092) (return), preds={BB05} succs={} ***** BB06 STMT00011 ( 0x071[E-] ... 0x07F ) [000061] -A-XG------ * ASG int [000060] ---XG--N--- +--* FIELD int System.Collections.Generic.Dictionary`2+Enumerator[int,int]:_index [000054] ----------- | \--* LCL_VAR byref V00 this [000059] ---XG------ \--* ADD int [000057] ---XG------ +--* FIELD int System.Collections.Generic.Dictionary`2[int,int]:_count [000056] ---XG------ | \--* FIELD ref System.Collections.Generic.Dictionary`2+Enumerator[int,int]:_dictionary [000055] ----------- | \--* LCL_VAR byref V00 this [000058] ----------- \--* CNS_INT int 1 ***** BB06 STMT00012 ( 0x084[E-] ... 0x08B ) [000066] IA-XG------ * ASG struct (init) [000064] n--XG--N--- +--* OBJ struct [000063] ---XG------ | \--* FIELD_ADDR byref System.Collections.Generic.Dictionary`2+Enumerator[int,int]:_current [000062] ----------- | \--* LCL_VAR byref V00 this [000065] ----------- \--* CNS_INT int 0 ***** BB06 STMT00013 ( 0x090[E-] ... 0x091 ) [000068] ----------- * RETURN int [000067] ----------- \--* CNS_INT int 0 ------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist *************** In fgDebugCheckLoopTable: loop table not valid *************** 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 lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..013)-> BB05 ( cond ) i BB02 [0001] 1 BB01 1 [013..01A)-> BB05 (always) i BB03 [0002] 1 BB05 1 [01A..045)-> BB05 ( cond ) i idxlen bwd bwd-target BB04 [0003] 1 BB03 1 [045..05E) (return) i BB05 [0004] 3 BB01,BB02,BB03 1 [05E..071)-> BB03 ( cond ) i bwd bwd-src BB06 [0005] 1 BB05 1 [071..092) (return) i ----------------------------------------------------------------------------------------------------------------------------------------- *************** 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 Tail merge *************** Finishing PHASE Tail merge [no changes] *************** Starting PHASE Merge throw blocks *************** In fgTailMergeThrows Method does not have multiple noreturn calls. *************** Finishing PHASE Merge throw blocks [no changes] *************** Starting PHASE Update flow graph early pass *************** Finishing PHASE Update flow graph early pass [no changes] *************** Starting PHASE Morph - Promote Structs lvaTable before fgPromoteStructs ; Initial local variable assignments ; ; V00 this byref this ; V01 loc0 byref ; V02 loc1 int ; V03 OutArgs lclBlk "OutgoingArgSpace" ; V04 tmp1 ref class-hnd "impAppendStmt" ; V05 tmp2 struct ld-addr-op "NewObj constructor temp" ; V06 tmp3 int "Inlining Arg" ; V07 tmp4 int "Inlining Arg" Promoting struct local V05 (System.Collections.Generic.KeyValuePair`2[int,int]): lvaGrabTemp returning 8 (V08 tmp5) (a long lifetime temp) called for field V05.key (fldOffset=0x0). lvaGrabTemp returning 9 (V09 tmp6) (a long lifetime temp) called for field V05.value (fldOffset=0x4). lvaTable after fgPromoteStructs ; Initial local variable assignments ; ; V00 this byref this ; V01 loc0 byref ; V02 loc1 int ; V03 OutArgs lclBlk "OutgoingArgSpace" ; V04 tmp1 ref class-hnd "impAppendStmt" ; V05 tmp2 struct ld-addr-op "NewObj constructor temp" ; V06 tmp3 int "Inlining Arg" ; V07 tmp4 int "Inlining Arg" ; V08 tmp5 int V05.key(offs=0x00) P-INDEP "field V05.key (fldOffset=0x0)" ; V09 tmp6 int V05.value(offs=0x04) P-INDEP "field V05.value (fldOffset=0x4)" *************** Finishing PHASE Morph - Promote Structs Trees after Morph - Promote Structs ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..013)-> BB05 ( cond ) i BB02 [0001] 1 BB01 1 [013..01A)-> BB05 (always) i BB03 [0002] 1 BB05 1 [01A..045)-> BB05 ( cond ) i idxlen bwd bwd-target BB04 [0003] 1 BB03 1 [045..05E) (return) i BB05 [0004] 3 BB01,BB02,BB03 1 [05E..071)-> BB03 ( cond ) i bwd bwd-src BB06 [0005] 1 BB05 1 [071..092) (return) i ----------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [000..013) -> BB05 (cond), preds={} succs={BB02,BB05} ***** BB01 STMT00000 ( 0x000[E-] ... 0x011 ) [000006] ---XG------ * JTRUE void [000005] ---XG------ \--* EQ int [000001] ---XG------ +--* FIELD int System.Collections.Generic.Dictionary`2+Enumerator[int,int]:_version [000000] ----------- | \--* LCL_VAR byref V00 this [000004] ---XG------ \--* FIELD int System.Collections.Generic.Dictionary`2[int,int]:_version [000003] ---XG------ \--* FIELD ref System.Collections.Generic.Dictionary`2+Enumerator[int,int]:_dictionary [000002] ----------- \--* LCL_VAR byref V00 this ------------ BB02 [013..01A) -> BB05 (always), preds={BB01} succs={BB05} ***** BB02 STMT00014 ( 0x013[E-] ... 0x018 ) [000069] --C-G------ * CALL void System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion() ------------ BB03 [01A..045) -> BB05 (cond), preds={BB05} succs={BB04,BB05} ***** BB03 STMT00003 ( 0x01A[E-] ... 0x02C ) [000023] -A-XG------ * ASG ref [000022] D------N--- +--* LCL_VAR ref V04 tmp1 [000016] ---XG------ \--* FIELD ref System.Collections.Generic.Dictionary`2[int,int]:_entries [000015] ---XG------ \--* FIELD ref System.Collections.Generic.Dictionary`2+Enumerator[int,int]:_dictionary [000014] ----------- \--* LCL_VAR byref V00 this ***** BB03 STMT00002 ( 0x01A[E-] ... ??? ) [000021] -A-XG------ * ASG int [000020] D------N--- +--* LCL_VAR int V02 loc1 [000019] ---XG------ \--* FIELD int System.Collections.Generic.Dictionary`2+Enumerator[int,int]:_index [000018] ----------- \--* LCL_VAR byref V00 this ***** BB03 STMT00004 ( ??? ... 0x030 ) [000029] -A-XG------ * ASG int [000028] ---XG--N--- +--* FIELD int System.Collections.Generic.Dictionary`2+Enumerator[int,int]:_index [000017] ----------- | \--* LCL_VAR byref V00 this [000027] ----------- \--* ADD int [000025] ----------- +--* LCL_VAR int V02 loc1 [000026] ----------- \--* CNS_INT int 1 ***** BB03 STMT00005 ( ??? ... 0x03B ) [000033] -A-XG------ * ASG byref [000032] D------N--- +--* LCL_VAR byref V01 loc0 [000031] ---XG------ \--* INDEX_ADDR byref System.Collections.Generic.Dictionary`2+Entry[] [000024] ----------- +--* LCL_VAR ref V04 tmp1 [000030] ----------- \--* LCL_VAR int V02 loc1 ***** BB03 STMT00006 ( 0x03C[E-] ... 0x043 ) [000038] ---XG------ * JTRUE void [000037] ---XG------ \--* LT int [000035] ---XG------ +--* FIELD int System.Collections.Generic.Dictionary`2+Entry[int,int]:next [000034] ----------- | \--* LCL_VAR byref V01 loc0 [000036] ----------- \--* CNS_INT int -1 ------------ BB04 [045..05E) (return), preds={BB03} succs={} ***** BB04 STMT00007 ( 0x045[E-] ... 0x057 ) [000046] IA--------- * ASG struct (init) [000044] D------N--- +--* LCL_VAR struct(P) V05 tmp2 +--* int V05.System.Collections.Generic.KeyValuePair`2[int,int]:key (offs=0x00) -> V08 tmp5 +--* int V05.System.Collections.Generic.KeyValuePair`2[int,int]:value (offs=0x04) -> V09 tmp6 [000045] ----------- \--* CNS_INT int 0 ***** BB04 STMT00017 ( ??? ... ??? ) [000079] -A-XG------ * ASG int [000078] D------N--- +--* LCL_VAR int V06 tmp3 [000041] ---XG------ \--* FIELD int System.Collections.Generic.Dictionary`2+Entry[int,int]:key [000040] ----------- \--* LCL_VAR byref V01 loc0 ***** BB04 STMT00018 ( ??? ... ??? ) [000081] -A-XG------ * ASG int [000080] D------N--- +--* LCL_VAR int V07 tmp4 [000043] ---XG------ \--* FIELD int System.Collections.Generic.Dictionary`2+Entry[int,int]:value [000042] ----------- \--* LCL_VAR byref V01 loc0 ***** BB04 STMT00015 ( INL01 @ 0x000[E-] ... ??? ) <- INLRT @ ??? [000073] -A--------- * ASG int [000072] -------N--- +--* FIELD int System.Collections.Generic.KeyValuePair`2[int,int]:key [000070] ----------- | \--* LCL_VAR_ADDR byref V05 tmp2 | \--* int V05.System.Collections.Generic.KeyValuePair`2[int,int]:key (offs=0x00) -> V08 tmp5 | \--* int V05.System.Collections.Generic.KeyValuePair`2[int,int]:value (offs=0x04) -> V09 tmp6 [000071] ----------- \--* LCL_VAR int V06 tmp3 ***** BB04 STMT00016 ( INL01 @ 0x007[E-] ... ??? ) <- INLRT @ ??? [000077] -A--------- * ASG int [000076] -------N--- +--* FIELD int System.Collections.Generic.KeyValuePair`2[int,int]:value [000074] ----------- | \--* LCL_VAR_ADDR byref V05 tmp2 | \--* int V05.System.Collections.Generic.KeyValuePair`2[int,int]:key (offs=0x00) -> V08 tmp5 | \--* int V05.System.Collections.Generic.KeyValuePair`2[int,int]:value (offs=0x04) -> V09 tmp6 [000075] ----------- \--* LCL_VAR int V07 tmp4 ***** BB04 STMT00009 ( 0x057[--] ... ??? ) [000051] -A-XG------ * ASG struct (copy) [000050] ---XG--N--- +--* FIELD struct System.Collections.Generic.Dictionary`2+Enumerator[int,int]:_current [000039] ----------- | \--* LCL_VAR byref V00 this [000049] ----------- \--* LCL_VAR struct(P) V05 tmp2 \--* int V05.System.Collections.Generic.KeyValuePair`2[int,int]:key (offs=0x00) -> V08 tmp5 \--* int V05.System.Collections.Generic.KeyValuePair`2[int,int]:value (offs=0x04) -> V09 tmp6 ***** BB04 STMT00010 ( 0x05C[E-] ... 0x05D ) [000053] ----------- * RETURN int [000052] ----------- \--* CNS_INT int 1 ------------ BB05 [05E..071) -> BB03 (cond), preds={BB01,BB02,BB03} succs={BB06,BB03} ***** BB05 STMT00001 ( 0x05E[E-] ... 0x06F ) [000013] ---XG------ * JTRUE void [000012] N--XG----U- \--* LT int [000008] ---XG------ +--* FIELD int System.Collections.Generic.Dictionary`2+Enumerator[int,int]:_index [000007] ----------- | \--* LCL_VAR byref V00 this [000011] ---XG------ \--* FIELD int System.Collections.Generic.Dictionary`2[int,int]:_count [000010] ---XG------ \--* FIELD ref System.Collections.Generic.Dictionary`2+Enumerator[int,int]:_dictionary [000009] ----------- \--* LCL_VAR byref V00 this ------------ BB06 [071..092) (return), preds={BB05} succs={} ***** BB06 STMT00011 ( 0x071[E-] ... 0x07F ) [000061] -A-XG------ * ASG int [000060] ---XG--N--- +--* FIELD int System.Collections.Generic.Dictionary`2+Enumerator[int,int]:_index [000054] ----------- | \--* LCL_VAR byref V00 this [000059] ---XG------ \--* ADD int [000057] ---XG------ +--* FIELD int System.Collections.Generic.Dictionary`2[int,int]:_count [000056] ---XG------ | \--* FIELD ref System.Collections.Generic.Dictionary`2+Enumerator[int,int]:_dictionary [000055] ----------- | \--* LCL_VAR byref V00 this [000058] ----------- \--* CNS_INT int 1 ***** BB06 STMT00012 ( 0x084[E-] ... 0x08B ) [000066] IA-XG------ * ASG struct (init) [000064] n--XG--N--- +--* OBJ struct [000063] ---XG------ | \--* FIELD_ADDR byref System.Collections.Generic.Dictionary`2+Enumerator[int,int]:_current [000062] ----------- | \--* LCL_VAR byref V00 this [000065] ----------- \--* CNS_INT int 0 ***** BB06 STMT00013 ( 0x090[E-] ... 0x091 ) [000068] ----------- * RETURN int [000067] ----------- \--* CNS_INT int 0 ------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist *************** In fgDebugCheckLoopTable: loop table not valid *************** Starting PHASE Morph - Structs/AddrExp LocalAddressVisitor visiting statement: STMT00000 ( 0x000[E-] ... 0x011 ) [000006] ---XG------ * JTRUE void [000005] ---XG------ \--* EQ int [000001] ---XG------ +--* FIELD int System.Collections.Generic.Dictionary`2+Enumerator[int,int]:_version [000000] ----------- | \--* LCL_VAR byref V00 this [000004] ---XG------ \--* FIELD int System.Collections.Generic.Dictionary`2[int,int]:_version [000003] ---XG------ \--* FIELD ref System.Collections.Generic.Dictionary`2+Enumerator[int,int]:_dictionary [000002] ----------- \--* LCL_VAR byref V00 this LocalAddressVisitor visiting statement: STMT00014 ( 0x013[E-] ... 0x018 ) [000069] --C-G------ * CALL void System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion() LocalAddressVisitor visiting statement: STMT00003 ( 0x01A[E-] ... 0x02C ) [000023] -A-XG------ * ASG ref [000022] D------N--- +--* LCL_VAR ref V04 tmp1 [000016] ---XG------ \--* FIELD ref System.Collections.Generic.Dictionary`2[int,int]:_entries [000015] ---XG------ \--* FIELD ref System.Collections.Generic.Dictionary`2+Enumerator[int,int]:_dictionary [000014] ----------- \--* LCL_VAR byref V00 this LocalAddressVisitor visiting statement: STMT00002 ( 0x01A[E-] ... ??? ) [000021] -A-XG------ * ASG int [000020] D------N--- +--* LCL_VAR int V02 loc1 [000019] ---XG------ \--* FIELD int System.Collections.Generic.Dictionary`2+Enumerator[int,int]:_index [000018] ----------- \--* LCL_VAR byref V00 this LocalAddressVisitor visiting statement: STMT00004 ( ??? ... 0x030 ) [000029] -A-XG------ * ASG int [000028] ---XG--N--- +--* FIELD int System.Collections.Generic.Dictionary`2+Enumerator[int,int]:_index [000017] ----------- | \--* LCL_VAR byref V00 this [000027] ----------- \--* ADD int [000025] ----------- +--* LCL_VAR int V02 loc1 [000026] ----------- \--* CNS_INT int 1 LocalAddressVisitor visiting statement: STMT00005 ( ??? ... 0x03B ) [000033] -A-XG------ * ASG byref [000032] D------N--- +--* LCL_VAR byref V01 loc0 [000031] ---XG------ \--* INDEX_ADDR byref System.Collections.Generic.Dictionary`2+Entry[] [000024] ----------- +--* LCL_VAR ref V04 tmp1 [000030] ----------- \--* LCL_VAR int V02 loc1 LocalAddressVisitor visiting statement: STMT00006 ( 0x03C[E-] ... 0x043 ) [000038] ---XG------ * JTRUE void [000037] ---XG------ \--* LT int [000035] ---XG------ +--* FIELD int System.Collections.Generic.Dictionary`2+Entry[int,int]:next [000034] ----------- | \--* LCL_VAR byref V01 loc0 [000036] ----------- \--* CNS_INT int -1 LocalAddressVisitor visiting statement: STMT00007 ( 0x045[E-] ... 0x057 ) [000046] IA--------- * ASG struct (init) [000044] D------N--- +--* LCL_VAR struct(P) V05 tmp2 +--* int V05.System.Collections.Generic.KeyValuePair`2[int,int]:key (offs=0x00) -> V08 tmp5 +--* int V05.System.Collections.Generic.KeyValuePair`2[int,int]:value (offs=0x04) -> V09 tmp6 [000045] ----------- \--* CNS_INT int 0 LocalAddressVisitor visiting statement: STMT00017 ( ??? ... ??? ) [000079] -A-XG------ * ASG int [000078] D------N--- +--* LCL_VAR int V06 tmp3 [000041] ---XG------ \--* FIELD int System.Collections.Generic.Dictionary`2+Entry[int,int]:key [000040] ----------- \--* LCL_VAR byref V01 loc0 LocalAddressVisitor visiting statement: STMT00018 ( ??? ... ??? ) [000081] -A-XG------ * ASG int [000080] D------N--- +--* LCL_VAR int V07 tmp4 [000043] ---XG------ \--* FIELD int System.Collections.Generic.Dictionary`2+Entry[int,int]:value [000042] ----------- \--* LCL_VAR byref V01 loc0 LocalAddressVisitor visiting statement: STMT00015 ( INL01 @ 0x000[E-] ... ??? ) <- INLRT @ ??? [000073] -A--------- * ASG int [000072] -------N--- +--* FIELD int System.Collections.Generic.KeyValuePair`2[int,int]:key [000070] ----------- | \--* LCL_VAR_ADDR byref V05 tmp2 | \--* int V05.System.Collections.Generic.KeyValuePair`2[int,int]:key (offs=0x00) -> V08 tmp5 | \--* int V05.System.Collections.Generic.KeyValuePair`2[int,int]:value (offs=0x04) -> V09 tmp6 [000071] ----------- \--* LCL_VAR int V06 tmp3 Replacing the field in promoted struct with local var V08 LocalAddressVisitor modified statement: STMT00015 ( INL01 @ 0x000[E-] ... ??? ) <- INLRT @ ??? [000073] -A--------- * ASG int [000072] D------N--- +--* LCL_VAR int V08 tmp5 [000071] ----------- \--* LCL_VAR int V06 tmp3 LocalAddressVisitor visiting statement: STMT00016 ( INL01 @ 0x007[E-] ... ??? ) <- INLRT @ ??? [000077] -A--------- * ASG int [000076] -------N--- +--* FIELD int System.Collections.Generic.KeyValuePair`2[int,int]:value [000074] ----------- | \--* LCL_VAR_ADDR byref V05 tmp2 | \--* int V05.System.Collections.Generic.KeyValuePair`2[int,int]:key (offs=0x00) -> V08 tmp5 | \--* int V05.System.Collections.Generic.KeyValuePair`2[int,int]:value (offs=0x04) -> V09 tmp6 [000075] ----------- \--* LCL_VAR int V07 tmp4 Replacing the field in promoted struct with local var V09 LocalAddressVisitor modified statement: STMT00016 ( INL01 @ 0x007[E-] ... ??? ) <- INLRT @ ??? [000077] -A--------- * ASG int [000076] D------N--- +--* LCL_VAR int V09 tmp6 [000075] ----------- \--* LCL_VAR int V07 tmp4 LocalAddressVisitor visiting statement: STMT00009 ( 0x057[--] ... ??? ) [000051] -A-XG------ * ASG struct (copy) [000050] ---XG--N--- +--* FIELD struct System.Collections.Generic.Dictionary`2+Enumerator[int,int]:_current [000039] ----------- | \--* LCL_VAR byref V00 this [000049] ----------- \--* LCL_VAR struct(P) V05 tmp2 \--* int V05.System.Collections.Generic.KeyValuePair`2[int,int]:key (offs=0x00) -> V08 tmp5 \--* int V05.System.Collections.Generic.KeyValuePair`2[int,int]:value (offs=0x04) -> V09 tmp6 LocalAddressVisitor visiting statement: STMT00010 ( 0x05C[E-] ... 0x05D ) [000053] ----------- * RETURN int [000052] ----------- \--* CNS_INT int 1 LocalAddressVisitor visiting statement: STMT00001 ( 0x05E[E-] ... 0x06F ) [000013] ---XG------ * JTRUE void [000012] N--XG----U- \--* LT int [000008] ---XG------ +--* FIELD int System.Collections.Generic.Dictionary`2+Enumerator[int,int]:_index [000007] ----------- | \--* LCL_VAR byref V00 this [000011] ---XG------ \--* FIELD int System.Collections.Generic.Dictionary`2[int,int]:_count [000010] ---XG------ \--* FIELD ref System.Collections.Generic.Dictionary`2+Enumerator[int,int]:_dictionary [000009] ----------- \--* LCL_VAR byref V00 this LocalAddressVisitor visiting statement: STMT00011 ( 0x071[E-] ... 0x07F ) [000061] -A-XG------ * ASG int [000060] ---XG--N--- +--* FIELD int System.Collections.Generic.Dictionary`2+Enumerator[int,int]:_index [000054] ----------- | \--* LCL_VAR byref V00 this [000059] ---XG------ \--* ADD int [000057] ---XG------ +--* FIELD int System.Collections.Generic.Dictionary`2[int,int]:_count [000056] ---XG------ | \--* FIELD ref System.Collections.Generic.Dictionary`2+Enumerator[int,int]:_dictionary [000055] ----------- | \--* LCL_VAR byref V00 this [000058] ----------- \--* CNS_INT int 1 LocalAddressVisitor visiting statement: STMT00012 ( 0x084[E-] ... 0x08B ) [000066] IA-XG------ * ASG struct (init) [000064] n--XG--N--- +--* OBJ struct [000063] ---XG------ | \--* FIELD_ADDR byref System.Collections.Generic.Dictionary`2+Enumerator[int,int]:_current [000062] ----------- | \--* LCL_VAR byref V00 this [000065] ----------- \--* CNS_INT int 0 LocalAddressVisitor visiting statement: STMT00013 ( 0x090[E-] ... 0x091 ) [000068] ----------- * RETURN int [000067] ----------- \--* CNS_INT int 0 *************** Finishing PHASE Morph - Structs/AddrExp Trees after Morph - Structs/AddrExp ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..013)-> BB05 ( cond ) i BB02 [0001] 1 BB01 1 [013..01A)-> BB05 (always) i BB03 [0002] 1 BB05 1 [01A..045)-> BB05 ( cond ) i idxlen bwd bwd-target BB04 [0003] 1 BB03 1 [045..05E) (return) i BB05 [0004] 3 BB01,BB02,BB03 1 [05E..071)-> BB03 ( cond ) i bwd bwd-src BB06 [0005] 1 BB05 1 [071..092) (return) i ----------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [000..013) -> BB05 (cond), preds={} succs={BB02,BB05} ***** BB01 STMT00000 ( 0x000[E-] ... 0x011 ) [000006] ---XG------ * JTRUE void [000005] ---XG------ \--* EQ int [000001] ---XG------ +--* FIELD int System.Collections.Generic.Dictionary`2+Enumerator[int,int]:_version [000000] ----------- | \--* LCL_VAR byref V00 this [000004] ---XG------ \--* FIELD int System.Collections.Generic.Dictionary`2[int,int]:_version [000003] ---XG------ \--* FIELD ref System.Collections.Generic.Dictionary`2+Enumerator[int,int]:_dictionary [000002] ----------- \--* LCL_VAR byref V00 this ------------ BB02 [013..01A) -> BB05 (always), preds={BB01} succs={BB05} ***** BB02 STMT00014 ( 0x013[E-] ... 0x018 ) [000069] --C-G------ * CALL void System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion() ------------ BB03 [01A..045) -> BB05 (cond), preds={BB05} succs={BB04,BB05} ***** BB03 STMT00003 ( 0x01A[E-] ... 0x02C ) [000023] -A-XG------ * ASG ref [000022] D------N--- +--* LCL_VAR ref V04 tmp1 [000016] ---XG------ \--* FIELD ref System.Collections.Generic.Dictionary`2[int,int]:_entries [000015] ---XG------ \--* FIELD ref System.Collections.Generic.Dictionary`2+Enumerator[int,int]:_dictionary [000014] ----------- \--* LCL_VAR byref V00 this ***** BB03 STMT00002 ( 0x01A[E-] ... ??? ) [000021] -A-XG------ * ASG int [000020] D------N--- +--* LCL_VAR int V02 loc1 [000019] ---XG------ \--* FIELD int System.Collections.Generic.Dictionary`2+Enumerator[int,int]:_index [000018] ----------- \--* LCL_VAR byref V00 this ***** BB03 STMT00004 ( ??? ... 0x030 ) [000029] -A-XG------ * ASG int [000028] ---XG--N--- +--* FIELD int System.Collections.Generic.Dictionary`2+Enumerator[int,int]:_index [000017] ----------- | \--* LCL_VAR byref V00 this [000027] ----------- \--* ADD int [000025] ----------- +--* LCL_VAR int V02 loc1 [000026] ----------- \--* CNS_INT int 1 ***** BB03 STMT00005 ( ??? ... 0x03B ) [000033] -A-XG------ * ASG byref [000032] D------N--- +--* LCL_VAR byref V01 loc0 [000031] ---XG------ \--* INDEX_ADDR byref System.Collections.Generic.Dictionary`2+Entry[] [000024] ----------- +--* LCL_VAR ref V04 tmp1 [000030] ----------- \--* LCL_VAR int V02 loc1 ***** BB03 STMT00006 ( 0x03C[E-] ... 0x043 ) [000038] ---XG------ * JTRUE void [000037] ---XG------ \--* LT int [000035] ---XG------ +--* FIELD int System.Collections.Generic.Dictionary`2+Entry[int,int]:next [000034] ----------- | \--* LCL_VAR byref V01 loc0 [000036] ----------- \--* CNS_INT int -1 ------------ BB04 [045..05E) (return), preds={BB03} succs={} ***** BB04 STMT00007 ( 0x045[E-] ... 0x057 ) [000046] IA--------- * ASG struct (init) [000044] D------N--- +--* LCL_VAR struct(P) V05 tmp2 +--* int V05.System.Collections.Generic.KeyValuePair`2[int,int]:key (offs=0x00) -> V08 tmp5 +--* int V05.System.Collections.Generic.KeyValuePair`2[int,int]:value (offs=0x04) -> V09 tmp6 [000045] ----------- \--* CNS_INT int 0 ***** BB04 STMT00017 ( ??? ... ??? ) [000079] -A-XG------ * ASG int [000078] D------N--- +--* LCL_VAR int V06 tmp3 [000041] ---XG------ \--* FIELD int System.Collections.Generic.Dictionary`2+Entry[int,int]:key [000040] ----------- \--* LCL_VAR byref V01 loc0 ***** BB04 STMT00018 ( ??? ... ??? ) [000081] -A-XG------ * ASG int [000080] D------N--- +--* LCL_VAR int V07 tmp4 [000043] ---XG------ \--* FIELD int System.Collections.Generic.Dictionary`2+Entry[int,int]:value [000042] ----------- \--* LCL_VAR byref V01 loc0 ***** BB04 STMT00015 ( INL01 @ 0x000[E-] ... ??? ) <- INLRT @ ??? [000073] -A--------- * ASG int [000072] D------N--- +--* LCL_VAR int V08 tmp5 [000071] ----------- \--* LCL_VAR int V06 tmp3 ***** BB04 STMT00016 ( INL01 @ 0x007[E-] ... ??? ) <- INLRT @ ??? [000077] -A--------- * ASG int [000076] D------N--- +--* LCL_VAR int V09 tmp6 [000075] ----------- \--* LCL_VAR int V07 tmp4 ***** BB04 STMT00009 ( 0x057[--] ... ??? ) [000051] -A-XG------ * ASG struct (copy) [000050] ---XG--N--- +--* FIELD struct System.Collections.Generic.Dictionary`2+Enumerator[int,int]:_current [000039] ----------- | \--* LCL_VAR byref V00 this [000049] ----------- \--* LCL_VAR struct(P) V05 tmp2 \--* int V05.System.Collections.Generic.KeyValuePair`2[int,int]:key (offs=0x00) -> V08 tmp5 \--* int V05.System.Collections.Generic.KeyValuePair`2[int,int]:value (offs=0x04) -> V09 tmp6 ***** BB04 STMT00010 ( 0x05C[E-] ... 0x05D ) [000053] ----------- * RETURN int [000052] ----------- \--* CNS_INT int 1 ------------ BB05 [05E..071) -> BB03 (cond), preds={BB01,BB02,BB03} succs={BB06,BB03} ***** BB05 STMT00001 ( 0x05E[E-] ... 0x06F ) [000013] ---XG------ * JTRUE void [000012] N--XG----U- \--* LT int [000008] ---XG------ +--* FIELD int System.Collections.Generic.Dictionary`2+Enumerator[int,int]:_index [000007] ----------- | \--* LCL_VAR byref V00 this [000011] ---XG------ \--* FIELD int System.Collections.Generic.Dictionary`2[int,int]:_count [000010] ---XG------ \--* FIELD ref System.Collections.Generic.Dictionary`2+Enumerator[int,int]:_dictionary [000009] ----------- \--* LCL_VAR byref V00 this ------------ BB06 [071..092) (return), preds={BB05} succs={} ***** BB06 STMT00011 ( 0x071[E-] ... 0x07F ) [000061] -A-XG------ * ASG int [000060] ---XG--N--- +--* FIELD int System.Collections.Generic.Dictionary`2+Enumerator[int,int]:_index [000054] ----------- | \--* LCL_VAR byref V00 this [000059] ---XG------ \--* ADD int [000057] ---XG------ +--* FIELD int System.Collections.Generic.Dictionary`2[int,int]:_count [000056] ---XG------ | \--* FIELD ref System.Collections.Generic.Dictionary`2+Enumerator[int,int]:_dictionary [000055] ----------- | \--* LCL_VAR byref V00 this [000058] ----------- \--* CNS_INT int 1 ***** BB06 STMT00012 ( 0x084[E-] ... 0x08B ) [000066] IA-XG------ * ASG struct (init) [000064] n--XG--N--- +--* OBJ struct [000063] ---XG------ | \--* FIELD_ADDR byref System.Collections.Generic.Dictionary`2+Enumerator[int,int]:_current [000062] ----------- | \--* LCL_VAR byref V00 this [000065] ----------- \--* CNS_INT int 0 ***** BB06 STMT00013 ( 0x090[E-] ... 0x091 ) [000068] ----------- * RETURN int [000067] ----------- \--* CNS_INT int 0 ------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist *************** In fgDebugCheckLoopTable: loop table not valid *************** Starting PHASE Early liveness Tracked variable (8 out of 10) table: V00 this [ byref]: refCnt = 11, refCntWtd = 0 V01 loc0 [ byref]: refCnt = 4, refCntWtd = 0 V02 loc1 [ int]: refCnt = 3, refCntWtd = 0 V04 tmp1 [ ref]: refCnt = 2, refCntWtd = 0 V06 tmp3 [ int]: refCnt = 2, refCntWtd = 0 V07 tmp4 [ int]: refCnt = 2, refCntWtd = 0 V08 tmp5 [ int]: refCnt = 3, refCntWtd = 0 V09 tmp6 [ int]: refCnt = 3, refCntWtd = 0 *************** In fgPerBlockLocalVarLiveness() BB01 USE(1)={V00} DEF(0)={ } BB02 USE(0)={} DEF(0)={} BB03 USE(1)={V00 } DEF(3)={ V01 V02 V04} BB04 USE(2)={V00 V01 } DEF(4)={ V06 V07 V08 V09} BB05 USE(1)={V00} DEF(0)={ } BB06 USE(1)={V00} DEF(0)={ } ** Memory liveness computed, GcHeap states and ByrefExposed states match *************** In fgInterBlockLocalVarLiveness() BB liveness after fgLiveVarAnalysis(): BB01 IN (1)={V00} OUT(1)={V00} BB02 IN (1)={V00} OUT(1)={V00} BB03 IN (1)={V00 } OUT(2)={V00 V01} BB04 IN (2)={V00 V01} OUT(0)={ } BB05 IN (1)={V00} OUT(1)={V00} BB06 IN (1)={V00} OUT(0)={ } Store [000046] is dead and has no side effects, removing statement removing useless STMT00007 ( 0x045[E-] ... 0x057 ) [000046] IA--------- * ASG struct (init) [000044] D------N--- +--* LCL_VAR struct(P) V05 tmp2 +--* int V05.System.Collections.Generic.KeyValuePair`2[int,int]:key (offs=0x00) -> V08 tmp5 +--* int V05.System.Collections.Generic.KeyValuePair`2[int,int]:value (offs=0x04) -> V09 tmp6 [000045] ----------- \--* CNS_INT int 0 from BB04 *************** Finishing PHASE Early liveness Trees after Early liveness ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..013)-> BB05 ( cond ) i BB02 [0001] 1 BB01 1 [013..01A)-> BB05 (always) i BB03 [0002] 1 BB05 1 [01A..045)-> BB05 ( cond ) i idxlen bwd bwd-target BB04 [0003] 1 BB03 1 [045..05E) (return) i BB05 [0004] 3 BB01,BB02,BB03 1 [05E..071)-> BB03 ( cond ) i bwd bwd-src BB06 [0005] 1 BB05 1 [071..092) (return) i ----------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [000..013) -> BB05 (cond), preds={} succs={BB02,BB05} ***** BB01 STMT00000 ( 0x000[E-] ... 0x011 ) [000006] ---XG------ * JTRUE void [000005] ---XG------ \--* EQ int [000001] ---XG------ +--* FIELD int System.Collections.Generic.Dictionary`2+Enumerator[int,int]:_version [000000] ----------- | \--* LCL_VAR byref V00 this [000004] ---XG------ \--* FIELD int System.Collections.Generic.Dictionary`2[int,int]:_version [000003] ---XG------ \--* FIELD ref System.Collections.Generic.Dictionary`2+Enumerator[int,int]:_dictionary [000002] ----------- \--* LCL_VAR byref V00 this ------------ BB02 [013..01A) -> BB05 (always), preds={BB01} succs={BB05} ***** BB02 STMT00014 ( 0x013[E-] ... 0x018 ) [000069] --C-G------ * CALL void System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion() ------------ BB03 [01A..045) -> BB05 (cond), preds={BB05} succs={BB04,BB05} ***** BB03 STMT00003 ( 0x01A[E-] ... 0x02C ) [000023] -A-XG------ * ASG ref [000022] D------N--- +--* LCL_VAR ref V04 tmp1 [000016] ---XG------ \--* FIELD ref System.Collections.Generic.Dictionary`2[int,int]:_entries [000015] ---XG------ \--* FIELD ref System.Collections.Generic.Dictionary`2+Enumerator[int,int]:_dictionary [000014] ----------- \--* LCL_VAR byref V00 this ***** BB03 STMT00002 ( 0x01A[E-] ... ??? ) [000021] -A-XG------ * ASG int [000020] D------N--- +--* LCL_VAR int V02 loc1 [000019] ---XG------ \--* FIELD int System.Collections.Generic.Dictionary`2+Enumerator[int,int]:_index [000018] ----------- \--* LCL_VAR byref V00 this ***** BB03 STMT00004 ( ??? ... 0x030 ) [000029] -A-XG------ * ASG int [000028] ---XG--N--- +--* FIELD int System.Collections.Generic.Dictionary`2+Enumerator[int,int]:_index [000017] ----------- | \--* LCL_VAR byref V00 this [000027] ----------- \--* ADD int [000025] ----------- +--* LCL_VAR int V02 loc1 [000026] ----------- \--* CNS_INT int 1 ***** BB03 STMT00005 ( ??? ... 0x03B ) [000033] -A-XG------ * ASG byref [000032] D------N--- +--* LCL_VAR byref V01 loc0 [000031] ---XG------ \--* INDEX_ADDR byref System.Collections.Generic.Dictionary`2+Entry[] [000024] ----------- +--* LCL_VAR ref V04 tmp1 (last use) [000030] ----------- \--* LCL_VAR int V02 loc1 (last use) ***** BB03 STMT00006 ( 0x03C[E-] ... 0x043 ) [000038] ---XG------ * JTRUE void [000037] ---XG------ \--* LT int [000035] ---XG------ +--* FIELD int System.Collections.Generic.Dictionary`2+Entry[int,int]:next [000034] ----------- | \--* LCL_VAR byref V01 loc0 [000036] ----------- \--* CNS_INT int -1 ------------ BB04 [045..05E) (return), preds={BB03} succs={} ***** BB04 STMT00017 ( ??? ... ??? ) [000079] -A-XG------ * ASG int [000078] D------N--- +--* LCL_VAR int V06 tmp3 [000041] ---XG------ \--* FIELD int System.Collections.Generic.Dictionary`2+Entry[int,int]:key [000040] ----------- \--* LCL_VAR byref V01 loc0 ***** BB04 STMT00018 ( ??? ... ??? ) [000081] -A-XG------ * ASG int [000080] D------N--- +--* LCL_VAR int V07 tmp4 [000043] ---XG------ \--* FIELD int System.Collections.Generic.Dictionary`2+Entry[int,int]:value [000042] ----------- \--* LCL_VAR byref V01 loc0 (last use) ***** BB04 STMT00015 ( INL01 @ 0x000[E-] ... ??? ) <- INLRT @ ??? [000073] -A--------- * ASG int [000072] D------N--- +--* LCL_VAR int V08 tmp5 [000071] ----------- \--* LCL_VAR int V06 tmp3 (last use) ***** BB04 STMT00016 ( INL01 @ 0x007[E-] ... ??? ) <- INLRT @ ??? [000077] -A--------- * ASG int [000076] D------N--- +--* LCL_VAR int V09 tmp6 [000075] ----------- \--* LCL_VAR int V07 tmp4 (last use) ***** BB04 STMT00009 ( 0x057[--] ... ??? ) [000051] -A-XG------ * ASG struct (copy) [000050] ---XG--N--- +--* FIELD struct System.Collections.Generic.Dictionary`2+Enumerator[int,int]:_current [000039] ----------- | \--* LCL_VAR byref V00 this (last use) [000049] ----------- \--* LCL_VAR struct(P) V05 tmp2 \--* int V05.System.Collections.Generic.KeyValuePair`2[int,int]:key (offs=0x00) -> V08 tmp5 (last use) \--* int V05.System.Collections.Generic.KeyValuePair`2[int,int]:value (offs=0x04) -> V09 tmp6 (last use) ***** BB04 STMT00010 ( 0x05C[E-] ... 0x05D ) [000053] ----------- * RETURN int [000052] ----------- \--* CNS_INT int 1 ------------ BB05 [05E..071) -> BB03 (cond), preds={BB01,BB02,BB03} succs={BB06,BB03} ***** BB05 STMT00001 ( 0x05E[E-] ... 0x06F ) [000013] ---XG------ * JTRUE void [000012] N--XG----U- \--* LT int [000008] ---XG------ +--* FIELD int System.Collections.Generic.Dictionary`2+Enumerator[int,int]:_index [000007] ----------- | \--* LCL_VAR byref V00 this [000011] ---XG------ \--* FIELD int System.Collections.Generic.Dictionary`2[int,int]:_count [000010] ---XG------ \--* FIELD ref System.Collections.Generic.Dictionary`2+Enumerator[int,int]:_dictionary [000009] ----------- \--* LCL_VAR byref V00 this ------------ BB06 [071..092) (return), preds={BB05} succs={} ***** BB06 STMT00011 ( 0x071[E-] ... 0x07F ) [000061] -A-XG------ * ASG int [000060] ---XG--N--- +--* FIELD int System.Collections.Generic.Dictionary`2+Enumerator[int,int]:_index [000054] ----------- | \--* LCL_VAR byref V00 this [000059] ---XG------ \--* ADD int [000057] ---XG------ +--* FIELD int System.Collections.Generic.Dictionary`2[int,int]:_count [000056] ---XG------ | \--* FIELD ref System.Collections.Generic.Dictionary`2+Enumerator[int,int]:_dictionary [000055] ----------- | \--* LCL_VAR byref V00 this [000058] ----------- \--* CNS_INT int 1 ***** BB06 STMT00012 ( 0x084[E-] ... 0x08B ) [000066] IA-XG------ * ASG struct (init) [000064] n--XG--N--- +--* OBJ struct [000063] ---XG------ | \--* FIELD_ADDR byref System.Collections.Generic.Dictionary`2+Enumerator[int,int]:_current [000062] ----------- | \--* LCL_VAR byref V00 this (last use) [000065] ----------- \--* CNS_INT int 0 ***** BB06 STMT00013 ( 0x090[E-] ... 0x091 ) [000068] ----------- * RETURN int [000067] ----------- \--* CNS_INT int 0 ------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist *************** In fgDebugCheckLoopTable: loop table not valid *************** Starting PHASE Forward Substitution ===> BB01 ===> BB02 ===> BB03 [000023]: no next stmt use [000021]: next stmt has non-last use [000033]: next stmt has non-last use ===> BB04 [000079]: no next stmt use [000081]: no next stmt use [000073]: no next stmt use [000077]: next stmt has non-last use ===> BB05 ===> BB06 *************** Finishing PHASE Forward Substitution [no changes] *************** Starting PHASE Morph - ByRefs *************** Finishing PHASE Morph - ByRefs [no changes] *************** Starting PHASE Morph - Global *************** In fgMorphBlocks() Morphing BB01 of 'System.Collections.Generic.Dictionary`2+Enumerator[int,int]:MoveNext():bool:this' fgMorphTree BB01, STMT00000 (before) [000006] ---XG------ * JTRUE void [000005] ---XG------ \--* EQ int [000001] ---XG------ +--* FIELD int System.Collections.Generic.Dictionary`2+Enumerator[int,int]:_version [000000] ----------- | \--* LCL_VAR byref V00 this [000004] ---XG------ \--* FIELD int System.Collections.Generic.Dictionary`2[int,int]:_version [000003] ---XG------ \--* FIELD ref System.Collections.Generic.Dictionary`2+Enumerator[int,int]:_dictionary [000002] ----------- \--* LCL_VAR byref V00 this Final value of Compiler::fgMorphField after morphing: [000001] ---XG------ * IND int [000084] -----+----- \--* ADD byref [000000] -----+----- +--* LCL_VAR byref V00 this [000083] -----+----- \--* CNS_INT long 8 Final value of Compiler::fgMorphField after morphing: [000003] ---XG------ * IND ref [000002] -----+----- \--* LCL_VAR byref V00 this Final value of Compiler::fgMorphField after morphing: [000004] ---XG------ * IND int [000086] ---XG+----- \--* ADD byref [000003] ---XG+----- +--* IND ref [000002] -----+----- | \--* LCL_VAR byref V00 this [000085] -----+----- \--* CNS_INT long 68 Fseq[_version] fgMorphTree BB01, STMT00000 (after) [000006] ---XG+----- * JTRUE void [000005] J--XG+-N--- \--* EQ int [000001] ---XG+----- +--* IND int [000084] -----+----- | \--* ADD byref [000000] -----+----- | +--* LCL_VAR byref V00 this [000083] -----+----- | \--* CNS_INT long 8 [000004] ---XG+----- \--* IND int [000086] ---XG+----- \--* ADD byref [000003] ---XG+----- +--* IND ref [000002] -----+----- | \--* LCL_VAR byref V00 this [000085] -----+----- \--* CNS_INT long 68 Fseq[_version] Morphing BB02 of 'System.Collections.Generic.Dictionary`2+Enumerator[int,int]:MoveNext():bool:this' fgMorphTree BB02, STMT00014 (before) [000069] --C-G------ * CALL void System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion() Initializing arg info for 69.CALL: Args for call [000069] CALL after AddFinalArgsAndDetermineABIInfo: Morphing args for 69.CALL: Args for [000069].CALL after fgMorphArgs: OutgoingArgsStackSize is 0 Converting BB02 to BBJ_THROW Morphing BB03 of 'System.Collections.Generic.Dictionary`2+Enumerator[int,int]:MoveNext():bool:this' fgMorphTree BB03, STMT00003 (before) [000023] -A-XG------ * ASG ref [000022] D------N--- +--* LCL_VAR ref V04 tmp1 [000016] ---XG------ \--* FIELD ref System.Collections.Generic.Dictionary`2[int,int]:_entries [000015] ---XG------ \--* FIELD ref System.Collections.Generic.Dictionary`2+Enumerator[int,int]:_dictionary [000014] ----------- \--* LCL_VAR byref V00 this Final value of Compiler::fgMorphField after morphing: [000015] ---XG------ * IND ref [000014] -----+----- \--* LCL_VAR byref V00 this Final value of Compiler::fgMorphField after morphing: [000016] ---XG------ * IND ref [000088] ---XG+----- \--* ADD byref [000015] ---XG+----- +--* IND ref [000014] -----+----- | \--* LCL_VAR byref V00 this [000087] -----+----- \--* CNS_INT long 16 Fseq[_entries] fgMorphTree BB03, STMT00003 (after) [000023] -A-XG+----- * ASG ref [000022] D----+-N--- +--* LCL_VAR ref V04 tmp1 [000016] ---XG+----- \--* IND ref [000088] ---XG+----- \--* ADD byref [000015] ---XG+----- +--* IND ref [000014] -----+----- | \--* LCL_VAR byref V00 this [000087] -----+----- \--* CNS_INT long 16 Fseq[_entries] fgMorphTree BB03, STMT00002 (before) [000021] -A-XG------ * ASG int [000020] D------N--- +--* LCL_VAR int V02 loc1 [000019] ---XG------ \--* FIELD int System.Collections.Generic.Dictionary`2+Enumerator[int,int]:_index [000018] ----------- \--* LCL_VAR byref V00 this Final value of Compiler::fgMorphField after morphing: [000019] ---XG------ * IND int [000090] -----+----- \--* ADD byref [000018] -----+----- +--* LCL_VAR byref V00 this [000089] -----+----- \--* CNS_INT long 12 fgMorphTree BB03, STMT00002 (after) [000021] -A-XG+----- * ASG int [000020] D----+-N--- +--* LCL_VAR int V02 loc1 [000019] ---XG+----- \--* IND int [000090] -----+----- \--* ADD byref [000018] -----+----- +--* LCL_VAR byref V00 this [000089] -----+----- \--* CNS_INT long 12 fgMorphTree BB03, STMT00004 (before) [000029] -A-XG------ * ASG int [000028] ---XG--N--- +--* FIELD int System.Collections.Generic.Dictionary`2+Enumerator[int,int]:_index [000017] ----------- | \--* LCL_VAR byref V00 this [000027] ----------- \--* ADD int [000025] ----------- +--* LCL_VAR int V02 loc1 [000026] ----------- \--* CNS_INT int 1 Final value of Compiler::fgMorphField after morphing: [000028] ---XG--N--- * IND int [000092] -----+----- \--* ADD byref [000017] -----+----- +--* LCL_VAR byref V00 this [000091] -----+----- \--* CNS_INT long 12 fgMorphTree BB03, STMT00004 (after) [000029] -A-XG+----- * ASG int [000028] ---XG+-N--- +--* IND int [000092] -----+----- | \--* ADD byref [000017] -----+----- | +--* LCL_VAR byref V00 this [000091] -----+----- | \--* CNS_INT long 12 [000027] -----+----- \--* ADD int [000025] -----+----- +--* LCL_VAR int V02 loc1 [000026] -----+----- \--* CNS_INT int 1 fgMorphTree BB03, STMT00005 (before) [000033] -A-XG------ * ASG byref [000032] D------N--- +--* LCL_VAR byref V01 loc0 [000031] ---XG------ \--* INDEX_ADDR byref System.Collections.Generic.Dictionary`2+Entry[] [000024] ----------- +--* LCL_VAR ref V04 tmp1 (last use) [000030] ----------- \--* LCL_VAR int V02 loc1 (last use) fgMorphIndexAddr (before remorph): [000104] ---X-O----- * COMMA byref [000096] ---X-O----- +--* BOUNDS_CHECK_Rng void [000030] ----------- | +--* LCL_VAR int V02 loc1 (last use) [000095] ---X------- | \--* ARR_LENGTH int [000024] ----------- | \--* LCL_VAR ref V04 tmp1 (last use) [000103] -----O----- \--* ARR_ADDR byref System.Collections.Generic.Dictionary`2+Entry[] [000102] ----------- \--* ADD byref [000093] ----------- +--* LCL_VAR ref V04 tmp1 (last use) [000101] ----------- \--* ADD long [000099] ----------- +--* MUL long [000097] ---------U- | +--* CAST long <- uint [000094] ----------- | | \--* LCL_VAR int V02 loc1 (last use) [000098] -------N--- | \--* CNS_INT long 16 [000100] ----------- \--* CNS_INT long 16 GenTreeNode creates assertion: [000095] ---X-+----- * ARR_LENGTH int In BB03 New Local Constant Assertion: V04 != null, index = #01 fgMorphIndexAddr (after remorph): [000104] ---X-+----- * COMMA byref [000096] ---X-+----- +--* BOUNDS_CHECK_Rng void [000030] -----+----- | +--* LCL_VAR int V02 loc1 (last use) [000095] ---X-+----- | \--* ARR_LENGTH int [000024] -----+----- | \--* LCL_VAR ref V04 tmp1 (last use) [000103] -----+----- \--* ARR_ADDR byref System.Collections.Generic.Dictionary`2+Entry[] [000102] -----+----- \--* ADD byref [000093] -----+----- +--* LCL_VAR ref V04 tmp1 (last use) [000101] -----+----- \--* ADD long [000099] -----+----- +--* LSH long [000097] -----+---U- | +--* CAST long <- uint [000094] -----+----- | | \--* LCL_VAR int V02 loc1 (last use) [000098] -----+-N--- | \--* CNS_INT long 4 [000100] -----+----- \--* CNS_INT long 16 fgMorphTree BB03, STMT00005 (after) [000033] -A-XG+----- * ASG byref [000032] D----+-N--- +--* LCL_VAR byref V01 loc0 [000104] ---X-+----- \--* COMMA byref [000096] ---X-+----- +--* BOUNDS_CHECK_Rng void [000030] -----+----- | +--* LCL_VAR int V02 loc1 (last use) [000095] ---X-+----- | \--* ARR_LENGTH int [000024] -----+----- | \--* LCL_VAR ref V04 tmp1 (last use) [000103] -----+----- \--* ARR_ADDR byref System.Collections.Generic.Dictionary`2+Entry[] [000102] -----+----- \--* ADD byref [000093] -----+----- +--* LCL_VAR ref V04 tmp1 (last use) [000101] -----+----- \--* ADD long [000099] -----+----- +--* LSH long [000097] -----+---U- | +--* CAST long <- uint [000094] -----+----- | | \--* LCL_VAR int V02 loc1 (last use) [000098] -----+-N--- | \--* CNS_INT long 4 [000100] -----+----- \--* CNS_INT long 16 fgMorphTree BB03, STMT00006 (before) [000038] ---XG------ * JTRUE void [000037] ---XG------ \--* LT int [000035] ---XG------ +--* FIELD int System.Collections.Generic.Dictionary`2+Entry[int,int]:next [000034] ----------- | \--* LCL_VAR byref V01 loc0 [000036] ----------- \--* CNS_INT int -1 Final value of Compiler::fgMorphField after morphing: [000035] ---XG------ * IND int [000106] -----+----- \--* ADD byref [000034] -----+----- +--* LCL_VAR byref V01 loc0 [000105] -----+----- \--* CNS_INT long 4 fgMorphTree BB03, STMT00006 (after) [000038] ---XG+----- * JTRUE void [000037] J--XG+-N--- \--* LT int [000035] ---XG+----- +--* IND int [000106] -----+----- | \--* ADD byref [000034] -----+----- | +--* LCL_VAR byref V01 loc0 [000105] -----+----- | \--* CNS_INT long 4 [000036] -----+----- \--* CNS_INT int -1 Morphing BB04 of 'System.Collections.Generic.Dictionary`2+Enumerator[int,int]:MoveNext():bool:this' fgMorphTree BB04, STMT00017 (before) [000079] -A-XG------ * ASG int [000078] D------N--- +--* LCL_VAR int V06 tmp3 [000041] ---XG------ \--* FIELD int System.Collections.Generic.Dictionary`2+Entry[int,int]:key [000040] ----------- \--* LCL_VAR byref V01 loc0 Final value of Compiler::fgMorphField after morphing: [000041] ---XG------ * IND int [000108] -----+----- \--* ADD byref [000040] -----+----- +--* LCL_VAR byref V01 loc0 [000107] -----+----- \--* CNS_INT long 8 fgMorphTree BB04, STMT00017 (after) [000079] -A-XG+----- * ASG int [000078] D----+-N--- +--* LCL_VAR int V06 tmp3 [000041] ---XG+----- \--* IND int [000108] -----+----- \--* ADD byref [000040] -----+----- +--* LCL_VAR byref V01 loc0 [000107] -----+----- \--* CNS_INT long 8 fgMorphTree BB04, STMT00018 (before) [000081] -A-XG------ * ASG int [000080] D------N--- +--* LCL_VAR int V07 tmp4 [000043] ---XG------ \--* FIELD int System.Collections.Generic.Dictionary`2+Entry[int,int]:value [000042] ----------- \--* LCL_VAR byref V01 loc0 (last use) Final value of Compiler::fgMorphField after morphing: [000043] ---XG------ * IND int [000110] -----+----- \--* ADD byref [000042] -----+----- +--* LCL_VAR byref V01 loc0 (last use) [000109] -----+----- \--* CNS_INT long 12 fgMorphTree BB04, STMT00018 (after) [000081] -A-XG+----- * ASG int [000080] D----+-N--- +--* LCL_VAR int V07 tmp4 [000043] ---XG+----- \--* IND int [000110] -----+----- \--* ADD byref [000042] -----+----- +--* LCL_VAR byref V01 loc0 (last use) [000109] -----+----- \--* CNS_INT long 12 fgMorphTree BB04, STMT00015 (before) [000073] -A--------- * ASG int [000072] D------N--- +--* LCL_VAR int V08 tmp5 [000071] ----------- \--* LCL_VAR int V06 tmp3 (last use) GenTreeNode creates assertion: [000073] -A---+----- * ASG int In BB04 New Local Copy Assertion: V08 == V06, index = #01 fgMorphTree BB04, STMT00016 (before) [000077] -A--------- * ASG int [000076] D------N--- +--* LCL_VAR int V09 tmp6 [000075] ----------- \--* LCL_VAR int V07 tmp4 (last use) GenTreeNode creates assertion: [000077] -A---+----- * ASG int In BB04 New Local Copy Assertion: V09 == V07, index = #02 fgMorphTree BB04, STMT00009 (before) [000051] -A-XG------ * ASG struct (copy) [000050] ---XG--N--- +--* FIELD struct System.Collections.Generic.Dictionary`2+Enumerator[int,int]:_current [000039] ----------- | \--* LCL_VAR byref V00 this (last use) [000049] ----------- \--* LCL_VAR struct(P) V05 tmp2 \--* int V05.System.Collections.Generic.KeyValuePair`2[int,int]:key (offs=0x00) -> V08 tmp5 (last use) \--* int V05.System.Collections.Generic.KeyValuePair`2[int,int]:value (offs=0x04) -> V09 tmp6 (last use) Final value of Compiler::fgMorphField after morphing: [000050] ---XG--N--- * OBJ struct [000112] -----+----- \--* ADD byref [000039] -----+----- +--* LCL_VAR byref V00 this (last use) [000111] -----+----- \--* CNS_INT long 20 MorphCopyBlock: MorphBlock for dst tree, before: [000050] ---XG+-N--- * OBJ struct [000112] -----+----- \--* ADD byref [000039] -----+----- +--* LCL_VAR byref V00 this (last use) [000111] -----+----- \--* CNS_INT long 20 MorphBlock after: [000050] ---XG+-N--- * OBJ struct [000112] -----+----- \--* ADD byref [000039] -----+----- +--* LCL_VAR byref V00 this (last use) [000111] -----+----- \--* CNS_INT long 20 PrepareDst for [000050] have not found a local var. MorphBlock for src tree, before: [000049] -----+----- * LCL_VAR struct(P) V05 tmp2 * int V05.System.Collections.Generic.KeyValuePair`2[int,int]:key (offs=0x00) -> V08 tmp5 (last use) * int V05.System.Collections.Generic.KeyValuePair`2[int,int]:value (offs=0x04) -> V09 tmp6 (last use) MorphBlock after: [000049] -----+----- * LCL_VAR struct(P) V05 tmp2 * int V05.System.Collections.Generic.KeyValuePair`2[int,int]:key (offs=0x00) -> V08 tmp5 (last use) * int V05.System.Collections.Generic.KeyValuePair`2[int,int]:value (offs=0x04) -> V09 tmp6 (last use) block assignment to morph: [000051] -A-XG------ * ASG struct (copy) [000050] ---XG+-N--- +--* OBJ struct [000112] -----+----- | \--* ADD byref [000039] -----+----- | +--* LCL_VAR byref V00 this (last use) [000111] -----+----- | \--* CNS_INT long 20 [000049] -----+----- \--* LCL_VAR struct(P) V05 tmp2 \--* int V05.System.Collections.Generic.KeyValuePair`2[int,int]:key (offs=0x00) -> V08 tmp5 (last use) \--* int V05.System.Collections.Generic.KeyValuePair`2[int,int]:value (offs=0x04) -> V09 tmp6 (last use) (m_srcDoFldAsg=true) using field by field assignments. lvaGrabTemp returning 10 (V10 tmp7) called for BlockOp address local. MorphCopyBlock (after): [000126] -A-X-+----- * COMMA void [000119] -A-X------- +--* COMMA void [000114] -A--------- | +--* ASG byref [000113] D------N--- | | +--* LCL_VAR byref V10 tmp7 [000112] -----+----- | | \--* ADD byref [000039] -----+----- | | +--* LCL_VAR byref V00 this (last use) [000111] -----+----- | | \--* CNS_INT long 20 [000118] -A-X------- | \--* ASG int [000116] ---X---N--- | +--* IND int [000115] ----------- | | \--* LCL_VAR byref V10 tmp7 [000117] ----------- | \--* LCL_VAR int V08 tmp5 [000125] -A-X------- \--* ASG int [000123] ---X---N--- +--* IND int [000122] ----------- | \--* ADD byref [000120] ----------- | +--* LCL_VAR byref V10 tmp7 [000121] ----------- | \--* CNS_INT long 4 [000124] ----------- \--* LCL_VAR int V09 tmp6 fgMorphTree BB04, STMT00009 (after) [000126] -A-X-+----- * COMMA void [000119] -A-X------- +--* COMMA void [000114] -A--------- | +--* ASG byref [000113] D------N--- | | +--* LCL_VAR byref V10 tmp7 [000112] -----+----- | | \--* ADD byref [000039] -----+----- | | +--* LCL_VAR byref V00 this (last use) [000111] -----+----- | | \--* CNS_INT long 20 [000118] -A-X------- | \--* ASG int [000116] ---X---N--- | +--* IND int [000115] ----------- | | \--* LCL_VAR byref V10 tmp7 [000117] ----------- | \--* LCL_VAR int V08 tmp5 [000125] -A-X------- \--* ASG int [000123] ---X---N--- +--* IND int [000122] ----------- | \--* ADD byref [000120] ----------- | +--* LCL_VAR byref V10 tmp7 [000121] ----------- | \--* CNS_INT long 4 [000124] ----------- \--* LCL_VAR int V09 tmp6 fgMorphTree BB04, STMT00010 (before) [000053] ----------- * RETURN int [000052] ----------- \--* CNS_INT int 1 Folding operator with constant nodes into a constant: [000127] ----------- * CAST int <- bool <- int [000052] -----+----- \--* CNS_INT int 1 Bashed to int constant: [000127] ----------- * CNS_INT int 1 Morphing BB05 of 'System.Collections.Generic.Dictionary`2+Enumerator[int,int]:MoveNext():bool:this' fgMorphTree BB05, STMT00001 (before) [000013] ---XG------ * JTRUE void [000012] N--XG----U- \--* LT int [000008] ---XG------ +--* FIELD int System.Collections.Generic.Dictionary`2+Enumerator[int,int]:_index [000007] ----------- | \--* LCL_VAR byref V00 this [000011] ---XG------ \--* FIELD int System.Collections.Generic.Dictionary`2[int,int]:_count [000010] ---XG------ \--* FIELD ref System.Collections.Generic.Dictionary`2+Enumerator[int,int]:_dictionary [000009] ----------- \--* LCL_VAR byref V00 this Final value of Compiler::fgMorphField after morphing: [000008] ---XG------ * IND int [000129] -----+----- \--* ADD byref [000007] -----+----- +--* LCL_VAR byref V00 this [000128] -----+----- \--* CNS_INT long 12 Final value of Compiler::fgMorphField after morphing: [000010] ---XG------ * IND ref [000009] -----+----- \--* LCL_VAR byref V00 this Final value of Compiler::fgMorphField after morphing: [000011] ---XG------ * IND int [000131] ---XG+----- \--* ADD byref [000010] ---XG+----- +--* IND ref [000009] -----+----- | \--* LCL_VAR byref V00 this [000130] -----+----- \--* CNS_INT long 56 Fseq[_count] fgMorphTree BB05, STMT00001 (after) [000013] ---XG+----- * JTRUE void [000012] N--XG+-N-U- \--* LT int [000008] ---XG+----- +--* IND int [000129] -----+----- | \--* ADD byref [000007] -----+----- | +--* LCL_VAR byref V00 this [000128] -----+----- | \--* CNS_INT long 12 [000011] ---XG+----- \--* IND int [000131] ---XG+----- \--* ADD byref [000010] ---XG+----- +--* IND ref [000009] -----+----- | \--* LCL_VAR byref V00 this [000130] -----+----- \--* CNS_INT long 56 Fseq[_count] Morphing BB06 of 'System.Collections.Generic.Dictionary`2+Enumerator[int,int]:MoveNext():bool:this' fgMorphTree BB06, STMT00011 (before) [000061] -A-XG------ * ASG int [000060] ---XG--N--- +--* FIELD int System.Collections.Generic.Dictionary`2+Enumerator[int,int]:_index [000054] ----------- | \--* LCL_VAR byref V00 this [000059] ---XG------ \--* ADD int [000057] ---XG------ +--* FIELD int System.Collections.Generic.Dictionary`2[int,int]:_count [000056] ---XG------ | \--* FIELD ref System.Collections.Generic.Dictionary`2+Enumerator[int,int]:_dictionary [000055] ----------- | \--* LCL_VAR byref V00 this [000058] ----------- \--* CNS_INT int 1 Final value of Compiler::fgMorphField after morphing: [000060] ---XG--N--- * IND int [000133] -----+----- \--* ADD byref [000054] -----+----- +--* LCL_VAR byref V00 this [000132] -----+----- \--* CNS_INT long 12 Final value of Compiler::fgMorphField after morphing: [000056] ---XG------ * IND ref [000055] -----+----- \--* LCL_VAR byref V00 this Final value of Compiler::fgMorphField after morphing: [000057] ---XG------ * IND int [000135] ---XG+----- \--* ADD byref [000056] ---XG+----- +--* IND ref [000055] -----+----- | \--* LCL_VAR byref V00 this [000134] -----+----- \--* CNS_INT long 56 Fseq[_count] fgMorphTree BB06, STMT00011 (after) [000061] -A-XG+----- * ASG int [000060] ---XG+-N--- +--* IND int [000133] -----+----- | \--* ADD byref [000054] -----+----- | +--* LCL_VAR byref V00 this [000132] -----+----- | \--* CNS_INT long 12 [000059] ---XG+----- \--* ADD int [000057] ---XG+----- +--* IND int [000135] ---XG+----- | \--* ADD byref [000056] ---XG+----- | +--* IND ref [000055] -----+----- | | \--* LCL_VAR byref V00 this [000134] -----+----- | \--* CNS_INT long 56 Fseq[_count] [000058] -----+----- \--* CNS_INT int 1 fgMorphTree BB06, STMT00012 (before) [000066] IA-XG------ * ASG struct (init) [000064] n--XG--N--- +--* OBJ struct [000063] ---XG------ | \--* FIELD_ADDR byref System.Collections.Generic.Dictionary`2+Enumerator[int,int]:_current [000062] ----------- | \--* LCL_VAR byref V00 this (last use) [000065] ----------- \--* CNS_INT int 0 Final value of Compiler::fgMorphField after morphing: [000137] -----+----- * ADD byref [000062] -----+----- +--* LCL_VAR byref V00 this (last use) [000136] -----+----- \--* CNS_INT long 20 MorphInitBlock: MorphBlock for dst tree, before: [000064] n---G+-N--- * OBJ struct [000137] -----+----- \--* ADD byref [000062] -----+----- +--* LCL_VAR byref V00 this (last use) [000136] -----+----- \--* CNS_INT long 20 MorphBlock after: [000064] n---G+-N--- * OBJ struct [000137] -----+----- \--* ADD byref [000062] -----+----- +--* LCL_VAR byref V00 this (last use) [000136] -----+----- \--* CNS_INT long 20 PrepareDst for [000064] have not found a local var. MorphInitBlock (after): [000066] IA--G------ * ASG struct (init) [000064] n---G+-N--- +--* OBJ struct [000137] -----+----- | \--* ADD byref [000062] -----+----- | +--* LCL_VAR byref V00 this (last use) [000136] -----+----- | \--* CNS_INT long 20 [000065] -----+----- \--* CNS_INT int 0 fgMorphTree BB06, STMT00012 (after) [000066] IA--G+----- * ASG struct (init) [000064] n---G+-N--- +--* OBJ struct [000137] -----+----- | \--* ADD byref [000062] -----+----- | +--* LCL_VAR byref V00 this (last use) [000136] -----+----- | \--* CNS_INT long 20 [000065] -----+----- \--* CNS_INT int 0 fgMorphTree BB06, STMT00013 (before) [000068] ----------- * RETURN int [000067] ----------- \--* CNS_INT int 0 Folding operator with constant nodes into a constant: [000138] ----------- * CAST int <- bool <- int [000067] -----+----- \--* CNS_INT int 0 Bashed to int constant: [000138] ----------- * CNS_INT int 0 *************** In fgMarkDemotedImplicitByRefArgs() *************** Finishing PHASE Morph - Global Trees after Morph - Global ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..013)-> BB05 ( cond ) i BB02 [0001] 1 BB01 0 [013..01A) (throw ) i rare hascall gcsafe BB03 [0002] 1 BB05 1 [01A..045)-> BB05 ( cond ) i idxlen bwd bwd-target BB04 [0003] 1 BB03 1 [045..05E) (return) i BB05 [0004] 2 BB01,BB03 1 [05E..071)-> BB03 ( cond ) i bwd bwd-src BB06 [0005] 1 BB05 1 [071..092) (return) i ----------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [000..013) -> BB05 (cond), preds={} succs={BB02,BB05} ***** BB01 STMT00000 ( 0x000[E-] ... 0x011 ) [000006] ---XG+----- * JTRUE void [000005] J--XG+-N--- \--* EQ int [000001] ---XG+----- +--* IND int [000084] -----+----- | \--* ADD byref [000000] -----+----- | +--* LCL_VAR byref V00 this [000083] -----+----- | \--* CNS_INT long 8 [000004] ---XG+----- \--* IND int [000086] ---XG+----- \--* ADD byref [000003] ---XG+----- +--* IND ref [000002] -----+----- | \--* LCL_VAR byref V00 this [000085] -----+----- \--* CNS_INT long 68 Fseq[_version] ------------ BB02 [013..01A) (throw), preds={BB01} succs={} ***** BB02 STMT00014 ( 0x013[E-] ... 0x018 ) [000069] --CXG+----- * CALL void System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion() ------------ BB03 [01A..045) -> BB05 (cond), preds={BB05} succs={BB04,BB05} ***** BB03 STMT00003 ( 0x01A[E-] ... 0x02C ) [000023] -A-XG+----- * ASG ref [000022] D----+-N--- +--* LCL_VAR ref V04 tmp1 [000016] ---XG+----- \--* IND ref [000088] ---XG+----- \--* ADD byref [000015] ---XG+----- +--* IND ref [000014] -----+----- | \--* LCL_VAR byref V00 this [000087] -----+----- \--* CNS_INT long 16 Fseq[_entries] ***** BB03 STMT00002 ( 0x01A[E-] ... ??? ) [000021] -A-XG+----- * ASG int [000020] D----+-N--- +--* LCL_VAR int V02 loc1 [000019] ---XG+----- \--* IND int [000090] -----+----- \--* ADD byref [000018] -----+----- +--* LCL_VAR byref V00 this [000089] -----+----- \--* CNS_INT long 12 ***** BB03 STMT00004 ( ??? ... 0x030 ) [000029] -A-XG+----- * ASG int [000028] ---XG+-N--- +--* IND int [000092] -----+----- | \--* ADD byref [000017] -----+----- | +--* LCL_VAR byref V00 this [000091] -----+----- | \--* CNS_INT long 12 [000027] -----+----- \--* ADD int [000025] -----+----- +--* LCL_VAR int V02 loc1 [000026] -----+----- \--* CNS_INT int 1 ***** BB03 STMT00005 ( ??? ... 0x03B ) [000033] -A-XG+----- * ASG byref [000032] D----+-N--- +--* LCL_VAR byref V01 loc0 [000104] ---X-+----- \--* COMMA byref [000096] ---X-+----- +--* BOUNDS_CHECK_Rng void [000030] -----+----- | +--* LCL_VAR int V02 loc1 [000095] ---X-+----- | \--* ARR_LENGTH int [000024] -----+----- | \--* LCL_VAR ref V04 tmp1 [000103] -----+----- \--* ARR_ADDR byref System.Collections.Generic.Dictionary`2+Entry[] [000102] -----+----- \--* ADD byref [000093] -----+----- +--* LCL_VAR ref V04 tmp1 [000101] -----+----- \--* ADD long [000099] -----+----- +--* LSH long [000097] -----+---U- | +--* CAST long <- uint [000094] -----+----- | | \--* LCL_VAR int V02 loc1 [000098] -----+-N--- | \--* CNS_INT long 4 [000100] -----+----- \--* CNS_INT long 16 ***** BB03 STMT00006 ( 0x03C[E-] ... 0x043 ) [000038] ---XG+----- * JTRUE void [000037] J--XG+-N--- \--* LT int [000035] ---XG+----- +--* IND int [000106] -----+----- | \--* ADD byref [000034] -----+----- | +--* LCL_VAR byref V01 loc0 [000105] -----+----- | \--* CNS_INT long 4 [000036] -----+----- \--* CNS_INT int -1 ------------ BB04 [045..05E) (return), preds={BB03} succs={} ***** BB04 STMT00017 ( ??? ... ??? ) [000079] -A-XG+----- * ASG int [000078] D----+-N--- +--* LCL_VAR int V06 tmp3 [000041] ---XG+----- \--* IND int [000108] -----+----- \--* ADD byref [000040] -----+----- +--* LCL_VAR byref V01 loc0 [000107] -----+----- \--* CNS_INT long 8 ***** BB04 STMT00018 ( ??? ... ??? ) [000081] -A-XG+----- * ASG int [000080] D----+-N--- +--* LCL_VAR int V07 tmp4 [000043] ---XG+----- \--* IND int [000110] -----+----- \--* ADD byref [000042] -----+----- +--* LCL_VAR byref V01 loc0 [000109] -----+----- \--* CNS_INT long 12 ***** BB04 STMT00015 ( INL01 @ 0x000[E-] ... ??? ) <- INLRT @ ??? [000073] -A---+----- * ASG int [000072] D----+-N--- +--* LCL_VAR int V08 tmp5 [000071] -----+----- \--* LCL_VAR int V06 tmp3 ***** BB04 STMT00016 ( INL01 @ 0x007[E-] ... ??? ) <- INLRT @ ??? [000077] -A---+----- * ASG int [000076] D----+-N--- +--* LCL_VAR int V09 tmp6 [000075] -----+----- \--* LCL_VAR int V07 tmp4 ***** BB04 STMT00009 ( 0x057[--] ... ??? ) [000126] -A-X-+----- * COMMA void [000119] -A-X------- +--* COMMA void [000114] -A--------- | +--* ASG byref [000113] D------N--- | | +--* LCL_VAR byref V10 tmp7 [000112] -----+----- | | \--* ADD byref [000039] -----+----- | | +--* LCL_VAR byref V00 this [000111] -----+----- | | \--* CNS_INT long 20 [000118] -A-X------- | \--* ASG int [000116] ---X---N--- | +--* IND int [000115] ----------- | | \--* LCL_VAR byref V10 tmp7 [000117] ----------- | \--* LCL_VAR int V08 tmp5 [000125] -A-X------- \--* ASG int [000123] ---X---N--- +--* IND int [000122] ----------- | \--* ADD byref [000120] ----------- | +--* LCL_VAR byref V10 tmp7 [000121] ----------- | \--* CNS_INT long 4 [000124] ----------- \--* LCL_VAR int V09 tmp6 ***** BB04 STMT00010 ( 0x05C[E-] ... 0x05D ) [000053] -----+----- * RETURN int [000127] -----+----- \--* CNS_INT int 1 ------------ BB05 [05E..071) -> BB03 (cond), preds={BB01,BB03} succs={BB06,BB03} ***** BB05 STMT00001 ( 0x05E[E-] ... 0x06F ) [000013] ---XG+----- * JTRUE void [000012] N--XG+-N-U- \--* LT int [000008] ---XG+----- +--* IND int [000129] -----+----- | \--* ADD byref [000007] -----+----- | +--* LCL_VAR byref V00 this [000128] -----+----- | \--* CNS_INT long 12 [000011] ---XG+----- \--* IND int [000131] ---XG+----- \--* ADD byref [000010] ---XG+----- +--* IND ref [000009] -----+----- | \--* LCL_VAR byref V00 this [000130] -----+----- \--* CNS_INT long 56 Fseq[_count] ------------ BB06 [071..092) (return), preds={BB05} succs={} ***** BB06 STMT00011 ( 0x071[E-] ... 0x07F ) [000061] -A-XG+----- * ASG int [000060] ---XG+-N--- +--* IND int [000133] -----+----- | \--* ADD byref [000054] -----+----- | +--* LCL_VAR byref V00 this [000132] -----+----- | \--* CNS_INT long 12 [000059] ---XG+----- \--* ADD int [000057] ---XG+----- +--* IND int [000135] ---XG+----- | \--* ADD byref [000056] ---XG+----- | +--* IND ref [000055] -----+----- | | \--* LCL_VAR byref V00 this [000134] -----+----- | \--* CNS_INT long 56 Fseq[_count] [000058] -----+----- \--* CNS_INT int 1 ***** BB06 STMT00012 ( 0x084[E-] ... 0x08B ) [000066] IA--G+----- * ASG struct (init) [000064] n---G+-N--- +--* OBJ struct [000137] -----+----- | \--* ADD byref [000062] -----+----- | +--* LCL_VAR byref V00 this [000136] -----+----- | \--* CNS_INT long 20 [000065] -----+----- \--* CNS_INT int 0 ***** BB06 STMT00013 ( 0x090[E-] ... 0x091 ) [000068] -----+----- * RETURN int [000138] -----+----- \--* CNS_INT int 0 ------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist *************** In fgDebugCheckLoopTable: loop table not valid *************** 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 lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..013)-> BB05 ( cond ) i BB02 [0001] 1 BB01 0 [013..01A) (throw ) i rare hascall gcsafe BB03 [0002] 1 BB05 1 [01A..045)-> BB05 ( cond ) i idxlen bwd bwd-target BB04 [0003] 1 BB03 1 [045..05E) (return) i BB05 [0004] 2 BB01,BB03 1 [05E..071)-> BB03 ( cond ) i bwd bwd-src BB06 [0005] 1 BB05 1 [071..092) (return) i ----------------------------------------------------------------------------------------------------------------------------------------- -- 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 Invert loops *************** Before renumbering the basic blocks ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..013)-> BB05 ( cond ) i BB02 [0001] 1 BB01 0 [013..01A) (throw ) i rare hascall gcsafe BB03 [0002] 1 BB05 1 [01A..045)-> BB05 ( cond ) i idxlen bwd bwd-target BB04 [0003] 1 BB03 1 [045..05E) (return) i BB05 [0004] 2 BB01,BB03 1 [05E..071)-> BB03 ( cond ) i bwd bwd-src BB06 [0005] 1 BB05 1 [071..092) (return) i ----------------------------------------------------------------------------------------------------------------------------------------- *************** Exception Handling table is empty =============== No blocks renumbered! *************** Finishing PHASE Invert loops [no changes] *************** Starting PHASE Optimize control flow *************** In fgUpdateFlowGraph() Before updating the flow graph: ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..013)-> BB05 ( cond ) i BB02 [0001] 1 BB01 0 [013..01A) (throw ) i rare hascall gcsafe BB03 [0002] 1 BB05 1 [01A..045)-> BB05 ( cond ) i idxlen bwd bwd-target BB04 [0003] 1 BB03 1 [045..05E) (return) i BB05 [0004] 2 BB01,BB03 1 [05E..071)-> BB03 ( cond ) i bwd bwd-src BB06 [0005] 1 BB05 1 [071..092) (return) i ----------------------------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist *************** In fgExpandRarelyRunBlocks() *************** In fgReorderBlocks() Initial BasicBlocks ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..013)-> BB05 ( cond ) i BB02 [0001] 1 BB01 0 [013..01A) (throw ) i rare hascall gcsafe BB03 [0002] 1 BB05 1 [01A..045)-> BB05 ( cond ) i idxlen bwd bwd-target BB04 [0003] 1 BB03 1 [045..05E) (return) i BB05 [0004] 2 BB01,BB03 1 [05E..071)-> BB03 ( cond ) i bwd bwd-src BB06 [0005] 1 BB05 1 [071..092) (return) i ----------------------------------------------------------------------------------------------------------------------------------------- *************** In fgUpdateFlowGraph() Before updating the flow graph: ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..013)-> BB05 ( cond ) i BB02 [0001] 1 BB01 0 [013..01A) (throw ) i rare hascall gcsafe BB03 [0002] 1 BB05 1 [01A..045)-> BB05 ( cond ) i idxlen bwd bwd-target BB04 [0003] 1 BB03 1 [045..05E) (return) i BB05 [0004] 2 BB01,BB03 1 [05E..071)-> BB03 ( cond ) i bwd bwd-src BB06 [0005] 1 BB05 1 [071..092) (return) i ----------------------------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist *************** Finishing PHASE Optimize control flow Trees after Optimize control flow ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..013)-> BB05 ( cond ) i BB02 [0001] 1 BB01 0 [013..01A) (throw ) i rare hascall gcsafe BB03 [0002] 1 BB05 1 [01A..045)-> BB05 ( cond ) i idxlen bwd bwd-target BB04 [0003] 1 BB03 1 [045..05E) (return) i BB05 [0004] 2 BB01,BB03 1 [05E..071)-> BB03 ( cond ) i bwd bwd-src BB06 [0005] 1 BB05 1 [071..092) (return) i ----------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [000..013) -> BB05 (cond), preds={} succs={BB02,BB05} ***** BB01 STMT00000 ( 0x000[E-] ... 0x011 ) [000006] ---XG+----- * JTRUE void [000005] J--XG+-N--- \--* EQ int [000001] ---XG+----- +--* IND int [000084] -----+----- | \--* ADD byref [000000] -----+----- | +--* LCL_VAR byref V00 this [000083] -----+----- | \--* CNS_INT long 8 [000004] ---XG+----- \--* IND int [000086] ---XG+----- \--* ADD byref [000003] ---XG+----- +--* IND ref [000002] -----+----- | \--* LCL_VAR byref V00 this [000085] -----+----- \--* CNS_INT long 68 Fseq[_version] ------------ BB02 [013..01A) (throw), preds={BB01} succs={} ***** BB02 STMT00014 ( 0x013[E-] ... 0x018 ) [000069] --CXG+----- * CALL void System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion() ------------ BB03 [01A..045) -> BB05 (cond), preds={BB05} succs={BB04,BB05} ***** BB03 STMT00003 ( 0x01A[E-] ... 0x02C ) [000023] -A-XG+----- * ASG ref [000022] D----+-N--- +--* LCL_VAR ref V04 tmp1 [000016] ---XG+----- \--* IND ref [000088] ---XG+----- \--* ADD byref [000015] ---XG+----- +--* IND ref [000014] -----+----- | \--* LCL_VAR byref V00 this [000087] -----+----- \--* CNS_INT long 16 Fseq[_entries] ***** BB03 STMT00002 ( 0x01A[E-] ... ??? ) [000021] -A-XG+----- * ASG int [000020] D----+-N--- +--* LCL_VAR int V02 loc1 [000019] ---XG+----- \--* IND int [000090] -----+----- \--* ADD byref [000018] -----+----- +--* LCL_VAR byref V00 this [000089] -----+----- \--* CNS_INT long 12 ***** BB03 STMT00004 ( ??? ... 0x030 ) [000029] -A-XG+----- * ASG int [000028] ---XG+-N--- +--* IND int [000092] -----+----- | \--* ADD byref [000017] -----+----- | +--* LCL_VAR byref V00 this [000091] -----+----- | \--* CNS_INT long 12 [000027] -----+----- \--* ADD int [000025] -----+----- +--* LCL_VAR int V02 loc1 [000026] -----+----- \--* CNS_INT int 1 ***** BB03 STMT00005 ( ??? ... 0x03B ) [000033] -A-XG+----- * ASG byref [000032] D----+-N--- +--* LCL_VAR byref V01 loc0 [000104] ---X-+----- \--* COMMA byref [000096] ---X-+----- +--* BOUNDS_CHECK_Rng void [000030] -----+----- | +--* LCL_VAR int V02 loc1 [000095] ---X-+----- | \--* ARR_LENGTH int [000024] -----+----- | \--* LCL_VAR ref V04 tmp1 [000103] -----+----- \--* ARR_ADDR byref System.Collections.Generic.Dictionary`2+Entry[] [000102] -----+----- \--* ADD byref [000093] -----+----- +--* LCL_VAR ref V04 tmp1 [000101] -----+----- \--* ADD long [000099] -----+----- +--* LSH long [000097] -----+---U- | +--* CAST long <- uint [000094] -----+----- | | \--* LCL_VAR int V02 loc1 [000098] -----+-N--- | \--* CNS_INT long 4 [000100] -----+----- \--* CNS_INT long 16 ***** BB03 STMT00006 ( 0x03C[E-] ... 0x043 ) [000038] ---XG+----- * JTRUE void [000037] J--XG+-N--- \--* LT int [000035] ---XG+----- +--* IND int [000106] -----+----- | \--* ADD byref [000034] -----+----- | +--* LCL_VAR byref V01 loc0 [000105] -----+----- | \--* CNS_INT long 4 [000036] -----+----- \--* CNS_INT int -1 ------------ BB04 [045..05E) (return), preds={BB03} succs={} ***** BB04 STMT00017 ( ??? ... ??? ) [000079] -A-XG+----- * ASG int [000078] D----+-N--- +--* LCL_VAR int V06 tmp3 [000041] ---XG+----- \--* IND int [000108] -----+----- \--* ADD byref [000040] -----+----- +--* LCL_VAR byref V01 loc0 [000107] -----+----- \--* CNS_INT long 8 ***** BB04 STMT00018 ( ??? ... ??? ) [000081] -A-XG+----- * ASG int [000080] D----+-N--- +--* LCL_VAR int V07 tmp4 [000043] ---XG+----- \--* IND int [000110] -----+----- \--* ADD byref [000042] -----+----- +--* LCL_VAR byref V01 loc0 [000109] -----+----- \--* CNS_INT long 12 ***** BB04 STMT00015 ( INL01 @ 0x000[E-] ... ??? ) <- INLRT @ ??? [000073] -A---+----- * ASG int [000072] D----+-N--- +--* LCL_VAR int V08 tmp5 [000071] -----+----- \--* LCL_VAR int V06 tmp3 ***** BB04 STMT00016 ( INL01 @ 0x007[E-] ... ??? ) <- INLRT @ ??? [000077] -A---+----- * ASG int [000076] D----+-N--- +--* LCL_VAR int V09 tmp6 [000075] -----+----- \--* LCL_VAR int V07 tmp4 ***** BB04 STMT00009 ( 0x057[--] ... ??? ) [000126] -A-X-+----- * COMMA void [000119] -A-X------- +--* COMMA void [000114] -A--------- | +--* ASG byref [000113] D------N--- | | +--* LCL_VAR byref V10 tmp7 [000112] -----+----- | | \--* ADD byref [000039] -----+----- | | +--* LCL_VAR byref V00 this [000111] -----+----- | | \--* CNS_INT long 20 [000118] -A-X------- | \--* ASG int [000116] ---X---N--- | +--* IND int [000115] ----------- | | \--* LCL_VAR byref V10 tmp7 [000117] ----------- | \--* LCL_VAR int V08 tmp5 [000125] -A-X------- \--* ASG int [000123] ---X---N--- +--* IND int [000122] ----------- | \--* ADD byref [000120] ----------- | +--* LCL_VAR byref V10 tmp7 [000121] ----------- | \--* CNS_INT long 4 [000124] ----------- \--* LCL_VAR int V09 tmp6 ***** BB04 STMT00010 ( 0x05C[E-] ... 0x05D ) [000053] -----+----- * RETURN int [000127] -----+----- \--* CNS_INT int 1 ------------ BB05 [05E..071) -> BB03 (cond), preds={BB01,BB03} succs={BB06,BB03} ***** BB05 STMT00001 ( 0x05E[E-] ... 0x06F ) [000013] ---XG+----- * JTRUE void [000012] N--XG+-N-U- \--* LT int [000008] ---XG+----- +--* IND int [000129] -----+----- | \--* ADD byref [000007] -----+----- | +--* LCL_VAR byref V00 this [000128] -----+----- | \--* CNS_INT long 12 [000011] ---XG+----- \--* IND int [000131] ---XG+----- \--* ADD byref [000010] ---XG+----- +--* IND ref [000009] -----+----- | \--* LCL_VAR byref V00 this [000130] -----+----- \--* CNS_INT long 56 Fseq[_count] ------------ BB06 [071..092) (return), preds={BB05} succs={} ***** BB06 STMT00011 ( 0x071[E-] ... 0x07F ) [000061] -A-XG+----- * ASG int [000060] ---XG+-N--- +--* IND int [000133] -----+----- | \--* ADD byref [000054] -----+----- | +--* LCL_VAR byref V00 this [000132] -----+----- | \--* CNS_INT long 12 [000059] ---XG+----- \--* ADD int [000057] ---XG+----- +--* IND int [000135] ---XG+----- | \--* ADD byref [000056] ---XG+----- | +--* IND ref [000055] -----+----- | | \--* LCL_VAR byref V00 this [000134] -----+----- | \--* CNS_INT long 56 Fseq[_count] [000058] -----+----- \--* CNS_INT int 1 ***** BB06 STMT00012 ( 0x084[E-] ... 0x08B ) [000066] IA--G+----- * ASG struct (init) [000064] n---G+-N--- +--* OBJ struct [000137] -----+----- | \--* ADD byref [000062] -----+----- | +--* LCL_VAR byref V00 this [000136] -----+----- | \--* CNS_INT long 20 [000065] -----+----- \--* CNS_INT int 0 ***** BB06 STMT00013 ( 0x090[E-] ... 0x091 ) [000068] -----+----- * RETURN int [000138] -----+----- \--* CNS_INT int 0 ------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist *************** In fgDebugCheckLoopTable: loop table not valid *************** Starting PHASE Post-morph tail merge *************** Finishing PHASE Post-morph tail merge [no changes] *************** Starting PHASE Compute blocks reachability Return blocks: BB06 BB04 Renumbering the basic blocks for fgComputeReachability pass #1 *************** Before renumbering the basic blocks ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..013)-> BB05 ( cond ) i BB02 [0001] 1 BB01 0 [013..01A) (throw ) i rare hascall gcsafe BB03 [0002] 1 BB05 1 [01A..045)-> BB05 ( cond ) i idxlen bwd bwd-target BB04 [0003] 1 BB03 1 [045..05E) (return) i BB05 [0004] 2 BB01,BB03 1 [05E..071)-> BB03 ( cond ) i bwd bwd-src BB06 [0005] 1 BB05 1 [071..092) (return) i ----------------------------------------------------------------------------------------------------------------------------------------- *************** Exception Handling table is empty =============== No blocks renumbered! Enter blocks: BB01 After computing reachability sets: ------------------------------------------------ BBnum Reachable by ------------------------------------------------ BB01 : BB01 BB02 : BB01 BB02 BB03 : BB01 BB03 BB05 BB04 : BB01 BB03 BB04 BB05 BB05 : BB01 BB03 BB05 BB06 : BB01 BB03 BB05 BB06 *************** In fgComputeDoms *************** In fgDebugCheckBBlist Dominator computation start blocks (those blocks with no incoming edges): BB01 ------------------------------------------------ BBnum Dominated by ------------------------------------------------ BB01: BB01 BB02: BB02 BB01 BB05: BB05 BB01 BB06: BB06 BB05 BB01 BB03: BB03 BB05 BB01 BB04: BB04 BB03 BB05 BB01 Inside fgBuildDomTree After computing the Dominance Tree: BB01 : BB05 BB02 BB03 : BB04 BB05 : BB06 BB03 After numbering the dominator tree: BB01: pre=01, post=06 BB02: pre=06, post=05 BB03: pre=04, post=03 BB04: pre=05, post=02 BB05: pre=02, post=04 BB06: pre=03, post=01 *************** Finishing PHASE Compute blocks reachability [no changes] *************** Starting PHASE Set block weights *************** Finishing PHASE Set block weights Trees after Set block weights ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..013)-> BB05 ( cond ) i BB02 [0001] 1 BB01 0 [013..01A) (throw ) i rare hascall gcsafe BB03 [0002] 1 BB05 0.50 [01A..045)-> BB05 ( cond ) i idxlen bwd bwd-target BB04 [0003] 1 BB03 0.50 [045..05E) (return) i BB05 [0004] 2 BB01,BB03 1 [05E..071)-> BB03 ( cond ) i bwd bwd-src BB06 [0005] 1 BB05 0.50 [071..092) (return) i ----------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [000..013) -> BB05 (cond), preds={} succs={BB02,BB05} ***** BB01 STMT00000 ( 0x000[E-] ... 0x011 ) [000006] ---XG+----- * JTRUE void [000005] J--XG+-N--- \--* EQ int [000001] ---XG+----- +--* IND int [000084] -----+----- | \--* ADD byref [000000] -----+----- | +--* LCL_VAR byref V00 this [000083] -----+----- | \--* CNS_INT long 8 [000004] ---XG+----- \--* IND int [000086] ---XG+----- \--* ADD byref [000003] ---XG+----- +--* IND ref [000002] -----+----- | \--* LCL_VAR byref V00 this [000085] -----+----- \--* CNS_INT long 68 Fseq[_version] ------------ BB02 [013..01A) (throw), preds={BB01} succs={} ***** BB02 STMT00014 ( 0x013[E-] ... 0x018 ) [000069] --CXG+----- * CALL void System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion() ------------ BB03 [01A..045) -> BB05 (cond), preds={BB05} succs={BB04,BB05} ***** BB03 STMT00003 ( 0x01A[E-] ... 0x02C ) [000023] -A-XG+----- * ASG ref [000022] D----+-N--- +--* LCL_VAR ref V04 tmp1 [000016] ---XG+----- \--* IND ref [000088] ---XG+----- \--* ADD byref [000015] ---XG+----- +--* IND ref [000014] -----+----- | \--* LCL_VAR byref V00 this [000087] -----+----- \--* CNS_INT long 16 Fseq[_entries] ***** BB03 STMT00002 ( 0x01A[E-] ... ??? ) [000021] -A-XG+----- * ASG int [000020] D----+-N--- +--* LCL_VAR int V02 loc1 [000019] ---XG+----- \--* IND int [000090] -----+----- \--* ADD byref [000018] -----+----- +--* LCL_VAR byref V00 this [000089] -----+----- \--* CNS_INT long 12 ***** BB03 STMT00004 ( ??? ... 0x030 ) [000029] -A-XG+----- * ASG int [000028] ---XG+-N--- +--* IND int [000092] -----+----- | \--* ADD byref [000017] -----+----- | +--* LCL_VAR byref V00 this [000091] -----+----- | \--* CNS_INT long 12 [000027] -----+----- \--* ADD int [000025] -----+----- +--* LCL_VAR int V02 loc1 [000026] -----+----- \--* CNS_INT int 1 ***** BB03 STMT00005 ( ??? ... 0x03B ) [000033] -A-XG+----- * ASG byref [000032] D----+-N--- +--* LCL_VAR byref V01 loc0 [000104] ---X-+----- \--* COMMA byref [000096] ---X-+----- +--* BOUNDS_CHECK_Rng void [000030] -----+----- | +--* LCL_VAR int V02 loc1 [000095] ---X-+----- | \--* ARR_LENGTH int [000024] -----+----- | \--* LCL_VAR ref V04 tmp1 [000103] -----+----- \--* ARR_ADDR byref System.Collections.Generic.Dictionary`2+Entry[] [000102] -----+----- \--* ADD byref [000093] -----+----- +--* LCL_VAR ref V04 tmp1 [000101] -----+----- \--* ADD long [000099] -----+----- +--* LSH long [000097] -----+---U- | +--* CAST long <- uint [000094] -----+----- | | \--* LCL_VAR int V02 loc1 [000098] -----+-N--- | \--* CNS_INT long 4 [000100] -----+----- \--* CNS_INT long 16 ***** BB03 STMT00006 ( 0x03C[E-] ... 0x043 ) [000038] ---XG+----- * JTRUE void [000037] J--XG+-N--- \--* LT int [000035] ---XG+----- +--* IND int [000106] -----+----- | \--* ADD byref [000034] -----+----- | +--* LCL_VAR byref V01 loc0 [000105] -----+----- | \--* CNS_INT long 4 [000036] -----+----- \--* CNS_INT int -1 ------------ BB04 [045..05E) (return), preds={BB03} succs={} ***** BB04 STMT00017 ( ??? ... ??? ) [000079] -A-XG+----- * ASG int [000078] D----+-N--- +--* LCL_VAR int V06 tmp3 [000041] ---XG+----- \--* IND int [000108] -----+----- \--* ADD byref [000040] -----+----- +--* LCL_VAR byref V01 loc0 [000107] -----+----- \--* CNS_INT long 8 ***** BB04 STMT00018 ( ??? ... ??? ) [000081] -A-XG+----- * ASG int [000080] D----+-N--- +--* LCL_VAR int V07 tmp4 [000043] ---XG+----- \--* IND int [000110] -----+----- \--* ADD byref [000042] -----+----- +--* LCL_VAR byref V01 loc0 [000109] -----+----- \--* CNS_INT long 12 ***** BB04 STMT00015 ( INL01 @ 0x000[E-] ... ??? ) <- INLRT @ ??? [000073] -A---+----- * ASG int [000072] D----+-N--- +--* LCL_VAR int V08 tmp5 [000071] -----+----- \--* LCL_VAR int V06 tmp3 ***** BB04 STMT00016 ( INL01 @ 0x007[E-] ... ??? ) <- INLRT @ ??? [000077] -A---+----- * ASG int [000076] D----+-N--- +--* LCL_VAR int V09 tmp6 [000075] -----+----- \--* LCL_VAR int V07 tmp4 ***** BB04 STMT00009 ( 0x057[--] ... ??? ) [000126] -A-X-+----- * COMMA void [000119] -A-X------- +--* COMMA void [000114] -A--------- | +--* ASG byref [000113] D------N--- | | +--* LCL_VAR byref V10 tmp7 [000112] -----+----- | | \--* ADD byref [000039] -----+----- | | +--* LCL_VAR byref V00 this [000111] -----+----- | | \--* CNS_INT long 20 [000118] -A-X------- | \--* ASG int [000116] ---X---N--- | +--* IND int [000115] ----------- | | \--* LCL_VAR byref V10 tmp7 [000117] ----------- | \--* LCL_VAR int V08 tmp5 [000125] -A-X------- \--* ASG int [000123] ---X---N--- +--* IND int [000122] ----------- | \--* ADD byref [000120] ----------- | +--* LCL_VAR byref V10 tmp7 [000121] ----------- | \--* CNS_INT long 4 [000124] ----------- \--* LCL_VAR int V09 tmp6 ***** BB04 STMT00010 ( 0x05C[E-] ... 0x05D ) [000053] -----+----- * RETURN int [000127] -----+----- \--* CNS_INT int 1 ------------ BB05 [05E..071) -> BB03 (cond), preds={BB01,BB03} succs={BB06,BB03} ***** BB05 STMT00001 ( 0x05E[E-] ... 0x06F ) [000013] ---XG+----- * JTRUE void [000012] N--XG+-N-U- \--* LT int [000008] ---XG+----- +--* IND int [000129] -----+----- | \--* ADD byref [000007] -----+----- | +--* LCL_VAR byref V00 this [000128] -----+----- | \--* CNS_INT long 12 [000011] ---XG+----- \--* IND int [000131] ---XG+----- \--* ADD byref [000010] ---XG+----- +--* IND ref [000009] -----+----- | \--* LCL_VAR byref V00 this [000130] -----+----- \--* CNS_INT long 56 Fseq[_count] ------------ BB06 [071..092) (return), preds={BB05} succs={} ***** BB06 STMT00011 ( 0x071[E-] ... 0x07F ) [000061] -A-XG+----- * ASG int [000060] ---XG+-N--- +--* IND int [000133] -----+----- | \--* ADD byref [000054] -----+----- | +--* LCL_VAR byref V00 this [000132] -----+----- | \--* CNS_INT long 12 [000059] ---XG+----- \--* ADD int [000057] ---XG+----- +--* IND int [000135] ---XG+----- | \--* ADD byref [000056] ---XG+----- | +--* IND ref [000055] -----+----- | | \--* LCL_VAR byref V00 this [000134] -----+----- | \--* CNS_INT long 56 Fseq[_count] [000058] -----+----- \--* CNS_INT int 1 ***** BB06 STMT00012 ( 0x084[E-] ... 0x08B ) [000066] IA--G+----- * ASG struct (init) [000064] n---G+-N--- +--* OBJ struct [000137] -----+----- | \--* ADD byref [000062] -----+----- | +--* LCL_VAR byref V00 this [000136] -----+----- | \--* CNS_INT long 20 [000065] -----+----- \--* CNS_INT int 0 ***** BB06 STMT00013 ( 0x090[E-] ... 0x091 ) [000068] -----+----- * RETURN int [000138] -----+----- \--* CNS_INT int 0 ------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist *************** In fgDebugCheckLoopTable: loop table not valid *************** Starting PHASE Find loops *************** In optFindLoops() *************** In optMarkLoopHeads() 1 loop heads marked *************** In optFindNaturalLoops() FindLoop: checking head:BB02 top:BB03 bottom:BB05 can't find entry FindLoop: checking head:BB03 top:BB04 bottom:BB03 BB03->BB04 is not a backedge FindLoop: checking head:BB04 top:BB05 bottom:BB01 BB01->BB05 is not a backedge FindLoop: checking head:BB04 top:BB05 bottom:BB03 BB03->BB05 is not a backedge FindLoop: checking head:BB05 top:BB06 bottom:BB05 BB05->BB06 is not a backedge *************** In optFindAndScaleGeneralLoopBlocks() Marking a loop from BB03 to BB05 BB03(wt=200) BB04(wt=50); unchanged: block not in loop BB05(wt=800) Found a total of 1 general loops. *************** Finishing PHASE Find loops Trees after Find loops ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..013)-> BB05 ( cond ) i BB02 [0001] 1 BB01 0 [013..01A) (throw ) i rare hascall gcsafe BB03 [0002] 1 BB05 2 [01A..045)-> BB05 ( cond ) i Loop idxlen bwd bwd-target BB04 [0003] 1 BB03 0.50 [045..05E) (return) i BB05 [0004] 2 BB01,BB03 8 [05E..071)-> BB03 ( cond ) i bwd bwd-src BB06 [0005] 1 BB05 0.50 [071..092) (return) i ----------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [000..013) -> BB05 (cond), preds={} succs={BB02,BB05} ***** BB01 STMT00000 ( 0x000[E-] ... 0x011 ) [000006] ---XG+----- * JTRUE void [000005] J--XG+-N--- \--* EQ int [000001] ---XG+----- +--* IND int [000084] -----+----- | \--* ADD byref [000000] -----+----- | +--* LCL_VAR byref V00 this [000083] -----+----- | \--* CNS_INT long 8 [000004] ---XG+----- \--* IND int [000086] ---XG+----- \--* ADD byref [000003] ---XG+----- +--* IND ref [000002] -----+----- | \--* LCL_VAR byref V00 this [000085] -----+----- \--* CNS_INT long 68 Fseq[_version] ------------ BB02 [013..01A) (throw), preds={BB01} succs={} ***** BB02 STMT00014 ( 0x013[E-] ... 0x018 ) [000069] --CXG+----- * CALL void System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion() ------------ BB03 [01A..045) -> BB05 (cond), preds={BB05} succs={BB04,BB05} ***** BB03 STMT00003 ( 0x01A[E-] ... 0x02C ) [000023] -A-XG+----- * ASG ref [000022] D----+-N--- +--* LCL_VAR ref V04 tmp1 [000016] ---XG+----- \--* IND ref [000088] ---XG+----- \--* ADD byref [000015] ---XG+----- +--* IND ref [000014] -----+----- | \--* LCL_VAR byref V00 this [000087] -----+----- \--* CNS_INT long 16 Fseq[_entries] ***** BB03 STMT00002 ( 0x01A[E-] ... ??? ) [000021] -A-XG+----- * ASG int [000020] D----+-N--- +--* LCL_VAR int V02 loc1 [000019] ---XG+----- \--* IND int [000090] -----+----- \--* ADD byref [000018] -----+----- +--* LCL_VAR byref V00 this [000089] -----+----- \--* CNS_INT long 12 ***** BB03 STMT00004 ( ??? ... 0x030 ) [000029] -A-XG+----- * ASG int [000028] ---XG+-N--- +--* IND int [000092] -----+----- | \--* ADD byref [000017] -----+----- | +--* LCL_VAR byref V00 this [000091] -----+----- | \--* CNS_INT long 12 [000027] -----+----- \--* ADD int [000025] -----+----- +--* LCL_VAR int V02 loc1 [000026] -----+----- \--* CNS_INT int 1 ***** BB03 STMT00005 ( ??? ... 0x03B ) [000033] -A-XG+----- * ASG byref [000032] D----+-N--- +--* LCL_VAR byref V01 loc0 [000104] ---X-+----- \--* COMMA byref [000096] ---X-+----- +--* BOUNDS_CHECK_Rng void [000030] -----+----- | +--* LCL_VAR int V02 loc1 [000095] ---X-+----- | \--* ARR_LENGTH int [000024] -----+----- | \--* LCL_VAR ref V04 tmp1 [000103] -----+----- \--* ARR_ADDR byref System.Collections.Generic.Dictionary`2+Entry[] [000102] -----+----- \--* ADD byref [000093] -----+----- +--* LCL_VAR ref V04 tmp1 [000101] -----+----- \--* ADD long [000099] -----+----- +--* LSH long [000097] -----+---U- | +--* CAST long <- uint [000094] -----+----- | | \--* LCL_VAR int V02 loc1 [000098] -----+-N--- | \--* CNS_INT long 4 [000100] -----+----- \--* CNS_INT long 16 ***** BB03 STMT00006 ( 0x03C[E-] ... 0x043 ) [000038] ---XG+----- * JTRUE void [000037] J--XG+-N--- \--* LT int [000035] ---XG+----- +--* IND int [000106] -----+----- | \--* ADD byref [000034] -----+----- | +--* LCL_VAR byref V01 loc0 [000105] -----+----- | \--* CNS_INT long 4 [000036] -----+----- \--* CNS_INT int -1 ------------ BB04 [045..05E) (return), preds={BB03} succs={} ***** BB04 STMT00017 ( ??? ... ??? ) [000079] -A-XG+----- * ASG int [000078] D----+-N--- +--* LCL_VAR int V06 tmp3 [000041] ---XG+----- \--* IND int [000108] -----+----- \--* ADD byref [000040] -----+----- +--* LCL_VAR byref V01 loc0 [000107] -----+----- \--* CNS_INT long 8 ***** BB04 STMT00018 ( ??? ... ??? ) [000081] -A-XG+----- * ASG int [000080] D----+-N--- +--* LCL_VAR int V07 tmp4 [000043] ---XG+----- \--* IND int [000110] -----+----- \--* ADD byref [000042] -----+----- +--* LCL_VAR byref V01 loc0 [000109] -----+----- \--* CNS_INT long 12 ***** BB04 STMT00015 ( INL01 @ 0x000[E-] ... ??? ) <- INLRT @ ??? [000073] -A---+----- * ASG int [000072] D----+-N--- +--* LCL_VAR int V08 tmp5 [000071] -----+----- \--* LCL_VAR int V06 tmp3 ***** BB04 STMT00016 ( INL01 @ 0x007[E-] ... ??? ) <- INLRT @ ??? [000077] -A---+----- * ASG int [000076] D----+-N--- +--* LCL_VAR int V09 tmp6 [000075] -----+----- \--* LCL_VAR int V07 tmp4 ***** BB04 STMT00009 ( 0x057[--] ... ??? ) [000126] -A-X-+----- * COMMA void [000119] -A-X------- +--* COMMA void [000114] -A--------- | +--* ASG byref [000113] D------N--- | | +--* LCL_VAR byref V10 tmp7 [000112] -----+----- | | \--* ADD byref [000039] -----+----- | | +--* LCL_VAR byref V00 this [000111] -----+----- | | \--* CNS_INT long 20 [000118] -A-X------- | \--* ASG int [000116] ---X---N--- | +--* IND int [000115] ----------- | | \--* LCL_VAR byref V10 tmp7 [000117] ----------- | \--* LCL_VAR int V08 tmp5 [000125] -A-X------- \--* ASG int [000123] ---X---N--- +--* IND int [000122] ----------- | \--* ADD byref [000120] ----------- | +--* LCL_VAR byref V10 tmp7 [000121] ----------- | \--* CNS_INT long 4 [000124] ----------- \--* LCL_VAR int V09 tmp6 ***** BB04 STMT00010 ( 0x05C[E-] ... 0x05D ) [000053] -----+----- * RETURN int [000127] -----+----- \--* CNS_INT int 1 ------------ BB05 [05E..071) -> BB03 (cond), preds={BB01,BB03} succs={BB06,BB03} ***** BB05 STMT00001 ( 0x05E[E-] ... 0x06F ) [000013] ---XG+----- * JTRUE void [000012] N--XG+-N-U- \--* LT int [000008] ---XG+----- +--* IND int [000129] -----+----- | \--* ADD byref [000007] -----+----- | +--* LCL_VAR byref V00 this [000128] -----+----- | \--* CNS_INT long 12 [000011] ---XG+----- \--* IND int [000131] ---XG+----- \--* ADD byref [000010] ---XG+----- +--* IND ref [000009] -----+----- | \--* LCL_VAR byref V00 this [000130] -----+----- \--* CNS_INT long 56 Fseq[_count] ------------ BB06 [071..092) (return), preds={BB05} succs={} ***** BB06 STMT00011 ( 0x071[E-] ... 0x07F ) [000061] -A-XG+----- * ASG int [000060] ---XG+-N--- +--* IND int [000133] -----+----- | \--* ADD byref [000054] -----+----- | +--* LCL_VAR byref V00 this [000132] -----+----- | \--* CNS_INT long 12 [000059] ---XG+----- \--* ADD int [000057] ---XG+----- +--* IND int [000135] ---XG+----- | \--* ADD byref [000056] ---XG+----- | +--* IND ref [000055] -----+----- | | \--* LCL_VAR byref V00 this [000134] -----+----- | \--* CNS_INT long 56 Fseq[_count] [000058] -----+----- \--* CNS_INT int 1 ***** BB06 STMT00012 ( 0x084[E-] ... 0x08B ) [000066] IA--G+----- * ASG struct (init) [000064] n---G+-N--- +--* OBJ struct [000137] -----+----- | \--* ADD byref [000062] -----+----- | +--* LCL_VAR byref V00 this [000136] -----+----- | \--* CNS_INT long 20 [000065] -----+----- \--* CNS_INT int 0 ***** BB06 STMT00013 ( 0x090[E-] ... 0x091 ) [000068] -----+----- * RETURN int [000138] -----+----- \--* CNS_INT int 0 ------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist *************** In fgDebugCheckLoopTable *************** Starting PHASE Clone loops *************** In optCloneLoops() No loops to clone *************** Finishing PHASE Clone loops [no changes] *************** Starting PHASE Unroll loops *************** Finishing PHASE Unroll loops [no changes] *************** Starting PHASE Clear loop info *************** Finishing PHASE Clear loop info [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 *** *** lvaComputeRefCounts -- explicit counts *** *** marking local variables in block BB01 (weight=1) STMT00000 ( 0x000[E-] ... 0x011 ) [000006] ---XG+----- * JTRUE void [000005] J--XG+-N--- \--* EQ int [000001] ---XG+----- +--* IND int [000084] -----+----- | \--* ADD byref [000000] -----+----- | +--* LCL_VAR byref V00 this [000083] -----+----- | \--* CNS_INT long 8 [000004] ---XG+----- \--* IND int [000086] ---XG+----- \--* ADD byref [000003] ---XG+----- +--* IND ref [000002] -----+----- | \--* LCL_VAR byref V00 this [000085] -----+----- \--* CNS_INT long 68 Fseq[_version] New refCnts for V00: refCnt = 1, refCntWtd = 1 New refCnts for V00: refCnt = 2, refCntWtd = 2 *** marking local variables in block BB02 (weight=0) STMT00014 ( 0x013[E-] ... 0x018 ) [000069] --CXG+----- * CALL void System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion() *** marking local variables in block BB03 (weight=2) STMT00003 ( 0x01A[E-] ... 0x02C ) [000023] -A-XG+----- * ASG ref [000022] D----+-N--- +--* LCL_VAR ref V04 tmp1 [000016] ---XG+----- \--* IND ref [000088] ---XG+----- \--* ADD byref [000015] ---XG+----- +--* IND ref [000014] -----+----- | \--* LCL_VAR byref V00 this [000087] -----+----- \--* CNS_INT long 16 Fseq[_entries] New refCnts for V04: refCnt = 1, refCntWtd = 4 V04 needs explicit zero init. Disqualified as a single-def register candidate. New refCnts for V00: refCnt = 3, refCntWtd = 4 STMT00002 ( 0x01A[E-] ... ??? ) [000021] -A-XG+----- * ASG int [000020] D----+-N--- +--* LCL_VAR int V02 loc1 [000019] ---XG+----- \--* IND int [000090] -----+----- \--* ADD byref [000018] -----+----- +--* LCL_VAR byref V00 this [000089] -----+----- \--* CNS_INT long 12 New refCnts for V02: refCnt = 1, refCntWtd = 2 V02 needs explicit zero init. Disqualified as a single-def register candidate. New refCnts for V00: refCnt = 4, refCntWtd = 6 STMT00004 ( ??? ... 0x030 ) [000029] -A-XG+----- * ASG int [000028] ---XG+-N--- +--* IND int [000092] -----+----- | \--* ADD byref [000017] -----+----- | +--* LCL_VAR byref V00 this [000091] -----+----- | \--* CNS_INT long 12 [000027] -----+----- \--* ADD int [000025] -----+----- +--* LCL_VAR int V02 loc1 [000026] -----+----- \--* CNS_INT int 1 New refCnts for V00: refCnt = 5, refCntWtd = 8 New refCnts for V02: refCnt = 2, refCntWtd = 4 STMT00005 ( ??? ... 0x03B ) [000033] -A-XG+----- * ASG byref [000032] D----+-N--- +--* LCL_VAR byref V01 loc0 [000104] ---X-+----- \--* COMMA byref [000096] ---X-+----- +--* BOUNDS_CHECK_Rng void [000030] -----+----- | +--* LCL_VAR int V02 loc1 [000095] ---X-+----- | \--* ARR_LENGTH int [000024] -----+----- | \--* LCL_VAR ref V04 tmp1 [000103] -----+----- \--* ARR_ADDR byref System.Collections.Generic.Dictionary`2+Entry[] [000102] -----+----- \--* ADD byref [000093] -----+----- +--* LCL_VAR ref V04 tmp1 [000101] -----+----- \--* ADD long [000099] -----+----- +--* LSH long [000097] -----+---U- | +--* CAST long <- uint [000094] -----+----- | | \--* LCL_VAR int V02 loc1 [000098] -----+-N--- | \--* CNS_INT long 4 [000100] -----+----- \--* CNS_INT long 16 New refCnts for V01: refCnt = 1, refCntWtd = 2 V01 needs explicit zero init. Disqualified as a single-def register candidate. New refCnts for V02: refCnt = 3, refCntWtd = 6 New refCnts for V04: refCnt = 2, refCntWtd = 8 New refCnts for V04: refCnt = 3, refCntWtd = 12 New refCnts for V02: refCnt = 4, refCntWtd = 8 STMT00006 ( 0x03C[E-] ... 0x043 ) [000038] ---XG+----- * JTRUE void [000037] J--XG+-N--- \--* LT int [000035] ---XG+----- +--* IND int [000106] -----+----- | \--* ADD byref [000034] -----+----- | +--* LCL_VAR byref V01 loc0 [000105] -----+----- | \--* CNS_INT long 4 [000036] -----+----- \--* CNS_INT int -1 New refCnts for V01: refCnt = 2, refCntWtd = 4 *** marking local variables in block BB04 (weight=0.50) STMT00017 ( ??? ... ??? ) [000079] -A-XG+----- * ASG int [000078] D----+-N--- +--* LCL_VAR int V06 tmp3 [000041] ---XG+----- \--* IND int [000108] -----+----- \--* ADD byref [000040] -----+----- +--* LCL_VAR byref V01 loc0 [000107] -----+----- \--* CNS_INT long 8 New refCnts for V06: refCnt = 1, refCntWtd = 1 V06 needs explicit zero init. Disqualified as a single-def register candidate. New refCnts for V01: refCnt = 3, refCntWtd = 4.50 STMT00018 ( ??? ... ??? ) [000081] -A-XG+----- * ASG int [000080] D----+-N--- +--* LCL_VAR int V07 tmp4 [000043] ---XG+----- \--* IND int [000110] -----+----- \--* ADD byref [000042] -----+----- +--* LCL_VAR byref V01 loc0 [000109] -----+----- \--* CNS_INT long 12 New refCnts for V07: refCnt = 1, refCntWtd = 1 V07 needs explicit zero init. Disqualified as a single-def register candidate. New refCnts for V01: refCnt = 4, refCntWtd = 5 STMT00015 ( INL01 @ 0x000[E-] ... ??? ) <- INLRT @ ??? [000073] -A---+----- * ASG int [000072] D----+-N--- +--* LCL_VAR int V08 tmp5 [000071] -----+----- \--* LCL_VAR int V06 tmp3 New refCnts for V08: refCnt = 1, refCntWtd = 0.50 V08 needs explicit zero init. Disqualified as a single-def register candidate. New refCnts for V06: refCnt = 2, refCntWtd = 2 STMT00016 ( INL01 @ 0x007[E-] ... ??? ) <- INLRT @ ??? [000077] -A---+----- * ASG int [000076] D----+-N--- +--* LCL_VAR int V09 tmp6 [000075] -----+----- \--* LCL_VAR int V07 tmp4 New refCnts for V09: refCnt = 1, refCntWtd = 0.50 V09 needs explicit zero init. Disqualified as a single-def register candidate. New refCnts for V07: refCnt = 2, refCntWtd = 2 STMT00009 ( 0x057[--] ... ??? ) [000126] -A-X-+----- * COMMA void [000119] -A-X------- +--* COMMA void [000114] -A--------- | +--* ASG byref [000113] D------N--- | | +--* LCL_VAR byref V10 tmp7 [000112] -----+----- | | \--* ADD byref [000039] -----+----- | | +--* LCL_VAR byref V00 this [000111] -----+----- | | \--* CNS_INT long 20 [000118] -A-X------- | \--* ASG int [000116] ---X---N--- | +--* IND int [000115] ----------- | | \--* LCL_VAR byref V10 tmp7 [000117] ----------- | \--* LCL_VAR int V08 tmp5 [000125] -A-X------- \--* ASG int [000123] ---X---N--- +--* IND int [000122] ----------- | \--* ADD byref [000120] ----------- | +--* LCL_VAR byref V10 tmp7 [000121] ----------- | \--* CNS_INT long 4 [000124] ----------- \--* LCL_VAR int V09 tmp6 New refCnts for V10: refCnt = 1, refCntWtd = 1 Marking EH Var V10 as a register candidate. New refCnts for V00: refCnt = 6, refCntWtd = 8.50 New refCnts for V10: refCnt = 2, refCntWtd = 2 New refCnts for V08: refCnt = 2, refCntWtd = 1 New refCnts for V10: refCnt = 3, refCntWtd = 3 New refCnts for V09: refCnt = 2, refCntWtd = 1 STMT00010 ( 0x05C[E-] ... 0x05D ) [000053] -----+----- * RETURN int [000127] -----+----- \--* CNS_INT int 1 *** marking local variables in block BB05 (weight=8) STMT00001 ( 0x05E[E-] ... 0x06F ) [000013] ---XG+----- * JTRUE void [000012] N--XG+-N-U- \--* LT int [000008] ---XG+----- +--* IND int [000129] -----+----- | \--* ADD byref [000007] -----+----- | +--* LCL_VAR byref V00 this [000128] -----+----- | \--* CNS_INT long 12 [000011] ---XG+----- \--* IND int [000131] ---XG+----- \--* ADD byref [000010] ---XG+----- +--* IND ref [000009] -----+----- | \--* LCL_VAR byref V00 this [000130] -----+----- \--* CNS_INT long 56 Fseq[_count] New refCnts for V00: refCnt = 7, refCntWtd = 16.50 New refCnts for V00: refCnt = 8, refCntWtd = 24.50 *** marking local variables in block BB06 (weight=0.50) STMT00011 ( 0x071[E-] ... 0x07F ) [000061] -A-XG+----- * ASG int [000060] ---XG+-N--- +--* IND int [000133] -----+----- | \--* ADD byref [000054] -----+----- | +--* LCL_VAR byref V00 this [000132] -----+----- | \--* CNS_INT long 12 [000059] ---XG+----- \--* ADD int [000057] ---XG+----- +--* IND int [000135] ---XG+----- | \--* ADD byref [000056] ---XG+----- | +--* IND ref [000055] -----+----- | | \--* LCL_VAR byref V00 this [000134] -----+----- | \--* CNS_INT long 56 Fseq[_count] [000058] -----+----- \--* CNS_INT int 1 New refCnts for V00: refCnt = 9, refCntWtd = 25 New refCnts for V00: refCnt = 10, refCntWtd = 25.50 STMT00012 ( 0x084[E-] ... 0x08B ) [000066] IA--G+----- * ASG struct (init) [000064] n---G+-N--- +--* OBJ struct [000137] -----+----- | \--* ADD byref [000062] -----+----- | +--* LCL_VAR byref V00 this [000136] -----+----- | \--* CNS_INT long 20 [000065] -----+----- \--* CNS_INT int 0 New refCnts for V00: refCnt = 11, refCntWtd = 26 STMT00013 ( 0x090[E-] ... 0x091 ) [000068] -----+----- * RETURN int [000138] -----+----- \--* CNS_INT int 0 *** lvaComputeRefCounts -- implicit counts *** New refCnts for V00: refCnt = 12, refCntWtd = 27 New refCnts for V00: refCnt = 13, refCntWtd = 28 *************** Finishing PHASE Mark local vars [no changes] *************** Starting PHASE Opt add copies *************** In optAddCopies() *************** Finishing PHASE Opt add copies [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 lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..013)-> BB05 ( cond ) i BB02 [0001] 1 BB01 0 [013..01A) (throw ) i rare hascall gcsafe BB03 [0002] 1 BB05 2 [01A..045)-> BB05 ( cond ) i Loop idxlen bwd bwd-target BB04 [0003] 1 BB03 0.50 [045..05E) (return) i BB05 [0004] 2 BB01,BB03 8 [05E..071)-> BB03 ( cond ) i bwd bwd-src BB06 [0005] 1 BB05 0.50 [071..092) (return) i ----------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [000..013) -> BB05 (cond), preds={} succs={BB02,BB05} ***** BB01 STMT00000 ( 0x000[E-] ... 0x011 ) ( 13, 10) [000006] ---XG------ * JTRUE void ( 11, 8) [000005] J--XG--N--- \--* EQ int ( 4, 3) [000001] ---XG------ +--* IND int ( 3, 4) [000084] -------N--- | \--* ADD byref ( 1, 1) [000000] ----------- | +--* LCL_VAR byref V00 this ( 1, 2) [000083] ----------- | \--* CNS_INT long 8 ( 6, 4) [000004] ---XG------ \--* IND int ( 5, 5) [000086] ---XG--N--- \--* ADD byref ( 3, 2) [000003] ---XG------ +--* IND ref ( 1, 1) [000002] ----------- | \--* LCL_VAR byref V00 this ( 1, 2) [000085] ----------- \--* CNS_INT long 68 Fseq[_version] ------------ BB02 [013..01A) (throw), preds={BB01} succs={} ***** BB02 STMT00014 ( 0x013[E-] ... 0x018 ) ( 14, 2) [000069] --CXG------ * CALL void System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion() ------------ BB03 [01A..045) -> BB05 (cond), preds={BB05} succs={BB04,BB05} ***** BB03 STMT00003 ( 0x01A[E-] ... 0x02C ) ( 6, 4) [000023] -A-XG---R-- * ASG ref ( 1, 1) [000022] D------N--- +--* LCL_VAR ref V04 tmp1 ( 6, 4) [000016] ---XG------ \--* IND ref ( 5, 5) [000088] ---XG--N--- \--* ADD byref ( 3, 2) [000015] ---XG------ +--* IND ref ( 1, 1) [000014] ----------- | \--* LCL_VAR byref V00 this ( 1, 2) [000087] ----------- \--* CNS_INT long 16 Fseq[_entries] ***** BB03 STMT00002 ( 0x01A[E-] ... ??? ) ( 4, 3) [000021] -A-XG---R-- * ASG int ( 1, 1) [000020] D------N--- +--* LCL_VAR int V02 loc1 ( 4, 3) [000019] ---XG------ \--* IND int ( 3, 4) [000090] -------N--- \--* ADD byref ( 1, 1) [000018] ----------- +--* LCL_VAR byref V00 this ( 1, 2) [000089] ----------- \--* CNS_INT long 12 ***** BB03 STMT00004 ( ??? ... 0x030 ) ( 8, 8) [000029] -A-XG---R-- * ASG int ( 4, 3) [000028] ---XG--N--- +--* IND int ( 3, 4) [000092] -------N--- | \--* ADD byref ( 1, 1) [000017] ----------- | +--* LCL_VAR byref V00 this ( 1, 2) [000091] ----------- | \--* CNS_INT long 12 ( 3, 4) [000027] ----------- \--* ADD int ( 1, 1) [000025] ----------- +--* LCL_VAR int V02 loc1 ( 1, 2) [000026] ----------- \--* CNS_INT int 1 ***** BB03 STMT00005 ( ??? ... 0x03B ) ( 15, 21) [000033] -A-XGO--R-- * ASG byref ( 1, 1) [000032] D------N--- +--* LCL_VAR byref V01 loc0 ( 15, 21) [000104] ---X-O----- \--* COMMA byref ( 8, 11) [000096] ---X-O----- +--* BOUNDS_CHECK_Rng void ( 1, 1) [000030] ----------- | +--* LCL_VAR int V02 loc1 ( 3, 3) [000095] ---X------- | \--* ARR_LENGTH int ( 1, 1) [000024] ----------- | \--* LCL_VAR ref V04 tmp1 ( 7, 10) [000103] -----O----- \--* ARR_ADDR byref System.Collections.Generic.Dictionary`2+Entry[] ( 7, 10) [000102] -------N--- \--* ADD byref ( 1, 1) [000093] ----------- +--* LCL_VAR ref V04 tmp1 ( 6, 9) [000101] ----------- \--* ADD long ( 4, 6) [000099] ----------- +--* LSH long ( 2, 3) [000097] ---------U- | +--* CAST long <- uint ( 1, 1) [000094] ----------- | | \--* LCL_VAR int V02 loc1 ( 1, 2) [000098] -------N--- | \--* CNS_INT long 4 ( 1, 2) [000100] ----------- \--* CNS_INT long 16 ***** BB03 STMT00006 ( 0x03C[E-] ... 0x043 ) ( 8, 8) [000038] ---XG------ * JTRUE void ( 6, 6) [000037] J--XG--N--- \--* LT int ( 4, 3) [000035] ---XG------ +--* IND int ( 3, 4) [000106] -------N--- | \--* ADD byref ( 1, 1) [000034] ----------- | +--* LCL_VAR byref V01 loc0 ( 1, 2) [000105] ----------- | \--* CNS_INT long 4 ( 1, 2) [000036] ----------- \--* CNS_INT int -1 ------------ BB04 [045..05E) (return), preds={BB03} succs={} ***** BB04 STMT00017 ( ??? ... ??? ) ( 8, 6) [000079] -A-XG---R-- * ASG int ( 3, 2) [000078] D------N--- +--* LCL_VAR int V06 tmp3 ( 4, 3) [000041] ---XG------ \--* IND int ( 3, 4) [000108] -------N--- \--* ADD byref ( 1, 1) [000040] ----------- +--* LCL_VAR byref V01 loc0 ( 1, 2) [000107] ----------- \--* CNS_INT long 8 ***** BB04 STMT00018 ( ??? ... ??? ) ( 8, 6) [000081] -A-XG---R-- * ASG int ( 3, 2) [000080] D------N--- +--* LCL_VAR int V07 tmp4 ( 4, 3) [000043] ---XG------ \--* IND int ( 3, 4) [000110] -------N--- \--* ADD byref ( 1, 1) [000042] ----------- +--* LCL_VAR byref V01 loc0 ( 1, 2) [000109] ----------- \--* CNS_INT long 12 ***** BB04 STMT00015 ( INL01 @ 0x000[E-] ... ??? ) <- INLRT @ ??? ( 7, 5) [000073] -A------R-- * ASG int ( 3, 2) [000072] D------N--- +--* LCL_VAR int V08 tmp5 ( 3, 2) [000071] ----------- \--* LCL_VAR int V06 tmp3 ***** BB04 STMT00016 ( INL01 @ 0x007[E-] ... ??? ) <- INLRT @ ??? ( 7, 5) [000077] -A------R-- * ASG int ( 3, 2) [000076] D------N--- +--* LCL_VAR int V09 tmp6 ( 3, 2) [000075] ----------- \--* LCL_VAR int V07 tmp4 ***** BB04 STMT00009 ( 0x057[--] ... ??? ) ( 18, 15) [000126] -A-X------- * COMMA void ( 10, 9) [000119] -A-X------- +--* COMMA void ( 3, 4) [000114] -A------R-- | +--* ASG byref ( 1, 1) [000113] D------N--- | | +--* LCL_VAR byref V10 tmp7 ( 3, 4) [000112] ----------- | | \--* ADD byref ( 1, 1) [000039] ----------- | | +--* LCL_VAR byref V00 this ( 1, 2) [000111] ----------- | | \--* CNS_INT long 20 ( 7, 5) [000118] -A-X------- | \--* ASG int ( 3, 2) [000116] ---X---N--- | +--* IND int ( 1, 1) [000115] ----------- | | \--* LCL_VAR byref V10 tmp7 ( 3, 2) [000117] ----------- | \--* LCL_VAR int V08 tmp5 ( 8, 6) [000125] -A-X------- \--* ASG int ( 4, 3) [000123] ---X---N--- +--* IND int ( 3, 4) [000122] -------N--- | \--* ADD byref ( 1, 1) [000120] ----------- | +--* LCL_VAR byref V10 tmp7 ( 1, 2) [000121] ----------- | \--* CNS_INT long 4 ( 3, 2) [000124] ----------- \--* LCL_VAR int V09 tmp6 ***** BB04 STMT00010 ( 0x05C[E-] ... 0x05D ) ( 2, 3) [000053] ----------- * RETURN int ( 1, 2) [000127] ----------- \--* CNS_INT int 1 ------------ BB05 [05E..071) -> BB03 (cond), preds={BB01,BB03} succs={BB06,BB03} ***** BB05 STMT00001 ( 0x05E[E-] ... 0x06F ) ( 13, 10) [000013] ---XG------ * JTRUE void ( 11, 8) [000012] N--XG--N-U- \--* LT int ( 4, 3) [000008] ---XG------ +--* IND int ( 3, 4) [000129] -------N--- | \--* ADD byref ( 1, 1) [000007] ----------- | +--* LCL_VAR byref V00 this ( 1, 2) [000128] ----------- | \--* CNS_INT long 12 ( 6, 4) [000011] ---XG------ \--* IND int ( 5, 5) [000131] ---XG--N--- \--* ADD byref ( 3, 2) [000010] ---XG------ +--* IND ref ( 1, 1) [000009] ----------- | \--* LCL_VAR byref V00 this ( 1, 2) [000130] ----------- \--* CNS_INT long 56 Fseq[_count] ------------ BB06 [071..092) (return), preds={BB05} succs={} ***** BB06 STMT00011 ( 0x071[E-] ... 0x07F ) ( 13, 11) [000061] -A-XG---R-- * ASG int ( 4, 3) [000060] ---XG--N--- +--* IND int ( 3, 4) [000133] -------N--- | \--* ADD byref ( 1, 1) [000054] ----------- | +--* LCL_VAR byref V00 this ( 1, 2) [000132] ----------- | \--* CNS_INT long 12 ( 8, 7) [000059] ---XG------ \--* ADD int ( 6, 4) [000057] ---XG------ +--* IND int ( 5, 5) [000135] ---XG--N--- | \--* ADD byref ( 3, 2) [000056] ---XG------ | +--* IND ref ( 1, 1) [000055] ----------- | | \--* LCL_VAR byref V00 this ( 1, 2) [000134] ----------- | \--* CNS_INT long 56 Fseq[_count] ( 1, 2) [000058] ----------- \--* CNS_INT int 1 ***** BB06 STMT00012 ( 0x084[E-] ... 0x08B ) ( 11, 11) [000066] IA--G------ * ASG struct (init) ( 9, 8) [000064] n---G--N--- +--* OBJ struct ( 3, 4) [000137] ----------- | \--* ADD byref ( 1, 1) [000062] ----------- | +--* LCL_VAR byref V00 this ( 1, 2) [000136] ----------- | \--* CNS_INT long 20 ( 1, 2) [000065] ----------- \--* CNS_INT int 0 ***** BB06 STMT00013 ( 0x090[E-] ... 0x091 ) ( 2, 3) [000068] ----------- * RETURN int ( 1, 2) [000138] ----------- \--* CNS_INT int 0 ------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist *************** In fgDebugCheckLoopTable *************** Starting PHASE Set block order *************** In fgSetBlockOrder() fgMarkLoopHead: Checking loop head block BB03: no guaranteed callsite exits, marking method as fully interruptible The biggest BB has 17 tree nodes *************** Finishing PHASE Set block order Trees after Set block order ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..013)-> BB05 ( cond ) i BB02 [0001] 1 BB01 0 [013..01A) (throw ) i rare hascall gcsafe BB03 [0002] 1 BB05 2 [01A..045)-> BB05 ( cond ) i Loop Loop0 idxlen bwd bwd-target BB04 [0003] 1 BB03 0.50 [045..05E) (return) i BB05 [0004] 2 BB01,BB03 8 [05E..071)-> BB03 ( cond ) i bwd bwd-src BB06 [0005] 1 BB05 0.50 [071..092) (return) i ----------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [000..013) -> BB05 (cond), preds={} succs={BB02,BB05} ***** BB01 STMT00000 ( 0x000[E-] ... 0x011 ) N011 ( 13, 10) [000006] ---XG------ * JTRUE void N010 ( 11, 8) [000005] J--XG--N--- \--* EQ int N004 ( 4, 3) [000001] ---XG------ +--* IND int N003 ( 3, 4) [000084] -------N--- | \--* ADD byref N001 ( 1, 1) [000000] ----------- | +--* LCL_VAR byref V00 this N002 ( 1, 2) [000083] ----------- | \--* CNS_INT long 8 N009 ( 6, 4) [000004] ---XG------ \--* IND int N008 ( 5, 5) [000086] ---XG--N--- \--* ADD byref N006 ( 3, 2) [000003] ---XG------ +--* IND ref N005 ( 1, 1) [000002] ----------- | \--* LCL_VAR byref V00 this N007 ( 1, 2) [000085] ----------- \--* CNS_INT long 68 Fseq[_version] ------------ BB02 [013..01A) (throw), preds={BB01} succs={} ***** BB02 STMT00014 ( 0x013[E-] ... 0x018 ) N001 ( 14, 2) [000069] --CXG------ * CALL void System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion() ------------ BB03 [01A..045) -> BB05 (cond), preds={BB05} succs={BB04,BB05} ***** BB03 STMT00003 ( 0x01A[E-] ... 0x02C ) N007 ( 6, 4) [000023] -A-XG---R-- * ASG ref N006 ( 1, 1) [000022] D------N--- +--* LCL_VAR ref V04 tmp1 N005 ( 6, 4) [000016] ---XG------ \--* IND ref N004 ( 5, 5) [000088] ---XG--N--- \--* ADD byref N002 ( 3, 2) [000015] ---XG------ +--* IND ref N001 ( 1, 1) [000014] ----------- | \--* LCL_VAR byref V00 this N003 ( 1, 2) [000087] ----------- \--* CNS_INT long 16 Fseq[_entries] ***** BB03 STMT00002 ( 0x01A[E-] ... ??? ) N006 ( 4, 3) [000021] -A-XG---R-- * ASG int N005 ( 1, 1) [000020] D------N--- +--* LCL_VAR int V02 loc1 N004 ( 4, 3) [000019] ---XG------ \--* IND int N003 ( 3, 4) [000090] -------N--- \--* ADD byref N001 ( 1, 1) [000018] ----------- +--* LCL_VAR byref V00 this N002 ( 1, 2) [000089] ----------- \--* CNS_INT long 12 ***** BB03 STMT00004 ( ??? ... 0x030 ) N008 ( 8, 8) [000029] -A-XG---R-- * ASG int N007 ( 4, 3) [000028] ---XG--N--- +--* IND int N006 ( 3, 4) [000092] -------N--- | \--* ADD byref N004 ( 1, 1) [000017] ----------- | +--* LCL_VAR byref V00 this N005 ( 1, 2) [000091] ----------- | \--* CNS_INT long 12 N003 ( 3, 4) [000027] ----------- \--* ADD int N001 ( 1, 1) [000025] ----------- +--* LCL_VAR int V02 loc1 N002 ( 1, 2) [000026] ----------- \--* CNS_INT int 1 ***** BB03 STMT00005 ( ??? ... 0x03B ) N016 ( 15, 21) [000033] -A-XGO--R-- * ASG byref N015 ( 1, 1) [000032] D------N--- +--* LCL_VAR byref V01 loc0 N014 ( 15, 21) [000104] ---X-O----- \--* COMMA byref N004 ( 8, 11) [000096] ---X-O----- +--* BOUNDS_CHECK_Rng void N001 ( 1, 1) [000030] ----------- | +--* LCL_VAR int V02 loc1 N003 ( 3, 3) [000095] ---X------- | \--* ARR_LENGTH int N002 ( 1, 1) [000024] ----------- | \--* LCL_VAR ref V04 tmp1 N013 ( 7, 10) [000103] -----O----- \--* ARR_ADDR byref System.Collections.Generic.Dictionary`2+Entry[] N012 ( 7, 10) [000102] -------N--- \--* ADD byref N005 ( 1, 1) [000093] ----------- +--* LCL_VAR ref V04 tmp1 N011 ( 6, 9) [000101] ----------- \--* ADD long N009 ( 4, 6) [000099] ----------- +--* LSH long N007 ( 2, 3) [000097] ---------U- | +--* CAST long <- uint N006 ( 1, 1) [000094] ----------- | | \--* LCL_VAR int V02 loc1 N008 ( 1, 2) [000098] -------N--- | \--* CNS_INT long 4 N010 ( 1, 2) [000100] ----------- \--* CNS_INT long 16 ***** BB03 STMT00006 ( 0x03C[E-] ... 0x043 ) N007 ( 8, 8) [000038] ---XG------ * JTRUE void N006 ( 6, 6) [000037] J--XG--N--- \--* LT int N004 ( 4, 3) [000035] ---XG------ +--* IND int N003 ( 3, 4) [000106] -------N--- | \--* ADD byref N001 ( 1, 1) [000034] ----------- | +--* LCL_VAR byref V01 loc0 N002 ( 1, 2) [000105] ----------- | \--* CNS_INT long 4 N005 ( 1, 2) [000036] ----------- \--* CNS_INT int -1 ------------ BB04 [045..05E) (return), preds={BB03} succs={} ***** BB04 STMT00017 ( ??? ... ??? ) N006 ( 8, 6) [000079] -A-XG---R-- * ASG int N005 ( 3, 2) [000078] D------N--- +--* LCL_VAR int V06 tmp3 N004 ( 4, 3) [000041] ---XG------ \--* IND int N003 ( 3, 4) [000108] -------N--- \--* ADD byref N001 ( 1, 1) [000040] ----------- +--* LCL_VAR byref V01 loc0 N002 ( 1, 2) [000107] ----------- \--* CNS_INT long 8 ***** BB04 STMT00018 ( ??? ... ??? ) N006 ( 8, 6) [000081] -A-XG---R-- * ASG int N005 ( 3, 2) [000080] D------N--- +--* LCL_VAR int V07 tmp4 N004 ( 4, 3) [000043] ---XG------ \--* IND int N003 ( 3, 4) [000110] -------N--- \--* ADD byref N001 ( 1, 1) [000042] ----------- +--* LCL_VAR byref V01 loc0 N002 ( 1, 2) [000109] ----------- \--* CNS_INT long 12 ***** BB04 STMT00015 ( INL01 @ 0x000[E-] ... ??? ) <- INLRT @ ??? N003 ( 7, 5) [000073] -A------R-- * ASG int N002 ( 3, 2) [000072] D------N--- +--* LCL_VAR int V08 tmp5 N001 ( 3, 2) [000071] ----------- \--* LCL_VAR int V06 tmp3 ***** BB04 STMT00016 ( INL01 @ 0x007[E-] ... ??? ) <- INLRT @ ??? N003 ( 7, 5) [000077] -A------R-- * ASG int N002 ( 3, 2) [000076] D------N--- +--* LCL_VAR int V09 tmp6 N001 ( 3, 2) [000075] ----------- \--* LCL_VAR int V07 tmp4 ***** BB04 STMT00009 ( 0x057[--] ... ??? ) N017 ( 18, 15) [000126] -A-X------- * COMMA void N010 ( 10, 9) [000119] -A-X------- +--* COMMA void N005 ( 3, 4) [000114] -A------R-- | +--* ASG byref N004 ( 1, 1) [000113] D------N--- | | +--* LCL_VAR byref V10 tmp7 N003 ( 3, 4) [000112] ----------- | | \--* ADD byref N001 ( 1, 1) [000039] ----------- | | +--* LCL_VAR byref V00 this N002 ( 1, 2) [000111] ----------- | | \--* CNS_INT long 20 N009 ( 7, 5) [000118] -A-X------- | \--* ASG int N007 ( 3, 2) [000116] ---X---N--- | +--* IND int N006 ( 1, 1) [000115] ----------- | | \--* LCL_VAR byref V10 tmp7 N008 ( 3, 2) [000117] ----------- | \--* LCL_VAR int V08 tmp5 N016 ( 8, 6) [000125] -A-X------- \--* ASG int N014 ( 4, 3) [000123] ---X---N--- +--* IND int N013 ( 3, 4) [000122] -------N--- | \--* ADD byref N011 ( 1, 1) [000120] ----------- | +--* LCL_VAR byref V10 tmp7 N012 ( 1, 2) [000121] ----------- | \--* CNS_INT long 4 N015 ( 3, 2) [000124] ----------- \--* LCL_VAR int V09 tmp6 ***** BB04 STMT00010 ( 0x05C[E-] ... 0x05D ) N002 ( 2, 3) [000053] ----------- * RETURN int N001 ( 1, 2) [000127] ----------- \--* CNS_INT int 1 ------------ BB05 [05E..071) -> BB03 (cond), preds={BB01,BB03} succs={BB06,BB03} ***** BB05 STMT00001 ( 0x05E[E-] ... 0x06F ) N011 ( 13, 10) [000013] ---XG------ * JTRUE void N010 ( 11, 8) [000012] N--XG--N-U- \--* LT int N004 ( 4, 3) [000008] ---XG------ +--* IND int N003 ( 3, 4) [000129] -------N--- | \--* ADD byref N001 ( 1, 1) [000007] ----------- | +--* LCL_VAR byref V00 this N002 ( 1, 2) [000128] ----------- | \--* CNS_INT long 12 N009 ( 6, 4) [000011] ---XG------ \--* IND int N008 ( 5, 5) [000131] ---XG--N--- \--* ADD byref N006 ( 3, 2) [000010] ---XG------ +--* IND ref N005 ( 1, 1) [000009] ----------- | \--* LCL_VAR byref V00 this N007 ( 1, 2) [000130] ----------- \--* CNS_INT long 56 Fseq[_count] ------------ BB06 [071..092) (return), preds={BB05} succs={} ***** BB06 STMT00011 ( 0x071[E-] ... 0x07F ) N012 ( 13, 11) [000061] -A-XG---R-- * ASG int N011 ( 4, 3) [000060] ---XG--N--- +--* IND int N010 ( 3, 4) [000133] -------N--- | \--* ADD byref N008 ( 1, 1) [000054] ----------- | +--* LCL_VAR byref V00 this N009 ( 1, 2) [000132] ----------- | \--* CNS_INT long 12 N007 ( 8, 7) [000059] ---XG------ \--* ADD int N005 ( 6, 4) [000057] ---XG------ +--* IND int N004 ( 5, 5) [000135] ---XG--N--- | \--* ADD byref N002 ( 3, 2) [000056] ---XG------ | +--* IND ref N001 ( 1, 1) [000055] ----------- | | \--* LCL_VAR byref V00 this N003 ( 1, 2) [000134] ----------- | \--* CNS_INT long 56 Fseq[_count] N006 ( 1, 2) [000058] ----------- \--* CNS_INT int 1 ***** BB06 STMT00012 ( 0x084[E-] ... 0x08B ) N006 ( 11, 11) [000066] IA--G------ * ASG struct (init) N004 ( 9, 8) [000064] n---G--N--- +--* OBJ struct N003 ( 3, 4) [000137] ----------- | \--* ADD byref N001 ( 1, 1) [000062] ----------- | +--* LCL_VAR byref V00 this N002 ( 1, 2) [000136] ----------- | \--* CNS_INT long 20 N005 ( 1, 2) [000065] ----------- \--* CNS_INT int 0 ***** BB06 STMT00013 ( 0x090[E-] ... 0x091 ) N002 ( 2, 3) [000068] ----------- * RETURN int N001 ( 1, 2) [000138] ----------- \--* CNS_INT int 0 ------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist *************** In fgDebugCheckLoopTable *************** Starting PHASE Build SSA representation *************** In SsaBuilder::Build() [SsaBuilder] Max block count is 7. ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..013)-> BB05 ( cond ) i BB02 [0001] 1 BB01 0 [013..01A) (throw ) i rare hascall gcsafe BB03 [0002] 1 BB05 2 [01A..045)-> BB05 ( cond ) i Loop Loop0 idxlen bwd bwd-target BB04 [0003] 1 BB03 0.50 [045..05E) (return) i BB05 [0004] 2 BB01,BB03 8 [05E..071)-> BB03 ( cond ) i bwd bwd-src BB06 [0005] 1 BB05 0.50 [071..092) (return) i ----------------------------------------------------------------------------------------------------------------------------------------- *************** Exception Handling table is empty [SsaBuilder] Topologically sorted the graph. [SsaBuilder::ComputeImmediateDom] Inside fgBuildDomTree After computing the Dominance Tree: BB01 : BB05 BB02 BB03 : BB04 BB05 : BB06 BB03 *************** In fgLocalVarLiveness() In fgLocalVarLivenessInit Tracked variable (9 out of 11) table: V00 this [ byref]: refCnt = 13, refCntWtd = 28 V04 tmp1 [ ref]: refCnt = 3, refCntWtd = 12 V02 loc1 [ int]: refCnt = 4, refCntWtd = 8 V01 loc0 [ byref]: refCnt = 4, refCntWtd = 5 V10 tmp7 [ byref]: refCnt = 3, refCntWtd = 3 V06 tmp3 [ int]: refCnt = 2, refCntWtd = 2 V07 tmp4 [ int]: refCnt = 2, refCntWtd = 2 V08 tmp5 [ int]: refCnt = 2, refCntWtd = 1 V09 tmp6 [ int]: refCnt = 2, refCntWtd = 1 *************** In fgPerBlockLocalVarLiveness() BB01 USE(1)={V00} + ByrefExposed + GcHeap DEF(0)={ } BB02 USE(0)={} + ByrefExposed + GcHeap DEF(0)={} + ByrefExposed* + GcHeap* BB03 USE(1)={V00 } + ByrefExposed + GcHeap DEF(3)={ V04 V02 V01} + ByrefExposed + GcHeap BB04 USE(2)={V00 V01 } + ByrefExposed + GcHeap DEF(5)={ V10 V06 V07 V08 V09} + ByrefExposed + GcHeap BB05 USE(1)={V00} + ByrefExposed + GcHeap DEF(0)={ } BB06 USE(1)={V00} + ByrefExposed + GcHeap DEF(0)={ } + ByrefExposed + GcHeap ** Memory liveness computed, GcHeap states and ByrefExposed states match *************** In fgInterBlockLocalVarLiveness() BB liveness after fgLiveVarAnalysis(): BB01 IN (1)={V00} + ByrefExposed + GcHeap OUT(1)={V00} + ByrefExposed + GcHeap BB02 IN (0)={} + ByrefExposed + GcHeap OUT(0)={} BB03 IN (1)={V00 } + ByrefExposed + GcHeap OUT(2)={V00 V01} + ByrefExposed + GcHeap BB04 IN (2)={V00 V01} + ByrefExposed + GcHeap OUT(0)={ } BB05 IN (1)={V00} + ByrefExposed + GcHeap OUT(1)={V00} + ByrefExposed + GcHeap BB06 IN (1)={V00} + ByrefExposed + GcHeap OUT(0)={ } *************** In optRemoveRedundantZeroInits() *************** In SsaBuilder::InsertPhiFunctions() Inserting phi functions: Inserting phi definition for ByrefExposed at start of BB05. *************** In SsaBuilder::RenameVariables() V00.1: defined in BB00 11 uses (global) V01.1: defined in BB03 3 uses (global) V02.1: defined in BB03 3 uses (local) V04.1: defined in BB03 2 uses (local) V06.1: defined in BB04 1 uses (local) V07.1: defined in BB04 1 uses (local) V08.1: defined in BB04 1 uses (local) V09.1: defined in BB04 1 uses (local) V10.1: defined in BB04 2 uses (local) *************** Finishing PHASE Build SSA representation Trees after Build SSA representation ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..013)-> BB05 ( cond ) i BB02 [0001] 1 BB01 0 [013..01A) (throw ) i rare hascall gcsafe BB03 [0002] 1 BB05 2 [01A..045)-> BB05 ( cond ) i Loop Loop0 idxlen bwd bwd-target BB04 [0003] 1 BB03 0.50 [045..05E) (return) i BB05 [0004] 2 BB01,BB03 8 [05E..071)-> BB03 ( cond ) i bwd bwd-src BB06 [0005] 1 BB05 0.50 [071..092) (return) i ----------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [000..013) -> BB05 (cond), preds={} succs={BB02,BB05} ***** BB01 STMT00000 ( 0x000[E-] ... 0x011 ) N011 ( 13, 10) [000006] ---XG------ * JTRUE void N010 ( 11, 8) [000005] J--XG--N--- \--* EQ int N004 ( 4, 3) [000001] ---XG------ +--* IND int N003 ( 3, 4) [000084] -------N--- | \--* ADD byref N001 ( 1, 1) [000000] ----------- | +--* LCL_VAR byref V00 this u:1 N002 ( 1, 2) [000083] ----------- | \--* CNS_INT long 8 N009 ( 6, 4) [000004] ---XG------ \--* IND int N008 ( 5, 5) [000086] ---XG--N--- \--* ADD byref N006 ( 3, 2) [000003] ---XG------ +--* IND ref N005 ( 1, 1) [000002] ----------- | \--* LCL_VAR byref V00 this u:1 N007 ( 1, 2) [000085] ----------- \--* CNS_INT long 68 Fseq[_version] ------------ BB02 [013..01A) (throw), preds={BB01} succs={} ***** BB02 STMT00014 ( 0x013[E-] ... 0x018 ) N001 ( 14, 2) [000069] --CXG------ * CALL void System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion() ------------ BB03 [01A..045) -> BB05 (cond), preds={BB05} succs={BB04,BB05} ***** BB03 STMT00003 ( 0x01A[E-] ... 0x02C ) N007 ( 6, 4) [000023] -A-XG---R-- * ASG ref N006 ( 1, 1) [000022] D------N--- +--* LCL_VAR ref V04 tmp1 d:1 N005 ( 6, 4) [000016] ---XG------ \--* IND ref N004 ( 5, 5) [000088] ---XG--N--- \--* ADD byref N002 ( 3, 2) [000015] ---XG------ +--* IND ref N001 ( 1, 1) [000014] ----------- | \--* LCL_VAR byref V00 this u:1 N003 ( 1, 2) [000087] ----------- \--* CNS_INT long 16 Fseq[_entries] ***** BB03 STMT00002 ( 0x01A[E-] ... ??? ) N006 ( 4, 3) [000021] -A-XG---R-- * ASG int N005 ( 1, 1) [000020] D------N--- +--* LCL_VAR int V02 loc1 d:1 N004 ( 4, 3) [000019] ---XG------ \--* IND int N003 ( 3, 4) [000090] -------N--- \--* ADD byref N001 ( 1, 1) [000018] ----------- +--* LCL_VAR byref V00 this u:1 N002 ( 1, 2) [000089] ----------- \--* CNS_INT long 12 ***** BB03 STMT00004 ( ??? ... 0x030 ) N008 ( 8, 8) [000029] -A-XG---R-- * ASG int N007 ( 4, 3) [000028] D--XG--N--- +--* IND int N006 ( 3, 4) [000092] -------N--- | \--* ADD byref N004 ( 1, 1) [000017] ----------- | +--* LCL_VAR byref V00 this u:1 N005 ( 1, 2) [000091] ----------- | \--* CNS_INT long 12 N003 ( 3, 4) [000027] ----------- \--* ADD int N001 ( 1, 1) [000025] ----------- +--* LCL_VAR int V02 loc1 u:1 N002 ( 1, 2) [000026] ----------- \--* CNS_INT int 1 ***** BB03 STMT00005 ( ??? ... 0x03B ) N016 ( 15, 21) [000033] -A-XGO--R-- * ASG byref N015 ( 1, 1) [000032] D------N--- +--* LCL_VAR byref V01 loc0 d:1 N014 ( 15, 21) [000104] ---X-O----- \--* COMMA byref N004 ( 8, 11) [000096] ---X-O----- +--* BOUNDS_CHECK_Rng void N001 ( 1, 1) [000030] ----------- | +--* LCL_VAR int V02 loc1 u:1 N003 ( 3, 3) [000095] ---X------- | \--* ARR_LENGTH int N002 ( 1, 1) [000024] ----------- | \--* LCL_VAR ref V04 tmp1 u:1 N013 ( 7, 10) [000103] -----O----- \--* ARR_ADDR byref System.Collections.Generic.Dictionary`2+Entry[] N012 ( 7, 10) [000102] -------N--- \--* ADD byref N005 ( 1, 1) [000093] ----------- +--* LCL_VAR ref V04 tmp1 u:1 (last use) N011 ( 6, 9) [000101] ----------- \--* ADD long N009 ( 4, 6) [000099] ----------- +--* LSH long N007 ( 2, 3) [000097] ---------U- | +--* CAST long <- uint N006 ( 1, 1) [000094] ----------- | | \--* LCL_VAR int V02 loc1 u:1 (last use) N008 ( 1, 2) [000098] -------N--- | \--* CNS_INT long 4 N010 ( 1, 2) [000100] ----------- \--* CNS_INT long 16 ***** BB03 STMT00006 ( 0x03C[E-] ... 0x043 ) N007 ( 8, 8) [000038] ---XG------ * JTRUE void N006 ( 6, 6) [000037] J--XG--N--- \--* LT int N004 ( 4, 3) [000035] ---XG------ +--* IND int N003 ( 3, 4) [000106] -------N--- | \--* ADD byref N001 ( 1, 1) [000034] ----------- | +--* LCL_VAR byref V01 loc0 u:1 N002 ( 1, 2) [000105] ----------- | \--* CNS_INT long 4 N005 ( 1, 2) [000036] ----------- \--* CNS_INT int -1 ------------ BB04 [045..05E) (return), preds={BB03} succs={} ***** BB04 STMT00017 ( ??? ... ??? ) N006 ( 8, 6) [000079] -A-XG---R-- * ASG int N005 ( 3, 2) [000078] D------N--- +--* LCL_VAR int V06 tmp3 d:1 N004 ( 4, 3) [000041] ---XG------ \--* IND int N003 ( 3, 4) [000108] -------N--- \--* ADD byref N001 ( 1, 1) [000040] ----------- +--* LCL_VAR byref V01 loc0 u:1 N002 ( 1, 2) [000107] ----------- \--* CNS_INT long 8 ***** BB04 STMT00018 ( ??? ... ??? ) N006 ( 8, 6) [000081] -A-XG---R-- * ASG int N005 ( 3, 2) [000080] D------N--- +--* LCL_VAR int V07 tmp4 d:1 N004 ( 4, 3) [000043] ---XG------ \--* IND int N003 ( 3, 4) [000110] -------N--- \--* ADD byref N001 ( 1, 1) [000042] ----------- +--* LCL_VAR byref V01 loc0 u:1 (last use) N002 ( 1, 2) [000109] ----------- \--* CNS_INT long 12 ***** BB04 STMT00015 ( INL01 @ 0x000[E-] ... ??? ) <- INLRT @ ??? N003 ( 7, 5) [000073] -A------R-- * ASG int N002 ( 3, 2) [000072] D------N--- +--* LCL_VAR int V08 tmp5 d:1 N001 ( 3, 2) [000071] ----------- \--* LCL_VAR int V06 tmp3 u:1 (last use) ***** BB04 STMT00016 ( INL01 @ 0x007[E-] ... ??? ) <- INLRT @ ??? N003 ( 7, 5) [000077] -A------R-- * ASG int N002 ( 3, 2) [000076] D------N--- +--* LCL_VAR int V09 tmp6 d:1 N001 ( 3, 2) [000075] ----------- \--* LCL_VAR int V07 tmp4 u:1 (last use) ***** BB04 STMT00009 ( 0x057[--] ... ??? ) N017 ( 18, 15) [000126] -A-X------- * COMMA void N010 ( 10, 9) [000119] -A-X------- +--* COMMA void N005 ( 3, 4) [000114] -A------R-- | +--* ASG byref N004 ( 1, 1) [000113] D------N--- | | +--* LCL_VAR byref V10 tmp7 d:1 N003 ( 3, 4) [000112] ----------- | | \--* ADD byref N001 ( 1, 1) [000039] ----------- | | +--* LCL_VAR byref V00 this u:1 (last use) N002 ( 1, 2) [000111] ----------- | | \--* CNS_INT long 20 N009 ( 7, 5) [000118] -A-X------- | \--* ASG int N007 ( 3, 2) [000116] D--X---N--- | +--* IND int N006 ( 1, 1) [000115] ----------- | | \--* LCL_VAR byref V10 tmp7 u:1 N008 ( 3, 2) [000117] ----------- | \--* LCL_VAR int V08 tmp5 u:1 (last use) N016 ( 8, 6) [000125] -A-X------- \--* ASG int N014 ( 4, 3) [000123] D--X---N--- +--* IND int N013 ( 3, 4) [000122] -------N--- | \--* ADD byref N011 ( 1, 1) [000120] ----------- | +--* LCL_VAR byref V10 tmp7 u:1 (last use) N012 ( 1, 2) [000121] ----------- | \--* CNS_INT long 4 N015 ( 3, 2) [000124] ----------- \--* LCL_VAR int V09 tmp6 u:1 (last use) ***** BB04 STMT00010 ( 0x05C[E-] ... 0x05D ) N002 ( 2, 3) [000053] ----------- * RETURN int N001 ( 1, 2) [000127] ----------- \--* CNS_INT int 1 ------------ BB05 [05E..071) -> BB03 (cond), preds={BB01,BB03} succs={BB06,BB03} ***** BB05 STMT00001 ( 0x05E[E-] ... 0x06F ) N011 ( 13, 10) [000013] ---XG------ * JTRUE void N010 ( 11, 8) [000012] N--XG--N-U- \--* LT int N004 ( 4, 3) [000008] ---XG------ +--* IND int N003 ( 3, 4) [000129] -------N--- | \--* ADD byref N001 ( 1, 1) [000007] ----------- | +--* LCL_VAR byref V00 this u:1 N002 ( 1, 2) [000128] ----------- | \--* CNS_INT long 12 N009 ( 6, 4) [000011] ---XG------ \--* IND int N008 ( 5, 5) [000131] ---XG--N--- \--* ADD byref N006 ( 3, 2) [000010] ---XG------ +--* IND ref N005 ( 1, 1) [000009] ----------- | \--* LCL_VAR byref V00 this u:1 N007 ( 1, 2) [000130] ----------- \--* CNS_INT long 56 Fseq[_count] ------------ BB06 [071..092) (return), preds={BB05} succs={} ***** BB06 STMT00011 ( 0x071[E-] ... 0x07F ) N012 ( 13, 11) [000061] -A-XG---R-- * ASG int N011 ( 4, 3) [000060] D--XG--N--- +--* IND int N010 ( 3, 4) [000133] -------N--- | \--* ADD byref N008 ( 1, 1) [000054] ----------- | +--* LCL_VAR byref V00 this u:1 N009 ( 1, 2) [000132] ----------- | \--* CNS_INT long 12 N007 ( 8, 7) [000059] ---XG------ \--* ADD int N005 ( 6, 4) [000057] ---XG------ +--* IND int N004 ( 5, 5) [000135] ---XG--N--- | \--* ADD byref N002 ( 3, 2) [000056] ---XG------ | +--* IND ref N001 ( 1, 1) [000055] ----------- | | \--* LCL_VAR byref V00 this u:1 N003 ( 1, 2) [000134] ----------- | \--* CNS_INT long 56 Fseq[_count] N006 ( 1, 2) [000058] ----------- \--* CNS_INT int 1 ***** BB06 STMT00012 ( 0x084[E-] ... 0x08B ) N006 ( 11, 11) [000066] IA--G------ * ASG struct (init) N004 ( 9, 8) [000064] n---G--N--- +--* OBJ struct N003 ( 3, 4) [000137] ----------- | \--* ADD byref N001 ( 1, 1) [000062] ----------- | +--* LCL_VAR byref V00 this u:1 (last use) N002 ( 1, 2) [000136] ----------- | \--* CNS_INT long 20 N005 ( 1, 2) [000065] ----------- \--* CNS_INT int 0 ***** BB06 STMT00013 ( 0x090[E-] ... 0x091 ) N002 ( 2, 3) [000068] ----------- * RETURN int N001 ( 1, 2) [000138] ----------- \--* CNS_INT int 0 ------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist SSA checks completed successfully *************** In fgDebugCheckLoopTable *************** Starting PHASE Early Value Propagation no arrays or null checks in the method *************** Finishing PHASE Early Value Propagation [no changes] *************** Starting PHASE Do value numbering *************** In fgValueNumber() Memory Initial Value in BB01 is: $c0 The SSA definition for ByrefExposed (#1) at start of BB01 is $c0 {InitVal($41)} The SSA definition for GcHeap (#1) at start of BB01 is $c0 {InitVal($41)} ***** BB01, STMT00000(before) N011 ( 13, 10) [000006] ---XG------ * JTRUE void N010 ( 11, 8) [000005] J--XG--N--- \--* EQ int N004 ( 4, 3) [000001] ---XG------ +--* IND int N003 ( 3, 4) [000084] -------N--- | \--* ADD byref N001 ( 1, 1) [000000] ----------- | +--* LCL_VAR byref V00 this u:1 N002 ( 1, 2) [000083] ----------- | \--* CNS_INT long 8 N009 ( 6, 4) [000004] ---XG------ \--* IND int N008 ( 5, 5) [000086] ---XG--N--- \--* ADD byref N006 ( 3, 2) [000003] ---XG------ +--* IND ref N005 ( 1, 1) [000002] ----------- | \--* LCL_VAR byref V00 this u:1 N007 ( 1, 2) [000085] ----------- \--* CNS_INT long 68 Fseq[_version] N001 [000000] LCL_VAR V00 this u:1 => $80 {InitVal($40)} N002 [000083] CNS_INT 8 => $100 {LngCns: 8} N003 [000084] ADD => $140 {ADD($80, $100)} N004 [000001] IND => N005 [000002] LCL_VAR V00 this u:1 => $80 {InitVal($40)} N006 [000003] IND => N007 [000085] CNS_INT 68 Fseq[_version] => $101 {LngCns: 68} N008 [000086] ADD => VNForHandle(_version) is $300, fieldType is int, size = 4 VNForMapSelect($c0, $300):mem returns $340 {$c0[$300]} VNForMapSelect($340, $2c0):int returns $282 {$340[$2c0]} N009 [000004] IND => N010 [000005] EQ => N011 [000006] JTRUE => ***** BB01, STMT00000(after) N011 ( 13, 10) [000006] ---XG------ * JTRUE void N010 ( 11, 8) [000005] J--XG--N--- \--* EQ int N004 ( 4, 3) [000001] ---XG------ +--* IND int N003 ( 3, 4) [000084] -------N--- | \--* ADD byref $140 N001 ( 1, 1) [000000] ----------- | +--* LCL_VAR byref V00 this u:1 $80 N002 ( 1, 2) [000083] ----------- | \--* CNS_INT long 8 $100 N009 ( 6, 4) [000004] ---XG------ \--* IND int N008 ( 5, 5) [000086] ---XG--N--- \--* ADD byref N006 ( 3, 2) [000003] ---XG------ +--* IND ref N005 ( 1, 1) [000002] ----------- | \--* LCL_VAR byref V00 this u:1 $80 N007 ( 1, 2) [000085] ----------- \--* CNS_INT long 68 Fseq[_version] $101 finish(BB01). Succ(BB02). Not yet completed. All preds complete, adding to allDone. Succ(BB05). Not yet completed. Not all preds complete Adding to notallDone, if necessary... Was necessary. The SSA definition for ByrefExposed (#1) at start of BB02 is $c0 {InitVal($41)} The SSA definition for GcHeap (#1) at start of BB02 is $c0 {InitVal($41)} ***** BB02, STMT00014(before) N001 ( 14, 2) [000069] --CXG------ * CALL void System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion() fgCurMemoryVN[GcHeap] assigned for CALL at [000069] to VN: $c1. N001 [000069] CALL => $VN.Void ***** BB02, STMT00014(after) N001 ( 14, 2) [000069] --CXG------ * CALL void System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion() $VN.Void finish(BB02). Building phi application: $45 = SSA# 4. Building phi application: $44 = SSA# 1. Building phi application: $380 = phi($44, $45). The SSA definition for GcHeap (#2) at start of BB05 is $381 {PhiMemoryDef($301, $380)} ***** BB05, STMT00001(before) N011 ( 13, 10) [000013] ---XG------ * JTRUE void N010 ( 11, 8) [000012] N--XG--N-U- \--* LT int N004 ( 4, 3) [000008] ---XG------ +--* IND int N003 ( 3, 4) [000129] -------N--- | \--* ADD byref N001 ( 1, 1) [000007] ----------- | +--* LCL_VAR byref V00 this u:1 N002 ( 1, 2) [000128] ----------- | \--* CNS_INT long 12 N009 ( 6, 4) [000011] ---XG------ \--* IND int N008 ( 5, 5) [000131] ---XG--N--- \--* ADD byref N006 ( 3, 2) [000010] ---XG------ +--* IND ref N005 ( 1, 1) [000009] ----------- | \--* LCL_VAR byref V00 this u:1 N007 ( 1, 2) [000130] ----------- \--* CNS_INT long 56 Fseq[_count] N001 [000007] LCL_VAR V00 this u:1 => $80 {InitVal($40)} N002 [000128] CNS_INT 12 => $102 {LngCns: 12} N003 [000129] ADD => $145 {ADD($80, $102)} N004 [000008] IND => N005 [000009] LCL_VAR V00 this u:1 => $80 {InitVal($40)} N006 [000010] IND => N007 [000130] CNS_INT 56 Fseq[_count] => $103 {LngCns: 56} N008 [000131] ADD => VNForHandle(_count) is $302, fieldType is int, size = 4 VNForMapSelect($381, $302):mem returns $342 {$381[$302]} VNForMapSelect($342, $2c1):int returns $28d {$342[$2c1]} N009 [000011] IND => N010 [000012] LT => N011 [000013] JTRUE => ***** BB05, STMT00001(after) N011 ( 13, 10) [000013] ---XG------ * JTRUE void N010 ( 11, 8) [000012] N--XG--N-U- \--* LT int N004 ( 4, 3) [000008] ---XG------ +--* IND int N003 ( 3, 4) [000129] -------N--- | \--* ADD byref $145 N001 ( 1, 1) [000007] ----------- | +--* LCL_VAR byref V00 this u:1 $80 N002 ( 1, 2) [000128] ----------- | \--* CNS_INT long 12 $102 N009 ( 6, 4) [000011] ---XG------ \--* IND int N008 ( 5, 5) [000131] ---XG--N--- \--* ADD byref N006 ( 3, 2) [000010] ---XG------ +--* IND ref N005 ( 1, 1) [000009] ----------- | \--* LCL_VAR byref V00 this u:1 $80 N007 ( 1, 2) [000130] ----------- \--* CNS_INT long 56 Fseq[_count] $103 finish(BB05). Succ(BB06). Not yet completed. All preds complete, adding to allDone. Succ(BB03). Not yet completed. All preds complete, adding to allDone. The SSA definition for ByrefExposed (#2) at start of BB03 is $381 {PhiMemoryDef($301, $380)} The SSA definition for GcHeap (#2) at start of BB03 is $381 {PhiMemoryDef($301, $380)} ***** BB03, STMT00003(before) N007 ( 6, 4) [000023] -A-XG---R-- * ASG ref N006 ( 1, 1) [000022] D------N--- +--* LCL_VAR ref V04 tmp1 d:1 N005 ( 6, 4) [000016] ---XG------ \--* IND ref N004 ( 5, 5) [000088] ---XG--N--- \--* ADD byref N002 ( 3, 2) [000015] ---XG------ +--* IND ref N001 ( 1, 1) [000014] ----------- | \--* LCL_VAR byref V00 this u:1 N003 ( 1, 2) [000087] ----------- \--* CNS_INT long 16 Fseq[_entries] N001 [000014] LCL_VAR V00 this u:1 => $80 {InitVal($40)} N002 [000015] IND => N003 [000087] CNS_INT 16 Fseq[_entries] => $104 {LngCns: 16} N004 [000088] ADD => VNForHandle(_entries) is $303, fieldType is ref, size = 8 VNForMapSelect($381, $303):mem returns $344 {$381[$303]} VNForMapSelect($344, $2c1):ref returns $252 {$344[$2c1]} N005 [000016] IND => N006 [000022] LCL_VAR V04 tmp1 d:1 => $VN.Void Tree [000023] assigned VN to local var V04/1: N007 [000023] ASG => ***** BB03, STMT00003(after) N007 ( 6, 4) [000023] -A-XG---R-- * ASG ref N006 ( 1, 1) [000022] D------N--- +--* LCL_VAR ref V04 tmp1 d:1 $VN.Void N005 ( 6, 4) [000016] ---XG------ \--* IND ref N004 ( 5, 5) [000088] ---XG--N--- \--* ADD byref N002 ( 3, 2) [000015] ---XG------ +--* IND ref N001 ( 1, 1) [000014] ----------- | \--* LCL_VAR byref V00 this u:1 $80 N003 ( 1, 2) [000087] ----------- \--* CNS_INT long 16 Fseq[_entries] $104 --------- ***** BB03, STMT00002(before) N006 ( 4, 3) [000021] -A-XG---R-- * ASG int N005 ( 1, 1) [000020] D------N--- +--* LCL_VAR int V02 loc1 d:1 N004 ( 4, 3) [000019] ---XG------ \--* IND int N003 ( 3, 4) [000090] -------N--- \--* ADD byref N001 ( 1, 1) [000018] ----------- +--* LCL_VAR byref V00 this u:1 N002 ( 1, 2) [000089] ----------- \--* CNS_INT long 12 N001 [000018] LCL_VAR V00 this u:1 => $80 {InitVal($40)} N002 [000089] CNS_INT 12 => $102 {LngCns: 12} N003 [000090] ADD => $145 {ADD($80, $102)} N004 [000019] IND => N005 [000020] LCL_VAR V02 loc1 d:1 => $VN.Void Tree [000021] assigned VN to local var V02/1: N006 [000021] ASG => $25a {norm=$VN.Void, exc=$240 {NullPtrExc($80)}} ***** BB03, STMT00002(after) N006 ( 4, 3) [000021] -A-XG---R-- * ASG int $25a N005 ( 1, 1) [000020] D------N--- +--* LCL_VAR int V02 loc1 d:1 $VN.Void N004 ( 4, 3) [000019] ---XG------ \--* IND int N003 ( 3, 4) [000090] -------N--- \--* ADD byref $145 N001 ( 1, 1) [000018] ----------- +--* LCL_VAR byref V00 this u:1 $80 N002 ( 1, 2) [000089] ----------- \--* CNS_INT long 12 $102 --------- ***** BB03, STMT00004(before) N008 ( 8, 8) [000029] -A-XG---R-- * ASG int N007 ( 4, 3) [000028] D--XG--N--- +--* IND int N006 ( 3, 4) [000092] -------N--- | \--* ADD byref N004 ( 1, 1) [000017] ----------- | +--* LCL_VAR byref V00 this u:1 N005 ( 1, 2) [000091] ----------- | \--* CNS_INT long 12 N003 ( 3, 4) [000027] ----------- \--* ADD int N001 ( 1, 1) [000025] ----------- +--* LCL_VAR int V02 loc1 u:1 N002 ( 1, 2) [000026] ----------- \--* CNS_INT int 1 N001 [000025] LCL_VAR V02 loc1 u:1 => N002 [000026] CNS_INT 1 => $44 {IntCns 1} N003 [000027] ADD => N004 [000017] LCL_VAR V00 this u:1 => $80 {InitVal($40)} N005 [000091] CNS_INT 12 => $102 {LngCns: 12} N006 [000092] ADD => $145 {ADD($80, $102)} N007 [000028] IND => $25a {norm=$VN.Void, exc=$240 {NullPtrExc($80)}} fgCurMemoryVN[GcHeap] assigned for assign-of-IND at [000029] to VN: $c2. N008 [000029] ASG => $25a {norm=$VN.Void, exc=$240 {NullPtrExc($80)}} ***** BB03, STMT00004(after) N008 ( 8, 8) [000029] -A-XG---R-- * ASG int $25a N007 ( 4, 3) [000028] D--XG--N--- +--* IND int $25a N006 ( 3, 4) [000092] -------N--- | \--* ADD byref $145 N004 ( 1, 1) [000017] ----------- | +--* LCL_VAR byref V00 this u:1 $80 N005 ( 1, 2) [000091] ----------- | \--* CNS_INT long 12 $102 N003 ( 3, 4) [000027] ----------- \--* ADD int N001 ( 1, 1) [000025] ----------- +--* LCL_VAR int V02 loc1 u:1 N002 ( 1, 2) [000026] ----------- \--* CNS_INT int 1 $44 --------- ***** BB03, STMT00005(before) N016 ( 15, 21) [000033] -A-XGO--R-- * ASG byref N015 ( 1, 1) [000032] D------N--- +--* LCL_VAR byref V01 loc0 d:1 N014 ( 15, 21) [000104] ---X-O----- \--* COMMA byref N004 ( 8, 11) [000096] ---X-O----- +--* BOUNDS_CHECK_Rng void N001 ( 1, 1) [000030] ----------- | +--* LCL_VAR int V02 loc1 u:1 N003 ( 3, 3) [000095] ---X------- | \--* ARR_LENGTH int N002 ( 1, 1) [000024] ----------- | \--* LCL_VAR ref V04 tmp1 u:1 N013 ( 7, 10) [000103] -----O----- \--* ARR_ADDR byref System.Collections.Generic.Dictionary`2+Entry[] N012 ( 7, 10) [000102] -------N--- \--* ADD byref N005 ( 1, 1) [000093] ----------- +--* LCL_VAR ref V04 tmp1 u:1 (last use) N011 ( 6, 9) [000101] ----------- \--* ADD long N009 ( 4, 6) [000099] ----------- +--* LSH long N007 ( 2, 3) [000097] ---------U- | +--* CAST long <- uint N006 ( 1, 1) [000094] ----------- | | \--* LCL_VAR int V02 loc1 u:1 (last use) N008 ( 1, 2) [000098] -------N--- | \--* CNS_INT long 4 N010 ( 1, 2) [000100] ----------- \--* CNS_INT long 16 N001 [000030] LCL_VAR V02 loc1 u:1 => N002 [000024] LCL_VAR V04 tmp1 u:1 => N003 [000095] ARR_LENGTH => N004 [000096] BOUNDS_CHECK_Rng => N005 [000093] LCL_VAR V04 tmp1 u:1 (last use) => N006 [000094] LCL_VAR V02 loc1 u:1 (last use) => N007 [000097] CAST => N008 [000098] CNS_INT 4 => $105 {LngCns: 4} N009 [000099] LSH => N010 [000100] CNS_INT 16 => $104 {LngCns: 16} N011 [000101] ADD => N012 [000102] ADD => VNForHandle(arrElemType: System.Collections.Generic.Dictionary`2+Entry[int,int]) is $304 N013 [000103] ARR_ADDR => $400 {PtrToArrElem($304, $252, $3c0, $106)} N014 [000104] COMMA => N015 [000032] LCL_VAR V01 loc0 d:1 => $VN.Void Tree [000033] assigned VN to local var V01/1: $400 {PtrToArrElem($304, $252, $3c0, $106)} N016 [000033] ASG => ***** BB03, STMT00005(after) N016 ( 15, 21) [000033] -A-XGO--R-- * ASG byref N015 ( 1, 1) [000032] D------N--- +--* LCL_VAR byref V01 loc0 d:1 $VN.Void N014 ( 15, 21) [000104] ---X-O----- \--* COMMA byref N004 ( 8, 11) [000096] ---X-O----- +--* BOUNDS_CHECK_Rng void N001 ( 1, 1) [000030] ----------- | +--* LCL_VAR int V02 loc1 u:1 N003 ( 3, 3) [000095] ---X------- | \--* ARR_LENGTH int N002 ( 1, 1) [000024] ----------- | \--* LCL_VAR ref V04 tmp1 u:1 N013 ( 7, 10) [000103] -----O----- \--* ARR_ADDR byref System.Collections.Generic.Dictionary`2+Entry[] $400 N012 ( 7, 10) [000102] -------N--- \--* ADD byref N005 ( 1, 1) [000093] ----------- +--* LCL_VAR ref V04 tmp1 u:1 (last use) N011 ( 6, 9) [000101] ----------- \--* ADD long N009 ( 4, 6) [000099] ----------- +--* LSH long N007 ( 2, 3) [000097] ---------U- | +--* CAST long <- uint N006 ( 1, 1) [000094] ----------- | | \--* LCL_VAR int V02 loc1 u:1 (last use) N008 ( 1, 2) [000098] -------N--- | \--* CNS_INT long 4 $105 N010 ( 1, 2) [000100] ----------- \--* CNS_INT long 16 $104 --------- ***** BB03, STMT00006(before) N007 ( 8, 8) [000038] ---XG------ * JTRUE void N006 ( 6, 6) [000037] J--XG--N--- \--* LT int N004 ( 4, 3) [000035] ---XG------ +--* IND int N003 ( 3, 4) [000106] -------N--- | \--* ADD byref N001 ( 1, 1) [000034] ----------- | +--* LCL_VAR byref V01 loc0 u:1 N002 ( 1, 2) [000105] ----------- | \--* CNS_INT long 4 N005 ( 1, 2) [000036] ----------- \--* CNS_INT int -1 N001 [000034] LCL_VAR V01 loc0 u:1 => $400 {PtrToArrElem($304, $252, $3c0, $106)} N002 [000105] CNS_INT 4 => $105 {LngCns: 4} N003 [000106] ADD => $401 {PtrToArrElem($304, $252, $3c0, $105)} Array element load: elemTypeEq is $304 for System.Collections.Generic.Dictionary`2+Entry[int,int][] VNForMapSelect($c2, $304):mem returns $345 {$c2[$304]} GcHeap[elemTypeEq: $304] is $345 VNForMapSelect($345, $252):mem returns $346 {$345[$252]} GcHeap[elemTypeEq][array: $252] is $346 VNForMapSelect($346, $3c0):struct returns $440 {$346[$3c0]} GcHeap[elemTypeEq][array][index: $3c0] is $440 VNForLoad: VNForMapPhysicalSelect($440, [4:7]):int returns $29b {$440[$108]} N004 [000035] IND => N005 [000036] CNS_INT -1 => $41 {IntCns 4294967295} N006 [000037] LT => N007 [000038] JTRUE => $268 {norm=$VN.Void, exc=$267 {NullPtrExc($401)}} ***** BB03, STMT00006(after) N007 ( 8, 8) [000038] ---XG------ * JTRUE void $268 N006 ( 6, 6) [000037] J--XG--N--- \--* LT int N004 ( 4, 3) [000035] ---XG------ +--* IND int N003 ( 3, 4) [000106] -------N--- | \--* ADD byref $401 N001 ( 1, 1) [000034] ----------- | +--* LCL_VAR byref V01 loc0 u:1 $400 N002 ( 1, 2) [000105] ----------- | \--* CNS_INT long 4 $105 N005 ( 1, 2) [000036] ----------- \--* CNS_INT int -1 $41 finish(BB03). Succ(BB04). Not yet completed. All preds complete, adding to allDone. Succ(BB05). The SSA definition for ByrefExposed (#4) at start of BB04 is $c2 {MemOpaque:NotInLoop} The SSA definition for GcHeap (#4) at start of BB04 is $c2 {MemOpaque:NotInLoop} ***** BB04, STMT00017(before) N006 ( 8, 6) [000079] -A-XG---R-- * ASG int N005 ( 3, 2) [000078] D------N--- +--* LCL_VAR int V06 tmp3 d:1 N004 ( 4, 3) [000041] ---XG------ \--* IND int N003 ( 3, 4) [000108] -------N--- \--* ADD byref N001 ( 1, 1) [000040] ----------- +--* LCL_VAR byref V01 loc0 u:1 N002 ( 1, 2) [000107] ----------- \--* CNS_INT long 8 N001 [000040] LCL_VAR V01 loc0 u:1 => $400 {PtrToArrElem($304, $252, $3c0, $106)} N002 [000107] CNS_INT 8 => $100 {LngCns: 8} N003 [000108] ADD => $402 {PtrToArrElem($304, $252, $3c0, $100)} Array element load: elemTypeEq is $304 for System.Collections.Generic.Dictionary`2+Entry[int,int][] VNForMapSelect($c2, $304):mem returns $345 {$c2[$304]} GcHeap[elemTypeEq: $304] is $345 VNForMapSelect($345, $252):mem returns $346 {$345[$252]} GcHeap[elemTypeEq][array: $252] is $346 VNForMapSelect($346, $3c0):struct returns $440 {$346[$3c0]} GcHeap[elemTypeEq][array][index: $3c0] is $440 VNForLoad: VNForMapPhysicalSelect($440, [8:11]):int returns $2a2 {$440[$109]} N004 [000041] IND => N005 [000078] LCL_VAR V06 tmp3 d:1 => $VN.Void Tree [000079] assigned VN to local var V06/1: N006 [000079] ASG => $26a {norm=$VN.Void, exc=$269 {NullPtrExc($402)}} ***** BB04, STMT00017(after) N006 ( 8, 6) [000079] -A-XG---R-- * ASG int $26a N005 ( 3, 2) [000078] D------N--- +--* LCL_VAR int V06 tmp3 d:1 $VN.Void N004 ( 4, 3) [000041] ---XG------ \--* IND int N003 ( 3, 4) [000108] -------N--- \--* ADD byref $402 N001 ( 1, 1) [000040] ----------- +--* LCL_VAR byref V01 loc0 u:1 $400 N002 ( 1, 2) [000107] ----------- \--* CNS_INT long 8 $100 --------- ***** BB04, STMT00018(before) N006 ( 8, 6) [000081] -A-XG---R-- * ASG int N005 ( 3, 2) [000080] D------N--- +--* LCL_VAR int V07 tmp4 d:1 N004 ( 4, 3) [000043] ---XG------ \--* IND int N003 ( 3, 4) [000110] -------N--- \--* ADD byref N001 ( 1, 1) [000042] ----------- +--* LCL_VAR byref V01 loc0 u:1 (last use) N002 ( 1, 2) [000109] ----------- \--* CNS_INT long 12 N001 [000042] LCL_VAR V01 loc0 u:1 (last use) => $400 {PtrToArrElem($304, $252, $3c0, $106)} N002 [000109] CNS_INT 12 => $102 {LngCns: 12} N003 [000110] ADD => $403 {PtrToArrElem($304, $252, $3c0, $102)} Array element load: elemTypeEq is $304 for System.Collections.Generic.Dictionary`2+Entry[int,int][] VNForMapSelect($c2, $304):mem returns $345 {$c2[$304]} GcHeap[elemTypeEq: $304] is $345 VNForMapSelect($345, $252):mem returns $346 {$345[$252]} GcHeap[elemTypeEq][array: $252] is $346 VNForMapSelect($346, $3c0):struct returns $440 {$346[$3c0]} GcHeap[elemTypeEq][array][index: $3c0] is $440 VNForLoad: VNForMapPhysicalSelect($440, [12:15]):int returns $2a5 {$440[$10a]} N004 [000043] IND => N005 [000080] LCL_VAR V07 tmp4 d:1 => $VN.Void Tree [000081] assigned VN to local var V07/1: N006 [000081] ASG => $26c {norm=$VN.Void, exc=$26b {NullPtrExc($403)}} ***** BB04, STMT00018(after) N006 ( 8, 6) [000081] -A-XG---R-- * ASG int $26c N005 ( 3, 2) [000080] D------N--- +--* LCL_VAR int V07 tmp4 d:1 $VN.Void N004 ( 4, 3) [000043] ---XG------ \--* IND int N003 ( 3, 4) [000110] -------N--- \--* ADD byref $403 N001 ( 1, 1) [000042] ----------- +--* LCL_VAR byref V01 loc0 u:1 (last use) $400 N002 ( 1, 2) [000109] ----------- \--* CNS_INT long 12 $102 --------- ***** BB04, STMT00015(before) N003 ( 7, 5) [000073] -A------R-- * ASG int N002 ( 3, 2) [000072] D------N--- +--* LCL_VAR int V08 tmp5 d:1 N001 ( 3, 2) [000071] ----------- \--* LCL_VAR int V06 tmp3 u:1 (last use) N001 [000071] LCL_VAR V06 tmp3 u:1 (last use) => N002 [000072] LCL_VAR V08 tmp5 d:1 => $VN.Void Tree [000073] assigned VN to local var V08/1: N003 [000073] ASG => $VN.Void ***** BB04, STMT00015(after) N003 ( 7, 5) [000073] -A------R-- * ASG int $VN.Void N002 ( 3, 2) [000072] D------N--- +--* LCL_VAR int V08 tmp5 d:1 $VN.Void N001 ( 3, 2) [000071] ----------- \--* LCL_VAR int V06 tmp3 u:1 (last use) --------- ***** BB04, STMT00016(before) N003 ( 7, 5) [000077] -A------R-- * ASG int N002 ( 3, 2) [000076] D------N--- +--* LCL_VAR int V09 tmp6 d:1 N001 ( 3, 2) [000075] ----------- \--* LCL_VAR int V07 tmp4 u:1 (last use) N001 [000075] LCL_VAR V07 tmp4 u:1 (last use) => N002 [000076] LCL_VAR V09 tmp6 d:1 => $VN.Void Tree [000077] assigned VN to local var V09/1: N003 [000077] ASG => $VN.Void ***** BB04, STMT00016(after) N003 ( 7, 5) [000077] -A------R-- * ASG int $VN.Void N002 ( 3, 2) [000076] D------N--- +--* LCL_VAR int V09 tmp6 d:1 $VN.Void N001 ( 3, 2) [000075] ----------- \--* LCL_VAR int V07 tmp4 u:1 (last use) --------- ***** BB04, STMT00009(before) N017 ( 18, 15) [000126] -A-X------- * COMMA void N010 ( 10, 9) [000119] -A-X------- +--* COMMA void N005 ( 3, 4) [000114] -A------R-- | +--* ASG byref N004 ( 1, 1) [000113] D------N--- | | +--* LCL_VAR byref V10 tmp7 d:1 N003 ( 3, 4) [000112] ----------- | | \--* ADD byref N001 ( 1, 1) [000039] ----------- | | +--* LCL_VAR byref V00 this u:1 (last use) N002 ( 1, 2) [000111] ----------- | | \--* CNS_INT long 20 N009 ( 7, 5) [000118] -A-X------- | \--* ASG int N007 ( 3, 2) [000116] D--X---N--- | +--* IND int N006 ( 1, 1) [000115] ----------- | | \--* LCL_VAR byref V10 tmp7 u:1 N008 ( 3, 2) [000117] ----------- | \--* LCL_VAR int V08 tmp5 u:1 (last use) N016 ( 8, 6) [000125] -A-X------- \--* ASG int N014 ( 4, 3) [000123] D--X---N--- +--* IND int N013 ( 3, 4) [000122] -------N--- | \--* ADD byref N011 ( 1, 1) [000120] ----------- | +--* LCL_VAR byref V10 tmp7 u:1 (last use) N012 ( 1, 2) [000121] ----------- | \--* CNS_INT long 4 N015 ( 3, 2) [000124] ----------- \--* LCL_VAR int V09 tmp6 u:1 (last use) N001 [000039] LCL_VAR V00 this u:1 (last use) => $80 {InitVal($40)} N002 [000111] CNS_INT 20 => $10b {LngCns: 20} N003 [000112] ADD => $152 {ADD($80, $10b)} N004 [000113] LCL_VAR V10 tmp7 d:1 => $VN.Void Tree [000114] assigned VN to local var V10/1: $152 {ADD($80, $10b)} N005 [000114] ASG => $VN.Void N006 [000115] LCL_VAR V10 tmp7 u:1 => $152 {ADD($80, $10b)} N007 [000116] IND => $25a {norm=$VN.Void, exc=$240 {NullPtrExc($80)}} N008 [000117] LCL_VAR V08 tmp5 u:1 (last use) => fgCurMemoryVN[GcHeap] assigned for assign-of-IND at [000118] to VN: $c3. N009 [000118] ASG => $25a {norm=$VN.Void, exc=$240 {NullPtrExc($80)}} N010 [000119] COMMA => $25a {norm=$VN.Void, exc=$240 {NullPtrExc($80)}} N011 [000120] LCL_VAR V10 tmp7 u:1 (last use) => $152 {ADD($80, $10b)} N012 [000121] CNS_INT 4 => $105 {LngCns: 4} N013 [000122] ADD => $153 {ADD($105, $152)} N014 [000123] IND => $25a {norm=$VN.Void, exc=$240 {NullPtrExc($80)}} N015 [000124] LCL_VAR V09 tmp6 u:1 (last use) => fgCurMemoryVN[GcHeap] assigned for assign-of-IND at [000125] to VN: $c4. N016 [000125] ASG => $25a {norm=$VN.Void, exc=$240 {NullPtrExc($80)}} N017 [000126] COMMA => $25a {norm=$VN.Void, exc=$240 {NullPtrExc($80)}} ***** BB04, STMT00009(after) N017 ( 18, 15) [000126] -A-X------- * COMMA void $25a N010 ( 10, 9) [000119] -A-X------- +--* COMMA void $25a N005 ( 3, 4) [000114] -A------R-- | +--* ASG byref $VN.Void N004 ( 1, 1) [000113] D------N--- | | +--* LCL_VAR byref V10 tmp7 d:1 $VN.Void N003 ( 3, 4) [000112] ----------- | | \--* ADD byref $152 N001 ( 1, 1) [000039] ----------- | | +--* LCL_VAR byref V00 this u:1 (last use) $80 N002 ( 1, 2) [000111] ----------- | | \--* CNS_INT long 20 $10b N009 ( 7, 5) [000118] -A-X------- | \--* ASG int $25a N007 ( 3, 2) [000116] D--X---N--- | +--* IND int $25a N006 ( 1, 1) [000115] ----------- | | \--* LCL_VAR byref V10 tmp7 u:1 $152 N008 ( 3, 2) [000117] ----------- | \--* LCL_VAR int V08 tmp5 u:1 (last use) N016 ( 8, 6) [000125] -A-X------- \--* ASG int $25a N014 ( 4, 3) [000123] D--X---N--- +--* IND int $25a N013 ( 3, 4) [000122] -------N--- | \--* ADD byref $153 N011 ( 1, 1) [000120] ----------- | +--* LCL_VAR byref V10 tmp7 u:1 (last use) $152 N012 ( 1, 2) [000121] ----------- | \--* CNS_INT long 4 $105 N015 ( 3, 2) [000124] ----------- \--* LCL_VAR int V09 tmp6 u:1 (last use) --------- ***** BB04, STMT00010(before) N002 ( 2, 3) [000053] ----------- * RETURN int N001 ( 1, 2) [000127] ----------- \--* CNS_INT int 1 N001 [000127] CNS_INT 1 => $44 {IntCns 1} N002 [000053] RETURN => $VN.Void ***** BB04, STMT00010(after) N002 ( 2, 3) [000053] ----------- * RETURN int $VN.Void N001 ( 1, 2) [000127] ----------- \--* CNS_INT int 1 $44 finish(BB04). The SSA definition for ByrefExposed (#2) at start of BB06 is $381 {PhiMemoryDef($301, $380)} The SSA definition for GcHeap (#2) at start of BB06 is $381 {PhiMemoryDef($301, $380)} ***** BB06, STMT00011(before) N012 ( 13, 11) [000061] -A-XG---R-- * ASG int N011 ( 4, 3) [000060] D--XG--N--- +--* IND int N010 ( 3, 4) [000133] -------N--- | \--* ADD byref N008 ( 1, 1) [000054] ----------- | +--* LCL_VAR byref V00 this u:1 N009 ( 1, 2) [000132] ----------- | \--* CNS_INT long 12 N007 ( 8, 7) [000059] ---XG------ \--* ADD int N005 ( 6, 4) [000057] ---XG------ +--* IND int N004 ( 5, 5) [000135] ---XG--N--- | \--* ADD byref N002 ( 3, 2) [000056] ---XG------ | +--* IND ref N001 ( 1, 1) [000055] ----------- | | \--* LCL_VAR byref V00 this u:1 N003 ( 1, 2) [000134] ----------- | \--* CNS_INT long 56 Fseq[_count] N006 ( 1, 2) [000058] ----------- \--* CNS_INT int 1 N001 [000055] LCL_VAR V00 this u:1 => $80 {InitVal($40)} N002 [000056] IND => N003 [000134] CNS_INT 56 Fseq[_count] => $103 {LngCns: 56} N004 [000135] ADD => VNForHandle(_count) is $302, fieldType is int, size = 4 VNForMapSelect($381, $302):mem returns $342 {$381[$302]} VNForMapSelect($342, $2c1):int returns $28d {$342[$2c1]} N005 [000057] IND => N006 [000058] CNS_INT 1 => $44 {IntCns 1} N007 [000059] ADD => N008 [000054] LCL_VAR V00 this u:1 => $80 {InitVal($40)} N009 [000132] CNS_INT 12 => $102 {LngCns: 12} N010 [000133] ADD => $145 {ADD($80, $102)} N011 [000060] IND => $25a {norm=$VN.Void, exc=$240 {NullPtrExc($80)}} fgCurMemoryVN[GcHeap] assigned for assign-of-IND at [000061] to VN: $c5. N012 [000061] ASG => ***** BB06, STMT00011(after) N012 ( 13, 11) [000061] -A-XG---R-- * ASG int N011 ( 4, 3) [000060] D--XG--N--- +--* IND int $25a N010 ( 3, 4) [000133] -------N--- | \--* ADD byref $145 N008 ( 1, 1) [000054] ----------- | +--* LCL_VAR byref V00 this u:1 $80 N009 ( 1, 2) [000132] ----------- | \--* CNS_INT long 12 $102 N007 ( 8, 7) [000059] ---XG------ \--* ADD int N005 ( 6, 4) [000057] ---XG------ +--* IND int N004 ( 5, 5) [000135] ---XG--N--- | \--* ADD byref N002 ( 3, 2) [000056] ---XG------ | +--* IND ref N001 ( 1, 1) [000055] ----------- | | \--* LCL_VAR byref V00 this u:1 $80 N003 ( 1, 2) [000134] ----------- | \--* CNS_INT long 56 Fseq[_count] $103 N006 ( 1, 2) [000058] ----------- \--* CNS_INT int 1 $44 --------- ***** BB06, STMT00012(before) N006 ( 11, 11) [000066] IA--G------ * ASG struct (init) N004 ( 9, 8) [000064] n---G--N--- +--* OBJ struct N003 ( 3, 4) [000137] ----------- | \--* ADD byref N001 ( 1, 1) [000062] ----------- | +--* LCL_VAR byref V00 this u:1 (last use) N002 ( 1, 2) [000136] ----------- | \--* CNS_INT long 20 N005 ( 1, 2) [000065] ----------- \--* CNS_INT int 0 N001 [000062] LCL_VAR V00 this u:1 (last use) => $80 {InitVal($40)} N002 [000136] CNS_INT 20 => $10b {LngCns: 20} N003 [000137] ADD => $152 {ADD($80, $10b)} N004 [000064] OBJ => $VN.Void N005 [000065] CNS_INT 0 => $40 {IntCns 0} fgCurMemoryVN[GcHeap] assigned for assign-of-IND at [000066] to VN: $c6. N006 [000066] ASG => $VN.Void ***** BB06, STMT00012(after) N006 ( 11, 11) [000066] IA--G------ * ASG struct (init) $VN.Void N004 ( 9, 8) [000064] n---G--N--- +--* OBJ struct $VN.Void N003 ( 3, 4) [000137] ----------- | \--* ADD byref $152 N001 ( 1, 1) [000062] ----------- | +--* LCL_VAR byref V00 this u:1 (last use) $80 N002 ( 1, 2) [000136] ----------- | \--* CNS_INT long 20 $10b N005 ( 1, 2) [000065] ----------- \--* CNS_INT int 0 $40 --------- ***** BB06, STMT00013(before) N002 ( 2, 3) [000068] ----------- * RETURN int N001 ( 1, 2) [000138] ----------- \--* CNS_INT int 0 N001 [000138] CNS_INT 0 => $40 {IntCns 0} N002 [000068] RETURN => $VN.Void ***** BB06, STMT00013(after) N002 ( 2, 3) [000068] ----------- * RETURN int $VN.Void N001 ( 1, 2) [000138] ----------- \--* CNS_INT int 0 $40 finish(BB06). *************** Finishing PHASE Do value numbering Trees after Do value numbering ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..013)-> BB05 ( cond ) i BB02 [0001] 1 BB01 0 [013..01A) (throw ) i rare hascall gcsafe BB03 [0002] 1 BB05 2 [01A..045)-> BB05 ( cond ) i Loop Loop0 idxlen bwd bwd-target BB04 [0003] 1 BB03 0.50 [045..05E) (return) i BB05 [0004] 2 BB01,BB03 8 [05E..071)-> BB03 ( cond ) i bwd bwd-src BB06 [0005] 1 BB05 0.50 [071..092) (return) i ----------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [000..013) -> BB05 (cond), preds={} succs={BB02,BB05} ***** BB01 STMT00000 ( 0x000[E-] ... 0x011 ) N011 ( 13, 10) [000006] ---XG------ * JTRUE void N010 ( 11, 8) [000005] J--XG--N--- \--* EQ int N004 ( 4, 3) [000001] ---XG------ +--* IND int N003 ( 3, 4) [000084] -------N--- | \--* ADD byref $140 N001 ( 1, 1) [000000] ----------- | +--* LCL_VAR byref V00 this u:1 $80 N002 ( 1, 2) [000083] ----------- | \--* CNS_INT long 8 $100 N009 ( 6, 4) [000004] ---XG------ \--* IND int N008 ( 5, 5) [000086] ---XG--N--- \--* ADD byref N006 ( 3, 2) [000003] ---XG------ +--* IND ref N005 ( 1, 1) [000002] ----------- | \--* LCL_VAR byref V00 this u:1 $80 N007 ( 1, 2) [000085] ----------- \--* CNS_INT long 68 Fseq[_version] $101 ------------ BB02 [013..01A) (throw), preds={BB01} succs={} ***** BB02 STMT00014 ( 0x013[E-] ... 0x018 ) N001 ( 14, 2) [000069] --CXG------ * CALL void System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion() $VN.Void ------------ BB03 [01A..045) -> BB05 (cond), preds={BB05} succs={BB04,BB05} ***** BB03 STMT00003 ( 0x01A[E-] ... 0x02C ) N007 ( 6, 4) [000023] -A-XG---R-- * ASG ref N006 ( 1, 1) [000022] D------N--- +--* LCL_VAR ref V04 tmp1 d:1 $VN.Void N005 ( 6, 4) [000016] ---XG------ \--* IND ref N004 ( 5, 5) [000088] ---XG--N--- \--* ADD byref N002 ( 3, 2) [000015] ---XG------ +--* IND ref N001 ( 1, 1) [000014] ----------- | \--* LCL_VAR byref V00 this u:1 $80 N003 ( 1, 2) [000087] ----------- \--* CNS_INT long 16 Fseq[_entries] $104 ***** BB03 STMT00002 ( 0x01A[E-] ... ??? ) N006 ( 4, 3) [000021] -A-XG---R-- * ASG int $25a N005 ( 1, 1) [000020] D------N--- +--* LCL_VAR int V02 loc1 d:1 $VN.Void N004 ( 4, 3) [000019] ---XG------ \--* IND int N003 ( 3, 4) [000090] -------N--- \--* ADD byref $145 N001 ( 1, 1) [000018] ----------- +--* LCL_VAR byref V00 this u:1 $80 N002 ( 1, 2) [000089] ----------- \--* CNS_INT long 12 $102 ***** BB03 STMT00004 ( ??? ... 0x030 ) N008 ( 8, 8) [000029] -A-XG---R-- * ASG int $25a N007 ( 4, 3) [000028] D--XG--N--- +--* IND int $25a N006 ( 3, 4) [000092] -------N--- | \--* ADD byref $145 N004 ( 1, 1) [000017] ----------- | +--* LCL_VAR byref V00 this u:1 $80 N005 ( 1, 2) [000091] ----------- | \--* CNS_INT long 12 $102 N003 ( 3, 4) [000027] ----------- \--* ADD int N001 ( 1, 1) [000025] ----------- +--* LCL_VAR int V02 loc1 u:1 N002 ( 1, 2) [000026] ----------- \--* CNS_INT int 1 $44 ***** BB03 STMT00005 ( ??? ... 0x03B ) N016 ( 15, 21) [000033] -A-XGO--R-- * ASG byref N015 ( 1, 1) [000032] D------N--- +--* LCL_VAR byref V01 loc0 d:1 $VN.Void N014 ( 15, 21) [000104] ---X-O----- \--* COMMA byref N004 ( 8, 11) [000096] ---X-O----- +--* BOUNDS_CHECK_Rng void N001 ( 1, 1) [000030] ----------- | +--* LCL_VAR int V02 loc1 u:1 N003 ( 3, 3) [000095] ---X------- | \--* ARR_LENGTH int N002 ( 1, 1) [000024] ----------- | \--* LCL_VAR ref V04 tmp1 u:1 N013 ( 7, 10) [000103] -----O----- \--* ARR_ADDR byref System.Collections.Generic.Dictionary`2+Entry[] $400 N012 ( 7, 10) [000102] -------N--- \--* ADD byref N005 ( 1, 1) [000093] ----------- +--* LCL_VAR ref V04 tmp1 u:1 (last use) N011 ( 6, 9) [000101] ----------- \--* ADD long N009 ( 4, 6) [000099] ----------- +--* LSH long N007 ( 2, 3) [000097] ---------U- | +--* CAST long <- uint N006 ( 1, 1) [000094] ----------- | | \--* LCL_VAR int V02 loc1 u:1 (last use) N008 ( 1, 2) [000098] -------N--- | \--* CNS_INT long 4 $105 N010 ( 1, 2) [000100] ----------- \--* CNS_INT long 16 $104 ***** BB03 STMT00006 ( 0x03C[E-] ... 0x043 ) N007 ( 8, 8) [000038] ---XG------ * JTRUE void $268 N006 ( 6, 6) [000037] J--XG--N--- \--* LT int N004 ( 4, 3) [000035] ---XG------ +--* IND int N003 ( 3, 4) [000106] -------N--- | \--* ADD byref $401 N001 ( 1, 1) [000034] ----------- | +--* LCL_VAR byref V01 loc0 u:1 $400 N002 ( 1, 2) [000105] ----------- | \--* CNS_INT long 4 $105 N005 ( 1, 2) [000036] ----------- \--* CNS_INT int -1 $41 ------------ BB04 [045..05E) (return), preds={BB03} succs={} ***** BB04 STMT00017 ( ??? ... ??? ) N006 ( 8, 6) [000079] -A-XG---R-- * ASG int $26a N005 ( 3, 2) [000078] D------N--- +--* LCL_VAR int V06 tmp3 d:1 $VN.Void N004 ( 4, 3) [000041] ---XG------ \--* IND int N003 ( 3, 4) [000108] -------N--- \--* ADD byref $402 N001 ( 1, 1) [000040] ----------- +--* LCL_VAR byref V01 loc0 u:1 $400 N002 ( 1, 2) [000107] ----------- \--* CNS_INT long 8 $100 ***** BB04 STMT00018 ( ??? ... ??? ) N006 ( 8, 6) [000081] -A-XG---R-- * ASG int $26c N005 ( 3, 2) [000080] D------N--- +--* LCL_VAR int V07 tmp4 d:1 $VN.Void N004 ( 4, 3) [000043] ---XG------ \--* IND int N003 ( 3, 4) [000110] -------N--- \--* ADD byref $403 N001 ( 1, 1) [000042] ----------- +--* LCL_VAR byref V01 loc0 u:1 (last use) $400 N002 ( 1, 2) [000109] ----------- \--* CNS_INT long 12 $102 ***** BB04 STMT00015 ( INL01 @ 0x000[E-] ... ??? ) <- INLRT @ ??? N003 ( 7, 5) [000073] -A------R-- * ASG int $VN.Void N002 ( 3, 2) [000072] D------N--- +--* LCL_VAR int V08 tmp5 d:1 $VN.Void N001 ( 3, 2) [000071] ----------- \--* LCL_VAR int V06 tmp3 u:1 (last use) ***** BB04 STMT00016 ( INL01 @ 0x007[E-] ... ??? ) <- INLRT @ ??? N003 ( 7, 5) [000077] -A------R-- * ASG int $VN.Void N002 ( 3, 2) [000076] D------N--- +--* LCL_VAR int V09 tmp6 d:1 $VN.Void N001 ( 3, 2) [000075] ----------- \--* LCL_VAR int V07 tmp4 u:1 (last use) ***** BB04 STMT00009 ( 0x057[--] ... ??? ) N017 ( 18, 15) [000126] -A-X------- * COMMA void $25a N010 ( 10, 9) [000119] -A-X------- +--* COMMA void $25a N005 ( 3, 4) [000114] -A------R-- | +--* ASG byref $VN.Void N004 ( 1, 1) [000113] D------N--- | | +--* LCL_VAR byref V10 tmp7 d:1 $VN.Void N003 ( 3, 4) [000112] ----------- | | \--* ADD byref $152 N001 ( 1, 1) [000039] ----------- | | +--* LCL_VAR byref V00 this u:1 (last use) $80 N002 ( 1, 2) [000111] ----------- | | \--* CNS_INT long 20 $10b N009 ( 7, 5) [000118] -A-X------- | \--* ASG int $25a N007 ( 3, 2) [000116] D--X---N--- | +--* IND int $25a N006 ( 1, 1) [000115] ----------- | | \--* LCL_VAR byref V10 tmp7 u:1 $152 N008 ( 3, 2) [000117] ----------- | \--* LCL_VAR int V08 tmp5 u:1 (last use) N016 ( 8, 6) [000125] -A-X------- \--* ASG int $25a N014 ( 4, 3) [000123] D--X---N--- +--* IND int $25a N013 ( 3, 4) [000122] -------N--- | \--* ADD byref $153 N011 ( 1, 1) [000120] ----------- | +--* LCL_VAR byref V10 tmp7 u:1 (last use) $152 N012 ( 1, 2) [000121] ----------- | \--* CNS_INT long 4 $105 N015 ( 3, 2) [000124] ----------- \--* LCL_VAR int V09 tmp6 u:1 (last use) ***** BB04 STMT00010 ( 0x05C[E-] ... 0x05D ) N002 ( 2, 3) [000053] ----------- * RETURN int $VN.Void N001 ( 1, 2) [000127] ----------- \--* CNS_INT int 1 $44 ------------ BB05 [05E..071) -> BB03 (cond), preds={BB01,BB03} succs={BB06,BB03} ***** BB05 STMT00001 ( 0x05E[E-] ... 0x06F ) N011 ( 13, 10) [000013] ---XG------ * JTRUE void N010 ( 11, 8) [000012] N--XG--N-U- \--* LT int N004 ( 4, 3) [000008] ---XG------ +--* IND int N003 ( 3, 4) [000129] -------N--- | \--* ADD byref $145 N001 ( 1, 1) [000007] ----------- | +--* LCL_VAR byref V00 this u:1 $80 N002 ( 1, 2) [000128] ----------- | \--* CNS_INT long 12 $102 N009 ( 6, 4) [000011] ---XG------ \--* IND int N008 ( 5, 5) [000131] ---XG--N--- \--* ADD byref N006 ( 3, 2) [000010] ---XG------ +--* IND ref N005 ( 1, 1) [000009] ----------- | \--* LCL_VAR byref V00 this u:1 $80 N007 ( 1, 2) [000130] ----------- \--* CNS_INT long 56 Fseq[_count] $103 ------------ BB06 [071..092) (return), preds={BB05} succs={} ***** BB06 STMT00011 ( 0x071[E-] ... 0x07F ) N012 ( 13, 11) [000061] -A-XG---R-- * ASG int N011 ( 4, 3) [000060] D--XG--N--- +--* IND int $25a N010 ( 3, 4) [000133] -------N--- | \--* ADD byref $145 N008 ( 1, 1) [000054] ----------- | +--* LCL_VAR byref V00 this u:1 $80 N009 ( 1, 2) [000132] ----------- | \--* CNS_INT long 12 $102 N007 ( 8, 7) [000059] ---XG------ \--* ADD int N005 ( 6, 4) [000057] ---XG------ +--* IND int N004 ( 5, 5) [000135] ---XG--N--- | \--* ADD byref N002 ( 3, 2) [000056] ---XG------ | +--* IND ref N001 ( 1, 1) [000055] ----------- | | \--* LCL_VAR byref V00 this u:1 $80 N003 ( 1, 2) [000134] ----------- | \--* CNS_INT long 56 Fseq[_count] $103 N006 ( 1, 2) [000058] ----------- \--* CNS_INT int 1 $44 ***** BB06 STMT00012 ( 0x084[E-] ... 0x08B ) N006 ( 11, 11) [000066] IA--G------ * ASG struct (init) $VN.Void N004 ( 9, 8) [000064] n---G--N--- +--* OBJ struct $VN.Void N003 ( 3, 4) [000137] ----------- | \--* ADD byref $152 N001 ( 1, 1) [000062] ----------- | +--* LCL_VAR byref V00 this u:1 (last use) $80 N002 ( 1, 2) [000136] ----------- | \--* CNS_INT long 20 $10b N005 ( 1, 2) [000065] ----------- \--* CNS_INT int 0 $40 ***** BB06 STMT00013 ( 0x090[E-] ... 0x091 ) N002 ( 2, 3) [000068] ----------- * RETURN int $VN.Void N001 ( 1, 2) [000138] ----------- \--* CNS_INT int 0 $40 ------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist SSA checks completed successfully *************** In fgDebugCheckLoopTable *************** Starting PHASE Hoist loop code No loops; no hoisting *************** Finishing PHASE Hoist loop code [no changes] *************** Starting PHASE VN based copy prop Copy Assertion for BB01 curSsaName stack: { } Copy Assertion for BB05 curSsaName stack: { [000000]:V00/1 } Copy Assertion for BB06 curSsaName stack: { [000000]:V00/1 } Live vars after [000062]: {V00} => {} Copy Assertion for BB03 curSsaName stack: { [000000]:V00/1 } Live vars after [000022]: {V00} => {V00 V04} Live vars after [000020]: {V00 V04} => {V00 V02 V04} Live vars after [000093]: {V00 V02 V04} => {V00 V02} Live vars after [000094]: {V00 V02} => {V00} Live vars after [000032]: {V00} => {V00 V01} Copy Assertion for BB04 curSsaName stack: { [000000]:V00/1 [000032]:V01/1 [000020]:V02/1 [000022]:V04/1 } Live vars after [000078]: {V00 V01} => {V00 V01 V06} Live vars after [000042]: {V00 V01 V06} => {V00 V06} Live vars after [000080]: {V00 V06} => {V00 V06 V07} Live vars after [000071]: {V00 V06 V07} => {V00 V07} Live vars after [000072]: {V00 V07} => {V00 V07 V08} Live vars after [000075]: {V00 V07 V08} => {V00 V08} Live vars after [000076]: {V00 V08} => {V00 V08 V09} Live vars after [000039]: {V00 V08 V09} => {V08 V09} Live vars after [000113]: {V08 V09} => {V08 V09 V10} Live vars after [000117]: {V08 V09 V10} => {V09 V10} Live vars after [000120]: {V09 V10} => {V09} Live vars after [000124]: {V09} => {} Copy Assertion for BB02 curSsaName stack: { [000000]:V00/1 } *************** Finishing PHASE VN based copy prop [no changes] *************** Starting PHASE Redundant branch opts ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..013)-> BB05 ( cond ) i BB02 [0001] 1 BB01 0 [013..01A) (throw ) i rare hascall gcsafe BB03 [0002] 1 BB05 2 [01A..045)-> BB05 ( cond ) i Loop Loop0 idxlen bwd bwd-target BB04 [0003] 1 BB03 0.50 [045..05E) (return) i BB05 [0004] 2 BB01,BB03 8 [05E..071)-> BB03 ( cond ) i bwd bwd-src BB06 [0005] 1 BB05 0.50 [071..092) (return) i ----------------------------------------------------------------------------------------------------------------------------------------- optRedundantRelop in BB03; jump tree is N007 ( 8, 8) [000038] ---XG------ * JTRUE void $268 N006 ( 6, 6) [000037] J--XG--N--- \--* LT int N004 ( 4, 3) [000035] ---XG------ +--* IND int N003 ( 3, 4) [000106] -------N--- | \--* ADD byref $401 N001 ( 1, 1) [000034] ----------- | +--* LCL_VAR byref V01 loc0 u:1 $400 N002 ( 1, 2) [000105] ----------- | \--* CNS_INT long 4 $105 N005 ( 1, 2) [000036] ----------- \--* CNS_INT int -1 $41 ... checking previous tree N016 ( 15, 21) [000033] -A-XGO--R-- * ASG byref N015 ( 1, 1) [000032] D------N--- +--* LCL_VAR byref V01 loc0 d:1 $VN.Void N014 ( 15, 21) [000104] ---X-O----- \--* COMMA byref N004 ( 8, 11) [000096] ---X-O----- +--* BOUNDS_CHECK_Rng void N001 ( 1, 1) [000030] ----------- | +--* LCL_VAR int V02 loc1 u:1 N003 ( 3, 3) [000095] ---X------- | \--* ARR_LENGTH int N002 ( 1, 1) [000024] ----------- | \--* LCL_VAR ref V04 tmp1 u:1 N013 ( 7, 10) [000103] -----O----- \--* ARR_ADDR byref System.Collections.Generic.Dictionary`2+Entry[] $400 N012 ( 7, 10) [000102] -------N--- \--* ADD byref N005 ( 1, 1) [000093] ----------- +--* LCL_VAR ref V04 tmp1 u:1 (last use) N011 ( 6, 9) [000101] ----------- \--* ADD long N009 ( 4, 6) [000099] ----------- +--* LSH long N007 ( 2, 3) [000097] ---------U- | +--* CAST long <- uint N006 ( 1, 1) [000094] ----------- | | \--* LCL_VAR int V02 loc1 u:1 (last use) N008 ( 1, 2) [000098] -------N--- | \--* CNS_INT long 4 $105 N010 ( 1, 2) [000100] ----------- \--* CNS_INT long 16 $104 -- prev tree has side effects, allowing as prev tree is immediately before jumpTree -- prev tree VN is not related --- Trying RBO in BB03 --- Relop [000037] BB03 value unknown, trying inference BB03 has side effects; no threading --- Trying RBO in BB05 --- Relop [000012] BB05 value unknown, trying inference BB05 has side effects; no threading --- Trying RBO in BB01 --- *************** Finishing PHASE Redundant branch opts [no changes] *************** Starting PHASE Optimize Valnum CSEs Candidate CSE #01, key=$181 in BB05, [cost= 4, size= 3]: N004 ( 4, 3) CSE #01 (use)[000008] ---XG------ * IND int N003 ( 3, 4) [000129] -------N--- \--* ADD byref $145 N001 ( 1, 1) [000007] ----------- +--* LCL_VAR byref V00 this u:1 $80 N002 ( 1, 2) [000128] ----------- \--* CNS_INT long 12 $102 Candidate CSE #02, key=$2c1 in BB05, [cost= 3, size= 2]: N006 ( 3, 2) CSE #02 (use)[000010] ---XG------ * IND ref N005 ( 1, 1) [000009] ----------- \--* LCL_VAR byref V00 this u:1 $80 Candidate CSE #03, key=$28d in BB06, [cost= 6, size= 4]: N005 ( 6, 4) CSE #03 (use)[000057] ---XG------ * IND int N004 ( 5, 5) [000135] ---XG--N--- \--* ADD byref N002 ( 3, 2) CSE #02 (use)[000056] ---XG------ +--* IND ref N001 ( 1, 1) [000055] ----------- | \--* LCL_VAR byref V00 this u:1 $80 N003 ( 1, 2) [000134] ----------- \--* CNS_INT long 56 Fseq[_count] $103 Candidate CSE #04, key=$152 in BB06, [cost= 3, size= 4]: N003 ( 3, 4) CSE #04 (use)[000137] ----------- * ADD byref $152 N001 ( 1, 1) [000062] ----------- +--* LCL_VAR byref V00 this u:1 (last use) $80 N002 ( 1, 2) [000136] ----------- \--* CNS_INT long 20 $10b Blocks that generate CSE def/uses BB03 cseGen = 000000000000000F CSE #01.c, CSE #02.c BB04 cseGen = 00000000000000C0 CSE #04.c BB05 cseGen = 000000000000003F CSE #01.c, CSE #02.c, CSE #03.c BB06 cseGen = 00000000000000FC CSE #02.c, CSE #03.c, CSE #04.c SSA checks completed successfully Performing DataFlow for ValnumCSE's After performing DataFlow for ValnumCSE's BB01 in: 0000000000000000 gen: 0000000000000000 out: 0000000000000000 BB02 in: 0000000000000000 gen: 0000000000000000 out: 0000000000000000 BB03 in: 000000000000003F CSE #01.c, CSE #02.c, CSE #03.c gen: 000000000000000F CSE #01.c, CSE #02.c out: 000000000000003F CSE #01.c, CSE #02.c, CSE #03.c BB04 in: 000000000000003F CSE #01.c, CSE #02.c, CSE #03.c gen: 00000000000000C0 CSE #04.c out: 00000000000000FF CSE #01.c, CSE #02.c, CSE #03.c, CSE #04.c BB05 in: 0000000000000000 gen: 000000000000003F CSE #01.c, CSE #02.c, CSE #03.c out: 000000000000003F CSE #01.c, CSE #02.c, CSE #03.c BB06 in: 000000000000003F CSE #01.c, CSE #02.c, CSE #03.c gen: 00000000000000FC CSE #02.c, CSE #03.c, CSE #04.c out: 00000000000000FF CSE #01.c, CSE #02.c, CSE #03.c, CSE #04.c Labeling the CSEs with Use/Def information BB03 [000015] Use of CSE #02 [weight=2] BB03 [000019] Use of CSE #01 [weight=2] BB04 [000112] Def of CSE #04 [weight=0.50] BB05 [000008] Def of CSE #01 [weight=8] BB05 [000010] Def of CSE #02 [weight=8] BB05 [000011] Def of CSE #03 [weight=8] BB06 [000056] Use of CSE #02 [weight=0.50] BB06 [000057] Use of CSE #03 [weight=0.50] BB06 [000137] Def of CSE #04 [weight=0.50] ************ Trees at start of optValnumCSE_Heuristic() ------------ BB01 [000..013) -> BB05 (cond), preds={} succs={BB02,BB05} ***** BB01 STMT00000 ( 0x000[E-] ... 0x011 ) N011 ( 13, 10) [000006] ---XG------ * JTRUE void N010 ( 11, 8) [000005] J--XG--N--- \--* EQ int N004 ( 4, 3) [000001] ---XG------ +--* IND int N003 ( 3, 4) [000084] -------N--- | \--* ADD byref $140 N001 ( 1, 1) [000000] ----------- | +--* LCL_VAR byref V00 this u:1 $80 N002 ( 1, 2) [000083] ----------- | \--* CNS_INT long 8 $100 N009 ( 6, 4) [000004] ---XG------ \--* IND int N008 ( 5, 5) [000086] ---XG--N--- \--* ADD byref N006 ( 3, 2) [000003] ---XG------ +--* IND ref N005 ( 1, 1) [000002] ----------- | \--* LCL_VAR byref V00 this u:1 $80 N007 ( 1, 2) [000085] ----------- \--* CNS_INT long 68 Fseq[_version] $101 ------------ BB02 [013..01A) (throw), preds={BB01} succs={} ***** BB02 STMT00014 ( 0x013[E-] ... 0x018 ) N001 ( 14, 2) [000069] --CXG------ * CALL void System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion() $VN.Void ------------ BB03 [01A..045) -> BB05 (cond), preds={BB05} succs={BB04,BB05} ***** BB03 STMT00003 ( 0x01A[E-] ... 0x02C ) N007 ( 6, 4) [000023] -A-XG---R-- * ASG ref N006 ( 1, 1) [000022] D------N--- +--* LCL_VAR ref V04 tmp1 d:1 $VN.Void N005 ( 6, 4) [000016] ---XG------ \--* IND ref N004 ( 5, 5) [000088] ---XG--N--- \--* ADD byref N002 ( 3, 2) CSE #02 (use)[000015] ---XG------ +--* IND ref N001 ( 1, 1) [000014] ----------- | \--* LCL_VAR byref V00 this u:1 $80 N003 ( 1, 2) [000087] ----------- \--* CNS_INT long 16 Fseq[_entries] $104 ***** BB03 STMT00002 ( 0x01A[E-] ... ??? ) N006 ( 4, 3) [000021] -A-XG---R-- * ASG int $25a N005 ( 1, 1) [000020] D------N--- +--* LCL_VAR int V02 loc1 d:1 $VN.Void N004 ( 4, 3) CSE #01 (use)[000019] ---XG------ \--* IND int N003 ( 3, 4) [000090] -------N--- \--* ADD byref $145 N001 ( 1, 1) [000018] ----------- +--* LCL_VAR byref V00 this u:1 $80 N002 ( 1, 2) [000089] ----------- \--* CNS_INT long 12 $102 ***** BB03 STMT00004 ( ??? ... 0x030 ) N008 ( 8, 8) [000029] -A-XG---R-- * ASG int $25a N007 ( 4, 3) [000028] D--XG--N--- +--* IND int $25a N006 ( 3, 4) [000092] -------N--- | \--* ADD byref $145 N004 ( 1, 1) [000017] ----------- | +--* LCL_VAR byref V00 this u:1 $80 N005 ( 1, 2) [000091] ----------- | \--* CNS_INT long 12 $102 N003 ( 3, 4) [000027] ----------- \--* ADD int N001 ( 1, 1) [000025] ----------- +--* LCL_VAR int V02 loc1 u:1 N002 ( 1, 2) [000026] ----------- \--* CNS_INT int 1 $44 ***** BB03 STMT00005 ( ??? ... 0x03B ) N016 ( 15, 21) [000033] -A-XGO--R-- * ASG byref N015 ( 1, 1) [000032] D------N--- +--* LCL_VAR byref V01 loc0 d:1 $VN.Void N014 ( 15, 21) [000104] ---X-O----- \--* COMMA byref N004 ( 8, 11) [000096] ---X-O----- +--* BOUNDS_CHECK_Rng void N001 ( 1, 1) [000030] ----------- | +--* LCL_VAR int V02 loc1 u:1 N003 ( 3, 3) [000095] ---X------- | \--* ARR_LENGTH int N002 ( 1, 1) [000024] ----------- | \--* LCL_VAR ref V04 tmp1 u:1 N013 ( 7, 10) [000103] -----O----- \--* ARR_ADDR byref System.Collections.Generic.Dictionary`2+Entry[] $400 N012 ( 7, 10) [000102] -------N--- \--* ADD byref N005 ( 1, 1) [000093] ----------- +--* LCL_VAR ref V04 tmp1 u:1 (last use) N011 ( 6, 9) [000101] ----------- \--* ADD long N009 ( 4, 6) [000099] ----------- +--* LSH long N007 ( 2, 3) [000097] ---------U- | +--* CAST long <- uint N006 ( 1, 1) [000094] ----------- | | \--* LCL_VAR int V02 loc1 u:1 (last use) N008 ( 1, 2) [000098] -------N--- | \--* CNS_INT long 4 $105 N010 ( 1, 2) [000100] ----------- \--* CNS_INT long 16 $104 ***** BB03 STMT00006 ( 0x03C[E-] ... 0x043 ) N007 ( 8, 8) [000038] ---XG------ * JTRUE void $268 N006 ( 6, 6) [000037] J--XG--N--- \--* LT int N004 ( 4, 3) [000035] ---XG------ +--* IND int N003 ( 3, 4) [000106] -------N--- | \--* ADD byref $401 N001 ( 1, 1) [000034] ----------- | +--* LCL_VAR byref V01 loc0 u:1 $400 N002 ( 1, 2) [000105] ----------- | \--* CNS_INT long 4 $105 N005 ( 1, 2) [000036] ----------- \--* CNS_INT int -1 $41 ------------ BB04 [045..05E) (return), preds={BB03} succs={} ***** BB04 STMT00017 ( ??? ... ??? ) N006 ( 8, 6) [000079] -A-XG---R-- * ASG int $26a N005 ( 3, 2) [000078] D------N--- +--* LCL_VAR int V06 tmp3 d:1 $VN.Void N004 ( 4, 3) [000041] ---XG------ \--* IND int N003 ( 3, 4) [000108] -------N--- \--* ADD byref $402 N001 ( 1, 1) [000040] ----------- +--* LCL_VAR byref V01 loc0 u:1 $400 N002 ( 1, 2) [000107] ----------- \--* CNS_INT long 8 $100 ***** BB04 STMT00018 ( ??? ... ??? ) N006 ( 8, 6) [000081] -A-XG---R-- * ASG int $26c N005 ( 3, 2) [000080] D------N--- +--* LCL_VAR int V07 tmp4 d:1 $VN.Void N004 ( 4, 3) [000043] ---XG------ \--* IND int N003 ( 3, 4) [000110] -------N--- \--* ADD byref $403 N001 ( 1, 1) [000042] ----------- +--* LCL_VAR byref V01 loc0 u:1 (last use) $400 N002 ( 1, 2) [000109] ----------- \--* CNS_INT long 12 $102 ***** BB04 STMT00015 ( INL01 @ 0x000[E-] ... ??? ) <- INLRT @ ??? N003 ( 7, 5) [000073] -A------R-- * ASG int $VN.Void N002 ( 3, 2) [000072] D------N--- +--* LCL_VAR int V08 tmp5 d:1 $VN.Void N001 ( 3, 2) [000071] ----------- \--* LCL_VAR int V06 tmp3 u:1 (last use) ***** BB04 STMT00016 ( INL01 @ 0x007[E-] ... ??? ) <- INLRT @ ??? N003 ( 7, 5) [000077] -A------R-- * ASG int $VN.Void N002 ( 3, 2) [000076] D------N--- +--* LCL_VAR int V09 tmp6 d:1 $VN.Void N001 ( 3, 2) [000075] ----------- \--* LCL_VAR int V07 tmp4 u:1 (last use) ***** BB04 STMT00009 ( 0x057[--] ... ??? ) N017 ( 18, 15) [000126] -A-X------- * COMMA void $25a N010 ( 10, 9) [000119] -A-X------- +--* COMMA void $25a N005 ( 3, 4) [000114] -A------R-- | +--* ASG byref $VN.Void N004 ( 1, 1) [000113] D------N--- | | +--* LCL_VAR byref V10 tmp7 d:1 $VN.Void N003 ( 3, 4) CSE #04 (def)[000112] ----------- | | \--* ADD byref $152 N001 ( 1, 1) [000039] ----------- | | +--* LCL_VAR byref V00 this u:1 (last use) $80 N002 ( 1, 2) [000111] ----------- | | \--* CNS_INT long 20 $10b N009 ( 7, 5) [000118] -A-X------- | \--* ASG int $25a N007 ( 3, 2) [000116] D--X---N--- | +--* IND int $25a N006 ( 1, 1) [000115] ----------- | | \--* LCL_VAR byref V10 tmp7 u:1 $152 N008 ( 3, 2) [000117] ----------- | \--* LCL_VAR int V08 tmp5 u:1 (last use) N016 ( 8, 6) [000125] -A-X------- \--* ASG int $25a N014 ( 4, 3) [000123] D--X---N--- +--* IND int $25a N013 ( 3, 4) [000122] -------N--- | \--* ADD byref $153 N011 ( 1, 1) [000120] ----------- | +--* LCL_VAR byref V10 tmp7 u:1 (last use) $152 N012 ( 1, 2) [000121] ----------- | \--* CNS_INT long 4 $105 N015 ( 3, 2) [000124] ----------- \--* LCL_VAR int V09 tmp6 u:1 (last use) ***** BB04 STMT00010 ( 0x05C[E-] ... 0x05D ) N002 ( 2, 3) [000053] ----------- * RETURN int $VN.Void N001 ( 1, 2) [000127] ----------- \--* CNS_INT int 1 $44 ------------ BB05 [05E..071) -> BB03 (cond), preds={BB01,BB03} succs={BB06,BB03} ***** BB05 STMT00001 ( 0x05E[E-] ... 0x06F ) N011 ( 13, 10) [000013] ---XG------ * JTRUE void N010 ( 11, 8) [000012] N--XG--N-U- \--* LT int N004 ( 4, 3) CSE #01 (def)[000008] ---XG------ +--* IND int N003 ( 3, 4) [000129] -------N--- | \--* ADD byref $145 N001 ( 1, 1) [000007] ----------- | +--* LCL_VAR byref V00 this u:1 $80 N002 ( 1, 2) [000128] ----------- | \--* CNS_INT long 12 $102 N009 ( 6, 4) CSE #03 (def)[000011] ---XG------ \--* IND int N008 ( 5, 5) [000131] ---XG--N--- \--* ADD byref N006 ( 3, 2) CSE #02 (def)[000010] ---XG------ +--* IND ref N005 ( 1, 1) [000009] ----------- | \--* LCL_VAR byref V00 this u:1 $80 N007 ( 1, 2) [000130] ----------- \--* CNS_INT long 56 Fseq[_count] $103 ------------ BB06 [071..092) (return), preds={BB05} succs={} ***** BB06 STMT00011 ( 0x071[E-] ... 0x07F ) N012 ( 13, 11) [000061] -A-XG---R-- * ASG int N011 ( 4, 3) [000060] D--XG--N--- +--* IND int $25a N010 ( 3, 4) [000133] -------N--- | \--* ADD byref $145 N008 ( 1, 1) [000054] ----------- | +--* LCL_VAR byref V00 this u:1 $80 N009 ( 1, 2) [000132] ----------- | \--* CNS_INT long 12 $102 N007 ( 8, 7) [000059] ---XG------ \--* ADD int N005 ( 6, 4) CSE #03 (use)[000057] ---XG------ +--* IND int N004 ( 5, 5) [000135] ---XG--N--- | \--* ADD byref N002 ( 3, 2) CSE #02 (use)[000056] ---XG------ | +--* IND ref N001 ( 1, 1) [000055] ----------- | | \--* LCL_VAR byref V00 this u:1 $80 N003 ( 1, 2) [000134] ----------- | \--* CNS_INT long 56 Fseq[_count] $103 N006 ( 1, 2) [000058] ----------- \--* CNS_INT int 1 $44 ***** BB06 STMT00012 ( 0x084[E-] ... 0x08B ) N006 ( 11, 11) [000066] IA--G------ * ASG struct (init) $VN.Void N004 ( 9, 8) [000064] n---G--N--- +--* OBJ struct $VN.Void N003 ( 3, 4) CSE #04 (def)[000137] ----------- | \--* ADD byref $152 N001 ( 1, 1) [000062] ----------- | +--* LCL_VAR byref V00 this u:1 (last use) $80 N002 ( 1, 2) [000136] ----------- | \--* CNS_INT long 20 $10b N005 ( 1, 2) [000065] ----------- \--* CNS_INT int 0 $40 ***** BB06 STMT00013 ( 0x090[E-] ... 0x091 ) N002 ( 2, 3) [000068] ----------- * RETURN int $VN.Void N001 ( 1, 2) [000138] ----------- \--* CNS_INT int 0 $40 ------------------------------------------------------------------------------------------------------------------- Aggressive CSE Promotion cutoff is 200.000000 Moderate CSE Promotion cutoff is 100.000000 enregCount is 9 Framesize estimate is 0x0000 We have a small frame Sorted CSE candidates: CSE #03, {$28d, $24d} useCnt=1: [def=800.000000, use=50.000000, cost= 6 ] :: N009 ( 6, 4) CSE #03 (def)[000011] ---XG------ * IND int CSE #01, {$181, $240} useCnt=1: [def=800.000000, use=200.000000, cost= 4 ] :: N004 ( 4, 3) CSE #01 (use)[000019] ---XG------ * IND int CSE #02, {$2c1, $240} useCnt=2: [def=800.000000, use=250.000000, cost= 3 ] :: N002 ( 3, 2) CSE #02 (use)[000015] ---XG------ * IND ref CSE #04, {$152, $2 } useCnt=0: [def=100.000000, use=0.000000, cost= 3 ] :: N003 ( 3, 4) CSE #04 (def)[000112] ----------- * ADD byref $152 Considering CSE #03 {$28d, $24d} [def=800.000000, use=50.000000, cost= 6 ] CSE Expression : N009 ( 6, 4) CSE #03 (def)[000011] ---XG------ * IND int N008 ( 5, 5) [000131] ---XG--N--- \--* ADD byref N006 ( 3, 2) CSE #02 (def)[000010] ---XG------ +--* IND ref N005 ( 1, 1) [000009] ----------- | \--* LCL_VAR byref V00 this u:1 $80 N007 ( 1, 2) [000130] ----------- \--* CNS_INT long 56 Fseq[_count] $103 Aggressive CSE Promotion (1650.000000 >= 200.000000) cseRefCnt=1650.000000, aggressiveRefCnt=200.000000, moderateRefCnt=100.000000 defCnt=800.000000, useCnt=50.000000, cost=6, size=4 def_cost=1, use_cost=1, extra_no_cost=6, extra_yes_cost=0 CSE cost savings check (306.000000 >= 850.000000) fails Did Not promote this CSE Considering CSE #01 {$181, $240} [def=800.000000, use=200.000000, cost= 4 ] CSE Expression : N004 ( 4, 3) CSE #01 (use)[000019] ---XG------ * IND int N003 ( 3, 4) [000090] -------N--- \--* ADD byref $145 N001 ( 1, 1) [000018] ----------- +--* LCL_VAR byref V00 this u:1 $80 N002 ( 1, 2) [000089] ----------- \--* CNS_INT long 12 $102 Aggressive CSE Promotion (1800.000000 >= 200.000000) cseRefCnt=1800.000000, aggressiveRefCnt=200.000000, moderateRefCnt=100.000000 defCnt=800.000000, useCnt=200.000000, cost=4, size=3 def_cost=1, use_cost=1, extra_no_cost=4, extra_yes_cost=0 CSE cost savings check (804.000000 >= 1000.000000) fails Did Not promote this CSE Considering CSE #02 {$2c1, $240} [def=800.000000, use=250.000000, cost= 3 ] CSE Expression : N002 ( 3, 2) CSE #02 (use)[000015] ---XG------ * IND ref N001 ( 1, 1) [000014] ----------- \--* LCL_VAR byref V00 this u:1 $80 Aggressive CSE Promotion (1850.000000 >= 200.000000) cseRefCnt=1850.000000, aggressiveRefCnt=200.000000, moderateRefCnt=100.000000 defCnt=800.000000, useCnt=250.000000, cost=3, size=2 def_cost=1, use_cost=1, extra_no_cost=4, extra_yes_cost=0 CSE cost savings check (754.000000 >= 1050.000000) fails Did Not promote this CSE Skipped CSE #04 because use count is 0 *************** Finishing PHASE Optimize Valnum CSEs Trees after Optimize Valnum CSEs ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..013)-> BB05 ( cond ) i BB02 [0001] 1 BB01 0 [013..01A) (throw ) i rare hascall gcsafe BB03 [0002] 1 BB05 2 [01A..045)-> BB05 ( cond ) i Loop Loop0 idxlen bwd bwd-target BB04 [0003] 1 BB03 0.50 [045..05E) (return) i BB05 [0004] 2 BB01,BB03 8 [05E..071)-> BB03 ( cond ) i bwd bwd-src BB06 [0005] 1 BB05 0.50 [071..092) (return) i ----------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [000..013) -> BB05 (cond), preds={} succs={BB02,BB05} ***** BB01 STMT00000 ( 0x000[E-] ... 0x011 ) N011 ( 13, 10) [000006] ---XG------ * JTRUE void N010 ( 11, 8) [000005] J--XG--N--- \--* EQ int N004 ( 4, 3) [000001] ---XG------ +--* IND int N003 ( 3, 4) [000084] -------N--- | \--* ADD byref $140 N001 ( 1, 1) [000000] ----------- | +--* LCL_VAR byref V00 this u:1 $80 N002 ( 1, 2) [000083] ----------- | \--* CNS_INT long 8 $100 N009 ( 6, 4) [000004] ---XG------ \--* IND int N008 ( 5, 5) [000086] ---XG--N--- \--* ADD byref N006 ( 3, 2) [000003] ---XG------ +--* IND ref N005 ( 1, 1) [000002] ----------- | \--* LCL_VAR byref V00 this u:1 $80 N007 ( 1, 2) [000085] ----------- \--* CNS_INT long 68 Fseq[_version] $101 ------------ BB02 [013..01A) (throw), preds={BB01} succs={} ***** BB02 STMT00014 ( 0x013[E-] ... 0x018 ) N001 ( 14, 2) [000069] --CXG------ * CALL void System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion() $VN.Void ------------ BB03 [01A..045) -> BB05 (cond), preds={BB05} succs={BB04,BB05} ***** BB03 STMT00003 ( 0x01A[E-] ... 0x02C ) N007 ( 6, 4) [000023] -A-XG---R-- * ASG ref N006 ( 1, 1) [000022] D------N--- +--* LCL_VAR ref V04 tmp1 d:1 $VN.Void N005 ( 6, 4) [000016] ---XG------ \--* IND ref N004 ( 5, 5) [000088] ---XG--N--- \--* ADD byref N002 ( 3, 2) [000015] ---XG------ +--* IND ref N001 ( 1, 1) [000014] ----------- | \--* LCL_VAR byref V00 this u:1 $80 N003 ( 1, 2) [000087] ----------- \--* CNS_INT long 16 Fseq[_entries] $104 ***** BB03 STMT00002 ( 0x01A[E-] ... ??? ) N006 ( 4, 3) [000021] -A-XG---R-- * ASG int $25a N005 ( 1, 1) [000020] D------N--- +--* LCL_VAR int V02 loc1 d:1 $VN.Void N004 ( 4, 3) [000019] ---XG------ \--* IND int N003 ( 3, 4) [000090] -------N--- \--* ADD byref $145 N001 ( 1, 1) [000018] ----------- +--* LCL_VAR byref V00 this u:1 $80 N002 ( 1, 2) [000089] ----------- \--* CNS_INT long 12 $102 ***** BB03 STMT00004 ( ??? ... 0x030 ) N008 ( 8, 8) [000029] -A-XG---R-- * ASG int $25a N007 ( 4, 3) [000028] D--XG--N--- +--* IND int $25a N006 ( 3, 4) [000092] -------N--- | \--* ADD byref $145 N004 ( 1, 1) [000017] ----------- | +--* LCL_VAR byref V00 this u:1 $80 N005 ( 1, 2) [000091] ----------- | \--* CNS_INT long 12 $102 N003 ( 3, 4) [000027] ----------- \--* ADD int N001 ( 1, 1) [000025] ----------- +--* LCL_VAR int V02 loc1 u:1 N002 ( 1, 2) [000026] ----------- \--* CNS_INT int 1 $44 ***** BB03 STMT00005 ( ??? ... 0x03B ) N016 ( 15, 21) [000033] -A-XGO--R-- * ASG byref N015 ( 1, 1) [000032] D------N--- +--* LCL_VAR byref V01 loc0 d:1 $VN.Void N014 ( 15, 21) [000104] ---X-O----- \--* COMMA byref N004 ( 8, 11) [000096] ---X-O----- +--* BOUNDS_CHECK_Rng void N001 ( 1, 1) [000030] ----------- | +--* LCL_VAR int V02 loc1 u:1 N003 ( 3, 3) [000095] ---X------- | \--* ARR_LENGTH int N002 ( 1, 1) [000024] ----------- | \--* LCL_VAR ref V04 tmp1 u:1 N013 ( 7, 10) [000103] -----O----- \--* ARR_ADDR byref System.Collections.Generic.Dictionary`2+Entry[] $400 N012 ( 7, 10) [000102] -------N--- \--* ADD byref N005 ( 1, 1) [000093] ----------- +--* LCL_VAR ref V04 tmp1 u:1 (last use) N011 ( 6, 9) [000101] ----------- \--* ADD long N009 ( 4, 6) [000099] ----------- +--* LSH long N007 ( 2, 3) [000097] ---------U- | +--* CAST long <- uint N006 ( 1, 1) [000094] ----------- | | \--* LCL_VAR int V02 loc1 u:1 (last use) N008 ( 1, 2) [000098] -------N--- | \--* CNS_INT long 4 $105 N010 ( 1, 2) [000100] ----------- \--* CNS_INT long 16 $104 ***** BB03 STMT00006 ( 0x03C[E-] ... 0x043 ) N007 ( 8, 8) [000038] ---XG------ * JTRUE void $268 N006 ( 6, 6) [000037] J--XG--N--- \--* LT int N004 ( 4, 3) [000035] ---XG------ +--* IND int N003 ( 3, 4) [000106] -------N--- | \--* ADD byref $401 N001 ( 1, 1) [000034] ----------- | +--* LCL_VAR byref V01 loc0 u:1 $400 N002 ( 1, 2) [000105] ----------- | \--* CNS_INT long 4 $105 N005 ( 1, 2) [000036] ----------- \--* CNS_INT int -1 $41 ------------ BB04 [045..05E) (return), preds={BB03} succs={} ***** BB04 STMT00017 ( ??? ... ??? ) N006 ( 8, 6) [000079] -A-XG---R-- * ASG int $26a N005 ( 3, 2) [000078] D------N--- +--* LCL_VAR int V06 tmp3 d:1 $VN.Void N004 ( 4, 3) [000041] ---XG------ \--* IND int N003 ( 3, 4) [000108] -------N--- \--* ADD byref $402 N001 ( 1, 1) [000040] ----------- +--* LCL_VAR byref V01 loc0 u:1 $400 N002 ( 1, 2) [000107] ----------- \--* CNS_INT long 8 $100 ***** BB04 STMT00018 ( ??? ... ??? ) N006 ( 8, 6) [000081] -A-XG---R-- * ASG int $26c N005 ( 3, 2) [000080] D------N--- +--* LCL_VAR int V07 tmp4 d:1 $VN.Void N004 ( 4, 3) [000043] ---XG------ \--* IND int N003 ( 3, 4) [000110] -------N--- \--* ADD byref $403 N001 ( 1, 1) [000042] ----------- +--* LCL_VAR byref V01 loc0 u:1 (last use) $400 N002 ( 1, 2) [000109] ----------- \--* CNS_INT long 12 $102 ***** BB04 STMT00015 ( INL01 @ 0x000[E-] ... ??? ) <- INLRT @ ??? N003 ( 7, 5) [000073] -A------R-- * ASG int $VN.Void N002 ( 3, 2) [000072] D------N--- +--* LCL_VAR int V08 tmp5 d:1 $VN.Void N001 ( 3, 2) [000071] ----------- \--* LCL_VAR int V06 tmp3 u:1 (last use) ***** BB04 STMT00016 ( INL01 @ 0x007[E-] ... ??? ) <- INLRT @ ??? N003 ( 7, 5) [000077] -A------R-- * ASG int $VN.Void N002 ( 3, 2) [000076] D------N--- +--* LCL_VAR int V09 tmp6 d:1 $VN.Void N001 ( 3, 2) [000075] ----------- \--* LCL_VAR int V07 tmp4 u:1 (last use) ***** BB04 STMT00009 ( 0x057[--] ... ??? ) N017 ( 18, 15) [000126] -A-X------- * COMMA void $25a N010 ( 10, 9) [000119] -A-X------- +--* COMMA void $25a N005 ( 3, 4) [000114] -A------R-- | +--* ASG byref $VN.Void N004 ( 1, 1) [000113] D------N--- | | +--* LCL_VAR byref V10 tmp7 d:1 $VN.Void N003 ( 3, 4) [000112] ----------- | | \--* ADD byref $152 N001 ( 1, 1) [000039] ----------- | | +--* LCL_VAR byref V00 this u:1 (last use) $80 N002 ( 1, 2) [000111] ----------- | | \--* CNS_INT long 20 $10b N009 ( 7, 5) [000118] -A-X------- | \--* ASG int $25a N007 ( 3, 2) [000116] D--X---N--- | +--* IND int $25a N006 ( 1, 1) [000115] ----------- | | \--* LCL_VAR byref V10 tmp7 u:1 $152 N008 ( 3, 2) [000117] ----------- | \--* LCL_VAR int V08 tmp5 u:1 (last use) N016 ( 8, 6) [000125] -A-X------- \--* ASG int $25a N014 ( 4, 3) [000123] D--X---N--- +--* IND int $25a N013 ( 3, 4) [000122] -------N--- | \--* ADD byref $153 N011 ( 1, 1) [000120] ----------- | +--* LCL_VAR byref V10 tmp7 u:1 (last use) $152 N012 ( 1, 2) [000121] ----------- | \--* CNS_INT long 4 $105 N015 ( 3, 2) [000124] ----------- \--* LCL_VAR int V09 tmp6 u:1 (last use) ***** BB04 STMT00010 ( 0x05C[E-] ... 0x05D ) N002 ( 2, 3) [000053] ----------- * RETURN int $VN.Void N001 ( 1, 2) [000127] ----------- \--* CNS_INT int 1 $44 ------------ BB05 [05E..071) -> BB03 (cond), preds={BB01,BB03} succs={BB06,BB03} ***** BB05 STMT00001 ( 0x05E[E-] ... 0x06F ) N011 ( 13, 10) [000013] ---XG------ * JTRUE void N010 ( 11, 8) [000012] N--XG--N-U- \--* LT int N004 ( 4, 3) [000008] ---XG------ +--* IND int N003 ( 3, 4) [000129] -------N--- | \--* ADD byref $145 N001 ( 1, 1) [000007] ----------- | +--* LCL_VAR byref V00 this u:1 $80 N002 ( 1, 2) [000128] ----------- | \--* CNS_INT long 12 $102 N009 ( 6, 4) [000011] ---XG------ \--* IND int N008 ( 5, 5) [000131] ---XG--N--- \--* ADD byref N006 ( 3, 2) [000010] ---XG------ +--* IND ref N005 ( 1, 1) [000009] ----------- | \--* LCL_VAR byref V00 this u:1 $80 N007 ( 1, 2) [000130] ----------- \--* CNS_INT long 56 Fseq[_count] $103 ------------ BB06 [071..092) (return), preds={BB05} succs={} ***** BB06 STMT00011 ( 0x071[E-] ... 0x07F ) N012 ( 13, 11) [000061] -A-XG---R-- * ASG int N011 ( 4, 3) [000060] D--XG--N--- +--* IND int $25a N010 ( 3, 4) [000133] -------N--- | \--* ADD byref $145 N008 ( 1, 1) [000054] ----------- | +--* LCL_VAR byref V00 this u:1 $80 N009 ( 1, 2) [000132] ----------- | \--* CNS_INT long 12 $102 N007 ( 8, 7) [000059] ---XG------ \--* ADD int N005 ( 6, 4) [000057] ---XG------ +--* IND int N004 ( 5, 5) [000135] ---XG--N--- | \--* ADD byref N002 ( 3, 2) [000056] ---XG------ | +--* IND ref N001 ( 1, 1) [000055] ----------- | | \--* LCL_VAR byref V00 this u:1 $80 N003 ( 1, 2) [000134] ----------- | \--* CNS_INT long 56 Fseq[_count] $103 N006 ( 1, 2) [000058] ----------- \--* CNS_INT int 1 $44 ***** BB06 STMT00012 ( 0x084[E-] ... 0x08B ) N006 ( 11, 11) [000066] IA--G------ * ASG struct (init) $VN.Void N004 ( 9, 8) [000064] n---G--N--- +--* OBJ struct $VN.Void N003 ( 3, 4) [000137] ----------- | \--* ADD byref $152 N001 ( 1, 1) [000062] ----------- | +--* LCL_VAR byref V00 this u:1 (last use) $80 N002 ( 1, 2) [000136] ----------- | \--* CNS_INT long 20 $10b N005 ( 1, 2) [000065] ----------- \--* CNS_INT int 0 $40 ***** BB06 STMT00013 ( 0x090[E-] ... 0x091 ) N002 ( 2, 3) [000068] ----------- * RETURN int $VN.Void N001 ( 1, 2) [000138] ----------- \--* CNS_INT int 0 $40 ------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist SSA checks completed successfully *************** In fgDebugCheckLoopTable Disabling SSA checking before assertion prop *************** Starting PHASE Assertion prop GenTreeNode creates assertion: N004 ( 4, 3) [000001] ---XG------ * IND int In BB01 New Global Constant Assertion: ($80,$0) Value_Number {InitVal($40)} is not 0, index = #01 GenTreeNode creates assertion: N003 ( 3, 3) [000095] ---X------- * ARR_LENGTH int In BB03 New Global Constant Assertion: ($208,$0) V04.01 != null, index = #02 GenTreeNode creates assertion: N004 ( 8, 11) [000096] ---X-O----- * BOUNDS_CHECK_Rng void In BB03 New Global ArrBnds Assertion: ($0,$0) [idx: {MemOpaque:NotInLoop};len: {ARR_LENGTH($208)}] in range , index = #03 GenTreeNode creates assertion: N004 ( 4, 3) [000035] ---XG------ * IND int In BB03 New Global Constant Assertion: ($400,$0) Value_Number {PtrToArrElem($304, $252, $3c0, $106)} is not 0, index = #04 GenTreeNode creates assertion: N007 ( 8, 8) [000038] ---XG------ * JTRUE void $268 In BB03 New Global Constant Assertion: ($29f,$40) Const_Loop_Bnd {LT($1c7, $41)} is not {IntCns 0}, index = #05 GenTreeNode creates assertion: N007 ( 8, 8) [000038] ---XG------ * JTRUE void $268 In BB03 New Global Constant Assertion: ($29f,$40) Const_Loop_Bnd {LT($1c7, $41)} is {IntCns 0}, index = #06 BB01 valueGen = #01 => BB05 valueGen = #01 BB02 valueGen = #NA BB03 valueGen = #01 #02 #03 #04 #06 => BB05 valueGen = #01 #02 #03 #04 #05 BB04 valueGen = #01 #04 BB05 valueGen = #01 => BB03 valueGen = #01 BB06 valueGen = #01 BB01: in = #NA out = #01 BB05 = #01 BB02: in = #01 out = #01 BB03: in = #01 out = #01 #02 #03 #04 #06 BB05 = #01 #02 #03 #04 #05 BB04: in = #01 #02 #03 #04 #06 out = #01 #02 #03 #04 #06 BB05: in = #01 out = #01 BB03 = #01 BB06: in = #01 out = #01 Propagating #NA for BB01, stmt STMT00000, tree [000000], tree -> #NA Propagating #NA for BB01, stmt STMT00000, tree [000083], tree -> #NA Propagating #NA for BB01, stmt STMT00000, tree [000084], tree -> #NA Propagating #NA for BB01, stmt STMT00000, tree [000001], tree -> #01 Propagating #01 for BB01, stmt STMT00000, tree [000002], tree -> #NA Propagating #01 for BB01, stmt STMT00000, tree [000003], tree -> #01 VN based non-null prop in BB01: N006 ( 3, 2) [000003] ---XG------ * IND ref Propagating #01 for BB01, stmt STMT00000, tree [000085], tree -> #NA Propagating #01 for BB01, stmt STMT00000, tree [000086], tree -> #NA Propagating #01 for BB01, stmt STMT00000, tree [000004], tree -> #NA Propagating #01 for BB01, stmt STMT00000, tree [000005], tree -> #NA Propagating #01 for BB01, stmt STMT00000, tree [000006], tree -> #NA Re-morphing this stmt: STMT00000 ( 0x000[E-] ... 0x011 ) N011 ( 13, 10) [000006] ---XG------ * JTRUE void N010 ( 11, 8) [000005] J--XG--N--- \--* EQ int N004 ( 4, 3) [000001] ---XG------ +--* IND int N003 ( 3, 4) [000084] -------N--- | \--* ADD byref $140 N001 ( 1, 1) [000000] ----------- | +--* LCL_VAR byref V00 this u:1 $80 N002 ( 1, 2) [000083] ----------- | \--* CNS_INT long 8 $100 N009 ( 6, 4) [000004] ---XG------ \--* IND int N008 ( 5, 5) [000086] ---XG--N--- \--* ADD byref N006 ( 3, 2) [000003] n---GO----- +--* IND ref N005 ( 1, 1) [000002] ----------- | \--* LCL_VAR byref V00 this u:1 $80 N007 ( 1, 2) [000085] ----------- \--* CNS_INT long 68 Fseq[_version] $101 optAssertionPropMain morphed tree: N011 ( 13, 10) [000006] ---XGO----- * JTRUE void N010 ( 11, 8) [000005] J--XGO-N--- \--* EQ int N004 ( 4, 3) [000001] ---XG------ +--* IND int N003 ( 3, 4) [000084] -------N--- | \--* ADD byref $140 N001 ( 1, 1) [000000] ----------- | +--* LCL_VAR byref V00 this u:1 $80 N002 ( 1, 2) [000083] ----------- | \--* CNS_INT long 8 $100 N009 ( 6, 4) [000004] ---XGO----- \--* IND int N008 ( 5, 5) [000086] ----GO-N--- \--* ADD byref N006 ( 3, 2) [000003] n---GO----- +--* IND ref N005 ( 1, 1) [000002] ----------- | \--* LCL_VAR byref V00 this u:1 $80 N007 ( 1, 2) [000085] ----------- \--* CNS_INT long 68 Fseq[_version] $101 Propagating #01 for BB02, stmt STMT00014, tree [000069], tree -> #NA Propagating #01 for BB03, stmt STMT00003, tree [000014], tree -> #NA Propagating #01 for BB03, stmt STMT00003, tree [000015], tree -> #01 VN based non-null prop in BB03: N002 ( 3, 2) [000015] ---XG------ * IND ref Propagating #01 for BB03, stmt STMT00003, tree [000087], tree -> #NA Propagating #01 for BB03, stmt STMT00003, tree [000088], tree -> #NA Propagating #01 for BB03, stmt STMT00003, tree [000016], tree -> #NA Propagating #01 for BB03, stmt STMT00003, tree [000022], tree -> #NA Propagating #01 for BB03, stmt STMT00003, tree [000023], tree -> #NA Re-morphing this stmt: STMT00003 ( 0x01A[E-] ... 0x02C ) N007 ( 6, 4) [000023] -A-XG---R-- * ASG ref N006 ( 1, 1) [000022] D------N--- +--* LCL_VAR ref V04 tmp1 d:1 $VN.Void N005 ( 6, 4) [000016] ---XG------ \--* IND ref N004 ( 5, 5) [000088] ---XG--N--- \--* ADD byref N002 ( 3, 2) [000015] n---GO----- +--* IND ref N001 ( 1, 1) [000014] ----------- | \--* LCL_VAR byref V00 this u:1 $80 N003 ( 1, 2) [000087] ----------- \--* CNS_INT long 16 Fseq[_entries] $104 optAssertionPropMain morphed tree: N007 ( 6, 4) [000023] -A-XGO--R-- * ASG ref N006 ( 1, 1) [000022] D------N--- +--* LCL_VAR ref V04 tmp1 d:1 $VN.Void N005 ( 6, 4) [000016] ---XGO----- \--* IND ref N004 ( 5, 5) [000088] ----GO-N--- \--* ADD byref N002 ( 3, 2) [000015] n---GO----- +--* IND ref N001 ( 1, 1) [000014] ----------- | \--* LCL_VAR byref V00 this u:1 $80 N003 ( 1, 2) [000087] ----------- \--* CNS_INT long 16 Fseq[_entries] $104 Propagating #01 for BB03, stmt STMT00002, tree [000018], tree -> #NA Propagating #01 for BB03, stmt STMT00002, tree [000089], tree -> #NA Propagating #01 for BB03, stmt STMT00002, tree [000090], tree -> #NA Propagating #01 for BB03, stmt STMT00002, tree [000019], tree -> #01 VN based non-null prop in BB03: N004 ( 4, 3) [000019] ---XG------ * IND int Propagating #01 for BB03, stmt STMT00002, tree [000020], tree -> #NA Propagating #01 for BB03, stmt STMT00002, tree [000021], tree -> #NA Re-morphing this stmt: STMT00002 ( 0x01A[E-] ... ??? ) N006 ( 4, 3) [000021] -A-XG---R-- * ASG int $25a N005 ( 1, 1) [000020] D------N--- +--* LCL_VAR int V02 loc1 d:1 $VN.Void N004 ( 4, 3) [000019] n---GO----- \--* IND int N003 ( 3, 4) [000090] -------N--- \--* ADD byref $145 N001 ( 1, 1) [000018] ----------- +--* LCL_VAR byref V00 this u:1 $80 N002 ( 1, 2) [000089] ----------- \--* CNS_INT long 12 $102 optAssertionPropMain morphed tree: N006 ( 4, 3) [000021] -A--GO--R-- * ASG int $25a N005 ( 1, 1) [000020] D------N--- +--* LCL_VAR int V02 loc1 d:1 $VN.Void N004 ( 4, 3) [000019] n---GO----- \--* IND int N003 ( 3, 4) [000090] -------N--- \--* ADD byref $145 N001 ( 1, 1) [000018] ----------- +--* LCL_VAR byref V00 this u:1 $80 N002 ( 1, 2) [000089] ----------- \--* CNS_INT long 12 $102 Propagating #01 for BB03, stmt STMT00004, tree [000025], tree -> #NA Propagating #01 for BB03, stmt STMT00004, tree [000026], tree -> #NA Propagating #01 for BB03, stmt STMT00004, tree [000027], tree -> #NA Propagating #01 for BB03, stmt STMT00004, tree [000017], tree -> #NA Propagating #01 for BB03, stmt STMT00004, tree [000091], tree -> #NA Propagating #01 for BB03, stmt STMT00004, tree [000092], tree -> #NA Propagating #01 for BB03, stmt STMT00004, tree [000028], tree -> #NA VN based non-null prop in BB03: N007 ( 4, 3) [000028] D--XG--N--- * IND int $25a Propagating #01 for BB03, stmt STMT00004, tree [000029], tree -> #01 Re-morphing this stmt: STMT00004 ( ??? ... 0x030 ) N008 ( 8, 8) [000029] -A-XG---R-- * ASG int $25a N007 ( 4, 3) [000028] n---GO-N--- +--* IND int $25a N006 ( 3, 4) [000092] -------N--- | \--* ADD byref $145 N004 ( 1, 1) [000017] ----------- | +--* LCL_VAR byref V00 this u:1 $80 N005 ( 1, 2) [000091] ----------- | \--* CNS_INT long 12 $102 N003 ( 3, 4) [000027] ----------- \--* ADD int N001 ( 1, 1) [000025] ----------- +--* LCL_VAR int V02 loc1 u:1 N002 ( 1, 2) [000026] ----------- \--* CNS_INT int 1 $44 optAssertionPropMain morphed tree: N008 ( 8, 8) [000029] -A--GO--R-- * ASG int $25a N007 ( 4, 3) [000028] n---GO-N--- +--* IND int $25a N006 ( 3, 4) [000092] -------N--- | \--* ADD byref $145 N004 ( 1, 1) [000017] ----------- | +--* LCL_VAR byref V00 this u:1 $80 N005 ( 1, 2) [000091] ----------- | \--* CNS_INT long 12 $102 N003 ( 3, 4) [000027] ----------- \--* ADD int N001 ( 1, 1) [000025] ----------- +--* LCL_VAR int V02 loc1 u:1 N002 ( 1, 2) [000026] ----------- \--* CNS_INT int 1 $44 Propagating #01 for BB03, stmt STMT00005, tree [000030], tree -> #NA Propagating #01 for BB03, stmt STMT00005, tree [000024], tree -> #NA Propagating #01 for BB03, stmt STMT00005, tree [000095], tree -> #02 Propagating #01 #02 for BB03, stmt STMT00005, tree [000096], tree -> #03 Propagating #01 #02 #03 for BB03, stmt STMT00005, tree [000093], tree -> #NA Propagating #01 #02 #03 for BB03, stmt STMT00005, tree [000094], tree -> #NA Propagating #01 #02 #03 for BB03, stmt STMT00005, tree [000097], tree -> #NA Propagating #01 #02 #03 for BB03, stmt STMT00005, tree [000098], tree -> #NA Propagating #01 #02 #03 for BB03, stmt STMT00005, tree [000099], tree -> #NA Propagating #01 #02 #03 for BB03, stmt STMT00005, tree [000100], tree -> #NA Propagating #01 #02 #03 for BB03, stmt STMT00005, tree [000101], tree -> #NA Propagating #01 #02 #03 for BB03, stmt STMT00005, tree [000102], tree -> #NA Propagating #01 #02 #03 for BB03, stmt STMT00005, tree [000103], tree -> #NA Propagating #01 #02 #03 for BB03, stmt STMT00005, tree [000104], tree -> #NA Propagating #01 #02 #03 for BB03, stmt STMT00005, tree [000032], tree -> #NA Propagating #01 #02 #03 for BB03, stmt STMT00005, tree [000033], tree -> #NA Propagating #01 #02 #03 for BB03, stmt STMT00006, tree [000034], tree -> #NA Propagating #01 #02 #03 for BB03, stmt STMT00006, tree [000105], tree -> #NA Propagating #01 #02 #03 for BB03, stmt STMT00006, tree [000106], tree -> #NA Propagating #01 #02 #03 for BB03, stmt STMT00006, tree [000035], tree -> #04 Propagating #01 #02 #03 #04 for BB03, stmt STMT00006, tree [000036], tree -> #NA Propagating #01 #02 #03 #04 for BB03, stmt STMT00006, tree [000037], tree -> #NA Propagating #01 #02 #03 #04 for BB03, stmt STMT00006, tree [000038], tree -> #05 Propagating #01 #02 #03 #04 #06 for BB04, stmt STMT00017, tree [000040], tree -> #NA Propagating #01 #02 #03 #04 #06 for BB04, stmt STMT00017, tree [000107], tree -> #NA Propagating #01 #02 #03 #04 #06 for BB04, stmt STMT00017, tree [000108], tree -> #NA Propagating #01 #02 #03 #04 #06 for BB04, stmt STMT00017, tree [000041], tree -> #04 VN based non-null prop in BB04: N004 ( 4, 3) [000041] ---XG------ * IND int Propagating #01 #02 #03 #04 #06 for BB04, stmt STMT00017, tree [000078], tree -> #NA Propagating #01 #02 #03 #04 #06 for BB04, stmt STMT00017, tree [000079], tree -> #NA Re-morphing this stmt: STMT00017 ( ??? ... ??? ) N006 ( 8, 6) [000079] -A-XG---R-- * ASG int $26a N005 ( 3, 2) [000078] D------N--- +--* LCL_VAR int V06 tmp3 d:1 $VN.Void N004 ( 4, 3) [000041] n---GO----- \--* IND int N003 ( 3, 4) [000108] -------N--- \--* ADD byref $402 N001 ( 1, 1) [000040] ----------- +--* LCL_VAR byref V01 loc0 u:1 $400 N002 ( 1, 2) [000107] ----------- \--* CNS_INT long 8 $100 optAssertionPropMain morphed tree: N006 ( 8, 6) [000079] -A--GO--R-- * ASG int $26a N005 ( 3, 2) [000078] D------N--- +--* LCL_VAR int V06 tmp3 d:1 $VN.Void N004 ( 4, 3) [000041] n---GO----- \--* IND int N003 ( 3, 4) [000108] -------N--- \--* ADD byref $402 N001 ( 1, 1) [000040] ----------- +--* LCL_VAR byref V01 loc0 u:1 $400 N002 ( 1, 2) [000107] ----------- \--* CNS_INT long 8 $100 Propagating #01 #02 #03 #04 #06 for BB04, stmt STMT00018, tree [000042], tree -> #NA Propagating #01 #02 #03 #04 #06 for BB04, stmt STMT00018, tree [000109], tree -> #NA Propagating #01 #02 #03 #04 #06 for BB04, stmt STMT00018, tree [000110], tree -> #NA Propagating #01 #02 #03 #04 #06 for BB04, stmt STMT00018, tree [000043], tree -> #04 VN based non-null prop in BB04: N004 ( 4, 3) [000043] ---XG------ * IND int Propagating #01 #02 #03 #04 #06 for BB04, stmt STMT00018, tree [000080], tree -> #NA Propagating #01 #02 #03 #04 #06 for BB04, stmt STMT00018, tree [000081], tree -> #NA Re-morphing this stmt: STMT00018 ( ??? ... ??? ) N006 ( 8, 6) [000081] -A-XG---R-- * ASG int $26c N005 ( 3, 2) [000080] D------N--- +--* LCL_VAR int V07 tmp4 d:1 $VN.Void N004 ( 4, 3) [000043] n---GO----- \--* IND int N003 ( 3, 4) [000110] -------N--- \--* ADD byref $403 N001 ( 1, 1) [000042] ----------- +--* LCL_VAR byref V01 loc0 u:1 (last use) $400 N002 ( 1, 2) [000109] ----------- \--* CNS_INT long 12 $102 optAssertionPropMain morphed tree: N006 ( 8, 6) [000081] -A--GO--R-- * ASG int $26c N005 ( 3, 2) [000080] D------N--- +--* LCL_VAR int V07 tmp4 d:1 $VN.Void N004 ( 4, 3) [000043] n---GO----- \--* IND int N003 ( 3, 4) [000110] -------N--- \--* ADD byref $403 N001 ( 1, 1) [000042] ----------- +--* LCL_VAR byref V01 loc0 u:1 (last use) $400 N002 ( 1, 2) [000109] ----------- \--* CNS_INT long 12 $102 Propagating #01 #02 #03 #04 #06 for BB04, stmt STMT00015, tree [000071], tree -> #NA Propagating #01 #02 #03 #04 #06 for BB04, stmt STMT00015, tree [000072], tree -> #NA Propagating #01 #02 #03 #04 #06 for BB04, stmt STMT00015, tree [000073], tree -> #NA Propagating #01 #02 #03 #04 #06 for BB04, stmt STMT00016, tree [000075], tree -> #NA Propagating #01 #02 #03 #04 #06 for BB04, stmt STMT00016, tree [000076], tree -> #NA Propagating #01 #02 #03 #04 #06 for BB04, stmt STMT00016, tree [000077], tree -> #NA Propagating #01 #02 #03 #04 #06 for BB04, stmt STMT00009, tree [000039], tree -> #NA Propagating #01 #02 #03 #04 #06 for BB04, stmt STMT00009, tree [000111], tree -> #NA Propagating #01 #02 #03 #04 #06 for BB04, stmt STMT00009, tree [000112], tree -> #NA Propagating #01 #02 #03 #04 #06 for BB04, stmt STMT00009, tree [000113], tree -> #NA Propagating #01 #02 #03 #04 #06 for BB04, stmt STMT00009, tree [000114], tree -> #NA Propagating #01 #02 #03 #04 #06 for BB04, stmt STMT00009, tree [000115], tree -> #NA Propagating #01 #02 #03 #04 #06 for BB04, stmt STMT00009, tree [000116], tree -> #NA VN based non-null prop in BB04: N007 ( 3, 2) [000116] D--X---N--- * IND int $25a Propagating #01 #02 #03 #04 #06 for BB04, stmt STMT00009, tree [000117], tree -> #NA Propagating #01 #02 #03 #04 #06 for BB04, stmt STMT00009, tree [000118], tree -> #01 Propagating #01 #02 #03 #04 #06 for BB04, stmt STMT00009, tree [000119], tree -> #NA Propagating #01 #02 #03 #04 #06 for BB04, stmt STMT00009, tree [000120], tree -> #NA Propagating #01 #02 #03 #04 #06 for BB04, stmt STMT00009, tree [000121], tree -> #NA Propagating #01 #02 #03 #04 #06 for BB04, stmt STMT00009, tree [000122], tree -> #NA Propagating #01 #02 #03 #04 #06 for BB04, stmt STMT00009, tree [000123], tree -> #NA VN based non-null prop in BB04: N014 ( 4, 3) [000123] D--X---N--- * IND int $25a Propagating #01 #02 #03 #04 #06 for BB04, stmt STMT00009, tree [000124], tree -> #NA Propagating #01 #02 #03 #04 #06 for BB04, stmt STMT00009, tree [000125], tree -> #01 Propagating #01 #02 #03 #04 #06 for BB04, stmt STMT00009, tree [000126], tree -> #NA Re-morphing this stmt: STMT00009 ( 0x057[--] ... ??? ) N017 ( 18, 15) [000126] -A-X------- * COMMA void $25a N010 ( 10, 9) [000119] -A-X------- +--* COMMA void $25a N005 ( 3, 4) [000114] -A------R-- | +--* ASG byref $VN.Void N004 ( 1, 1) [000113] D------N--- | | +--* LCL_VAR byref V10 tmp7 d:1 $VN.Void N003 ( 3, 4) [000112] ----------- | | \--* ADD byref $152 N001 ( 1, 1) [000039] ----------- | | +--* LCL_VAR byref V00 this u:1 (last use) $80 N002 ( 1, 2) [000111] ----------- | | \--* CNS_INT long 20 $10b N009 ( 7, 5) [000118] -A-X------- | \--* ASG int $25a N007 ( 3, 2) [000116] n----O-N--- | +--* IND int $25a N006 ( 1, 1) [000115] ----------- | | \--* LCL_VAR byref V10 tmp7 u:1 $152 N008 ( 3, 2) [000117] ----------- | \--* LCL_VAR int V08 tmp5 u:1 (last use) N016 ( 8, 6) [000125] -A-X------- \--* ASG int $25a N014 ( 4, 3) [000123] n----O-N--- +--* IND int $25a N013 ( 3, 4) [000122] -------N--- | \--* ADD byref $153 N011 ( 1, 1) [000120] ----------- | +--* LCL_VAR byref V10 tmp7 u:1 (last use) $152 N012 ( 1, 2) [000121] ----------- | \--* CNS_INT long 4 $105 N015 ( 3, 2) [000124] ----------- \--* LCL_VAR int V09 tmp6 u:1 (last use) optAssertionPropMain morphed tree: N017 ( 18, 15) [000126] -A---O----- * COMMA void $25a N010 ( 10, 9) [000139] -A---O----- +--* COMMA void $25a N005 ( 3, 4) [000114] -A------R-- | +--* ASG byref $VN.Void N004 ( 1, 1) [000113] D------N--- | | +--* LCL_VAR byref V10 tmp7 d:1 $VN.Void N003 ( 3, 4) [000112] ----------- | | \--* ADD byref $152 N001 ( 1, 1) [000039] ----------- | | +--* LCL_VAR byref V00 this u:1 (last use) $80 N002 ( 1, 2) [000111] ----------- | | \--* CNS_INT long 20 $10b N009 ( 7, 5) [000118] -A---O----- | \--* ASG int $25a N007 ( 3, 2) [000116] n----O-N--- | +--* IND int $25a N006 ( 1, 1) [000115] ----------- | | \--* LCL_VAR byref V10 tmp7 u:1 $152 N008 ( 3, 2) [000117] ----------- | \--* LCL_VAR int V08 tmp5 u:1 (last use) N016 ( 8, 6) [000125] -A---O----- \--* ASG int $25a N014 ( 4, 3) [000123] n----O-N--- +--* IND int $25a N013 ( 3, 4) [000122] -------N--- | \--* ADD byref $153 N011 ( 1, 1) [000120] ----------- | +--* LCL_VAR byref V10 tmp7 u:1 (last use) $152 N012 ( 1, 2) [000121] ----------- | \--* CNS_INT long 4 $105 N015 ( 3, 2) [000124] ----------- \--* LCL_VAR int V09 tmp6 u:1 (last use) Propagating #01 #02 #03 #04 #06 for BB04, stmt STMT00010, tree [000127], tree -> #NA Propagating #01 #02 #03 #04 #06 for BB04, stmt STMT00010, tree [000053], tree -> #NA Propagating #01 for BB05, stmt STMT00001, tree [000007], tree -> #NA Propagating #01 for BB05, stmt STMT00001, tree [000128], tree -> #NA Propagating #01 for BB05, stmt STMT00001, tree [000129], tree -> #NA Propagating #01 for BB05, stmt STMT00001, tree [000008], tree -> #01 VN based non-null prop in BB05: N004 ( 4, 3) [000008] ---XG------ * IND int Propagating #01 for BB05, stmt STMT00001, tree [000009], tree -> #NA Propagating #01 for BB05, stmt STMT00001, tree [000010], tree -> #01 VN based non-null prop in BB05: N006 ( 3, 2) [000010] ---XG------ * IND ref Propagating #01 for BB05, stmt STMT00001, tree [000130], tree -> #NA Propagating #01 for BB05, stmt STMT00001, tree [000131], tree -> #NA Propagating #01 for BB05, stmt STMT00001, tree [000011], tree -> #NA Propagating #01 for BB05, stmt STMT00001, tree [000012], tree -> #NA Propagating #01 for BB05, stmt STMT00001, tree [000013], tree -> #NA Re-morphing this stmt: STMT00001 ( 0x05E[E-] ... 0x06F ) N011 ( 13, 10) [000013] ---XG------ * JTRUE void N010 ( 11, 8) [000012] N--XG--N-U- \--* LT int N004 ( 4, 3) [000008] n---GO----- +--* IND int N003 ( 3, 4) [000129] -------N--- | \--* ADD byref $145 N001 ( 1, 1) [000007] ----------- | +--* LCL_VAR byref V00 this u:1 $80 N002 ( 1, 2) [000128] ----------- | \--* CNS_INT long 12 $102 N009 ( 6, 4) [000011] ---XG------ \--* IND int N008 ( 5, 5) [000131] ---XG--N--- \--* ADD byref N006 ( 3, 2) [000010] n---GO----- +--* IND ref N005 ( 1, 1) [000009] ----------- | \--* LCL_VAR byref V00 this u:1 $80 N007 ( 1, 2) [000130] ----------- \--* CNS_INT long 56 Fseq[_count] $103 optAssertionPropMain morphed tree: N011 ( 13, 10) [000013] ---XGO----- * JTRUE void N010 ( 11, 8) [000012] N--XGO-N-U- \--* LT int N004 ( 4, 3) [000008] n---GO----- +--* IND int N003 ( 3, 4) [000129] -------N--- | \--* ADD byref $145 N001 ( 1, 1) [000007] ----------- | +--* LCL_VAR byref V00 this u:1 $80 N002 ( 1, 2) [000128] ----------- | \--* CNS_INT long 12 $102 N009 ( 6, 4) [000011] ---XGO----- \--* IND int N008 ( 5, 5) [000131] ----GO-N--- \--* ADD byref N006 ( 3, 2) [000010] n---GO----- +--* IND ref N005 ( 1, 1) [000009] ----------- | \--* LCL_VAR byref V00 this u:1 $80 N007 ( 1, 2) [000130] ----------- \--* CNS_INT long 56 Fseq[_count] $103 Propagating #01 for BB06, stmt STMT00011, tree [000055], tree -> #NA Propagating #01 for BB06, stmt STMT00011, tree [000056], tree -> #01 VN based non-null prop in BB06: N002 ( 3, 2) [000056] ---XG------ * IND ref Propagating #01 for BB06, stmt STMT00011, tree [000134], tree -> #NA Propagating #01 for BB06, stmt STMT00011, tree [000135], tree -> #NA Propagating #01 for BB06, stmt STMT00011, tree [000057], tree -> #NA Propagating #01 for BB06, stmt STMT00011, tree [000058], tree -> #NA Propagating #01 for BB06, stmt STMT00011, tree [000059], tree -> #NA Propagating #01 for BB06, stmt STMT00011, tree [000054], tree -> #NA Propagating #01 for BB06, stmt STMT00011, tree [000132], tree -> #NA Propagating #01 for BB06, stmt STMT00011, tree [000133], tree -> #NA Propagating #01 for BB06, stmt STMT00011, tree [000060], tree -> #NA VN based non-null prop in BB06: N011 ( 4, 3) [000060] D--XG--N--- * IND int $25a Propagating #01 for BB06, stmt STMT00011, tree [000061], tree -> #01 Re-morphing this stmt: STMT00011 ( 0x071[E-] ... 0x07F ) N012 ( 13, 11) [000061] -A-XG---R-- * ASG int N011 ( 4, 3) [000060] n---GO-N--- +--* IND int $25a N010 ( 3, 4) [000133] -------N--- | \--* ADD byref $145 N008 ( 1, 1) [000054] ----------- | +--* LCL_VAR byref V00 this u:1 $80 N009 ( 1, 2) [000132] ----------- | \--* CNS_INT long 12 $102 N007 ( 8, 7) [000059] ---XG------ \--* ADD int N005 ( 6, 4) [000057] ---XG------ +--* IND int N004 ( 5, 5) [000135] ---XG--N--- | \--* ADD byref N002 ( 3, 2) [000056] n---GO----- | +--* IND ref N001 ( 1, 1) [000055] ----------- | | \--* LCL_VAR byref V00 this u:1 $80 N003 ( 1, 2) [000134] ----------- | \--* CNS_INT long 56 Fseq[_count] $103 N006 ( 1, 2) [000058] ----------- \--* CNS_INT int 1 $44 optAssertionPropMain morphed tree: N012 ( 13, 11) [000061] -A-XGO--R-- * ASG int N011 ( 4, 3) [000060] n---GO-N--- +--* IND int $25a N010 ( 3, 4) [000133] -------N--- | \--* ADD byref $145 N008 ( 1, 1) [000054] ----------- | +--* LCL_VAR byref V00 this u:1 $80 N009 ( 1, 2) [000132] ----------- | \--* CNS_INT long 12 $102 N007 ( 8, 7) [000059] ---XGO----- \--* ADD int N005 ( 6, 4) [000057] ---XGO----- +--* IND int N004 ( 5, 5) [000135] ----GO-N--- | \--* ADD byref N002 ( 3, 2) [000056] n---GO----- | +--* IND ref N001 ( 1, 1) [000055] ----------- | | \--* LCL_VAR byref V00 this u:1 $80 N003 ( 1, 2) [000134] ----------- | \--* CNS_INT long 56 Fseq[_count] $103 N006 ( 1, 2) [000058] ----------- \--* CNS_INT int 1 $44 Propagating #01 for BB06, stmt STMT00012, tree [000062], tree -> #NA Propagating #01 for BB06, stmt STMT00012, tree [000136], tree -> #NA Propagating #01 for BB06, stmt STMT00012, tree [000137], tree -> #NA Propagating #01 for BB06, stmt STMT00012, tree [000064], tree -> #NA Propagating #01 for BB06, stmt STMT00012, tree [000065], tree -> #NA Propagating #01 for BB06, stmt STMT00012, tree [000066], tree -> #01 Propagating #01 for BB06, stmt STMT00013, tree [000138], tree -> #NA Propagating #01 for BB06, stmt STMT00013, tree [000068], tree -> #NA *************** Finishing PHASE Assertion prop Trees after Assertion prop ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..013)-> BB05 ( cond ) i BB02 [0001] 1 BB01 0 [013..01A) (throw ) i rare hascall gcsafe BB03 [0002] 1 BB05 2 [01A..045)-> BB05 ( cond ) i Loop Loop0 idxlen bwd bwd-target BB04 [0003] 1 BB03 0.50 [045..05E) (return) i BB05 [0004] 2 BB01,BB03 8 [05E..071)-> BB03 ( cond ) i bwd bwd-src BB06 [0005] 1 BB05 0.50 [071..092) (return) i ----------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [000..013) -> BB05 (cond), preds={} succs={BB02,BB05} ***** BB01 STMT00000 ( 0x000[E-] ... 0x011 ) N011 ( 13, 10) [000006] ---XGO----- * JTRUE void N010 ( 11, 8) [000005] J--XGO-N--- \--* EQ int N004 ( 4, 3) [000001] ---XG------ +--* IND int N003 ( 3, 4) [000084] -------N--- | \--* ADD byref $140 N001 ( 1, 1) [000000] ----------- | +--* LCL_VAR byref V00 this u:1 $80 N002 ( 1, 2) [000083] ----------- | \--* CNS_INT long 8 $100 N009 ( 6, 4) [000004] ---XGO----- \--* IND int N008 ( 5, 5) [000086] ----GO-N--- \--* ADD byref N006 ( 3, 2) [000003] n---GO----- +--* IND ref N005 ( 1, 1) [000002] ----------- | \--* LCL_VAR byref V00 this u:1 $80 N007 ( 1, 2) [000085] ----------- \--* CNS_INT long 68 Fseq[_version] $101 ------------ BB02 [013..01A) (throw), preds={BB01} succs={} ***** BB02 STMT00014 ( 0x013[E-] ... 0x018 ) N001 ( 14, 2) [000069] --CXG------ * CALL void System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion() $VN.Void ------------ BB03 [01A..045) -> BB05 (cond), preds={BB05} succs={BB04,BB05} ***** BB03 STMT00003 ( 0x01A[E-] ... 0x02C ) N007 ( 6, 4) [000023] -A-XGO--R-- * ASG ref N006 ( 1, 1) [000022] D------N--- +--* LCL_VAR ref V04 tmp1 d:1 $VN.Void N005 ( 6, 4) [000016] ---XGO----- \--* IND ref N004 ( 5, 5) [000088] ----GO-N--- \--* ADD byref N002 ( 3, 2) [000015] n---GO----- +--* IND ref N001 ( 1, 1) [000014] ----------- | \--* LCL_VAR byref V00 this u:1 $80 N003 ( 1, 2) [000087] ----------- \--* CNS_INT long 16 Fseq[_entries] $104 ***** BB03 STMT00002 ( 0x01A[E-] ... ??? ) N006 ( 4, 3) [000021] -A--GO--R-- * ASG int $25a N005 ( 1, 1) [000020] D------N--- +--* LCL_VAR int V02 loc1 d:1 $VN.Void N004 ( 4, 3) [000019] n---GO----- \--* IND int N003 ( 3, 4) [000090] -------N--- \--* ADD byref $145 N001 ( 1, 1) [000018] ----------- +--* LCL_VAR byref V00 this u:1 $80 N002 ( 1, 2) [000089] ----------- \--* CNS_INT long 12 $102 ***** BB03 STMT00004 ( ??? ... 0x030 ) N008 ( 8, 8) [000029] -A--GO--R-- * ASG int $25a N007 ( 4, 3) [000028] n---GO-N--- +--* IND int $25a N006 ( 3, 4) [000092] -------N--- | \--* ADD byref $145 N004 ( 1, 1) [000017] ----------- | +--* LCL_VAR byref V00 this u:1 $80 N005 ( 1, 2) [000091] ----------- | \--* CNS_INT long 12 $102 N003 ( 3, 4) [000027] ----------- \--* ADD int N001 ( 1, 1) [000025] ----------- +--* LCL_VAR int V02 loc1 u:1 N002 ( 1, 2) [000026] ----------- \--* CNS_INT int 1 $44 ***** BB03 STMT00005 ( ??? ... 0x03B ) N016 ( 15, 21) [000033] -A-XGO--R-- * ASG byref N015 ( 1, 1) [000032] D------N--- +--* LCL_VAR byref V01 loc0 d:1 $VN.Void N014 ( 15, 21) [000104] ---X-O----- \--* COMMA byref N004 ( 8, 11) [000096] ---X-O----- +--* BOUNDS_CHECK_Rng void N001 ( 1, 1) [000030] ----------- | +--* LCL_VAR int V02 loc1 u:1 N003 ( 3, 3) [000095] ---X------- | \--* ARR_LENGTH int N002 ( 1, 1) [000024] ----------- | \--* LCL_VAR ref V04 tmp1 u:1 N013 ( 7, 10) [000103] -----O----- \--* ARR_ADDR byref System.Collections.Generic.Dictionary`2+Entry[] $400 N012 ( 7, 10) [000102] -------N--- \--* ADD byref N005 ( 1, 1) [000093] ----------- +--* LCL_VAR ref V04 tmp1 u:1 (last use) N011 ( 6, 9) [000101] ----------- \--* ADD long N009 ( 4, 6) [000099] ----------- +--* LSH long N007 ( 2, 3) [000097] ---------U- | +--* CAST long <- uint N006 ( 1, 1) [000094] ----------- | | \--* LCL_VAR int V02 loc1 u:1 (last use) N008 ( 1, 2) [000098] -------N--- | \--* CNS_INT long 4 $105 N010 ( 1, 2) [000100] ----------- \--* CNS_INT long 16 $104 ***** BB03 STMT00006 ( 0x03C[E-] ... 0x043 ) N007 ( 8, 8) [000038] ---XG------ * JTRUE void $268 N006 ( 6, 6) [000037] J--XG--N--- \--* LT int N004 ( 4, 3) [000035] ---XG------ +--* IND int N003 ( 3, 4) [000106] -------N--- | \--* ADD byref $401 N001 ( 1, 1) [000034] ----------- | +--* LCL_VAR byref V01 loc0 u:1 $400 N002 ( 1, 2) [000105] ----------- | \--* CNS_INT long 4 $105 N005 ( 1, 2) [000036] ----------- \--* CNS_INT int -1 $41 ------------ BB04 [045..05E) (return), preds={BB03} succs={} ***** BB04 STMT00017 ( ??? ... ??? ) N006 ( 8, 6) [000079] -A--GO--R-- * ASG int $26a N005 ( 3, 2) [000078] D------N--- +--* LCL_VAR int V06 tmp3 d:1 $VN.Void N004 ( 4, 3) [000041] n---GO----- \--* IND int N003 ( 3, 4) [000108] -------N--- \--* ADD byref $402 N001 ( 1, 1) [000040] ----------- +--* LCL_VAR byref V01 loc0 u:1 $400 N002 ( 1, 2) [000107] ----------- \--* CNS_INT long 8 $100 ***** BB04 STMT00018 ( ??? ... ??? ) N006 ( 8, 6) [000081] -A--GO--R-- * ASG int $26c N005 ( 3, 2) [000080] D------N--- +--* LCL_VAR int V07 tmp4 d:1 $VN.Void N004 ( 4, 3) [000043] n---GO----- \--* IND int N003 ( 3, 4) [000110] -------N--- \--* ADD byref $403 N001 ( 1, 1) [000042] ----------- +--* LCL_VAR byref V01 loc0 u:1 (last use) $400 N002 ( 1, 2) [000109] ----------- \--* CNS_INT long 12 $102 ***** BB04 STMT00015 ( INL01 @ 0x000[E-] ... ??? ) <- INLRT @ ??? N003 ( 7, 5) [000073] -A------R-- * ASG int $VN.Void N002 ( 3, 2) [000072] D------N--- +--* LCL_VAR int V08 tmp5 d:1 $VN.Void N001 ( 3, 2) [000071] ----------- \--* LCL_VAR int V06 tmp3 u:1 (last use) ***** BB04 STMT00016 ( INL01 @ 0x007[E-] ... ??? ) <- INLRT @ ??? N003 ( 7, 5) [000077] -A------R-- * ASG int $VN.Void N002 ( 3, 2) [000076] D------N--- +--* LCL_VAR int V09 tmp6 d:1 $VN.Void N001 ( 3, 2) [000075] ----------- \--* LCL_VAR int V07 tmp4 u:1 (last use) ***** BB04 STMT00009 ( 0x057[--] ... ??? ) N017 ( 18, 15) [000126] -A---O----- * COMMA void $25a N010 ( 10, 9) [000139] -A---O----- +--* COMMA void $25a N005 ( 3, 4) [000114] -A------R-- | +--* ASG byref $VN.Void N004 ( 1, 1) [000113] D------N--- | | +--* LCL_VAR byref V10 tmp7 d:1 $VN.Void N003 ( 3, 4) [000112] ----------- | | \--* ADD byref $152 N001 ( 1, 1) [000039] ----------- | | +--* LCL_VAR byref V00 this u:1 (last use) $80 N002 ( 1, 2) [000111] ----------- | | \--* CNS_INT long 20 $10b N009 ( 7, 5) [000118] -A---O----- | \--* ASG int $25a N007 ( 3, 2) [000116] n----O-N--- | +--* IND int $25a N006 ( 1, 1) [000115] ----------- | | \--* LCL_VAR byref V10 tmp7 u:1 $152 N008 ( 3, 2) [000117] ----------- | \--* LCL_VAR int V08 tmp5 u:1 (last use) N016 ( 8, 6) [000125] -A---O----- \--* ASG int $25a N014 ( 4, 3) [000123] n----O-N--- +--* IND int $25a N013 ( 3, 4) [000122] -------N--- | \--* ADD byref $153 N011 ( 1, 1) [000120] ----------- | +--* LCL_VAR byref V10 tmp7 u:1 (last use) $152 N012 ( 1, 2) [000121] ----------- | \--* CNS_INT long 4 $105 N015 ( 3, 2) [000124] ----------- \--* LCL_VAR int V09 tmp6 u:1 (last use) ***** BB04 STMT00010 ( 0x05C[E-] ... 0x05D ) N002 ( 2, 3) [000053] ----------- * RETURN int $VN.Void N001 ( 1, 2) [000127] ----------- \--* CNS_INT int 1 $44 ------------ BB05 [05E..071) -> BB03 (cond), preds={BB01,BB03} succs={BB06,BB03} ***** BB05 STMT00001 ( 0x05E[E-] ... 0x06F ) N011 ( 13, 10) [000013] ---XGO----- * JTRUE void N010 ( 11, 8) [000012] N--XGO-N-U- \--* LT int N004 ( 4, 3) [000008] n---GO----- +--* IND int N003 ( 3, 4) [000129] -------N--- | \--* ADD byref $145 N001 ( 1, 1) [000007] ----------- | +--* LCL_VAR byref V00 this u:1 $80 N002 ( 1, 2) [000128] ----------- | \--* CNS_INT long 12 $102 N009 ( 6, 4) [000011] ---XGO----- \--* IND int N008 ( 5, 5) [000131] ----GO-N--- \--* ADD byref N006 ( 3, 2) [000010] n---GO----- +--* IND ref N005 ( 1, 1) [000009] ----------- | \--* LCL_VAR byref V00 this u:1 $80 N007 ( 1, 2) [000130] ----------- \--* CNS_INT long 56 Fseq[_count] $103 ------------ BB06 [071..092) (return), preds={BB05} succs={} ***** BB06 STMT00011 ( 0x071[E-] ... 0x07F ) N012 ( 13, 11) [000061] -A-XGO--R-- * ASG int N011 ( 4, 3) [000060] n---GO-N--- +--* IND int $25a N010 ( 3, 4) [000133] -------N--- | \--* ADD byref $145 N008 ( 1, 1) [000054] ----------- | +--* LCL_VAR byref V00 this u:1 $80 N009 ( 1, 2) [000132] ----------- | \--* CNS_INT long 12 $102 N007 ( 8, 7) [000059] ---XGO----- \--* ADD int N005 ( 6, 4) [000057] ---XGO----- +--* IND int N004 ( 5, 5) [000135] ----GO-N--- | \--* ADD byref N002 ( 3, 2) [000056] n---GO----- | +--* IND ref N001 ( 1, 1) [000055] ----------- | | \--* LCL_VAR byref V00 this u:1 $80 N003 ( 1, 2) [000134] ----------- | \--* CNS_INT long 56 Fseq[_count] $103 N006 ( 1, 2) [000058] ----------- \--* CNS_INT int 1 $44 ***** BB06 STMT00012 ( 0x084[E-] ... 0x08B ) N006 ( 11, 11) [000066] IA--G------ * ASG struct (init) $VN.Void N004 ( 9, 8) [000064] n---G--N--- +--* OBJ struct $VN.Void N003 ( 3, 4) [000137] ----------- | \--* ADD byref $152 N001 ( 1, 1) [000062] ----------- | +--* LCL_VAR byref V00 this u:1 (last use) $80 N002 ( 1, 2) [000136] ----------- | \--* CNS_INT long 20 $10b N005 ( 1, 2) [000065] ----------- \--* CNS_INT int 0 $40 ***** BB06 STMT00013 ( 0x090[E-] ... 0x091 ) N002 ( 2, 3) [000068] ----------- * RETURN int $VN.Void N001 ( 1, 2) [000138] ----------- \--* CNS_INT int 0 $40 ------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist *************** In fgDebugCheckLoopTable *************** Starting PHASE Optimize index checks Looking for array size assertions for: $1c6 ArrSize for lengthVN:1C6 = 0 [RangeCheck::GetRange] BB03 N001 ( 1, 1) [000030] ----------- * LCL_VAR int V02 loc1 u:1 { ---------------------------------------------------- N006 ( 4, 3) [000021] -A--GO--R-- * ASG int $25a N005 ( 1, 1) [000020] D------N--- +--* LCL_VAR int V02 loc1 d:1 $VN.Void N004 ( 4, 3) [000019] n---GO----- \--* IND int N003 ( 3, 4) [000090] -------N--- \--* ADD byref $145 N001 ( 1, 1) [000018] ----------- +--* LCL_VAR byref V00 this u:1 $80 N002 ( 1, 2) [000089] ----------- \--* CNS_INT long 12 $102 ---------------------------------------------------- [RangeCheck::GetRange] BB03 N004 ( 4, 3) [000019] n---GO----- * IND int N003 ( 3, 4) [000090] -------N--- \--* ADD byref $145 N001 ( 1, 1) [000018] ----------- +--* LCL_VAR byref V00 this u:1 $80 N002 ( 1, 2) [000089] ----------- \--* CNS_INT long 12 $102 { Computed Range [000019] => } Merge assertions from BB03: #01 for assignment about [000020] done merging Merging assertions from pred edges of BB03 for op [000030] $1c4 Computed Range [000030] => } *************** Finishing PHASE Optimize index checks [no changes] *************** Starting PHASE VN-based dead store removal *************** Finishing PHASE VN-based dead store removal [no changes] *************** Starting PHASE Insert GC Polls *************** Finishing PHASE Insert GC Polls [no changes] *************** Starting PHASE Optimize bools *************** In optOptimizeBools() optimized 0 BBJ_COND cases, 0 BBJ_RETURN cases in 1 passes *************** Finishing PHASE Optimize bools Trees after Optimize bools ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..013)-> BB05 ( cond ) i BB02 [0001] 1 BB01 0 [013..01A) (throw ) i rare hascall gcsafe BB03 [0002] 1 BB05 2 [01A..045)-> BB05 ( cond ) i Loop Loop0 idxlen bwd bwd-target BB04 [0003] 1 BB03 0.50 [045..05E) (return) i BB05 [0004] 2 BB01,BB03 8 [05E..071)-> BB03 ( cond ) i bwd bwd-src BB06 [0005] 1 BB05 0.50 [071..092) (return) i ----------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [000..013) -> BB05 (cond), preds={} succs={BB02,BB05} ***** BB01 STMT00000 ( 0x000[E-] ... 0x011 ) N011 ( 13, 10) [000006] ---XGO----- * JTRUE void N010 ( 11, 8) [000005] J--XGO-N--- \--* EQ int N004 ( 4, 3) [000001] ---XG------ +--* IND int N003 ( 3, 4) [000084] -------N--- | \--* ADD byref $140 N001 ( 1, 1) [000000] ----------- | +--* LCL_VAR byref V00 this u:1 $80 N002 ( 1, 2) [000083] ----------- | \--* CNS_INT long 8 $100 N009 ( 6, 4) [000004] ---XGO----- \--* IND int N008 ( 5, 5) [000086] ----GO-N--- \--* ADD byref N006 ( 3, 2) [000003] n---GO----- +--* IND ref N005 ( 1, 1) [000002] ----------- | \--* LCL_VAR byref V00 this u:1 $80 N007 ( 1, 2) [000085] ----------- \--* CNS_INT long 68 Fseq[_version] $101 ------------ BB02 [013..01A) (throw), preds={BB01} succs={} ***** BB02 STMT00014 ( 0x013[E-] ... 0x018 ) N001 ( 14, 2) [000069] --CXG------ * CALL void System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion() $VN.Void ------------ BB03 [01A..045) -> BB05 (cond), preds={BB05} succs={BB04,BB05} ***** BB03 STMT00003 ( 0x01A[E-] ... 0x02C ) N007 ( 6, 4) [000023] -A-XGO--R-- * ASG ref N006 ( 1, 1) [000022] D------N--- +--* LCL_VAR ref V04 tmp1 d:1 $VN.Void N005 ( 6, 4) [000016] ---XGO----- \--* IND ref N004 ( 5, 5) [000088] ----GO-N--- \--* ADD byref N002 ( 3, 2) [000015] n---GO----- +--* IND ref N001 ( 1, 1) [000014] ----------- | \--* LCL_VAR byref V00 this u:1 $80 N003 ( 1, 2) [000087] ----------- \--* CNS_INT long 16 Fseq[_entries] $104 ***** BB03 STMT00002 ( 0x01A[E-] ... ??? ) N006 ( 4, 3) [000021] -A--GO--R-- * ASG int $25a N005 ( 1, 1) [000020] D------N--- +--* LCL_VAR int V02 loc1 d:1 $VN.Void N004 ( 4, 3) [000019] n---GO----- \--* IND int N003 ( 3, 4) [000090] -------N--- \--* ADD byref $145 N001 ( 1, 1) [000018] ----------- +--* LCL_VAR byref V00 this u:1 $80 N002 ( 1, 2) [000089] ----------- \--* CNS_INT long 12 $102 ***** BB03 STMT00004 ( ??? ... 0x030 ) N008 ( 8, 8) [000029] -A--GO--R-- * ASG int $25a N007 ( 4, 3) [000028] n---GO-N--- +--* IND int $25a N006 ( 3, 4) [000092] -------N--- | \--* ADD byref $145 N004 ( 1, 1) [000017] ----------- | +--* LCL_VAR byref V00 this u:1 $80 N005 ( 1, 2) [000091] ----------- | \--* CNS_INT long 12 $102 N003 ( 3, 4) [000027] ----------- \--* ADD int N001 ( 1, 1) [000025] ----------- +--* LCL_VAR int V02 loc1 u:1 N002 ( 1, 2) [000026] ----------- \--* CNS_INT int 1 $44 ***** BB03 STMT00005 ( ??? ... 0x03B ) N016 ( 15, 21) [000033] -A-XGO--R-- * ASG byref N015 ( 1, 1) [000032] D------N--- +--* LCL_VAR byref V01 loc0 d:1 $VN.Void N014 ( 15, 21) [000104] ---X-O----- \--* COMMA byref N004 ( 8, 11) [000096] ---X-O----- +--* BOUNDS_CHECK_Rng void N001 ( 1, 1) [000030] ----------- | +--* LCL_VAR int V02 loc1 u:1 N003 ( 3, 3) [000095] ---X------- | \--* ARR_LENGTH int N002 ( 1, 1) [000024] ----------- | \--* LCL_VAR ref V04 tmp1 u:1 N013 ( 7, 10) [000103] -----O----- \--* ARR_ADDR byref System.Collections.Generic.Dictionary`2+Entry[] $400 N012 ( 7, 10) [000102] -------N--- \--* ADD byref N005 ( 1, 1) [000093] ----------- +--* LCL_VAR ref V04 tmp1 u:1 (last use) N011 ( 6, 9) [000101] ----------- \--* ADD long N009 ( 4, 6) [000099] ----------- +--* LSH long N007 ( 2, 3) [000097] ---------U- | +--* CAST long <- uint N006 ( 1, 1) [000094] ----------- | | \--* LCL_VAR int V02 loc1 u:1 (last use) N008 ( 1, 2) [000098] -------N--- | \--* CNS_INT long 4 $105 N010 ( 1, 2) [000100] ----------- \--* CNS_INT long 16 $104 ***** BB03 STMT00006 ( 0x03C[E-] ... 0x043 ) N007 ( 8, 8) [000038] ---XG------ * JTRUE void $268 N006 ( 6, 6) [000037] J--XG--N--- \--* LT int N004 ( 4, 3) [000035] ---XG------ +--* IND int N003 ( 3, 4) [000106] -------N--- | \--* ADD byref $401 N001 ( 1, 1) [000034] ----------- | +--* LCL_VAR byref V01 loc0 u:1 $400 N002 ( 1, 2) [000105] ----------- | \--* CNS_INT long 4 $105 N005 ( 1, 2) [000036] ----------- \--* CNS_INT int -1 $41 ------------ BB04 [045..05E) (return), preds={BB03} succs={} ***** BB04 STMT00017 ( ??? ... ??? ) N006 ( 8, 6) [000079] -A--GO--R-- * ASG int $26a N005 ( 3, 2) [000078] D------N--- +--* LCL_VAR int V06 tmp3 d:1 $VN.Void N004 ( 4, 3) [000041] n---GO----- \--* IND int N003 ( 3, 4) [000108] -------N--- \--* ADD byref $402 N001 ( 1, 1) [000040] ----------- +--* LCL_VAR byref V01 loc0 u:1 $400 N002 ( 1, 2) [000107] ----------- \--* CNS_INT long 8 $100 ***** BB04 STMT00018 ( ??? ... ??? ) N006 ( 8, 6) [000081] -A--GO--R-- * ASG int $26c N005 ( 3, 2) [000080] D------N--- +--* LCL_VAR int V07 tmp4 d:1 $VN.Void N004 ( 4, 3) [000043] n---GO----- \--* IND int N003 ( 3, 4) [000110] -------N--- \--* ADD byref $403 N001 ( 1, 1) [000042] ----------- +--* LCL_VAR byref V01 loc0 u:1 (last use) $400 N002 ( 1, 2) [000109] ----------- \--* CNS_INT long 12 $102 ***** BB04 STMT00015 ( INL01 @ 0x000[E-] ... ??? ) <- INLRT @ ??? N003 ( 7, 5) [000073] -A------R-- * ASG int $VN.Void N002 ( 3, 2) [000072] D------N--- +--* LCL_VAR int V08 tmp5 d:1 $VN.Void N001 ( 3, 2) [000071] ----------- \--* LCL_VAR int V06 tmp3 u:1 (last use) ***** BB04 STMT00016 ( INL01 @ 0x007[E-] ... ??? ) <- INLRT @ ??? N003 ( 7, 5) [000077] -A------R-- * ASG int $VN.Void N002 ( 3, 2) [000076] D------N--- +--* LCL_VAR int V09 tmp6 d:1 $VN.Void N001 ( 3, 2) [000075] ----------- \--* LCL_VAR int V07 tmp4 u:1 (last use) ***** BB04 STMT00009 ( 0x057[--] ... ??? ) N017 ( 18, 15) [000126] -A---O----- * COMMA void $25a N010 ( 10, 9) [000139] -A---O----- +--* COMMA void $25a N005 ( 3, 4) [000114] -A------R-- | +--* ASG byref $VN.Void N004 ( 1, 1) [000113] D------N--- | | +--* LCL_VAR byref V10 tmp7 d:1 $VN.Void N003 ( 3, 4) [000112] ----------- | | \--* ADD byref $152 N001 ( 1, 1) [000039] ----------- | | +--* LCL_VAR byref V00 this u:1 (last use) $80 N002 ( 1, 2) [000111] ----------- | | \--* CNS_INT long 20 $10b N009 ( 7, 5) [000118] -A---O----- | \--* ASG int $25a N007 ( 3, 2) [000116] n----O-N--- | +--* IND int $25a N006 ( 1, 1) [000115] ----------- | | \--* LCL_VAR byref V10 tmp7 u:1 $152 N008 ( 3, 2) [000117] ----------- | \--* LCL_VAR int V08 tmp5 u:1 (last use) N016 ( 8, 6) [000125] -A---O----- \--* ASG int $25a N014 ( 4, 3) [000123] n----O-N--- +--* IND int $25a N013 ( 3, 4) [000122] -------N--- | \--* ADD byref $153 N011 ( 1, 1) [000120] ----------- | +--* LCL_VAR byref V10 tmp7 u:1 (last use) $152 N012 ( 1, 2) [000121] ----------- | \--* CNS_INT long 4 $105 N015 ( 3, 2) [000124] ----------- \--* LCL_VAR int V09 tmp6 u:1 (last use) ***** BB04 STMT00010 ( 0x05C[E-] ... 0x05D ) N002 ( 2, 3) [000053] ----------- * RETURN int $VN.Void N001 ( 1, 2) [000127] ----------- \--* CNS_INT int 1 $44 ------------ BB05 [05E..071) -> BB03 (cond), preds={BB01,BB03} succs={BB06,BB03} ***** BB05 STMT00001 ( 0x05E[E-] ... 0x06F ) N011 ( 13, 10) [000013] ---XGO----- * JTRUE void N010 ( 11, 8) [000012] N--XGO-N-U- \--* LT int N004 ( 4, 3) [000008] n---GO----- +--* IND int N003 ( 3, 4) [000129] -------N--- | \--* ADD byref $145 N001 ( 1, 1) [000007] ----------- | +--* LCL_VAR byref V00 this u:1 $80 N002 ( 1, 2) [000128] ----------- | \--* CNS_INT long 12 $102 N009 ( 6, 4) [000011] ---XGO----- \--* IND int N008 ( 5, 5) [000131] ----GO-N--- \--* ADD byref N006 ( 3, 2) [000010] n---GO----- +--* IND ref N005 ( 1, 1) [000009] ----------- | \--* LCL_VAR byref V00 this u:1 $80 N007 ( 1, 2) [000130] ----------- \--* CNS_INT long 56 Fseq[_count] $103 ------------ BB06 [071..092) (return), preds={BB05} succs={} ***** BB06 STMT00011 ( 0x071[E-] ... 0x07F ) N012 ( 13, 11) [000061] -A-XGO--R-- * ASG int N011 ( 4, 3) [000060] n---GO-N--- +--* IND int $25a N010 ( 3, 4) [000133] -------N--- | \--* ADD byref $145 N008 ( 1, 1) [000054] ----------- | +--* LCL_VAR byref V00 this u:1 $80 N009 ( 1, 2) [000132] ----------- | \--* CNS_INT long 12 $102 N007 ( 8, 7) [000059] ---XGO----- \--* ADD int N005 ( 6, 4) [000057] ---XGO----- +--* IND int N004 ( 5, 5) [000135] ----GO-N--- | \--* ADD byref N002 ( 3, 2) [000056] n---GO----- | +--* IND ref N001 ( 1, 1) [000055] ----------- | | \--* LCL_VAR byref V00 this u:1 $80 N003 ( 1, 2) [000134] ----------- | \--* CNS_INT long 56 Fseq[_count] $103 N006 ( 1, 2) [000058] ----------- \--* CNS_INT int 1 $44 ***** BB06 STMT00012 ( 0x084[E-] ... 0x08B ) N006 ( 11, 11) [000066] IA--G------ * ASG struct (init) $VN.Void N004 ( 9, 8) [000064] n---G--N--- +--* OBJ struct $VN.Void N003 ( 3, 4) [000137] ----------- | \--* ADD byref $152 N001 ( 1, 1) [000062] ----------- | +--* LCL_VAR byref V00 this u:1 (last use) $80 N002 ( 1, 2) [000136] ----------- | \--* CNS_INT long 20 $10b N005 ( 1, 2) [000065] ----------- \--* CNS_INT int 0 $40 ***** BB06 STMT00013 ( 0x090[E-] ... 0x091 ) N002 ( 2, 3) [000068] ----------- * RETURN int $VN.Void N001 ( 1, 2) [000138] ----------- \--* CNS_INT int 0 $40 ------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist *************** In fgDebugCheckLoopTable: loop table not valid *************** Starting PHASE If conversion *************** Finishing PHASE If conversion [no changes] *************** Starting PHASE Optimize layout *************** In fgUpdateFlowGraph() Before updating the flow graph: ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..013)-> BB05 ( cond ) i BB02 [0001] 1 BB01 0 [013..01A) (throw ) i rare hascall gcsafe BB03 [0002] 1 BB05 2 [01A..045)-> BB05 ( cond ) i Loop Loop0 idxlen bwd bwd-target BB04 [0003] 1 BB03 0.50 [045..05E) (return) i BB05 [0004] 2 BB01,BB03 8 [05E..071)-> BB03 ( cond ) i bwd bwd-src BB06 [0005] 1 BB05 0.50 [071..092) (return) i ----------------------------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist *************** In fgExpandRarelyRunBlocks() *************** In fgReorderBlocks() Initial BasicBlocks ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..013)-> BB05 ( cond ) i BB02 [0001] 1 BB01 0 [013..01A) (throw ) i rare hascall gcsafe BB03 [0002] 1 BB05 2 [01A..045)-> BB05 ( cond ) i Loop Loop0 idxlen bwd bwd-target BB04 [0003] 1 BB03 0.50 [045..05E) (return) i BB05 [0004] 2 BB01,BB03 8 [05E..071)-> BB03 ( cond ) i bwd bwd-src BB06 [0005] 1 BB05 0.50 [071..092) (return) i ----------------------------------------------------------------------------------------------------------------------------------------- Decided to reverse conditional branch at block BB01 branch to BB05 since it falls into a rarely run block Relocated hot blocks (BB05 .. BB06) by reversing conditional jump at BB01 Rethreading STMT00000 Relocated blocks [BB05..BB06] inserted after BB01 After this change in fgReorderBlocks the BB graph is: ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..013)-> BB02 ( cond ) i BB05 [0004] 2 BB01,BB03 8 [05E..071)-> BB03 ( cond ) i bwd bwd-src BB06 [0005] 1 BB05 0.50 [071..092) (return) i BB02 [0001] 1 BB01 0 [013..01A) (throw ) i rare hascall gcsafe BB03 [0002] 1 BB05 2 [01A..045)-> BB05 ( cond ) i Loop Loop0 idxlen bwd bwd-target BB04 [0003] 1 BB03 0.50 [045..05E) (return) i ----------------------------------------------------------------------------------------------------------------------------------------- Decided to relocate block(s) after block BB06 since they are rarely run block(s) Relocated rarely run block BB02 Relocated block [BB02..BB02] inserted after BB04 at the end of method After this change in fgReorderBlocks the BB graph is: ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..013)-> BB02 ( cond ) i BB05 [0004] 2 BB01,BB03 8 [05E..071)-> BB03 ( cond ) i bwd bwd-src BB06 [0005] 1 BB05 0.50 [071..092) (return) i BB03 [0002] 1 BB05 2 [01A..045)-> BB05 ( cond ) i Loop Loop0 idxlen bwd bwd-target BB04 [0003] 1 BB03 0.50 [045..05E) (return) i BB02 [0001] 1 BB01 0 [013..01A) (throw ) i rare hascall gcsafe ----------------------------------------------------------------------------------------------------------------------------------------- *************** In fgUpdateFlowGraph() Before updating the flow graph: ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..013)-> BB02 ( cond ) i BB05 [0004] 2 BB01,BB03 8 [05E..071)-> BB03 ( cond ) i bwd bwd-src BB06 [0005] 1 BB05 0.50 [071..092) (return) i BB03 [0002] 1 BB05 2 [01A..045)-> BB05 ( cond ) i Loop Loop0 idxlen bwd bwd-target BB04 [0003] 1 BB03 0.50 [045..05E) (return) i BB02 [0001] 1 BB01 0 [013..01A) (throw ) i rare hascall gcsafe ----------------------------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist *************** Finishing PHASE Optimize layout Trees after Optimize layout ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..013)-> BB02 ( cond ) i BB05 [0004] 2 BB01,BB03 8 [05E..071)-> BB03 ( cond ) i bwd bwd-src BB06 [0005] 1 BB05 0.50 [071..092) (return) i BB03 [0002] 1 BB05 2 [01A..045)-> BB05 ( cond ) i Loop Loop0 idxlen bwd bwd-target BB04 [0003] 1 BB03 0.50 [045..05E) (return) i BB02 [0001] 1 BB01 0 [013..01A) (throw ) i rare hascall gcsafe ----------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [000..013) -> BB02 (cond), preds={} succs={BB05,BB02} ***** BB01 STMT00000 ( 0x000[E-] ... 0x011 ) N011 ( 13, 10) [000006] ---XGO----- * JTRUE void N010 ( 11, 8) [000005] J--XGO-N--- \--* NE int N004 ( 4, 3) [000001] ---XG------ +--* IND int N003 ( 3, 4) [000084] -------N--- | \--* ADD byref $140 N001 ( 1, 1) [000000] ----------- | +--* LCL_VAR byref V00 this u:1 $80 N002 ( 1, 2) [000083] ----------- | \--* CNS_INT long 8 $100 N009 ( 6, 4) [000004] ---XGO----- \--* IND int N008 ( 5, 5) [000086] ----GO-N--- \--* ADD byref N006 ( 3, 2) [000003] n---GO----- +--* IND ref N005 ( 1, 1) [000002] ----------- | \--* LCL_VAR byref V00 this u:1 $80 N007 ( 1, 2) [000085] ----------- \--* CNS_INT long 68 Fseq[_version] $101 ------------ BB05 [05E..071) -> BB03 (cond), preds={BB01,BB03} succs={BB06,BB03} ***** BB05 STMT00001 ( 0x05E[E-] ... 0x06F ) N011 ( 13, 10) [000013] ---XGO----- * JTRUE void N010 ( 11, 8) [000012] N--XGO-N-U- \--* LT int N004 ( 4, 3) [000008] n---GO----- +--* IND int N003 ( 3, 4) [000129] -------N--- | \--* ADD byref $145 N001 ( 1, 1) [000007] ----------- | +--* LCL_VAR byref V00 this u:1 $80 N002 ( 1, 2) [000128] ----------- | \--* CNS_INT long 12 $102 N009 ( 6, 4) [000011] ---XGO----- \--* IND int N008 ( 5, 5) [000131] ----GO-N--- \--* ADD byref N006 ( 3, 2) [000010] n---GO----- +--* IND ref N005 ( 1, 1) [000009] ----------- | \--* LCL_VAR byref V00 this u:1 $80 N007 ( 1, 2) [000130] ----------- \--* CNS_INT long 56 Fseq[_count] $103 ------------ BB06 [071..092) (return), preds={BB05} succs={} ***** BB06 STMT00011 ( 0x071[E-] ... 0x07F ) N012 ( 13, 11) [000061] -A-XGO--R-- * ASG int N011 ( 4, 3) [000060] n---GO-N--- +--* IND int $25a N010 ( 3, 4) [000133] -------N--- | \--* ADD byref $145 N008 ( 1, 1) [000054] ----------- | +--* LCL_VAR byref V00 this u:1 $80 N009 ( 1, 2) [000132] ----------- | \--* CNS_INT long 12 $102 N007 ( 8, 7) [000059] ---XGO----- \--* ADD int N005 ( 6, 4) [000057] ---XGO----- +--* IND int N004 ( 5, 5) [000135] ----GO-N--- | \--* ADD byref N002 ( 3, 2) [000056] n---GO----- | +--* IND ref N001 ( 1, 1) [000055] ----------- | | \--* LCL_VAR byref V00 this u:1 $80 N003 ( 1, 2) [000134] ----------- | \--* CNS_INT long 56 Fseq[_count] $103 N006 ( 1, 2) [000058] ----------- \--* CNS_INT int 1 $44 ***** BB06 STMT00012 ( 0x084[E-] ... 0x08B ) N006 ( 11, 11) [000066] IA--G------ * ASG struct (init) $VN.Void N004 ( 9, 8) [000064] n---G--N--- +--* OBJ struct $VN.Void N003 ( 3, 4) [000137] ----------- | \--* ADD byref $152 N001 ( 1, 1) [000062] ----------- | +--* LCL_VAR byref V00 this u:1 (last use) $80 N002 ( 1, 2) [000136] ----------- | \--* CNS_INT long 20 $10b N005 ( 1, 2) [000065] ----------- \--* CNS_INT int 0 $40 ***** BB06 STMT00013 ( 0x090[E-] ... 0x091 ) N002 ( 2, 3) [000068] ----------- * RETURN int $VN.Void N001 ( 1, 2) [000138] ----------- \--* CNS_INT int 0 $40 ------------ BB03 [01A..045) -> BB05 (cond), preds={BB05} succs={BB04,BB05} ***** BB03 STMT00003 ( 0x01A[E-] ... 0x02C ) N007 ( 6, 4) [000023] -A-XGO--R-- * ASG ref N006 ( 1, 1) [000022] D------N--- +--* LCL_VAR ref V04 tmp1 d:1 $VN.Void N005 ( 6, 4) [000016] ---XGO----- \--* IND ref N004 ( 5, 5) [000088] ----GO-N--- \--* ADD byref N002 ( 3, 2) [000015] n---GO----- +--* IND ref N001 ( 1, 1) [000014] ----------- | \--* LCL_VAR byref V00 this u:1 $80 N003 ( 1, 2) [000087] ----------- \--* CNS_INT long 16 Fseq[_entries] $104 ***** BB03 STMT00002 ( 0x01A[E-] ... ??? ) N006 ( 4, 3) [000021] -A--GO--R-- * ASG int $25a N005 ( 1, 1) [000020] D------N--- +--* LCL_VAR int V02 loc1 d:1 $VN.Void N004 ( 4, 3) [000019] n---GO----- \--* IND int N003 ( 3, 4) [000090] -------N--- \--* ADD byref $145 N001 ( 1, 1) [000018] ----------- +--* LCL_VAR byref V00 this u:1 $80 N002 ( 1, 2) [000089] ----------- \--* CNS_INT long 12 $102 ***** BB03 STMT00004 ( ??? ... 0x030 ) N008 ( 8, 8) [000029] -A--GO--R-- * ASG int $25a N007 ( 4, 3) [000028] n---GO-N--- +--* IND int $25a N006 ( 3, 4) [000092] -------N--- | \--* ADD byref $145 N004 ( 1, 1) [000017] ----------- | +--* LCL_VAR byref V00 this u:1 $80 N005 ( 1, 2) [000091] ----------- | \--* CNS_INT long 12 $102 N003 ( 3, 4) [000027] ----------- \--* ADD int N001 ( 1, 1) [000025] ----------- +--* LCL_VAR int V02 loc1 u:1 N002 ( 1, 2) [000026] ----------- \--* CNS_INT int 1 $44 ***** BB03 STMT00005 ( ??? ... 0x03B ) N016 ( 15, 21) [000033] -A-XGO--R-- * ASG byref N015 ( 1, 1) [000032] D------N--- +--* LCL_VAR byref V01 loc0 d:1 $VN.Void N014 ( 15, 21) [000104] ---X-O----- \--* COMMA byref N004 ( 8, 11) [000096] ---X-O----- +--* BOUNDS_CHECK_Rng void N001 ( 1, 1) [000030] ----------- | +--* LCL_VAR int V02 loc1 u:1 N003 ( 3, 3) [000095] ---X------- | \--* ARR_LENGTH int N002 ( 1, 1) [000024] ----------- | \--* LCL_VAR ref V04 tmp1 u:1 N013 ( 7, 10) [000103] -----O----- \--* ARR_ADDR byref System.Collections.Generic.Dictionary`2+Entry[] $400 N012 ( 7, 10) [000102] -------N--- \--* ADD byref N005 ( 1, 1) [000093] ----------- +--* LCL_VAR ref V04 tmp1 u:1 (last use) N011 ( 6, 9) [000101] ----------- \--* ADD long N009 ( 4, 6) [000099] ----------- +--* LSH long N007 ( 2, 3) [000097] ---------U- | +--* CAST long <- uint N006 ( 1, 1) [000094] ----------- | | \--* LCL_VAR int V02 loc1 u:1 (last use) N008 ( 1, 2) [000098] -------N--- | \--* CNS_INT long 4 $105 N010 ( 1, 2) [000100] ----------- \--* CNS_INT long 16 $104 ***** BB03 STMT00006 ( 0x03C[E-] ... 0x043 ) N007 ( 8, 8) [000038] ---XG------ * JTRUE void $268 N006 ( 6, 6) [000037] J--XG--N--- \--* LT int N004 ( 4, 3) [000035] ---XG------ +--* IND int N003 ( 3, 4) [000106] -------N--- | \--* ADD byref $401 N001 ( 1, 1) [000034] ----------- | +--* LCL_VAR byref V01 loc0 u:1 $400 N002 ( 1, 2) [000105] ----------- | \--* CNS_INT long 4 $105 N005 ( 1, 2) [000036] ----------- \--* CNS_INT int -1 $41 ------------ BB04 [045..05E) (return), preds={BB03} succs={} ***** BB04 STMT00017 ( ??? ... ??? ) N006 ( 8, 6) [000079] -A--GO--R-- * ASG int $26a N005 ( 3, 2) [000078] D------N--- +--* LCL_VAR int V06 tmp3 d:1 $VN.Void N004 ( 4, 3) [000041] n---GO----- \--* IND int N003 ( 3, 4) [000108] -------N--- \--* ADD byref $402 N001 ( 1, 1) [000040] ----------- +--* LCL_VAR byref V01 loc0 u:1 $400 N002 ( 1, 2) [000107] ----------- \--* CNS_INT long 8 $100 ***** BB04 STMT00018 ( ??? ... ??? ) N006 ( 8, 6) [000081] -A--GO--R-- * ASG int $26c N005 ( 3, 2) [000080] D------N--- +--* LCL_VAR int V07 tmp4 d:1 $VN.Void N004 ( 4, 3) [000043] n---GO----- \--* IND int N003 ( 3, 4) [000110] -------N--- \--* ADD byref $403 N001 ( 1, 1) [000042] ----------- +--* LCL_VAR byref V01 loc0 u:1 (last use) $400 N002 ( 1, 2) [000109] ----------- \--* CNS_INT long 12 $102 ***** BB04 STMT00015 ( INL01 @ 0x000[E-] ... ??? ) <- INLRT @ ??? N003 ( 7, 5) [000073] -A------R-- * ASG int $VN.Void N002 ( 3, 2) [000072] D------N--- +--* LCL_VAR int V08 tmp5 d:1 $VN.Void N001 ( 3, 2) [000071] ----------- \--* LCL_VAR int V06 tmp3 u:1 (last use) ***** BB04 STMT00016 ( INL01 @ 0x007[E-] ... ??? ) <- INLRT @ ??? N003 ( 7, 5) [000077] -A------R-- * ASG int $VN.Void N002 ( 3, 2) [000076] D------N--- +--* LCL_VAR int V09 tmp6 d:1 $VN.Void N001 ( 3, 2) [000075] ----------- \--* LCL_VAR int V07 tmp4 u:1 (last use) ***** BB04 STMT00009 ( 0x057[--] ... ??? ) N017 ( 18, 15) [000126] -A---O----- * COMMA void $25a N010 ( 10, 9) [000139] -A---O----- +--* COMMA void $25a N005 ( 3, 4) [000114] -A------R-- | +--* ASG byref $VN.Void N004 ( 1, 1) [000113] D------N--- | | +--* LCL_VAR byref V10 tmp7 d:1 $VN.Void N003 ( 3, 4) [000112] ----------- | | \--* ADD byref $152 N001 ( 1, 1) [000039] ----------- | | +--* LCL_VAR byref V00 this u:1 (last use) $80 N002 ( 1, 2) [000111] ----------- | | \--* CNS_INT long 20 $10b N009 ( 7, 5) [000118] -A---O----- | \--* ASG int $25a N007 ( 3, 2) [000116] n----O-N--- | +--* IND int $25a N006 ( 1, 1) [000115] ----------- | | \--* LCL_VAR byref V10 tmp7 u:1 $152 N008 ( 3, 2) [000117] ----------- | \--* LCL_VAR int V08 tmp5 u:1 (last use) N016 ( 8, 6) [000125] -A---O----- \--* ASG int $25a N014 ( 4, 3) [000123] n----O-N--- +--* IND int $25a N013 ( 3, 4) [000122] -------N--- | \--* ADD byref $153 N011 ( 1, 1) [000120] ----------- | +--* LCL_VAR byref V10 tmp7 u:1 (last use) $152 N012 ( 1, 2) [000121] ----------- | \--* CNS_INT long 4 $105 N015 ( 3, 2) [000124] ----------- \--* LCL_VAR int V09 tmp6 u:1 (last use) ***** BB04 STMT00010 ( 0x05C[E-] ... 0x05D ) N002 ( 2, 3) [000053] ----------- * RETURN int $VN.Void N001 ( 1, 2) [000127] ----------- \--* CNS_INT int 1 $44 ------------ BB02 [013..01A) (throw), preds={BB01} succs={} ***** BB02 STMT00014 ( 0x013[E-] ... 0x018 ) N001 ( 14, 2) [000069] --CXG------ * CALL void System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion() $VN.Void ------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist *************** In fgDebugCheckLoopTable: loop table not valid *************** 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 Rewriting GT_ASG(OBJ(X), Y) to STORE_OBJ(X,Y): N001 ( 1, 1) [000062] ----------- t62 = LCL_VAR byref V00 this u:1 (last use) $80 N002 ( 1, 2) [000136] ----------- t136 = CNS_INT long 20 $10b /--* t62 byref +--* t136 long N003 ( 3, 4) [000137] ----------- t137 = * ADD byref $152 N005 ( 1, 2) [000065] ----------- t65 = CNS_INT int 0 $40 /--* t137 byref +--* t65 int N004 ( 9, 8) [000064] nA--G------ * STORE_OBJ struct (init) $VN.Void rewriting asg(LCL_VAR, X) to STORE_LCL_VAR(X) N007 ( 6, 4) [000023] DA-XGO----- * STORE_LCL_VAR ref V04 tmp1 d:1 rewriting asg(LCL_VAR, X) to STORE_LCL_VAR(X) N006 ( 4, 3) [000021] DA--GO----- * STORE_LCL_VAR int V02 loc1 d:1 rewriting asg(LCL_VAR, X) to STORE_LCL_VAR(X) N016 ( 15, 21) [000033] DA-XGO----- * STORE_LCL_VAR byref V01 loc0 d:1 rewriting asg(LCL_VAR, X) to STORE_LCL_VAR(X) N006 ( 8, 6) [000079] DA--GO----- * STORE_LCL_VAR int V06 tmp3 d:1 rewriting asg(LCL_VAR, X) to STORE_LCL_VAR(X) N006 ( 8, 6) [000081] DA--GO----- * STORE_LCL_VAR int V07 tmp4 d:1 rewriting asg(LCL_VAR, X) to STORE_LCL_VAR(X) N003 ( 7, 5) [000073] DA--------- * STORE_LCL_VAR int V08 tmp5 d:1 rewriting asg(LCL_VAR, X) to STORE_LCL_VAR(X) N003 ( 7, 5) [000077] DA--------- * STORE_LCL_VAR int V09 tmp6 d:1 rewriting asg(LCL_VAR, X) to STORE_LCL_VAR(X) N005 ( 3, 4) [000114] DA--------- * STORE_LCL_VAR byref V10 tmp7 d:1 *************** Finishing PHASE Rationalize IR Trees after Rationalize IR ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..013)-> BB02 ( cond ) i LIR BB05 [0004] 2 BB01,BB03 8 [05E..071)-> BB03 ( cond ) i bwd bwd-src LIR BB06 [0005] 1 BB05 0.50 [071..092) (return) i LIR BB03 [0002] 1 BB05 2 [01A..045)-> BB05 ( cond ) i Loop Loop0 idxlen bwd bwd-target LIR BB04 [0003] 1 BB03 0.50 [045..05E) (return) i LIR BB02 [0001] 1 BB01 0 [013..01A) (throw ) i rare hascall gcsafe LIR ----------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [000..013) -> BB02 (cond), preds={} succs={BB05,BB02} [000140] ----------- IL_OFFSET void INLRT @ 0x000[E-] N001 ( 1, 1) [000000] ----------- t0 = LCL_VAR byref V00 this u:1 $80 N002 ( 1, 2) [000083] ----------- t83 = CNS_INT long 8 $100 /--* t0 byref +--* t83 long N003 ( 3, 4) [000084] -------N--- t84 = * ADD byref $140 /--* t84 byref N004 ( 4, 3) [000001] ---XG------ t1 = * IND int N005 ( 1, 1) [000002] ----------- t2 = LCL_VAR byref V00 this u:1 $80 /--* t2 byref N006 ( 3, 2) [000003] n---GO----- t3 = * IND ref N007 ( 1, 2) [000085] ----------- t85 = CNS_INT long 68 Fseq[_version] $101 /--* t3 ref +--* t85 long N008 ( 5, 5) [000086] ----GO-N--- t86 = * ADD byref /--* t86 byref N009 ( 6, 4) [000004] ---XGO----- t4 = * IND int /--* t1 int +--* t4 int N010 ( 11, 8) [000005] J--XGO-N--- t5 = * NE int /--* t5 int N011 ( 13, 10) [000006] ---XGO----- * JTRUE void ------------ BB05 [05E..071) -> BB03 (cond), preds={BB01,BB03} succs={BB06,BB03} [000141] ----------- IL_OFFSET void INLRT @ 0x05E[E-] N001 ( 1, 1) [000007] ----------- t7 = LCL_VAR byref V00 this u:1 $80 N002 ( 1, 2) [000128] ----------- t128 = CNS_INT long 12 $102 /--* t7 byref +--* t128 long N003 ( 3, 4) [000129] -------N--- t129 = * ADD byref $145 /--* t129 byref N004 ( 4, 3) [000008] n---GO----- t8 = * IND int N005 ( 1, 1) [000009] ----------- t9 = LCL_VAR byref V00 this u:1 $80 /--* t9 byref N006 ( 3, 2) [000010] n---GO----- t10 = * IND ref N007 ( 1, 2) [000130] ----------- t130 = CNS_INT long 56 Fseq[_count] $103 /--* t10 ref +--* t130 long N008 ( 5, 5) [000131] ----GO-N--- t131 = * ADD byref /--* t131 byref N009 ( 6, 4) [000011] ---XGO----- t11 = * IND int /--* t8 int +--* t11 int N010 ( 11, 8) [000012] N--XGO-N-U- t12 = * LT int /--* t12 int N011 ( 13, 10) [000013] ---XGO----- * JTRUE void ------------ BB06 [071..092) (return), preds={BB05} succs={} [000142] ----------- IL_OFFSET void INLRT @ 0x071[E-] N001 ( 1, 1) [000055] ----------- t55 = LCL_VAR byref V00 this u:1 $80 /--* t55 byref N002 ( 3, 2) [000056] n---GO----- t56 = * IND ref N003 ( 1, 2) [000134] ----------- t134 = CNS_INT long 56 Fseq[_count] $103 /--* t56 ref +--* t134 long N004 ( 5, 5) [000135] ----GO-N--- t135 = * ADD byref /--* t135 byref N005 ( 6, 4) [000057] ---XGO----- t57 = * IND int N006 ( 1, 2) [000058] ----------- t58 = CNS_INT int 1 $44 /--* t57 int +--* t58 int N007 ( 8, 7) [000059] ---XGO----- t59 = * ADD int N008 ( 1, 1) [000054] ----------- t54 = LCL_VAR byref V00 this u:1 $80 N009 ( 1, 2) [000132] ----------- t132 = CNS_INT long 12 $102 /--* t54 byref +--* t132 long N010 ( 3, 4) [000133] -------N--- t133 = * ADD byref $145 /--* t133 byref +--* t59 int [000143] -A-XGO----- * STOREIND int [000144] ----------- IL_OFFSET void INLRT @ 0x084[E-] N001 ( 1, 1) [000062] ----------- t62 = LCL_VAR byref V00 this u:1 (last use) $80 N002 ( 1, 2) [000136] ----------- t136 = CNS_INT long 20 $10b /--* t62 byref +--* t136 long N003 ( 3, 4) [000137] ----------- t137 = * ADD byref $152 N005 ( 1, 2) [000065] ----------- t65 = CNS_INT int 0 $40 /--* t137 byref +--* t65 int N004 ( 9, 8) [000064] nA--G------ * STORE_OBJ struct (init) $VN.Void [000145] ----------- IL_OFFSET void INLRT @ 0x090[E-] N001 ( 1, 2) [000138] ----------- t138 = CNS_INT int 0 $40 /--* t138 int N002 ( 2, 3) [000068] ----------- * RETURN int $VN.Void ------------ BB03 [01A..045) -> BB05 (cond), preds={BB05} succs={BB04,BB05} [000146] ----------- IL_OFFSET void INLRT @ 0x01A[E-] N001 ( 1, 1) [000014] ----------- t14 = LCL_VAR byref V00 this u:1 $80 /--* t14 byref N002 ( 3, 2) [000015] n---GO----- t15 = * IND ref N003 ( 1, 2) [000087] ----------- t87 = CNS_INT long 16 Fseq[_entries] $104 /--* t15 ref +--* t87 long N004 ( 5, 5) [000088] ----GO-N--- t88 = * ADD byref /--* t88 byref N005 ( 6, 4) [000016] ---XGO----- t16 = * IND ref /--* t16 ref N007 ( 6, 4) [000023] DA-XGO----- * STORE_LCL_VAR ref V04 tmp1 d:1 [000147] ----------- IL_OFFSET void INLRT @ 0x01A[E-] N001 ( 1, 1) [000018] ----------- t18 = LCL_VAR byref V00 this u:1 $80 N002 ( 1, 2) [000089] ----------- t89 = CNS_INT long 12 $102 /--* t18 byref +--* t89 long N003 ( 3, 4) [000090] -------N--- t90 = * ADD byref $145 /--* t90 byref N004 ( 4, 3) [000019] n---GO----- t19 = * IND int /--* t19 int N006 ( 4, 3) [000021] DA--GO----- * STORE_LCL_VAR int V02 loc1 d:1 N001 ( 1, 1) [000025] ----------- t25 = LCL_VAR int V02 loc1 u:1 N002 ( 1, 2) [000026] ----------- t26 = CNS_INT int 1 $44 /--* t25 int +--* t26 int N003 ( 3, 4) [000027] ----------- t27 = * ADD int N004 ( 1, 1) [000017] ----------- t17 = LCL_VAR byref V00 this u:1 $80 N005 ( 1, 2) [000091] ----------- t91 = CNS_INT long 12 $102 /--* t17 byref +--* t91 long N006 ( 3, 4) [000092] -------N--- t92 = * ADD byref $145 /--* t92 byref +--* t27 int [000148] -A--GO----- * STOREIND int N001 ( 1, 1) [000030] ----------- t30 = LCL_VAR int V02 loc1 u:1 N002 ( 1, 1) [000024] ----------- t24 = LCL_VAR ref V04 tmp1 u:1 /--* t24 ref N003 ( 3, 3) [000095] ---X------- t95 = * ARR_LENGTH int /--* t30 int +--* t95 int N004 ( 8, 11) [000096] ---X-O----- * BOUNDS_CHECK_Rng void N005 ( 1, 1) [000093] ----------- t93 = LCL_VAR ref V04 tmp1 u:1 (last use) N006 ( 1, 1) [000094] ----------- t94 = LCL_VAR int V02 loc1 u:1 (last use) /--* t94 int N007 ( 2, 3) [000097] ---------U- t97 = * CAST long <- uint N008 ( 1, 2) [000098] -------N--- t98 = CNS_INT long 4 $105 /--* t97 long +--* t98 long N009 ( 4, 6) [000099] ----------- t99 = * LSH long N010 ( 1, 2) [000100] ----------- t100 = CNS_INT long 16 $104 /--* t99 long +--* t100 long N011 ( 6, 9) [000101] ----------- t101 = * ADD long /--* t93 ref +--* t101 long N012 ( 7, 10) [000102] -------N--- t102 = * ADD byref /--* t102 byref N016 ( 15, 21) [000033] DA-XGO----- * STORE_LCL_VAR byref V01 loc0 d:1 [000149] ----------- IL_OFFSET void INLRT @ 0x03C[E-] N001 ( 1, 1) [000034] ----------- t34 = LCL_VAR byref V01 loc0 u:1 $400 N002 ( 1, 2) [000105] ----------- t105 = CNS_INT long 4 $105 /--* t34 byref +--* t105 long N003 ( 3, 4) [000106] -------N--- t106 = * ADD byref $401 /--* t106 byref N004 ( 4, 3) [000035] ---XG------ t35 = * IND int N005 ( 1, 2) [000036] ----------- t36 = CNS_INT int -1 $41 /--* t35 int +--* t36 int N006 ( 6, 6) [000037] J--XG--N--- t37 = * LT int /--* t37 int N007 ( 8, 8) [000038] ---XG------ * JTRUE void $268 ------------ BB04 [045..05E) (return), preds={BB03} succs={} N001 ( 1, 1) [000040] ----------- t40 = LCL_VAR byref V01 loc0 u:1 $400 N002 ( 1, 2) [000107] ----------- t107 = CNS_INT long 8 $100 /--* t40 byref +--* t107 long N003 ( 3, 4) [000108] -------N--- t108 = * ADD byref $402 /--* t108 byref N004 ( 4, 3) [000041] n---GO----- t41 = * IND int /--* t41 int N006 ( 8, 6) [000079] DA--GO----- * STORE_LCL_VAR int V06 tmp3 d:1 N001 ( 1, 1) [000042] ----------- t42 = LCL_VAR byref V01 loc0 u:1 (last use) $400 N002 ( 1, 2) [000109] ----------- t109 = CNS_INT long 12 $102 /--* t42 byref +--* t109 long N003 ( 3, 4) [000110] -------N--- t110 = * ADD byref $403 /--* t110 byref N004 ( 4, 3) [000043] n---GO----- t43 = * IND int /--* t43 int N006 ( 8, 6) [000081] DA--GO----- * STORE_LCL_VAR int V07 tmp4 d:1 [000150] ----------- IL_OFFSET void INL01 @ 0x000[E-] <- INLRT @ ??? N001 ( 3, 2) [000071] ----------- t71 = LCL_VAR int V06 tmp3 u:1 (last use) /--* t71 int N003 ( 7, 5) [000073] DA--------- * STORE_LCL_VAR int V08 tmp5 d:1 [000151] ----------- IL_OFFSET void INL01 @ 0x007[E-] <- INLRT @ ??? N001 ( 3, 2) [000075] ----------- t75 = LCL_VAR int V07 tmp4 u:1 (last use) /--* t75 int N003 ( 7, 5) [000077] DA--------- * STORE_LCL_VAR int V09 tmp6 d:1 [000152] ----------- IL_OFFSET void INLRT @ 0x057[--] N001 ( 1, 1) [000039] ----------- t39 = LCL_VAR byref V00 this u:1 (last use) $80 N002 ( 1, 2) [000111] ----------- t111 = CNS_INT long 20 $10b /--* t39 byref +--* t111 long N003 ( 3, 4) [000112] ----------- t112 = * ADD byref $152 /--* t112 byref N005 ( 3, 4) [000114] DA--------- * STORE_LCL_VAR byref V10 tmp7 d:1 N006 ( 1, 1) [000115] ----------- t115 = LCL_VAR byref V10 tmp7 u:1 $152 N008 ( 3, 2) [000117] ----------- t117 = LCL_VAR int V08 tmp5 u:1 (last use) /--* t115 byref +--* t117 int [000153] -A---O----- * STOREIND int N011 ( 1, 1) [000120] ----------- t120 = LCL_VAR byref V10 tmp7 u:1 (last use) $152 N012 ( 1, 2) [000121] ----------- t121 = CNS_INT long 4 $105 /--* t120 byref +--* t121 long N013 ( 3, 4) [000122] -------N--- t122 = * ADD byref $153 N015 ( 3, 2) [000124] ----------- t124 = LCL_VAR int V09 tmp6 u:1 (last use) /--* t122 byref +--* t124 int [000154] -A---O----- * STOREIND int [000155] ----------- IL_OFFSET void INLRT @ 0x05C[E-] N001 ( 1, 2) [000127] ----------- t127 = CNS_INT int 1 $44 /--* t127 int N002 ( 2, 3) [000053] ----------- * RETURN int $VN.Void ------------ BB02 [013..01A) (throw), preds={BB01} succs={} [000156] ----------- IL_OFFSET void INLRT @ 0x013[E-] N001 ( 14, 2) [000069] --CXG------ CALL void System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion() $VN.Void ------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist *************** In fgDebugCheckLoopTable: loop table not valid *************** Starting PHASE Do 'simple' lowering Lower ARR_LENGTH: N002 ( 1, 1) [000024] ----------- t24 = LCL_VAR ref V04 tmp1 u:1 /--* t24 ref N003 ( 3, 3) [000095] ---X------- t95 = * ARR_LENGTH int After Lower IND: N002 ( 1, 1) [000024] ----------- t24 = LCL_VAR ref V04 tmp1 u:1 [000157] ----------- t157 = CNS_INT long 8 /--* t24 ref +--* t157 long [000158] ----------- t158 = * ADD byref /--* t158 byref N003 ( 3, 3) [000095] ---X------- t95 = * IND int *** Computing fgRngChkTarget for block BB03 fgNewBBinRegion(jumpKind=3, tryIndex=0, hndIndex=0, putInFilter=false, runRarely=true, insertAtEnd=true): inserting after BB02 New Basic Block BB07 [0007] created. fgAddCodeRef - Add BB in non-EH region for RNGCHK_FAIL, new block BB07 [0007] Initializing arg info for 159.CALL: Args for call [000159] CALL after AddFinalArgsAndDetermineABIInfo: Morphing args for 159.CALL: Args for [000159].CALL after fgMorphArgs: OutgoingArgsStackSize is 0 outgoingArgSpaceSize 0 sufficient for call [000069], which needs 0 outgoingArgSpaceSize 0 sufficient for call [000159], which needs 0 *************** Finishing PHASE Do 'simple' lowering Trees after Do 'simple' lowering ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..013)-> BB02 ( cond ) i LIR BB05 [0004] 2 BB01,BB03 8 [05E..071)-> BB03 ( cond ) i bwd bwd-src LIR BB06 [0005] 1 BB05 0.50 [071..092) (return) i LIR BB03 [0002] 1 BB05 2 [01A..045)-> BB05 ( cond ) i Loop Loop0 idxlen bwd bwd-target LIR BB04 [0003] 1 BB03 0.50 [045..05E) (return) i LIR BB02 [0001] 1 BB01 0 [013..01A) (throw ) i rare hascall gcsafe LIR BB07 [0007] 0 0 [???..???) (throw ) keep i internal rare LIR ----------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [000..013) -> BB02 (cond), preds={} succs={BB05,BB02} [000140] ----------- IL_OFFSET void INLRT @ 0x000[E-] N001 ( 1, 1) [000000] ----------- t0 = LCL_VAR byref V00 this u:1 $80 N002 ( 1, 2) [000083] ----------- t83 = CNS_INT long 8 $100 /--* t0 byref +--* t83 long N003 ( 3, 4) [000084] -------N--- t84 = * ADD byref $140 /--* t84 byref N004 ( 4, 3) [000001] ---XG------ t1 = * IND int N005 ( 1, 1) [000002] ----------- t2 = LCL_VAR byref V00 this u:1 $80 /--* t2 byref N006 ( 3, 2) [000003] n---GO----- t3 = * IND ref N007 ( 1, 2) [000085] ----------- t85 = CNS_INT long 68 Fseq[_version] $101 /--* t3 ref +--* t85 long N008 ( 5, 5) [000086] ----GO-N--- t86 = * ADD byref /--* t86 byref N009 ( 6, 4) [000004] ---XGO----- t4 = * IND int /--* t1 int +--* t4 int N010 ( 11, 8) [000005] J--XGO-N--- t5 = * NE int /--* t5 int N011 ( 13, 10) [000006] ---XGO----- * JTRUE void ------------ BB05 [05E..071) -> BB03 (cond), preds={BB01,BB03} succs={BB06,BB03} [000141] ----------- IL_OFFSET void INLRT @ 0x05E[E-] N001 ( 1, 1) [000007] ----------- t7 = LCL_VAR byref V00 this u:1 $80 N002 ( 1, 2) [000128] ----------- t128 = CNS_INT long 12 $102 /--* t7 byref +--* t128 long N003 ( 3, 4) [000129] -------N--- t129 = * ADD byref $145 /--* t129 byref N004 ( 4, 3) [000008] n---GO----- t8 = * IND int N005 ( 1, 1) [000009] ----------- t9 = LCL_VAR byref V00 this u:1 $80 /--* t9 byref N006 ( 3, 2) [000010] n---GO----- t10 = * IND ref N007 ( 1, 2) [000130] ----------- t130 = CNS_INT long 56 Fseq[_count] $103 /--* t10 ref +--* t130 long N008 ( 5, 5) [000131] ----GO-N--- t131 = * ADD byref /--* t131 byref N009 ( 6, 4) [000011] ---XGO----- t11 = * IND int /--* t8 int +--* t11 int N010 ( 11, 8) [000012] N--XGO-N-U- t12 = * LT int /--* t12 int N011 ( 13, 10) [000013] ---XGO----- * JTRUE void ------------ BB06 [071..092) (return), preds={BB05} succs={} [000142] ----------- IL_OFFSET void INLRT @ 0x071[E-] N001 ( 1, 1) [000055] ----------- t55 = LCL_VAR byref V00 this u:1 $80 /--* t55 byref N002 ( 3, 2) [000056] n---GO----- t56 = * IND ref N003 ( 1, 2) [000134] ----------- t134 = CNS_INT long 56 Fseq[_count] $103 /--* t56 ref +--* t134 long N004 ( 5, 5) [000135] ----GO-N--- t135 = * ADD byref /--* t135 byref N005 ( 6, 4) [000057] ---XGO----- t57 = * IND int N006 ( 1, 2) [000058] ----------- t58 = CNS_INT int 1 $44 /--* t57 int +--* t58 int N007 ( 8, 7) [000059] ---XGO----- t59 = * ADD int N008 ( 1, 1) [000054] ----------- t54 = LCL_VAR byref V00 this u:1 $80 N009 ( 1, 2) [000132] ----------- t132 = CNS_INT long 12 $102 /--* t54 byref +--* t132 long N010 ( 3, 4) [000133] -------N--- t133 = * ADD byref $145 /--* t133 byref +--* t59 int [000143] -A-XGO----- * STOREIND int [000144] ----------- IL_OFFSET void INLRT @ 0x084[E-] N001 ( 1, 1) [000062] ----------- t62 = LCL_VAR byref V00 this u:1 (last use) $80 N002 ( 1, 2) [000136] ----------- t136 = CNS_INT long 20 $10b /--* t62 byref +--* t136 long N003 ( 3, 4) [000137] ----------- t137 = * ADD byref $152 N005 ( 1, 2) [000065] ----------- t65 = CNS_INT int 0 $40 /--* t137 byref +--* t65 int N004 ( 9, 8) [000064] nA--G------ * STORE_OBJ struct (init) $VN.Void [000145] ----------- IL_OFFSET void INLRT @ 0x090[E-] N001 ( 1, 2) [000138] ----------- t138 = CNS_INT int 0 $40 /--* t138 int N002 ( 2, 3) [000068] ----------- * RETURN int $VN.Void ------------ BB03 [01A..045) -> BB05 (cond), preds={BB05} succs={BB04,BB05} [000146] ----------- IL_OFFSET void INLRT @ 0x01A[E-] N001 ( 1, 1) [000014] ----------- t14 = LCL_VAR byref V00 this u:1 $80 /--* t14 byref N002 ( 3, 2) [000015] n---GO----- t15 = * IND ref N003 ( 1, 2) [000087] ----------- t87 = CNS_INT long 16 Fseq[_entries] $104 /--* t15 ref +--* t87 long N004 ( 5, 5) [000088] ----GO-N--- t88 = * ADD byref /--* t88 byref N005 ( 6, 4) [000016] ---XGO----- t16 = * IND ref /--* t16 ref N007 ( 6, 4) [000023] DA-XGO----- * STORE_LCL_VAR ref V04 tmp1 d:1 [000147] ----------- IL_OFFSET void INLRT @ 0x01A[E-] N001 ( 1, 1) [000018] ----------- t18 = LCL_VAR byref V00 this u:1 $80 N002 ( 1, 2) [000089] ----------- t89 = CNS_INT long 12 $102 /--* t18 byref +--* t89 long N003 ( 3, 4) [000090] -------N--- t90 = * ADD byref $145 /--* t90 byref N004 ( 4, 3) [000019] n---GO----- t19 = * IND int /--* t19 int N006 ( 4, 3) [000021] DA--GO----- * STORE_LCL_VAR int V02 loc1 d:1 N001 ( 1, 1) [000025] ----------- t25 = LCL_VAR int V02 loc1 u:1 N002 ( 1, 2) [000026] ----------- t26 = CNS_INT int 1 $44 /--* t25 int +--* t26 int N003 ( 3, 4) [000027] ----------- t27 = * ADD int N004 ( 1, 1) [000017] ----------- t17 = LCL_VAR byref V00 this u:1 $80 N005 ( 1, 2) [000091] ----------- t91 = CNS_INT long 12 $102 /--* t17 byref +--* t91 long N006 ( 3, 4) [000092] -------N--- t92 = * ADD byref $145 /--* t92 byref +--* t27 int [000148] -A--GO----- * STOREIND int N001 ( 1, 1) [000030] ----------- t30 = LCL_VAR int V02 loc1 u:1 N002 ( 1, 1) [000024] ----------- t24 = LCL_VAR ref V04 tmp1 u:1 [000157] ----------- t157 = CNS_INT long 8 /--* t24 ref +--* t157 long [000158] ----------- t158 = * ADD byref /--* t158 byref N003 ( 3, 3) [000095] ---X------- t95 = * IND int /--* t30 int +--* t95 int N004 ( 8, 11) [000096] ---X-O----- * BOUNDS_CHECK_Rng -> BB07 void N005 ( 1, 1) [000093] ----------- t93 = LCL_VAR ref V04 tmp1 u:1 (last use) N006 ( 1, 1) [000094] ----------- t94 = LCL_VAR int V02 loc1 u:1 (last use) /--* t94 int N007 ( 2, 3) [000097] ---------U- t97 = * CAST long <- uint N008 ( 1, 2) [000098] -------N--- t98 = CNS_INT long 4 $105 /--* t97 long +--* t98 long N009 ( 4, 6) [000099] ----------- t99 = * LSH long N010 ( 1, 2) [000100] ----------- t100 = CNS_INT long 16 $104 /--* t99 long +--* t100 long N011 ( 6, 9) [000101] ----------- t101 = * ADD long /--* t93 ref +--* t101 long N012 ( 7, 10) [000102] -------N--- t102 = * ADD byref /--* t102 byref N016 ( 15, 21) [000033] DA-XGO----- * STORE_LCL_VAR byref V01 loc0 d:1 [000149] ----------- IL_OFFSET void INLRT @ 0x03C[E-] N001 ( 1, 1) [000034] ----------- t34 = LCL_VAR byref V01 loc0 u:1 $400 N002 ( 1, 2) [000105] ----------- t105 = CNS_INT long 4 $105 /--* t34 byref +--* t105 long N003 ( 3, 4) [000106] -------N--- t106 = * ADD byref $401 /--* t106 byref N004 ( 4, 3) [000035] ---XG------ t35 = * IND int N005 ( 1, 2) [000036] ----------- t36 = CNS_INT int -1 $41 /--* t35 int +--* t36 int N006 ( 6, 6) [000037] J--XG--N--- t37 = * LT int /--* t37 int N007 ( 8, 8) [000038] ---XG------ * JTRUE void $268 ------------ BB04 [045..05E) (return), preds={BB03} succs={} N001 ( 1, 1) [000040] ----------- t40 = LCL_VAR byref V01 loc0 u:1 $400 N002 ( 1, 2) [000107] ----------- t107 = CNS_INT long 8 $100 /--* t40 byref +--* t107 long N003 ( 3, 4) [000108] -------N--- t108 = * ADD byref $402 /--* t108 byref N004 ( 4, 3) [000041] n---GO----- t41 = * IND int /--* t41 int N006 ( 8, 6) [000079] DA--GO----- * STORE_LCL_VAR int V06 tmp3 d:1 N001 ( 1, 1) [000042] ----------- t42 = LCL_VAR byref V01 loc0 u:1 (last use) $400 N002 ( 1, 2) [000109] ----------- t109 = CNS_INT long 12 $102 /--* t42 byref +--* t109 long N003 ( 3, 4) [000110] -------N--- t110 = * ADD byref $403 /--* t110 byref N004 ( 4, 3) [000043] n---GO----- t43 = * IND int /--* t43 int N006 ( 8, 6) [000081] DA--GO----- * STORE_LCL_VAR int V07 tmp4 d:1 [000150] ----------- IL_OFFSET void INL01 @ 0x000[E-] <- INLRT @ ??? N001 ( 3, 2) [000071] ----------- t71 = LCL_VAR int V06 tmp3 u:1 (last use) /--* t71 int N003 ( 7, 5) [000073] DA--------- * STORE_LCL_VAR int V08 tmp5 d:1 [000151] ----------- IL_OFFSET void INL01 @ 0x007[E-] <- INLRT @ ??? N001 ( 3, 2) [000075] ----------- t75 = LCL_VAR int V07 tmp4 u:1 (last use) /--* t75 int N003 ( 7, 5) [000077] DA--------- * STORE_LCL_VAR int V09 tmp6 d:1 [000152] ----------- IL_OFFSET void INLRT @ 0x057[--] N001 ( 1, 1) [000039] ----------- t39 = LCL_VAR byref V00 this u:1 (last use) $80 N002 ( 1, 2) [000111] ----------- t111 = CNS_INT long 20 $10b /--* t39 byref +--* t111 long N003 ( 3, 4) [000112] ----------- t112 = * ADD byref $152 /--* t112 byref N005 ( 3, 4) [000114] DA--------- * STORE_LCL_VAR byref V10 tmp7 d:1 N006 ( 1, 1) [000115] ----------- t115 = LCL_VAR byref V10 tmp7 u:1 $152 N008 ( 3, 2) [000117] ----------- t117 = LCL_VAR int V08 tmp5 u:1 (last use) /--* t115 byref +--* t117 int [000153] -A---O----- * STOREIND int N011 ( 1, 1) [000120] ----------- t120 = LCL_VAR byref V10 tmp7 u:1 (last use) $152 N012 ( 1, 2) [000121] ----------- t121 = CNS_INT long 4 $105 /--* t120 byref +--* t121 long N013 ( 3, 4) [000122] -------N--- t122 = * ADD byref $153 N015 ( 3, 2) [000124] ----------- t124 = LCL_VAR int V09 tmp6 u:1 (last use) /--* t122 byref +--* t124 int [000154] -A---O----- * STOREIND int [000155] ----------- IL_OFFSET void INLRT @ 0x05C[E-] N001 ( 1, 2) [000127] ----------- t127 = CNS_INT int 1 $44 /--* t127 int N002 ( 2, 3) [000053] ----------- * RETURN int $VN.Void ------------ BB02 [013..01A) (throw), preds={BB01} succs={} [000156] ----------- IL_OFFSET void INLRT @ 0x013[E-] N001 ( 14, 2) [000069] --CXG------ CALL void System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion() $VN.Void ------------ BB07 [???..???) (throw), preds={} succs={} N001 ( 14, 2) [000159] --CXG------ CALL help void CORINFO_HELP_RNGCHKFAIL ------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist *************** In fgDebugCheckLoopTable: loop table not valid *************** Starting PHASE Lowering nodeinfo Addressing mode: Base N001 ( 1, 1) [000000] ----------- * LCL_VAR byref V00 this u:1 $80 + 8 Removing unused node: N002 ( 1, 2) [000083] -c--------- * CNS_INT long 8 $100 New addressing mode node: N003 ( 3, 4) [000084] ----------- * LEA(b+8) byref Addressing mode: Base N006 ( 3, 2) [000003] n---GO----- * IND ref + 68 Removing unused node: N007 ( 1, 2) [000085] -c--------- * CNS_INT long 68 Fseq[_version] $101 New addressing mode node: N008 ( 5, 5) [000086] ----------- * LEA(b+68) byref Addressing mode: Base N001 ( 1, 1) [000007] ----------- * LCL_VAR byref V00 this u:1 $80 + 12 Removing unused node: N002 ( 1, 2) [000128] -c--------- * CNS_INT long 12 $102 New addressing mode node: N003 ( 3, 4) [000129] ----------- * LEA(b+12) byref Addressing mode: Base N006 ( 3, 2) [000010] n---GO----- * IND ref + 56 Removing unused node: N007 ( 1, 2) [000130] -c--------- * CNS_INT long 56 Fseq[_count] $103 New addressing mode node: N008 ( 5, 5) [000131] ----------- * LEA(b+56) byref Addressing mode: Base N002 ( 3, 2) [000056] n---GO----- * IND ref + 56 Removing unused node: N003 ( 1, 2) [000134] -c--------- * CNS_INT long 56 Fseq[_count] $103 New addressing mode node: N004 ( 5, 5) [000135] ----------- * LEA(b+56) byref Addressing mode: Base N008 ( 1, 1) [000054] ----------- * LCL_VAR byref V00 this u:1 $80 + 12 Removing unused node: N009 ( 1, 2) [000132] -c--------- * CNS_INT long 12 $102 New addressing mode node: N010 ( 3, 4) [000133] ----------- * LEA(b+12) byref Replacing STORE_OBJ with STOREIND for [000064] Addressing mode: Base N001 ( 1, 1) [000062] ----------- * LCL_VAR byref V00 this u:1 (last use) $80 + 20 Removing unused node: N002 ( 1, 2) [000136] -c--------- * CNS_INT long 20 $10b New addressing mode node: N003 ( 3, 4) [000137] ----------- * LEA(b+20) byref lowering GT_RETURN N002 ( 2, 3) [000068] ----------- * RETURN int $VN.Void ============Addressing mode: Base N002 ( 3, 2) [000015] n---GO----- * IND ref + 16 Removing unused node: N003 ( 1, 2) [000087] -c--------- * CNS_INT long 16 Fseq[_entries] $104 New addressing mode node: N004 ( 5, 5) [000088] ----------- * LEA(b+16) byref lowering store lcl var/field (before): N001 ( 1, 1) [000014] ----------- t14 = LCL_VAR byref V00 this u:1 $80 /--* t14 byref N002 ( 3, 2) [000015] n---GO----- t15 = * IND ref /--* t15 ref N004 ( 5, 5) [000088] -c--------- t88 = * LEA(b+16) byref /--* t88 byref N005 ( 6, 4) [000016] ---XGO----- t16 = * IND ref /--* t16 ref N007 ( 6, 4) [000023] DA-XGO----- * STORE_LCL_VAR ref V04 tmp1 d:1 lowering store lcl var/field (after): N001 ( 1, 1) [000014] ----------- t14 = LCL_VAR byref V00 this u:1 $80 /--* t14 byref N002 ( 3, 2) [000015] n---GO----- t15 = * IND ref /--* t15 ref N004 ( 5, 5) [000088] -c--------- t88 = * LEA(b+16) byref /--* t88 byref N005 ( 6, 4) [000016] ---XGO----- t16 = * IND ref /--* t16 ref N007 ( 6, 4) [000023] DA-XGO----- * STORE_LCL_VAR ref V04 tmp1 d:1 Addressing mode: Base N001 ( 1, 1) [000018] ----------- * LCL_VAR byref V00 this u:1 $80 + 12 Removing unused node: N002 ( 1, 2) [000089] -c--------- * CNS_INT long 12 $102 New addressing mode node: N003 ( 3, 4) [000090] ----------- * LEA(b+12) byref lowering store lcl var/field (before): N001 ( 1, 1) [000018] ----------- t18 = LCL_VAR byref V00 this u:1 $80 /--* t18 byref N003 ( 3, 4) [000090] -c--------- t90 = * LEA(b+12) byref /--* t90 byref N004 ( 4, 3) [000019] n---GO----- t19 = * IND int /--* t19 int N006 ( 4, 3) [000021] DA--GO----- * STORE_LCL_VAR int V02 loc1 d:1 lowering store lcl var/field (after): N001 ( 1, 1) [000018] ----------- t18 = LCL_VAR byref V00 this u:1 $80 /--* t18 byref N003 ( 3, 4) [000090] -c--------- t90 = * LEA(b+12) byref /--* t90 byref N004 ( 4, 3) [000019] n---GO----- t19 = * IND int /--* t19 int N006 ( 4, 3) [000021] DA--GO----- * STORE_LCL_VAR int V02 loc1 d:1 Addressing mode: Base N004 ( 1, 1) [000017] ----------- * LCL_VAR byref V00 this u:1 $80 + 12 Removing unused node: N005 ( 1, 2) [000091] -c--------- * CNS_INT long 12 $102 New addressing mode node: N006 ( 3, 4) [000092] ----------- * LEA(b+12) byref Addressing mode: Base N002 ( 1, 1) [000024] ----------- * LCL_VAR ref V04 tmp1 u:1 + 8 Removing unused node: [000157] -c--------- * CNS_INT long 8 New addressing mode node: [000158] ----------- * LEA(b+8) byref LowerCast for: N007 ( 2, 3) [000097] ---------U- * CAST long <- uint Recognized ubfix/sbfix pattern in LSH(CAST, CNS). Changing op to GT_BFIZlowering store lcl var/field (before): N005 ( 1, 1) [000093] ----------- t93 = LCL_VAR ref V04 tmp1 u:1 (last use) N006 ( 1, 1) [000094] ----------- t94 = LCL_VAR int V02 loc1 u:1 (last use) /--* t94 int N007 ( 2, 3) [000097] -c-------U- t97 = * CAST long <- uint N008 ( 1, 2) [000098] -c-----N--- t98 = CNS_INT long 4 $105 /--* t97 long +--* t98 long N009 ( 4, 6) [000099] ----------- t99 = * BFIZ long N010 ( 1, 2) [000100] -c--------- t100 = CNS_INT long 16 $104 /--* t99 long +--* t100 long N011 ( 6, 9) [000101] ----------- t101 = * ADD long /--* t93 ref +--* t101 long N012 ( 7, 10) [000102] -------N--- t102 = * ADD byref /--* t102 byref N016 ( 15, 21) [000033] DA-XGO----- * STORE_LCL_VAR byref V01 loc0 d:1 lowering store lcl var/field (after): N005 ( 1, 1) [000093] ----------- t93 = LCL_VAR ref V04 tmp1 u:1 (last use) N006 ( 1, 1) [000094] ----------- t94 = LCL_VAR int V02 loc1 u:1 (last use) /--* t94 int N007 ( 2, 3) [000097] -c-------U- t97 = * CAST long <- uint N008 ( 1, 2) [000098] -c-----N--- t98 = CNS_INT long 4 $105 /--* t97 long +--* t98 long N009 ( 4, 6) [000099] ----------- t99 = * BFIZ long N010 ( 1, 2) [000100] -c--------- t100 = CNS_INT long 16 $104 /--* t99 long +--* t100 long N011 ( 6, 9) [000101] ----------- t101 = * ADD long /--* t93 ref +--* t101 long N012 ( 7, 10) [000102] -------N--- t102 = * ADD byref /--* t102 byref N016 ( 15, 21) [000033] DA-XGO----- * STORE_LCL_VAR byref V01 loc0 d:1 Addressing mode: Base N001 ( 1, 1) [000034] ----------- * LCL_VAR byref V01 loc0 u:1 $400 + 4 Removing unused node: N002 ( 1, 2) [000105] -c--------- * CNS_INT long 4 $105 New addressing mode node: N003 ( 3, 4) [000106] ----------- * LEA(b+4) byref Addressing mode: Base N001 ( 1, 1) [000040] ----------- * LCL_VAR byref V01 loc0 u:1 $400 + 8 Removing unused node: N002 ( 1, 2) [000107] -c--------- * CNS_INT long 8 $100 New addressing mode node: N003 ( 3, 4) [000108] ----------- * LEA(b+8) byref lowering store lcl var/field (before): N001 ( 1, 1) [000040] ----------- t40 = LCL_VAR byref V01 loc0 u:1 $400 /--* t40 byref N003 ( 3, 4) [000108] -c--------- t108 = * LEA(b+8) byref /--* t108 byref N004 ( 4, 3) [000041] n---GO----- t41 = * IND int /--* t41 int N006 ( 8, 6) [000079] DA--GO----- * STORE_LCL_VAR int V06 tmp3 d:1 lowering store lcl var/field (after): N001 ( 1, 1) [000040] ----------- t40 = LCL_VAR byref V01 loc0 u:1 $400 /--* t40 byref N003 ( 3, 4) [000108] -c--------- t108 = * LEA(b+8) byref /--* t108 byref N004 ( 4, 3) [000041] n---GO----- t41 = * IND int /--* t41 int N006 ( 8, 6) [000079] DA--GO----- * STORE_LCL_VAR int V06 tmp3 d:1 Addressing mode: Base N001 ( 1, 1) [000042] ----------- * LCL_VAR byref V01 loc0 u:1 (last use) $400 + 12 Removing unused node: N002 ( 1, 2) [000109] -c--------- * CNS_INT long 12 $102 New addressing mode node: N003 ( 3, 4) [000110] ----------- * LEA(b+12) byref lowering store lcl var/field (before): N001 ( 1, 1) [000042] ----------- t42 = LCL_VAR byref V01 loc0 u:1 (last use) $400 /--* t42 byref N003 ( 3, 4) [000110] -c--------- t110 = * LEA(b+12) byref /--* t110 byref N004 ( 4, 3) [000043] n---GO----- t43 = * IND int /--* t43 int N006 ( 8, 6) [000081] DA--GO----- * STORE_LCL_VAR int V07 tmp4 d:1 lowering store lcl var/field (after): N001 ( 1, 1) [000042] ----------- t42 = LCL_VAR byref V01 loc0 u:1 (last use) $400 /--* t42 byref N003 ( 3, 4) [000110] -c--------- t110 = * LEA(b+12) byref /--* t110 byref N004 ( 4, 3) [000043] n---GO----- t43 = * IND int /--* t43 int N006 ( 8, 6) [000081] DA--GO----- * STORE_LCL_VAR int V07 tmp4 d:1 lowering store lcl var/field (before): N001 ( 3, 2) [000071] ----------- t71 = LCL_VAR int V06 tmp3 u:1 (last use) /--* t71 int N003 ( 7, 5) [000073] DA--------- * STORE_LCL_VAR int V08 tmp5 d:1 lowering store lcl var/field (after): N001 ( 3, 2) [000071] ----------- t71 = LCL_VAR int V06 tmp3 u:1 (last use) /--* t71 int N003 ( 7, 5) [000073] DA--------- * STORE_LCL_VAR int V08 tmp5 d:1 lowering store lcl var/field (before): N001 ( 3, 2) [000075] ----------- t75 = LCL_VAR int V07 tmp4 u:1 (last use) /--* t75 int N003 ( 7, 5) [000077] DA--------- * STORE_LCL_VAR int V09 tmp6 d:1 lowering store lcl var/field (after): N001 ( 3, 2) [000075] ----------- t75 = LCL_VAR int V07 tmp4 u:1 (last use) /--* t75 int N003 ( 7, 5) [000077] DA--------- * STORE_LCL_VAR int V09 tmp6 d:1 lowering store lcl var/field (before): N001 ( 1, 1) [000039] ----------- t39 = LCL_VAR byref V00 this u:1 (last use) $80 N002 ( 1, 2) [000111] -c--------- t111 = CNS_INT long 20 $10b /--* t39 byref +--* t111 long N003 ( 3, 4) [000112] ----------- t112 = * ADD byref $152 /--* t112 byref N005 ( 3, 4) [000114] DA--------- * STORE_LCL_VAR byref V10 tmp7 d:1 lowering store lcl var/field (after): N001 ( 1, 1) [000039] ----------- t39 = LCL_VAR byref V00 this u:1 (last use) $80 N002 ( 1, 2) [000111] -c--------- t111 = CNS_INT long 20 $10b /--* t39 byref +--* t111 long N003 ( 3, 4) [000112] ----------- t112 = * ADD byref $152 /--* t112 byref N005 ( 3, 4) [000114] DA--------- * STORE_LCL_VAR byref V10 tmp7 d:1 Addressing mode: Base N011 ( 1, 1) [000120] ----------- * LCL_VAR byref V10 tmp7 u:1 (last use) $152 + 4 Removing unused node: N012 ( 1, 2) [000121] -c--------- * CNS_INT long 4 $105 New addressing mode node: N013 ( 3, 4) [000122] ----------- * LEA(b+4) byref lowering GT_RETURN N002 ( 2, 3) [000053] ----------- * RETURN int $VN.Void ============lowering call (before): N001 ( 14, 2) [000069] --CXG------ CALL void System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion() $VN.Void args: ====== late: ====== results of lowering call: N001 ( 3, 12) [000160] H---------- t160 = CNS_INT(h) long 0xffff707cb078 ftn /--* t160 long N002 ( 6, 14) [000161] ----------- t161 = * IND long lowering call (after): N001 ( 3, 12) [000160] H---------- t160 = CNS_INT(h) long 0xffff707cb078 ftn /--* t160 long N002 ( 6, 14) [000161] ----------- t161 = * IND long /--* t161 long control expr N001 ( 14, 2) [000069] --CXG------ * CALL void System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion() $VN.Void lowering call (before): N001 ( 14, 2) [000159] --CXG------ CALL help void CORINFO_HELP_RNGCHKFAIL args: ====== late: ====== lowering call (after): N001 ( 14, 2) [000159] --CXG------ CALL help void CORINFO_HELP_RNGCHKFAIL Lower has completed modifying nodes. ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..013)-> BB02 ( cond ) i LIR BB05 [0004] 2 BB01,BB03 8 [05E..071)-> BB03 ( cond ) i bwd bwd-src LIR BB06 [0005] 1 BB05 0.50 [071..092) (return) i LIR BB03 [0002] 1 BB05 2 [01A..045)-> BB05 ( cond ) i Loop Loop0 idxlen bwd bwd-target LIR BB04 [0003] 1 BB03 0.50 [045..05E) (return) i LIR BB02 [0001] 1 BB01 0 [013..01A) (throw ) i rare hascall gcsafe LIR BB07 [0007] 0 0 [???..???) (throw ) keep i internal rare LIR ----------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [000..013) -> BB02 (cond), preds={} succs={BB05,BB02} [000140] ----------- IL_OFFSET void INLRT @ 0x000[E-] N001 ( 1, 1) [000000] ----------- t0 = LCL_VAR byref V00 this u:1 $80 /--* t0 byref N003 ( 3, 4) [000084] -c--------- t84 = * LEA(b+8) byref /--* t84 byref N004 ( 4, 3) [000001] ---XG------ t1 = * IND int N005 ( 1, 1) [000002] ----------- t2 = LCL_VAR byref V00 this u:1 $80 /--* t2 byref N006 ( 3, 2) [000003] n---GO----- t3 = * IND ref /--* t3 ref N008 ( 5, 5) [000086] -c--------- t86 = * LEA(b+68) byref /--* t86 byref N009 ( 6, 4) [000004] ---XGO----- t4 = * IND int /--* t1 int +--* t4 int N010 ( 11, 8) [000005] J--XGO-N--- * NE void N011 ( 13, 10) [000006] ---XGO----- * JTRUE void ------------ BB05 [05E..071) -> BB03 (cond), preds={BB01,BB03} succs={BB06,BB03} [000141] ----------- IL_OFFSET void INLRT @ 0x05E[E-] N001 ( 1, 1) [000007] ----------- t7 = LCL_VAR byref V00 this u:1 $80 /--* t7 byref N003 ( 3, 4) [000129] -c--------- t129 = * LEA(b+12) byref /--* t129 byref N004 ( 4, 3) [000008] n---GO----- t8 = * IND int N005 ( 1, 1) [000009] ----------- t9 = LCL_VAR byref V00 this u:1 $80 /--* t9 byref N006 ( 3, 2) [000010] n---GO----- t10 = * IND ref /--* t10 ref N008 ( 5, 5) [000131] -c--------- t131 = * LEA(b+56) byref /--* t131 byref N009 ( 6, 4) [000011] ---XGO----- t11 = * IND int /--* t8 int +--* t11 int N010 ( 11, 8) [000012] N--XGO-N-U- * LT void N011 ( 13, 10) [000013] ---XGO----- * JTRUE void ------------ BB06 [071..092) (return), preds={BB05} succs={} [000142] ----------- IL_OFFSET void INLRT @ 0x071[E-] N001 ( 1, 1) [000055] ----------- t55 = LCL_VAR byref V00 this u:1 $80 /--* t55 byref N002 ( 3, 2) [000056] n---GO----- t56 = * IND ref /--* t56 ref N004 ( 5, 5) [000135] -c--------- t135 = * LEA(b+56) byref /--* t135 byref N005 ( 6, 4) [000057] ---XGO----- t57 = * IND int N006 ( 1, 2) [000058] -c--------- t58 = CNS_INT int 1 $44 /--* t57 int +--* t58 int N007 ( 8, 7) [000059] ---XGO----- t59 = * ADD int N008 ( 1, 1) [000054] ----------- t54 = LCL_VAR byref V00 this u:1 $80 /--* t54 byref N010 ( 3, 4) [000133] -c--------- t133 = * LEA(b+12) byref /--* t133 byref +--* t59 int [000143] -A-XGO----- * STOREIND int [000144] ----------- IL_OFFSET void INLRT @ 0x084[E-] N001 ( 1, 1) [000062] ----------- t62 = LCL_VAR byref V00 this u:1 (last use) $80 /--* t62 byref N003 ( 3, 4) [000137] -c--------- t137 = * LEA(b+20) byref N005 ( 1, 2) [000065] -c--------- t65 = CNS_INT int 0 $40 /--* t137 byref +--* t65 int N004 ( 9, 8) [000064] -A--G------ * STOREIND long [000145] ----------- IL_OFFSET void INLRT @ 0x090[E-] N001 ( 1, 2) [000138] ----------- t138 = CNS_INT int 0 $40 /--* t138 int N002 ( 2, 3) [000068] ----------- * RETURN int $VN.Void ------------ BB03 [01A..045) -> BB05 (cond), preds={BB05} succs={BB04,BB05} [000146] ----------- IL_OFFSET void INLRT @ 0x01A[E-] N001 ( 1, 1) [000014] ----------- t14 = LCL_VAR byref V00 this u:1 $80 /--* t14 byref N002 ( 3, 2) [000015] n---GO----- t15 = * IND ref /--* t15 ref N004 ( 5, 5) [000088] -c--------- t88 = * LEA(b+16) byref /--* t88 byref N005 ( 6, 4) [000016] ---XGO----- t16 = * IND ref /--* t16 ref N007 ( 6, 4) [000023] DA-XGO----- * STORE_LCL_VAR ref V04 tmp1 d:1 [000147] ----------- IL_OFFSET void INLRT @ 0x01A[E-] N001 ( 1, 1) [000018] ----------- t18 = LCL_VAR byref V00 this u:1 $80 /--* t18 byref N003 ( 3, 4) [000090] -c--------- t90 = * LEA(b+12) byref /--* t90 byref N004 ( 4, 3) [000019] n---GO----- t19 = * IND int /--* t19 int N006 ( 4, 3) [000021] DA--GO----- * STORE_LCL_VAR int V02 loc1 d:1 N001 ( 1, 1) [000025] ----------- t25 = LCL_VAR int V02 loc1 u:1 N002 ( 1, 2) [000026] -c--------- t26 = CNS_INT int 1 $44 /--* t25 int +--* t26 int N003 ( 3, 4) [000027] ----------- t27 = * ADD int N004 ( 1, 1) [000017] ----------- t17 = LCL_VAR byref V00 this u:1 $80 /--* t17 byref N006 ( 3, 4) [000092] -c--------- t92 = * LEA(b+12) byref /--* t92 byref +--* t27 int [000148] -A--GO----- * STOREIND int N001 ( 1, 1) [000030] ----------- t30 = LCL_VAR int V02 loc1 u:1 N002 ( 1, 1) [000024] ----------- t24 = LCL_VAR ref V04 tmp1 u:1 /--* t24 ref [000158] -c--------- t158 = * LEA(b+8) byref /--* t158 byref N003 ( 3, 3) [000095] ---X------- t95 = * IND int /--* t30 int +--* t95 int N004 ( 8, 11) [000096] ---X-O----- * BOUNDS_CHECK_Rng -> BB07 void N005 ( 1, 1) [000093] ----------- t93 = LCL_VAR ref V04 tmp1 u:1 (last use) N006 ( 1, 1) [000094] ----------- t94 = LCL_VAR int V02 loc1 u:1 (last use) /--* t94 int N007 ( 2, 3) [000097] -c-------U- t97 = * CAST long <- uint N008 ( 1, 2) [000098] -c-----N--- t98 = CNS_INT long 4 $105 /--* t97 long +--* t98 long N009 ( 4, 6) [000099] ----------- t99 = * BFIZ long N010 ( 1, 2) [000100] -c--------- t100 = CNS_INT long 16 $104 /--* t99 long +--* t100 long N011 ( 6, 9) [000101] ----------- t101 = * ADD long /--* t93 ref +--* t101 long N012 ( 7, 10) [000102] -------N--- t102 = * ADD byref /--* t102 byref N016 ( 15, 21) [000033] DA-XGO----- * STORE_LCL_VAR byref V01 loc0 d:1 [000149] ----------- IL_OFFSET void INLRT @ 0x03C[E-] N001 ( 1, 1) [000034] ----------- t34 = LCL_VAR byref V01 loc0 u:1 $400 /--* t34 byref N003 ( 3, 4) [000106] -c--------- t106 = * LEA(b+4) byref /--* t106 byref N004 ( 4, 3) [000035] ---XG------ t35 = * IND int N005 ( 1, 2) [000036] -c--------- t36 = CNS_INT int -1 $41 /--* t35 int +--* t36 int N006 ( 6, 6) [000037] J--XG--N--- * LT void N007 ( 8, 8) [000038] ---XG------ * JTRUE void $268 ------------ BB04 [045..05E) (return), preds={BB03} succs={} N001 ( 1, 1) [000040] ----------- t40 = LCL_VAR byref V01 loc0 u:1 $400 /--* t40 byref N003 ( 3, 4) [000108] -c--------- t108 = * LEA(b+8) byref /--* t108 byref N004 ( 4, 3) [000041] n---GO----- t41 = * IND int /--* t41 int N006 ( 8, 6) [000079] DA--GO----- * STORE_LCL_VAR int V06 tmp3 d:1 N001 ( 1, 1) [000042] ----------- t42 = LCL_VAR byref V01 loc0 u:1 (last use) $400 /--* t42 byref N003 ( 3, 4) [000110] -c--------- t110 = * LEA(b+12) byref /--* t110 byref N004 ( 4, 3) [000043] n---GO----- t43 = * IND int /--* t43 int N006 ( 8, 6) [000081] DA--GO----- * STORE_LCL_VAR int V07 tmp4 d:1 [000150] ----------- IL_OFFSET void INL01 @ 0x000[E-] <- INLRT @ ??? N001 ( 3, 2) [000071] ----------- t71 = LCL_VAR int V06 tmp3 u:1 (last use) /--* t71 int N003 ( 7, 5) [000073] DA--------- * STORE_LCL_VAR int V08 tmp5 d:1 [000151] ----------- IL_OFFSET void INL01 @ 0x007[E-] <- INLRT @ ??? N001 ( 3, 2) [000075] ----------- t75 = LCL_VAR int V07 tmp4 u:1 (last use) /--* t75 int N003 ( 7, 5) [000077] DA--------- * STORE_LCL_VAR int V09 tmp6 d:1 [000152] ----------- IL_OFFSET void INLRT @ 0x057[--] N001 ( 1, 1) [000039] ----------- t39 = LCL_VAR byref V00 this u:1 (last use) $80 N002 ( 1, 2) [000111] -c--------- t111 = CNS_INT long 20 $10b /--* t39 byref +--* t111 long N003 ( 3, 4) [000112] ----------- t112 = * ADD byref $152 /--* t112 byref N005 ( 3, 4) [000114] DA--------- * STORE_LCL_VAR byref V10 tmp7 d:1 N006 ( 1, 1) [000115] ----------- t115 = LCL_VAR byref V10 tmp7 u:1 $152 N008 ( 3, 2) [000117] ----------- t117 = LCL_VAR int V08 tmp5 u:1 (last use) /--* t115 byref +--* t117 int [000153] -A---O----- * STOREIND int N011 ( 1, 1) [000120] ----------- t120 = LCL_VAR byref V10 tmp7 u:1 (last use) $152 /--* t120 byref N013 ( 3, 4) [000122] -c--------- t122 = * LEA(b+4) byref N015 ( 3, 2) [000124] ----------- t124 = LCL_VAR int V09 tmp6 u:1 (last use) /--* t122 byref +--* t124 int [000154] -A---O----- * STOREIND int [000155] ----------- IL_OFFSET void INLRT @ 0x05C[E-] N001 ( 1, 2) [000127] ----------- t127 = CNS_INT int 1 $44 /--* t127 int N002 ( 2, 3) [000053] ----------- * RETURN int $VN.Void ------------ BB02 [013..01A) (throw), preds={BB01} succs={} [000156] ----------- IL_OFFSET void INLRT @ 0x013[E-] N001 ( 3, 12) [000160] H---------- t160 = CNS_INT(h) long 0xffff707cb078 ftn /--* t160 long N002 ( 6, 14) [000161] ----------- t161 = * IND long /--* t161 long control expr N001 ( 14, 2) [000069] --CXG------ * CALL void System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion() $VN.Void ------------ BB07 [???..???) (throw), preds={} succs={} N001 ( 14, 2) [000159] --CXG------ CALL help void CORINFO_HELP_RNGCHKFAIL ------------------------------------------------------------------------------------------------------------------- *** lvaComputeRefCounts *** *** lvaComputeRefCounts -- explicit counts *** New refCnts for V00: refCnt = 1, refCntWtd = 1 New refCnts for V00: refCnt = 2, refCntWtd = 2 New refCnts for V00: refCnt = 3, refCntWtd = 10 New refCnts for V00: refCnt = 4, refCntWtd = 18 New refCnts for V00: refCnt = 5, refCntWtd = 18.50 New refCnts for V00: refCnt = 6, refCntWtd = 19 New refCnts for V00: refCnt = 7, refCntWtd = 19.50 New refCnts for V00: refCnt = 8, refCntWtd = 21.50 New refCnts for V04: refCnt = 1, refCntWtd = 4 New refCnts for V00: refCnt = 9, refCntWtd = 23.50 New refCnts for V02: refCnt = 1, refCntWtd = 2 New refCnts for V02: refCnt = 2, refCntWtd = 4 New refCnts for V00: refCnt = 10, refCntWtd = 25.50 New refCnts for V02: refCnt = 3, refCntWtd = 6 New refCnts for V04: refCnt = 2, refCntWtd = 8 New refCnts for V04: refCnt = 3, refCntWtd = 12 New refCnts for V02: refCnt = 4, refCntWtd = 8 New refCnts for V01: refCnt = 1, refCntWtd = 2 New refCnts for V01: refCnt = 2, refCntWtd = 4 New refCnts for V01: refCnt = 3, refCntWtd = 4.50 New refCnts for V06: refCnt = 1, refCntWtd = 1 New refCnts for V01: refCnt = 4, refCntWtd = 5 New refCnts for V07: refCnt = 1, refCntWtd = 1 New refCnts for V06: refCnt = 2, refCntWtd = 2 New refCnts for V08: refCnt = 1, refCntWtd = 0.50 New refCnts for V07: refCnt = 2, refCntWtd = 2 New refCnts for V09: refCnt = 1, refCntWtd = 0.50 New refCnts for V00: refCnt = 11, refCntWtd = 26 New refCnts for V10: refCnt = 1, refCntWtd = 1 New refCnts for V10: refCnt = 2, refCntWtd = 2 New refCnts for V08: refCnt = 2, refCntWtd = 1 New refCnts for V10: refCnt = 3, refCntWtd = 3 New refCnts for V09: refCnt = 2, refCntWtd = 1 *** lvaComputeRefCounts -- implicit counts *** New refCnts for V00: refCnt = 12, refCntWtd = 27 New refCnts for V00: refCnt = 13, refCntWtd = 28 *************** In fgLocalVarLiveness() ; Initial local variable assignments ; ; V00 this byref this single-def ; V01 loc0 byref ; V02 loc1 int ; V03 OutArgs lclBlk <0> "OutgoingArgSpace" ; V04 tmp1 ref class-hnd "impAppendStmt" ; V05 tmp2 struct ld-addr-op "NewObj constructor temp" ; V06 tmp3 int "Inlining Arg" ; V07 tmp4 int "Inlining Arg" ; V08 tmp5 int V05.key(offs=0x00) P-INDEP "field V05.key (fldOffset=0x0)" ; V09 tmp6 int V05.value(offs=0x04) P-INDEP "field V05.value (fldOffset=0x4)" ; V10 tmp7 byref single-def "BlockOp address local" In fgLocalVarLivenessInit Tracked variable (9 out of 11) table: V00 this [ byref]: refCnt = 13, refCntWtd = 28 V04 tmp1 [ ref]: refCnt = 3, refCntWtd = 12 V02 loc1 [ int]: refCnt = 4, refCntWtd = 8 V01 loc0 [ byref]: refCnt = 4, refCntWtd = 5 V10 tmp7 [ byref]: refCnt = 3, refCntWtd = 3 V06 tmp3 [ int]: refCnt = 2, refCntWtd = 2 V07 tmp4 [ int]: refCnt = 2, refCntWtd = 2 V08 tmp5 [ int]: refCnt = 2, refCntWtd = 1 V09 tmp6 [ int]: refCnt = 2, refCntWtd = 1 *************** In fgPerBlockLocalVarLiveness() BB01 USE(1)={V00} + ByrefExposed + GcHeap DEF(0)={ } BB05 USE(1)={V00} + ByrefExposed + GcHeap DEF(0)={ } BB06 USE(1)={V00} + ByrefExposed + GcHeap DEF(0)={ } BB03 USE(1)={V00 } + ByrefExposed + GcHeap DEF(3)={ V04 V02 V01} BB04 USE(2)={V00 V01 } + ByrefExposed + GcHeap DEF(5)={ V10 V06 V07 V08 V09} BB02 USE(0)={} + ByrefExposed + GcHeap DEF(0)={} + ByrefExposed* + GcHeap* BB07 USE(0)={} DEF(0)={} ** Memory liveness computed, GcHeap states and ByrefExposed states match *************** In fgInterBlockLocalVarLiveness() BB liveness after fgLiveVarAnalysis(): BB01 IN (1)={V00} + ByrefExposed + GcHeap OUT(1)={V00} + ByrefExposed + GcHeap BB05 IN (1)={V00} + ByrefExposed + GcHeap OUT(1)={V00} + ByrefExposed + GcHeap BB06 IN (1)={V00} + ByrefExposed + GcHeap OUT(0)={ } BB03 IN (1)={V00 } + ByrefExposed + GcHeap OUT(2)={V00 V01} + ByrefExposed + GcHeap BB04 IN (2)={V00 V01} + ByrefExposed + GcHeap OUT(0)={ } BB02 IN (0)={} + ByrefExposed + GcHeap OUT(0)={} BB07 IN (0)={} OUT(0)={} *************** In fgUpdateFlowGraph() Before updating the flow graph: ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..013)-> BB02 ( cond ) i LIR BB05 [0004] 2 BB01,BB03 8 [05E..071)-> BB03 ( cond ) i bwd bwd-src LIR BB06 [0005] 1 BB05 0.50 [071..092) (return) i LIR BB03 [0002] 1 BB05 2 [01A..045)-> BB05 ( cond ) i Loop Loop0 idxlen bwd bwd-target LIR BB04 [0003] 1 BB03 0.50 [045..05E) (return) i LIR BB02 [0001] 1 BB01 0 [013..01A) (throw ) i rare hascall gcsafe LIR BB07 [0007] 0 0 [???..???) (throw ) keep i internal rare LIR ----------------------------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist *************** In fgRemoveDeadBlocks() New BlockSet epoch 3, # of blocks (including unused BB00): 8, bitset array size: 1 (short) Removing unreachable blocks for fgRemoveDeadBlocks iteration #1 *************** In fgDebugCheckBBlist *** lvaComputeRefCounts *** *** lvaComputeRefCounts -- explicit counts *** New refCnts for V00: refCnt = 1, refCntWtd = 1 New refCnts for V00: refCnt = 2, refCntWtd = 2 New refCnts for V00: refCnt = 3, refCntWtd = 10 New refCnts for V00: refCnt = 4, refCntWtd = 18 New refCnts for V00: refCnt = 5, refCntWtd = 18.50 New refCnts for V00: refCnt = 6, refCntWtd = 19 New refCnts for V00: refCnt = 7, refCntWtd = 19.50 New refCnts for V00: refCnt = 8, refCntWtd = 21.50 New refCnts for V04: refCnt = 1, refCntWtd = 4 New refCnts for V00: refCnt = 9, refCntWtd = 23.50 New refCnts for V02: refCnt = 1, refCntWtd = 2 New refCnts for V02: refCnt = 2, refCntWtd = 4 New refCnts for V00: refCnt = 10, refCntWtd = 25.50 New refCnts for V02: refCnt = 3, refCntWtd = 6 New refCnts for V04: refCnt = 2, refCntWtd = 8 New refCnts for V04: refCnt = 3, refCntWtd = 12 New refCnts for V02: refCnt = 4, refCntWtd = 8 New refCnts for V01: refCnt = 1, refCntWtd = 2 New refCnts for V01: refCnt = 2, refCntWtd = 4 New refCnts for V01: refCnt = 3, refCntWtd = 4.50 New refCnts for V06: refCnt = 1, refCntWtd = 1 New refCnts for V01: refCnt = 4, refCntWtd = 5 New refCnts for V07: refCnt = 1, refCntWtd = 1 New refCnts for V06: refCnt = 2, refCntWtd = 2 New refCnts for V08: refCnt = 1, refCntWtd = 0.50 New refCnts for V07: refCnt = 2, refCntWtd = 2 New refCnts for V09: refCnt = 1, refCntWtd = 0.50 New refCnts for V00: refCnt = 11, refCntWtd = 26 New refCnts for V10: refCnt = 1, refCntWtd = 1 New refCnts for V10: refCnt = 2, refCntWtd = 2 New refCnts for V08: refCnt = 2, refCntWtd = 1 New refCnts for V10: refCnt = 3, refCntWtd = 3 New refCnts for V09: refCnt = 2, refCntWtd = 1 *** lvaComputeRefCounts -- implicit counts *** New refCnts for V00: refCnt = 12, refCntWtd = 27 New refCnts for V00: refCnt = 13, refCntWtd = 28 *************** Finishing PHASE Lowering nodeinfo Trees after Lowering nodeinfo ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..013)-> BB02 ( cond ) i LIR BB05 [0004] 2 BB01,BB03 8 [05E..071)-> BB03 ( cond ) i bwd bwd-src LIR BB06 [0005] 1 BB05 0.50 [071..092) (return) i LIR BB03 [0002] 1 BB05 2 [01A..045)-> BB05 ( cond ) i Loop Loop0 idxlen bwd bwd-target LIR BB04 [0003] 1 BB03 0.50 [045..05E) (return) i LIR BB02 [0001] 1 BB01 0 [013..01A) (throw ) i rare hascall gcsafe LIR BB07 [0007] 0 0 [???..???) (throw ) keep i internal rare LIR ----------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [000..013) -> BB02 (cond), preds={} succs={BB05,BB02} [000140] ----------- IL_OFFSET void INLRT @ 0x000[E-] N001 ( 1, 1) [000000] ----------- t0 = LCL_VAR byref V00 this u:1 $80 /--* t0 byref N003 ( 3, 4) [000084] -c--------- t84 = * LEA(b+8) byref /--* t84 byref N004 ( 4, 3) [000001] ---XG------ t1 = * IND int N005 ( 1, 1) [000002] ----------- t2 = LCL_VAR byref V00 this u:1 $80 /--* t2 byref N006 ( 3, 2) [000003] n---GO----- t3 = * IND ref /--* t3 ref N008 ( 5, 5) [000086] -c--------- t86 = * LEA(b+68) byref /--* t86 byref N009 ( 6, 4) [000004] ---XGO----- t4 = * IND int /--* t1 int +--* t4 int N010 ( 11, 8) [000005] J--XGO-N--- * NE void N011 ( 13, 10) [000006] ---XGO----- * JTRUE void ------------ BB05 [05E..071) -> BB03 (cond), preds={BB01,BB03} succs={BB06,BB03} [000141] ----------- IL_OFFSET void INLRT @ 0x05E[E-] N001 ( 1, 1) [000007] ----------- t7 = LCL_VAR byref V00 this u:1 $80 /--* t7 byref N003 ( 3, 4) [000129] -c--------- t129 = * LEA(b+12) byref /--* t129 byref N004 ( 4, 3) [000008] n---GO----- t8 = * IND int N005 ( 1, 1) [000009] ----------- t9 = LCL_VAR byref V00 this u:1 $80 /--* t9 byref N006 ( 3, 2) [000010] n---GO----- t10 = * IND ref /--* t10 ref N008 ( 5, 5) [000131] -c--------- t131 = * LEA(b+56) byref /--* t131 byref N009 ( 6, 4) [000011] ---XGO----- t11 = * IND int /--* t8 int +--* t11 int N010 ( 11, 8) [000012] N--XGO-N-U- * LT void N011 ( 13, 10) [000013] ---XGO----- * JTRUE void ------------ BB06 [071..092) (return), preds={BB05} succs={} [000142] ----------- IL_OFFSET void INLRT @ 0x071[E-] N001 ( 1, 1) [000055] ----------- t55 = LCL_VAR byref V00 this u:1 $80 /--* t55 byref N002 ( 3, 2) [000056] n---GO----- t56 = * IND ref /--* t56 ref N004 ( 5, 5) [000135] -c--------- t135 = * LEA(b+56) byref /--* t135 byref N005 ( 6, 4) [000057] ---XGO----- t57 = * IND int N006 ( 1, 2) [000058] -c--------- t58 = CNS_INT int 1 $44 /--* t57 int +--* t58 int N007 ( 8, 7) [000059] ---XGO----- t59 = * ADD int N008 ( 1, 1) [000054] ----------- t54 = LCL_VAR byref V00 this u:1 $80 /--* t54 byref N010 ( 3, 4) [000133] -c--------- t133 = * LEA(b+12) byref /--* t133 byref +--* t59 int [000143] -A-XGO----- * STOREIND int [000144] ----------- IL_OFFSET void INLRT @ 0x084[E-] N001 ( 1, 1) [000062] ----------- t62 = LCL_VAR byref V00 this u:1 (last use) $80 /--* t62 byref N003 ( 3, 4) [000137] -c--------- t137 = * LEA(b+20) byref N005 ( 1, 2) [000065] -c--------- t65 = CNS_INT int 0 $40 /--* t137 byref +--* t65 int N004 ( 9, 8) [000064] -A--G------ * STOREIND long [000145] ----------- IL_OFFSET void INLRT @ 0x090[E-] N001 ( 1, 2) [000138] ----------- t138 = CNS_INT int 0 $40 /--* t138 int N002 ( 2, 3) [000068] ----------- * RETURN int $VN.Void ------------ BB03 [01A..045) -> BB05 (cond), preds={BB05} succs={BB04,BB05} [000146] ----------- IL_OFFSET void INLRT @ 0x01A[E-] N001 ( 1, 1) [000014] ----------- t14 = LCL_VAR byref V00 this u:1 $80 /--* t14 byref N002 ( 3, 2) [000015] n---GO----- t15 = * IND ref /--* t15 ref N004 ( 5, 5) [000088] -c--------- t88 = * LEA(b+16) byref /--* t88 byref N005 ( 6, 4) [000016] ---XGO----- t16 = * IND ref /--* t16 ref N007 ( 6, 4) [000023] DA-XGO----- * STORE_LCL_VAR ref V04 tmp1 d:1 [000147] ----------- IL_OFFSET void INLRT @ 0x01A[E-] N001 ( 1, 1) [000018] ----------- t18 = LCL_VAR byref V00 this u:1 $80 /--* t18 byref N003 ( 3, 4) [000090] -c--------- t90 = * LEA(b+12) byref /--* t90 byref N004 ( 4, 3) [000019] n---GO----- t19 = * IND int /--* t19 int N006 ( 4, 3) [000021] DA--GO----- * STORE_LCL_VAR int V02 loc1 d:1 N001 ( 1, 1) [000025] ----------- t25 = LCL_VAR int V02 loc1 u:1 N002 ( 1, 2) [000026] -c--------- t26 = CNS_INT int 1 $44 /--* t25 int +--* t26 int N003 ( 3, 4) [000027] ----------- t27 = * ADD int N004 ( 1, 1) [000017] ----------- t17 = LCL_VAR byref V00 this u:1 $80 /--* t17 byref N006 ( 3, 4) [000092] -c--------- t92 = * LEA(b+12) byref /--* t92 byref +--* t27 int [000148] -A--GO----- * STOREIND int N001 ( 1, 1) [000030] ----------- t30 = LCL_VAR int V02 loc1 u:1 N002 ( 1, 1) [000024] ----------- t24 = LCL_VAR ref V04 tmp1 u:1 /--* t24 ref [000158] -c--------- t158 = * LEA(b+8) byref /--* t158 byref N003 ( 3, 3) [000095] ---X------- t95 = * IND int /--* t30 int +--* t95 int N004 ( 8, 11) [000096] ---X-O----- * BOUNDS_CHECK_Rng -> BB07 void N005 ( 1, 1) [000093] ----------- t93 = LCL_VAR ref V04 tmp1 u:1 (last use) N006 ( 1, 1) [000094] ----------- t94 = LCL_VAR int V02 loc1 u:1 (last use) /--* t94 int N007 ( 2, 3) [000097] -c-------U- t97 = * CAST long <- uint N008 ( 1, 2) [000098] -c-----N--- t98 = CNS_INT long 4 $105 /--* t97 long +--* t98 long N009 ( 4, 6) [000099] ----------- t99 = * BFIZ long N010 ( 1, 2) [000100] -c--------- t100 = CNS_INT long 16 $104 /--* t99 long +--* t100 long N011 ( 6, 9) [000101] ----------- t101 = * ADD long /--* t93 ref +--* t101 long N012 ( 7, 10) [000102] -------N--- t102 = * ADD byref /--* t102 byref N016 ( 15, 21) [000033] DA-XGO----- * STORE_LCL_VAR byref V01 loc0 d:1 [000149] ----------- IL_OFFSET void INLRT @ 0x03C[E-] N001 ( 1, 1) [000034] ----------- t34 = LCL_VAR byref V01 loc0 u:1 $400 /--* t34 byref N003 ( 3, 4) [000106] -c--------- t106 = * LEA(b+4) byref /--* t106 byref N004 ( 4, 3) [000035] ---XG------ t35 = * IND int N005 ( 1, 2) [000036] -c--------- t36 = CNS_INT int -1 $41 /--* t35 int +--* t36 int N006 ( 6, 6) [000037] J--XG--N--- * LT void N007 ( 8, 8) [000038] ---XG------ * JTRUE void $268 ------------ BB04 [045..05E) (return), preds={BB03} succs={} N001 ( 1, 1) [000040] ----------- t40 = LCL_VAR byref V01 loc0 u:1 $400 /--* t40 byref N003 ( 3, 4) [000108] -c--------- t108 = * LEA(b+8) byref /--* t108 byref N004 ( 4, 3) [000041] n---GO----- t41 = * IND int /--* t41 int N006 ( 8, 6) [000079] DA--GO----- * STORE_LCL_VAR int V06 tmp3 d:1 N001 ( 1, 1) [000042] ----------- t42 = LCL_VAR byref V01 loc0 u:1 (last use) $400 /--* t42 byref N003 ( 3, 4) [000110] -c--------- t110 = * LEA(b+12) byref /--* t110 byref N004 ( 4, 3) [000043] n---GO----- t43 = * IND int /--* t43 int N006 ( 8, 6) [000081] DA--GO----- * STORE_LCL_VAR int V07 tmp4 d:1 [000150] ----------- IL_OFFSET void INL01 @ 0x000[E-] <- INLRT @ ??? N001 ( 3, 2) [000071] ----------- t71 = LCL_VAR int V06 tmp3 u:1 (last use) /--* t71 int N003 ( 7, 5) [000073] DA--------- * STORE_LCL_VAR int V08 tmp5 d:1 [000151] ----------- IL_OFFSET void INL01 @ 0x007[E-] <- INLRT @ ??? N001 ( 3, 2) [000075] ----------- t75 = LCL_VAR int V07 tmp4 u:1 (last use) /--* t75 int N003 ( 7, 5) [000077] DA--------- * STORE_LCL_VAR int V09 tmp6 d:1 [000152] ----------- IL_OFFSET void INLRT @ 0x057[--] N001 ( 1, 1) [000039] ----------- t39 = LCL_VAR byref V00 this u:1 (last use) $80 N002 ( 1, 2) [000111] -c--------- t111 = CNS_INT long 20 $10b /--* t39 byref +--* t111 long N003 ( 3, 4) [000112] ----------- t112 = * ADD byref $152 /--* t112 byref N005 ( 3, 4) [000114] DA--------- * STORE_LCL_VAR byref V10 tmp7 d:1 N006 ( 1, 1) [000115] ----------- t115 = LCL_VAR byref V10 tmp7 u:1 $152 N008 ( 3, 2) [000117] ----------- t117 = LCL_VAR int V08 tmp5 u:1 (last use) /--* t115 byref +--* t117 int [000153] -A---O----- * STOREIND int N011 ( 1, 1) [000120] ----------- t120 = LCL_VAR byref V10 tmp7 u:1 (last use) $152 /--* t120 byref N013 ( 3, 4) [000122] -c--------- t122 = * LEA(b+4) byref N015 ( 3, 2) [000124] ----------- t124 = LCL_VAR int V09 tmp6 u:1 (last use) /--* t122 byref +--* t124 int [000154] -A---O----- * STOREIND int [000155] ----------- IL_OFFSET void INLRT @ 0x05C[E-] N001 ( 1, 2) [000127] ----------- t127 = CNS_INT int 1 $44 /--* t127 int N002 ( 2, 3) [000053] ----------- * RETURN int $VN.Void ------------ BB02 [013..01A) (throw), preds={BB01} succs={} [000156] ----------- IL_OFFSET void INLRT @ 0x013[E-] N001 ( 3, 12) [000160] H---------- t160 = CNS_INT(h) long 0xffff707cb078 ftn /--* t160 long N002 ( 6, 14) [000161] ----------- t161 = * IND long /--* t161 long control expr N001 ( 14, 2) [000069] --CXG------ * CALL void System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion() $VN.Void ------------ BB07 [???..???) (throw), preds={} succs={} N001 ( 14, 2) [000159] --CXG------ CALL help void CORINFO_HELP_RNGCHKFAIL ------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist *************** In fgDebugCheckLoopTable: loop table not valid *************** 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: {V00} def: {} in: {V00} out: {V00} BB05 use: {V00} def: {} in: {V00} out: {V00} BB06 use: {V00} def: {} in: {V00} out: {} BB03 use: {V00} def: {V01 V02 V04} in: {V00} out: {V00 V01} BB04 use: {V00 V01} def: {V06 V07 V08 V09 V10} in: {V00 V01} out: {} BB02 use: {} def: {} in: {} out: {} BB07 use: {} def: {} in: {} out: {} Interval 0: byref RefPositions {} physReg:NA Preferences=[x0-xip1 x19-x28] Interval 0: (V00) byref RefPositions {} physReg:NA Preferences=[x0-xip1 x19-x28] Interval 1: byref RefPositions {} physReg:NA Preferences=[x0-xip1 x19-x28] Interval 1: (V01) byref RefPositions {} physReg:NA Preferences=[x0-xip1 x19-x28] Interval 2: int RefPositions {} physReg:NA Preferences=[x0-xip1 x19-x28] Interval 2: (V02) int RefPositions {} physReg:NA Preferences=[x0-xip1 x19-x28] Interval 3: ref RefPositions {} physReg:NA Preferences=[x0-xip1 x19-x28] Interval 3: (V04) ref RefPositions {} physReg:NA Preferences=[x0-xip1 x19-x28] Interval 4: int RefPositions {} physReg:NA Preferences=[x0-xip1 x19-x28] Interval 4: (V06) int RefPositions {} physReg:NA Preferences=[x0-xip1 x19-x28] Interval 5: int RefPositions {} physReg:NA Preferences=[x0-xip1 x19-x28] Interval 5: (V07) int RefPositions {} physReg:NA Preferences=[x0-xip1 x19-x28] Interval 6: int RefPositions {} physReg:NA Preferences=[x0-xip1 x19-x28] Interval 6: (V08) int (field) RefPositions {} physReg:NA Preferences=[x0-xip1 x19-x28] Interval 7: int RefPositions {} physReg:NA Preferences=[x0-xip1 x19-x28] Interval 7: (V09) int (field) RefPositions {} physReg:NA Preferences=[x0-xip1 x19-x28] Interval 8: byref RefPositions {} physReg:NA Preferences=[x0-xip1 x19-x28] Interval 8: (V10) byref RefPositions {} physReg:NA Preferences=[x0-xip1 x19-x28] FP callee save candidate vars: None floatVarCount = 0; hasLoops = true, singleExit = false ; Decided to create an EBP based frame for ETW stackwalking (IL Code Size) *************** In lvaAssignFrameOffsets(REGALLOC_FRAME_LAYOUT) Setting genSaveFpLrWithAllCalleeSavedRegisters to false Assign V02 loc1, size=4, stkOffs=-0x54 Pad V05 tmp2, size=8, stkOffs=-0x5b, pad=7 Assign V05 tmp2, size=8, stkOffs=-0x63 Assign V06 tmp3, size=4, stkOffs=-0x67 Assign V07 tmp4, size=4, stkOffs=-0x6b Assign V08 tmp5, size=4, stkOffs=-0x6f Assign V09 tmp6, size=4, stkOffs=-0x73 Pad V00 this, size=8, stkOffs=-0x7a, pad=7 Assign V00 this, size=8, stkOffs=-0x82 Pad V01 loc0, size=8, stkOffs=-0x89, pad=7 Assign V01 loc0, size=8, stkOffs=-0x91 Pad V04 tmp1, size=8, stkOffs=-0x98, pad=7 Assign V04 tmp1, size=8, stkOffs=-0xa0 Pad V10 tmp7, size=8, stkOffs=-0xa7, pad=7 Assign V10 tmp7, size=8, stkOffs=-0xaf --- delta bump 224 for FP frame --- virtual stack offset to actual stack offset delta is 224 -- V00 was -130, now 94 -- V01 was -145, now 79 -- V02 was -84, now 140 -- V03 was 0, now 224 -- V04 was -160, now 64 -- V05 was -99, now 125 -- V06 was -103, now 121 -- V07 was -107, now 117 -- V08 was -111, now 113 -- V09 was -115, now 109 -- V10 was -175, now 49 compRsvdRegCheck frame size = 224 compArgSize = 8 Returning true (ARM64) Reserved REG_OPT_RSVD (xip1) due to large frame TUPLE STYLE DUMP BEFORE LSRA Start LSRA Block Sequence: Current block: BB01 Succ block: BB05, Criteria: weight, Worklist: [BB05 ] Succ block: BB02, Criteria: weight, Worklist: [BB05 BB02 ] Current block: BB05 Succ block: BB06, Criteria: bbNum, Worklist: [BB06 BB02 ] Succ block: BB03, Criteria: bbNum, Worklist: [BB03 BB06 BB02 ] Current block: BB03 Succ block: BB04, Criteria: bbNum, Worklist: [BB04 BB06 BB02 ] Current block: BB04 Current block: BB06 Current block: BB02 Unvisited block: BB07, Criteria: weight, Worklist: [BB07 ] Current block: BB07 Final LSRA Block Sequence: BB01 ( 1 ) critical-out BB05 ( 8 ) critical-in BB03 ( 2 ) critical-out BB04 ( 0.50) BB06 ( 0.50) BB02 ( 0 ) BB07 ( 0 ) BB01 [000..013) -> BB02 (cond), preds={} succs={BB05,BB02} ===== N000. IL_OFFSET INLRT @ 0x000[E-] N001. V00(t0) N003. t84 = LEA(b+8) ; t0 N004. t1 = IND ; t84 N005. V00(t2) N006. t3 = IND ; t2 N008. t86 = LEA(b+68); t3 N009. t4 = IND ; t86 N010. NE ; t1,t4 N011. JTRUE BB05 [05E..071) -> BB03 (cond), preds={BB01,BB03} succs={BB06,BB03} ===== N000. IL_OFFSET INLRT @ 0x05E[E-] N001. V00(t7) N003. t129 = LEA(b+12); t7 N004. t8 = IND ; t129 N005. V00(t9) N006. t10 = IND ; t9 N008. t131 = LEA(b+56); t10 N009. t11 = IND ; t131 N010. LT ; t8,t11 N011. JTRUE BB03 [01A..045) -> BB05 (cond), preds={BB05} succs={BB04,BB05} ===== N000. IL_OFFSET INLRT @ 0x01A[E-] N001. V00(t14) N002. t15 = IND ; t14 N004. t88 = LEA(b+16); t15 N005. t16 = IND ; t88 N007. V04(t23); t16 N000. IL_OFFSET INLRT @ 0x01A[E-] N001. V00(t18) N003. t90 = LEA(b+12); t18 N004. t19 = IND ; t90 N006. V02(t21); t19 N001. V02(t25) N002. CNS_INT 1 N003. t27 = ADD ; t25 N004. V00(t17) N006. t92 = LEA(b+12); t17 N000. STOREIND ; t92,t27 N001. V02(t30) N002. V04(t24) N000. t158 = LEA(b+8) ; t24 N003. t95 = IND ; t158 N004. BOUNDS_CHECK_Rng -> BB07; t30,t95 N005. V04(t93*) N006. V02(t94*) N007. t97 = CAST ; t94* N008. CNS_INT 4 N009. t99 = BFIZ ; t97 N010. CNS_INT 16 N011. t101 = ADD ; t99 N012. t102 = ADD ; t93*,t101 N016. V01(t33); t102 N000. IL_OFFSET INLRT @ 0x03C[E-] N001. V01(t34) N003. t106 = LEA(b+4) ; t34 N004. t35 = IND ; t106 N005. CNS_INT -1 N006. LT ; t35 N007. JTRUE BB04 [045..05E) (return), preds={BB03} succs={} ===== N001. V01(t40) N003. t108 = LEA(b+8) ; t40 N004. t41 = IND ; t108 N006. V06(t79); t41 N001. V01(t42*) N003. t110 = LEA(b+12); t42* N004. t43 = IND ; t110 N006. V07(t81); t43 N000. IL_OFFSET INL01 @ 0x000[E-] <- INLRT @ ??? N001. V06(t71*) N003. V08(t73); t71* N000. IL_OFFSET INL01 @ 0x007[E-] <- INLRT @ ??? N001. V07(t75*) N003. V09(t77); t75* N000. IL_OFFSET INLRT @ 0x057[--] N001. V00(t39*) N002. CNS_INT 20 N003. t112 = ADD ; t39* N005. V10(t114); t112 N006. V10(t115) N008. V08(t117*) N000. STOREIND ; t115,t117* N011. V10(t120*) N013. t122 = LEA(b+4) ; t120* N015. V09(t124*) N000. STOREIND ; t122,t124* N000. IL_OFFSET INLRT @ 0x05C[E-] N001. t127 = CNS_INT 1 N002. RETURN ; t127 BB06 [071..092) (return), preds={BB05} succs={} ===== N000. IL_OFFSET INLRT @ 0x071[E-] N001. V00(t55) N002. t56 = IND ; t55 N004. t135 = LEA(b+56); t56 N005. t57 = IND ; t135 N006. CNS_INT 1 N007. t59 = ADD ; t57 N008. V00(t54) N010. t133 = LEA(b+12); t54 N000. STOREIND ; t133,t59 N000. IL_OFFSET INLRT @ 0x084[E-] N001. V00(t62*) N003. t137 = LEA(b+20); t62* N005. CNS_INT 0 N004. STOREIND ; t137 N000. IL_OFFSET INLRT @ 0x090[E-] N001. t138 = CNS_INT 0 N002. RETURN ; t138 BB02 [013..01A) (throw), preds={BB01} succs={} ===== N000. IL_OFFSET INLRT @ 0x013[E-] N001. t160 = CNS_INT(h) 0xffff707cb078 ftn N002. t161 = IND ; t160 N001. CALL ; t161 BB07 [???..???) (throw), preds={} succs={} ===== N001. CALL help buildIntervals second part ======== Int arg V00 in reg x0 BB00 regmask=[x0] minReg=1 fixed wt=100.00> NEW BLOCK BB01 DefList: { } N003 (???,???) [000140] ----------- * IL_OFFSET void INLRT @ 0x000[E-] REG NA DefList: { } N005 ( 1, 1) [000000] ----------- * LCL_VAR byref V00 this u:1 NA REG NA $80 DefList: { } N007 ( 3, 4) [000084] -c--------- * LEA(b+8) byref REG NA Contained DefList: { } N009 ( 4, 3) [000001] ---XG------ * IND int REG NA LCL_VAR BB01 regmask=[x0-xip0 x19-x28] minReg=1 last wt=2800.00> Interval 9: int RefPositions {} physReg:NA Preferences=[x0-xip0 x19-x28] IND BB01 regmask=[x0-xip0 x19-x28] minReg=1 wt=400.00> DefList: { N009.t1. IND } N011 ( 1, 1) [000002] ----------- * LCL_VAR byref V00 this u:1 NA REG NA $80 DefList: { N009.t1. IND } N013 ( 3, 2) [000003] n---GO----- * IND ref REG NA LCL_VAR BB01 regmask=[x0-xip0 x19-x28] minReg=1 last wt=2800.00> Interval 10: ref RefPositions {} physReg:NA Preferences=[x0-xip0 x19-x28] IND BB01 regmask=[x0-xip0 x19-x28] minReg=1 wt=400.00> DefList: { N009.t1. IND; N013.t3. IND } N015 ( 5, 5) [000086] -c--------- * LEA(b+68) byref REG NA Contained DefList: { N009.t1. IND; N013.t3. IND } N017 ( 6, 4) [000004] ---XGO----- * IND int REG NA BB01 regmask=[x0-xip0 x19-x28] minReg=1 last wt=100.00> Interval 11: int RefPositions {} physReg:NA Preferences=[x0-xip0 x19-x28] IND BB01 regmask=[x0-xip0 x19-x28] minReg=1 wt=400.00> DefList: { N009.t1. IND; N017.t4. IND } N019 ( 11, 8) [000005] J--XGO-N--- * NE void REG NA BB01 regmask=[x0-xip0 x19-x28] minReg=1 last wt=100.00> BB01 regmask=[x0-xip0 x19-x28] minReg=1 last wt=100.00> DefList: { } N021 ( 13, 10) [000006] ---XGO----- * JTRUE void REG NA CHECKING LAST USES for BB01, liveout={V00} ============================== use: {V00} def: {} NEW BLOCK BB05 Setting BB01 as the predecessor for determining incoming variable registers of BB05 DefList: { } N025 (???,???) [000141] ----------- * IL_OFFSET void INLRT @ 0x05E[E-] REG NA DefList: { } N027 ( 1, 1) [000007] ----------- * LCL_VAR byref V00 this u:1 NA REG NA $80 DefList: { } N029 ( 3, 4) [000129] -c--------- * LEA(b+12) byref REG NA Contained DefList: { } N031 ( 4, 3) [000008] n---GO----- * IND int REG NA LCL_VAR BB05 regmask=[x0-xip0 x19-x28] minReg=1 last wt=2800.00> Interval 12: int RefPositions {} physReg:NA Preferences=[x0-xip0 x19-x28] IND BB05 regmask=[x0-xip0 x19-x28] minReg=1 wt=3200.00> DefList: { N031.t8. IND } N033 ( 1, 1) [000009] ----------- * LCL_VAR byref V00 this u:1 NA REG NA $80 DefList: { N031.t8. IND } N035 ( 3, 2) [000010] n---GO----- * IND ref REG NA LCL_VAR BB05 regmask=[x0-xip0 x19-x28] minReg=1 last wt=2800.00> Interval 13: ref RefPositions {} physReg:NA Preferences=[x0-xip0 x19-x28] IND BB05 regmask=[x0-xip0 x19-x28] minReg=1 wt=3200.00> DefList: { N031.t8. IND; N035.t10. IND } N037 ( 5, 5) [000131] -c--------- * LEA(b+56) byref REG NA Contained DefList: { N031.t8. IND; N035.t10. IND } N039 ( 6, 4) [000011] ---XGO----- * IND int REG NA BB05 regmask=[x0-xip0 x19-x28] minReg=1 last wt=800.00> Interval 14: int RefPositions {} physReg:NA Preferences=[x0-xip0 x19-x28] IND BB05 regmask=[x0-xip0 x19-x28] minReg=1 wt=3200.00> DefList: { N031.t8. IND; N039.t11. IND } N041 ( 11, 8) [000012] N--XGO-N-U- * LT void REG NA BB05 regmask=[x0-xip0 x19-x28] minReg=1 last wt=800.00> BB05 regmask=[x0-xip0 x19-x28] minReg=1 last wt=800.00> DefList: { } N043 ( 13, 10) [000013] ---XGO----- * JTRUE void REG NA CHECKING LAST USES for BB05, liveout={V00} ============================== use: {V00} def: {} NEW BLOCK BB03 Setting BB05 as the predecessor for determining incoming variable registers of BB03 DefList: { } N047 (???,???) [000146] ----------- * IL_OFFSET void INLRT @ 0x01A[E-] REG NA DefList: { } N049 ( 1, 1) [000014] ----------- * LCL_VAR byref V00 this u:1 NA REG NA $80 DefList: { } N051 ( 3, 2) [000015] n---GO----- * IND ref REG NA LCL_VAR BB03 regmask=[x0-xip0 x19-x28] minReg=1 last wt=2800.00> Interval 15: ref RefPositions {} physReg:NA Preferences=[x0-xip0 x19-x28] IND BB03 regmask=[x0-xip0 x19-x28] minReg=1 wt=800.00> DefList: { N051.t15. IND } N053 ( 5, 5) [000088] -c--------- * LEA(b+16) byref REG NA Contained DefList: { N051.t15. IND } N055 ( 6, 4) [000016] ---XGO----- * IND ref REG NA BB03 regmask=[x0-xip0 x19-x28] minReg=1 last wt=200.00> Interval 16: ref RefPositions {} physReg:NA Preferences=[x0-xip0 x19-x28] IND BB03 regmask=[x0-xip0 x19-x28] minReg=1 wt=800.00> DefList: { N055.t16. IND } N057 ( 6, 4) [000023] DA-XGO----- * STORE_LCL_VAR ref V04 tmp1 d:1 NA REG NA BB03 regmask=[x0-xip0 x19-x28] minReg=1 last wt=200.00> Assigning related to STORE_LCL_VAR BB03 regmask=[x0-xip0 x19-x28] minReg=1 last wt=1200.00> DefList: { } N059 (???,???) [000147] ----------- * IL_OFFSET void INLRT @ 0x01A[E-] REG NA DefList: { } N061 ( 1, 1) [000018] ----------- * LCL_VAR byref V00 this u:1 NA REG NA $80 DefList: { } N063 ( 3, 4) [000090] -c--------- * LEA(b+12) byref REG NA Contained DefList: { } N065 ( 4, 3) [000019] n---GO----- * IND int REG NA LCL_VAR BB03 regmask=[x0-xip0 x19-x28] minReg=1 last wt=2800.00> Interval 17: int RefPositions {} physReg:NA Preferences=[x0-xip0 x19-x28] IND BB03 regmask=[x0-xip0 x19-x28] minReg=1 wt=800.00> DefList: { N065.t19. IND } N067 ( 4, 3) [000021] DA--GO----- * STORE_LCL_VAR int V02 loc1 d:1 NA REG NA BB03 regmask=[x0-xip0 x19-x28] minReg=1 last wt=200.00> Assigning related to STORE_LCL_VAR BB03 regmask=[x0-xip0 x19-x28] minReg=1 last wt=800.00> DefList: { } N069 ( 1, 1) [000025] ----------- * LCL_VAR int V02 loc1 u:1 NA REG NA DefList: { } N071 ( 1, 2) [000026] -c--------- * CNS_INT int 1 REG NA $44 Contained DefList: { } N073 ( 3, 4) [000027] ----------- * ADD int REG NA LCL_VAR BB03 regmask=[x0-xip0 x19-x28] minReg=1 last wt=800.00> Interval 18: int RefPositions {} physReg:NA Preferences=[x0-xip0 x19-x28] ADD BB03 regmask=[x0-xip0 x19-x28] minReg=1 wt=800.00> DefList: { N073.t27. ADD } N075 ( 1, 1) [000017] ----------- * LCL_VAR byref V00 this u:1 NA REG NA $80 DefList: { N073.t27. ADD } N077 ( 3, 4) [000092] -c--------- * LEA(b+12) byref REG NA Contained DefList: { N073.t27. ADD } N079 (???,???) [000148] -A--GO----- * STOREIND int REG NA LCL_VAR BB03 regmask=[x0-xip0 x19-x28] minReg=1 last wt=2800.00> BB03 regmask=[x0-xip0 x19-x28] minReg=1 last wt=200.00> DefList: { } N081 ( 1, 1) [000030] ----------- * LCL_VAR int V02 loc1 u:1 NA REG NA DefList: { } N083 ( 1, 1) [000024] ----------- * LCL_VAR ref V04 tmp1 u:1 NA REG NA DefList: { } N085 (???,???) [000158] -c--------- * LEA(b+8) byref REG NA Contained DefList: { } N087 ( 3, 3) [000095] ---X------- * IND int REG NA LCL_VAR BB03 regmask=[x0-xip0 x19-x28] minReg=1 last wt=1200.00> Interval 19: int RefPositions {} physReg:NA Preferences=[x0-xip0 x19-x28] IND BB03 regmask=[x0-xip0 x19-x28] minReg=1 wt=800.00> DefList: { N087.t95. IND } N089 ( 8, 11) [000096] ---X-O----- * BOUNDS_CHECK_Rng -> BB07 void REG NA LCL_VAR BB03 regmask=[x0-xip0 x19-x28] minReg=1 last wt=800.00> BB03 regmask=[x0-xip0 x19-x28] minReg=1 last wt=200.00> DefList: { } N091 ( 1, 1) [000093] ----------- * LCL_VAR ref V04 tmp1 u:1 NA (last use) REG NA DefList: { } N093 ( 1, 1) [000094] ----------- * LCL_VAR int V02 loc1 u:1 NA (last use) REG NA DefList: { } N095 ( 2, 3) [000097] -c-------U- * CAST long <- uint REG NA Contained DefList: { } N097 ( 1, 2) [000098] -c-----N--- * CNS_INT long 4 REG NA $105 Contained DefList: { } N099 ( 4, 6) [000099] ----------- * BFIZ long REG NA LCL_VAR BB03 regmask=[x0-xip0 x19-x28] minReg=1 last wt=800.00> Interval 20: long RefPositions {} physReg:NA Preferences=[x0-xip0 x19-x28] BFIZ BB03 regmask=[x0-xip0 x19-x28] minReg=1 wt=800.00> DefList: { N099.t99. BFIZ } N101 ( 1, 2) [000100] -c--------- * CNS_INT long 16 REG NA $104 Contained DefList: { N099.t99. BFIZ } N103 ( 6, 9) [000101] ----------- * ADD long REG NA BB03 regmask=[x0-xip0 x19-x28] minReg=1 last wt=200.00> Interval 21: long RefPositions {} physReg:NA Preferences=[x0-xip0 x19-x28] ADD BB03 regmask=[x0-xip0 x19-x28] minReg=1 wt=800.00> DefList: { N103.t101. ADD } N105 ( 7, 10) [000102] -------N--- * ADD byref REG NA LCL_VAR BB03 regmask=[x0-xip0 x19-x28] minReg=1 last wt=1200.00> BB03 regmask=[x0-xip0 x19-x28] minReg=1 last wt=200.00> Interval 22: byref RefPositions {} physReg:NA Preferences=[x0-xip0 x19-x28] ADD BB03 regmask=[x0-xip0 x19-x28] minReg=1 wt=800.00> DefList: { N105.t102. ADD } N107 ( 15, 21) [000033] DA-XGO----- * STORE_LCL_VAR byref V01 loc0 d:1 NA REG NA BB03 regmask=[x0-xip0 x19-x28] minReg=1 last wt=200.00> Assigning related to STORE_LCL_VAR BB03 regmask=[x0-xip0 x19-x28] minReg=1 last wt=500.00> DefList: { } N109 (???,???) [000149] ----------- * IL_OFFSET void INLRT @ 0x03C[E-] REG NA DefList: { } N111 ( 1, 1) [000034] ----------- * LCL_VAR byref V01 loc0 u:1 NA REG NA $400 DefList: { } N113 ( 3, 4) [000106] -c--------- * LEA(b+4) byref REG NA Contained DefList: { } N115 ( 4, 3) [000035] ---XG------ * IND int REG NA LCL_VAR BB03 regmask=[x0-xip0 x19-x28] minReg=1 last wt=500.00> Interval 23: int RefPositions {} physReg:NA Preferences=[x0-xip0 x19-x28] IND BB03 regmask=[x0-xip0 x19-x28] minReg=1 wt=800.00> DefList: { N115.t35. IND } N117 ( 1, 2) [000036] -c--------- * CNS_INT int -1 REG NA $41 Contained DefList: { N115.t35. IND } N119 ( 6, 6) [000037] J--XG--N--- * LT void REG NA BB03 regmask=[x0-xip0 x19-x28] minReg=1 last wt=200.00> DefList: { } N121 ( 8, 8) [000038] ---XG------ * JTRUE void REG NA $268 CHECKING LAST USES for BB03, liveout={V00 V01} ============================== use: {V00} def: {V01 V02 V04} NEW BLOCK BB04 Setting BB01 as the predecessor for determining incoming variable registers of BB04 Creating dummy definitions BB04 regmask=[x0-xip0 x19-x28] minReg=1 last wt=50.00> Finished creating dummy definitions DefList: { } N125 ( 1, 1) [000040] ----------- * LCL_VAR byref V01 loc0 u:1 NA REG NA $400 DefList: { } N127 ( 3, 4) [000108] -c--------- * LEA(b+8) byref REG NA Contained DefList: { } N129 ( 4, 3) [000041] n---GO----- * IND int REG NA LCL_VAR BB04 regmask=[x0-xip0 x19-x28] minReg=1 last wt=500.00> Interval 24: int RefPositions {} physReg:NA Preferences=[x0-xip0 x19-x28] IND BB04 regmask=[x0-xip0 x19-x28] minReg=1 wt=200.00> DefList: { N129.t41. IND } N131 ( 8, 6) [000079] DA--GO----- * STORE_LCL_VAR int V06 tmp3 d:1 NA REG NA BB04 regmask=[x0-xip0 x19-x28] minReg=1 last wt=50.00> Assigning related to STORE_LCL_VAR BB04 regmask=[x0-xip0 x19-x28] minReg=1 last wt=200.00> DefList: { } N133 ( 1, 1) [000042] ----------- * LCL_VAR byref V01 loc0 u:1 NA (last use) REG NA $400 DefList: { } N135 ( 3, 4) [000110] -c--------- * LEA(b+12) byref REG NA Contained DefList: { } N137 ( 4, 3) [000043] n---GO----- * IND int REG NA LCL_VAR BB04 regmask=[x0-xip0 x19-x28] minReg=1 last wt=500.00> Interval 25: int RefPositions {} physReg:NA Preferences=[x0-xip0 x19-x28] IND BB04 regmask=[x0-xip0 x19-x28] minReg=1 wt=200.00> DefList: { N137.t43. IND } N139 ( 8, 6) [000081] DA--GO----- * STORE_LCL_VAR int V07 tmp4 d:1 NA REG NA BB04 regmask=[x0-xip0 x19-x28] minReg=1 last wt=50.00> Assigning related to STORE_LCL_VAR BB04 regmask=[x0-xip0 x19-x28] minReg=1 last wt=200.00> DefList: { } N141 (???,???) [000150] ----------- * IL_OFFSET void INL01 @ 0x000[E-] <- INLRT @ ??? REG NA DefList: { } N143 ( 3, 2) [000071] ----------- * LCL_VAR int V06 tmp3 u:1 NA (last use) REG NA DefList: { } N145 ( 7, 5) [000073] DA--------- * STORE_LCL_VAR int V08 tmp5 d:1 NA REG NA LCL_VAR BB04 regmask=[x0-xip0 x19-x28] minReg=1 last wt=200.00> Assigning related to STORE_LCL_VAR BB04 regmask=[x0-xip0 x19-x28] minReg=1 last wt=100.00> DefList: { } N147 (???,???) [000151] ----------- * IL_OFFSET void INL01 @ 0x007[E-] <- INLRT @ ??? REG NA DefList: { } N149 ( 3, 2) [000075] ----------- * LCL_VAR int V07 tmp4 u:1 NA (last use) REG NA DefList: { } N151 ( 7, 5) [000077] DA--------- * STORE_LCL_VAR int V09 tmp6 d:1 NA REG NA LCL_VAR BB04 regmask=[x0-xip0 x19-x28] minReg=1 last wt=200.00> Assigning related to STORE_LCL_VAR BB04 regmask=[x0-xip0 x19-x28] minReg=1 last wt=100.00> DefList: { } N153 (???,???) [000152] ----------- * IL_OFFSET void INLRT @ 0x057[--] REG NA DefList: { } N155 ( 1, 1) [000039] ----------- * LCL_VAR byref V00 this u:1 NA (last use) REG NA $80 DefList: { } N157 ( 1, 2) [000111] -c--------- * CNS_INT long 20 REG NA $10b Contained DefList: { } N159 ( 3, 4) [000112] ----------- * ADD byref REG NA $152 LCL_VAR BB04 regmask=[x0-xip0 x19-x28] minReg=1 last wt=2800.00> Interval 26: byref RefPositions {} physReg:NA Preferences=[x0-xip0 x19-x28] ADD BB04 regmask=[x0-xip0 x19-x28] minReg=1 wt=200.00> DefList: { N159.t112. ADD } N161 ( 3, 4) [000114] DA--------- * STORE_LCL_VAR byref V10 tmp7 d:1 NA REG NA BB04 regmask=[x0-xip0 x19-x28] minReg=1 last wt=50.00> Assigning related to STORE_LCL_VAR BB04 regmask=[x0-xip0 x19-x28] minReg=1 last wt=300.00> DefList: { } N163 ( 1, 1) [000115] ----------- * LCL_VAR byref V10 tmp7 u:1 NA REG NA $152 DefList: { } N165 ( 3, 2) [000117] ----------- * LCL_VAR int V08 tmp5 u:1 NA (last use) REG NA DefList: { } N167 (???,???) [000153] -A---O----- * STOREIND int REG NA LCL_VAR BB04 regmask=[x0-xip0 x19-x28] minReg=1 last wt=300.00> LCL_VAR BB04 regmask=[x0-xip0 x19-x28] minReg=1 last wt=100.00> DefList: { } N169 ( 1, 1) [000120] ----------- * LCL_VAR byref V10 tmp7 u:1 NA (last use) REG NA $152 DefList: { } N171 ( 3, 4) [000122] -c--------- * LEA(b+4) byref REG NA Contained DefList: { } N173 ( 3, 2) [000124] ----------- * LCL_VAR int V09 tmp6 u:1 NA (last use) REG NA DefList: { } N175 (???,???) [000154] -A---O----- * STOREIND int REG NA LCL_VAR BB04 regmask=[x0-xip0 x19-x28] minReg=1 last wt=300.00> LCL_VAR BB04 regmask=[x0-xip0 x19-x28] minReg=1 last wt=100.00> DefList: { } N177 (???,???) [000155] ----------- * IL_OFFSET void INLRT @ 0x05C[E-] REG NA DefList: { } N179 ( 1, 2) [000127] ----------- * CNS_INT int 1 REG NA $44 Interval 27: int RefPositions {} physReg:NA Preferences=[x0-xip0 x19-x28] CNS_INT BB04 regmask=[x0-xip0 x19-x28] minReg=1 wt=200.00> DefList: { N179.t127. CNS_INT } N181 ( 2, 3) [000053] ----------- * RETURN int REG NA $VN.Void BB04 regmask=[x0] minReg=1 wt=50.00> BB04 regmask=[x0] minReg=1 last fixed wt=50.00> CHECKING LAST USES for BB04, liveout={} ============================== use: {V00 V01} def: {V06 V07 V08 V09 V10} NEW BLOCK BB06 Setting BB05 as the predecessor for determining incoming variable registers of BB06 DefList: { } N185 (???,???) [000142] ----------- * IL_OFFSET void INLRT @ 0x071[E-] REG NA DefList: { } N187 ( 1, 1) [000055] ----------- * LCL_VAR byref V00 this u:1 NA REG NA $80 DefList: { } N189 ( 3, 2) [000056] n---GO----- * IND ref REG NA LCL_VAR BB06 regmask=[x0-xip0 x19-x28] minReg=1 last wt=2800.00> Interval 28: ref RefPositions {} physReg:NA Preferences=[x0-xip0 x19-x28] IND BB06 regmask=[x0-xip0 x19-x28] minReg=1 wt=200.00> DefList: { N189.t56. IND } N191 ( 5, 5) [000135] -c--------- * LEA(b+56) byref REG NA Contained DefList: { N189.t56. IND } N193 ( 6, 4) [000057] ---XGO----- * IND int REG NA BB06 regmask=[x0-xip0 x19-x28] minReg=1 last wt=50.00> Interval 29: int RefPositions {} physReg:NA Preferences=[x0-xip0 x19-x28] IND BB06 regmask=[x0-xip0 x19-x28] minReg=1 wt=200.00> DefList: { N193.t57. IND } N195 ( 1, 2) [000058] -c--------- * CNS_INT int 1 REG NA $44 Contained DefList: { N193.t57. IND } N197 ( 8, 7) [000059] ---XGO----- * ADD int REG NA BB06 regmask=[x0-xip0 x19-x28] minReg=1 last wt=50.00> Interval 30: int RefPositions {} physReg:NA Preferences=[x0-xip0 x19-x28] ADD BB06 regmask=[x0-xip0 x19-x28] minReg=1 wt=200.00> DefList: { N197.t59. ADD } N199 ( 1, 1) [000054] ----------- * LCL_VAR byref V00 this u:1 NA REG NA $80 DefList: { N197.t59. ADD } N201 ( 3, 4) [000133] -c--------- * LEA(b+12) byref REG NA Contained DefList: { N197.t59. ADD } N203 (???,???) [000143] -A-XGO----- * STOREIND int REG NA LCL_VAR BB06 regmask=[x0-xip0 x19-x28] minReg=1 last wt=2800.00> BB06 regmask=[x0-xip0 x19-x28] minReg=1 last wt=50.00> DefList: { } N205 (???,???) [000144] ----------- * IL_OFFSET void INLRT @ 0x084[E-] REG NA DefList: { } N207 ( 1, 1) [000062] ----------- * LCL_VAR byref V00 this u:1 NA (last use) REG NA $80 DefList: { } N209 ( 3, 4) [000137] -c--------- * LEA(b+20) byref REG NA Contained DefList: { } N211 ( 1, 2) [000065] -c--------- * CNS_INT int 0 REG NA $40 Contained DefList: { } N213 ( 9, 8) [000064] -A--G------ * STOREIND long REG NA LCL_VAR BB06 regmask=[x0-xip0 x19-x28] minReg=1 last wt=2800.00> DefList: { } N215 (???,???) [000145] ----------- * IL_OFFSET void INLRT @ 0x090[E-] REG NA DefList: { } N217 ( 1, 2) [000138] ----------- * CNS_INT int 0 REG NA $40 Interval 31: int RefPositions {} physReg:NA Preferences=[x0-xip0 x19-x28] CNS_INT BB06 regmask=[x0-xip0 x19-x28] minReg=1 wt=200.00> DefList: { N217.t138. CNS_INT } N219 ( 2, 3) [000068] ----------- * RETURN int REG NA $VN.Void BB06 regmask=[x0] minReg=1 wt=50.00> BB06 regmask=[x0] minReg=1 last fixed wt=50.00> CHECKING LAST USES for BB06, liveout={} ============================== use: {V00} def: {} NEW BLOCK BB02 Setting BB01 as the predecessor for determining incoming variable registers of BB02 firstColdLoc = 223 DefList: { } N223 (???,???) [000156] ----------- * IL_OFFSET void INLRT @ 0x013[E-] REG NA DefList: { } N225 ( 3, 12) [000160] H---------- * CNS_INT(h) long 0xffff707cb078 ftn REG NA Interval 32: long RefPositions {} physReg:NA Preferences=[x0-xip0 x19-x28] CNS_INT BB02 regmask=[x0-xip0 x19-x28] minReg=1 wt=0.00> DefList: { N225.t160. CNS_INT } N227 ( 6, 14) [000161] ----------- * IND long REG NA BB02 regmask=[x0-xip0 x19-x28] minReg=1 last wt=0.00> Interval 33: long RefPositions {} physReg:NA Preferences=[x0-xip0 x19-x28] IND BB02 regmask=[x0-xip0 x19-x28] minReg=1 wt=0.00> DefList: { N227.t161. IND } N229 ( 14, 2) [000069] --CXG------ * CALL void System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion() REG NA $VN.Void BB02 regmask=[x0-xip0 x19-x28] minReg=1 last wt=0.00> BB02 regmask=[x0] minReg=1 wt=0.00> BB02 regmask=[x1] minReg=1 wt=0.00> BB02 regmask=[x2] minReg=1 wt=0.00> BB02 regmask=[x3] minReg=1 wt=0.00> BB02 regmask=[x4] minReg=1 wt=0.00> BB02 regmask=[x5] minReg=1 wt=0.00> BB02 regmask=[x6] minReg=1 wt=0.00> BB02 regmask=[x7] minReg=1 wt=0.00> BB02 regmask=[x8] minReg=1 wt=0.00> BB02 regmask=[x9] minReg=1 wt=0.00> BB02 regmask=[x10] minReg=1 wt=0.00> BB02 regmask=[x11] minReg=1 wt=0.00> BB02 regmask=[x12] minReg=1 wt=0.00> BB02 regmask=[x13] minReg=1 wt=0.00> BB02 regmask=[x14] minReg=1 wt=0.00> BB02 regmask=[x15] minReg=1 wt=0.00> BB02 regmask=[xip0] minReg=1 wt=0.00> BB02 regmask=[xip1] minReg=1 wt=0.00> BB02 regmask=[lr] minReg=1 wt=0.00> CHECKING LAST USES for BB02, liveout={} ============================== use: {} def: {} NEW BLOCK BB07 No predecessor; - throw block; DefList: { } N233 ( 14, 2) [000159] --CXG------ * CALL help void CORINFO_HELP_RNGCHKFAIL REG NA BB07 regmask=[x0] minReg=1 wt=0.00> BB07 regmask=[x1] minReg=1 wt=0.00> BB07 regmask=[x2] minReg=1 wt=0.00> BB07 regmask=[x3] minReg=1 wt=0.00> BB07 regmask=[x4] minReg=1 wt=0.00> BB07 regmask=[x5] minReg=1 wt=0.00> BB07 regmask=[x6] minReg=1 wt=0.00> BB07 regmask=[x7] minReg=1 wt=0.00> BB07 regmask=[x8] minReg=1 wt=0.00> BB07 regmask=[x9] minReg=1 wt=0.00> BB07 regmask=[x10] minReg=1 wt=0.00> BB07 regmask=[x11] minReg=1 wt=0.00> BB07 regmask=[x12] minReg=1 wt=0.00> BB07 regmask=[x13] minReg=1 wt=0.00> BB07 regmask=[x14] minReg=1 wt=0.00> BB07 regmask=[x15] minReg=1 wt=0.00> BB07 regmask=[xip0] minReg=1 wt=0.00> BB07 regmask=[xip1] minReg=1 wt=0.00> BB07 regmask=[lr] minReg=1 wt=0.00> CHECKING LAST USES for BB07, liveout={} ============================== use: {} def: {} Linear scan intervals BEFORE VALIDATING INTERVALS: Interval 0: (V00) byref RefPositions {#0@0 #2@9 #4@13 #11@31 #13@35 #20@51 #26@65 #32@79 #64@159 #76@189 #82@203 #84@213} physReg:x0 Preferences=[x0] Interval 1: (V01) byref RefPositions {#46@108 #47@115 #50@123 #52@129 #56@137} physReg:NA Preferences=[x0-xip0 x19-x28] Interval 2: (V02) int RefPositions {#29@68 #30@73 #36@89 #38@99} physReg:NA Preferences=[x0-xip0 x19-x28] Interval 3: (V04) ref RefPositions {#25@58 #34@87 #42@105} physReg:NA Preferences=[x0-xip0 x19-x28] Interval 4: (V06) int RefPositions {#55@132 #60@145} physReg:NA Preferences=[x0-xip0 x19-x28] RelatedInterval Interval 5: (V07) int RefPositions {#59@140 #62@151} physReg:NA Preferences=[x0-xip0 x19-x28] RelatedInterval Interval 6: (V08) int (field) RefPositions {#61@146 #69@167} physReg:NA Preferences=[x0-xip0 x19-x28] Interval 7: (V09) int (field) RefPositions {#63@152 #71@175} physReg:NA Preferences=[x0-xip0 x19-x28] Interval 8: (V10) byref RefPositions {#67@162 #68@167 #70@175} physReg:NA Preferences=[x0-xip0 x19-x28] Interval 9: int RefPositions {#3@10 #8@19} physReg:NA Preferences=[x0-xip0 x19-x28] Interval 10: ref RefPositions {#5@14 #6@17} physReg:NA Preferences=[x0-xip0 x19-x28] Interval 11: int RefPositions {#7@18 #9@19} physReg:NA Preferences=[x0-xip0 x19-x28] Interval 12: int RefPositions {#12@32 #17@41} physReg:NA Preferences=[x0-xip0 x19-x28] Interval 13: ref RefPositions {#14@36 #15@39} physReg:NA Preferences=[x0-xip0 x19-x28] Interval 14: int RefPositions {#16@40 #18@41} physReg:NA Preferences=[x0-xip0 x19-x28] Interval 15: ref RefPositions {#21@52 #22@55} physReg:NA Preferences=[x0-xip0 x19-x28] Interval 16: ref RefPositions {#23@56 #24@57} physReg:NA Preferences=[x0-xip0 x19-x28] RelatedInterval Interval 17: int RefPositions {#27@66 #28@67} physReg:NA Preferences=[x0-xip0 x19-x28] RelatedInterval Interval 18: int RefPositions {#31@74 #33@79} physReg:NA Preferences=[x0-xip0 x19-x28] Interval 19: int RefPositions {#35@88 #37@89} physReg:NA Preferences=[x0-xip0 x19-x28] Interval 20: long RefPositions {#39@100 #40@103} physReg:NA Preferences=[x0-xip0 x19-x28] Interval 21: long RefPositions {#41@104 #43@105} physReg:NA Preferences=[x0-xip0 x19-x28] Interval 22: byref RefPositions {#44@106 #45@107} physReg:NA Preferences=[x0-xip0 x19-x28] RelatedInterval Interval 23: int RefPositions {#48@116 #49@119} physReg:NA Preferences=[x0-xip0 x19-x28] Interval 24: int RefPositions {#53@130 #54@131} physReg:NA Preferences=[x0-xip0 x19-x28] RelatedInterval Interval 25: int RefPositions {#57@138 #58@139} physReg:NA Preferences=[x0-xip0 x19-x28] RelatedInterval Interval 26: byref RefPositions {#65@160 #66@161} physReg:NA Preferences=[x0-xip0 x19-x28] RelatedInterval Interval 27: int (constant) RefPositions {#72@180 #74@181} physReg:NA Preferences=[x0] Interval 28: ref RefPositions {#77@190 #78@193} physReg:NA Preferences=[x0-xip0 x19-x28] Interval 29: int RefPositions {#79@194 #80@197} physReg:NA Preferences=[x0-xip0 x19-x28] Interval 30: int RefPositions {#81@198 #83@203} physReg:NA Preferences=[x0-xip0 x19-x28] Interval 31: int (constant) RefPositions {#85@218 #87@219} physReg:NA Preferences=[x0] Interval 32: long (constant) RefPositions {#89@226 #90@227} physReg:NA Preferences=[x0-xip0 x19-x28] Interval 33: long RefPositions {#91@228 #92@229} physReg:NA Preferences=[x0-xip0 x19-x28] ------------ REFPOSITIONS BEFORE VALIDATING INTERVALS: ------------ BB00 regmask=[x0] minReg=1 fixed regOptional wt=100.00> LCL_VAR BB01 regmask=[x0-xip0 x19-x28] minReg=1 wt=2800.00> IND BB01 regmask=[x0-xip0 x19-x28] minReg=1 wt=400.00> LCL_VAR BB01 regmask=[x0-xip0 x19-x28] minReg=1 wt=2800.00> IND BB01 regmask=[x0-xip0 x19-x28] minReg=1 wt=400.00> BB01 regmask=[x0-xip0 x19-x28] minReg=1 last wt=100.00> IND BB01 regmask=[x0-xip0 x19-x28] minReg=1 wt=400.00> BB01 regmask=[x0-xip0 x19-x28] minReg=1 last wt=100.00> BB01 regmask=[x0-xip0 x19-x28] minReg=1 last wt=100.00> LCL_VAR BB05 regmask=[x0-xip0 x19-x28] minReg=1 wt=2800.00> IND BB05 regmask=[x0-xip0 x19-x28] minReg=1 wt=3200.00> LCL_VAR BB05 regmask=[x0-xip0 x19-x28] minReg=1 wt=2800.00> IND BB05 regmask=[x0-xip0 x19-x28] minReg=1 wt=3200.00> BB05 regmask=[x0-xip0 x19-x28] minReg=1 last wt=800.00> IND BB05 regmask=[x0-xip0 x19-x28] minReg=1 wt=3200.00> BB05 regmask=[x0-xip0 x19-x28] minReg=1 last wt=800.00> BB05 regmask=[x0-xip0 x19-x28] minReg=1 last wt=800.00> LCL_VAR BB03 regmask=[x0-xip0 x19-x28] minReg=1 wt=2800.00> IND BB03 regmask=[x0-xip0 x19-x28] minReg=1 wt=800.00> BB03 regmask=[x0-xip0 x19-x28] minReg=1 last wt=200.00> IND BB03 regmask=[x0-xip0 x19-x28] minReg=1 wt=800.00> BB03 regmask=[x0-xip0 x19-x28] minReg=1 last wt=200.00> STORE_LCL_VAR BB03 regmask=[x0-xip0 x19-x28] minReg=1 wt=1200.00> LCL_VAR BB03 regmask=[x0-xip0 x19-x28] minReg=1 wt=2800.00> IND BB03 regmask=[x0-xip0 x19-x28] minReg=1 wt=800.00> BB03 regmask=[x0-xip0 x19-x28] minReg=1 last wt=200.00> STORE_LCL_VAR BB03 regmask=[x0-xip0 x19-x28] minReg=1 wt=800.00> LCL_VAR BB03 regmask=[x0-xip0 x19-x28] minReg=1 wt=800.00> ADD BB03 regmask=[x0-xip0 x19-x28] minReg=1 wt=800.00> LCL_VAR BB03 regmask=[x0-xip0 x19-x28] minReg=1 wt=2800.00> BB03 regmask=[x0-xip0 x19-x28] minReg=1 last wt=200.00> LCL_VAR BB03 regmask=[x0-xip0 x19-x28] minReg=1 wt=1200.00> IND BB03 regmask=[x0-xip0 x19-x28] minReg=1 wt=800.00> LCL_VAR BB03 regmask=[x0-xip0 x19-x28] minReg=1 wt=800.00> BB03 regmask=[x0-xip0 x19-x28] minReg=1 last wt=200.00> LCL_VAR BB03 regmask=[x0-xip0 x19-x28] minReg=1 last wt=800.00> BFIZ BB03 regmask=[x0-xip0 x19-x28] minReg=1 wt=800.00> BB03 regmask=[x0-xip0 x19-x28] minReg=1 last wt=200.00> ADD BB03 regmask=[x0-xip0 x19-x28] minReg=1 wt=800.00> LCL_VAR BB03 regmask=[x0-xip0 x19-x28] minReg=1 last wt=1200.00> BB03 regmask=[x0-xip0 x19-x28] minReg=1 last wt=200.00> ADD BB03 regmask=[x0-xip0 x19-x28] minReg=1 wt=800.00> BB03 regmask=[x0-xip0 x19-x28] minReg=1 last wt=200.00> STORE_LCL_VAR BB03 regmask=[x0-xip0 x19-x28] minReg=1 wt=500.00> LCL_VAR BB03 regmask=[x0-xip0 x19-x28] minReg=1 wt=500.00> IND BB03 regmask=[x0-xip0 x19-x28] minReg=1 wt=800.00> BB03 regmask=[x0-xip0 x19-x28] minReg=1 last wt=200.00> BB04 regmask=[x0-xip0 x19-x28] minReg=1 regOptional wt=50.00> LCL_VAR BB04 regmask=[x0-xip0 x19-x28] minReg=1 wt=500.00> IND BB04 regmask=[x0-xip0 x19-x28] minReg=1 wt=200.00> BB04 regmask=[x0-xip0 x19-x28] minReg=1 last wt=50.00> STORE_LCL_VAR BB04 regmask=[x0-xip0 x19-x28] minReg=1 wt=200.00> LCL_VAR BB04 regmask=[x0-xip0 x19-x28] minReg=1 last wt=500.00> IND BB04 regmask=[x0-xip0 x19-x28] minReg=1 wt=200.00> BB04 regmask=[x0-xip0 x19-x28] minReg=1 last wt=50.00> STORE_LCL_VAR BB04 regmask=[x0-xip0 x19-x28] minReg=1 wt=200.00> LCL_VAR BB04 regmask=[x0-xip0 x19-x28] minReg=1 last wt=200.00> STORE_LCL_VAR BB04 regmask=[x0-xip0 x19-x28] minReg=1 wt=100.00> LCL_VAR BB04 regmask=[x0-xip0 x19-x28] minReg=1 last wt=200.00> STORE_LCL_VAR BB04 regmask=[x0-xip0 x19-x28] minReg=1 wt=100.00> LCL_VAR BB04 regmask=[x0-xip0 x19-x28] minReg=1 last wt=2800.00> ADD BB04 regmask=[x0-xip0 x19-x28] minReg=1 wt=200.00> BB04 regmask=[x0-xip0 x19-x28] minReg=1 last wt=50.00> STORE_LCL_VAR BB04 regmask=[x0-xip0 x19-x28] minReg=1 wt=300.00> LCL_VAR BB04 regmask=[x0-xip0 x19-x28] minReg=1 wt=300.00> LCL_VAR BB04 regmask=[x0-xip0 x19-x28] minReg=1 last wt=100.00> LCL_VAR BB04 regmask=[x0-xip0 x19-x28] minReg=1 last wt=300.00> LCL_VAR BB04 regmask=[x0-xip0 x19-x28] minReg=1 last wt=100.00> CNS_INT BB04 regmask=[x0] minReg=1 wt=200.00> BB04 regmask=[x0] minReg=1 wt=50.00> BB04 regmask=[x0] minReg=1 last fixed wt=50.00> LCL_VAR BB06 regmask=[x0-xip0 x19-x28] minReg=1 wt=2800.00> IND BB06 regmask=[x0-xip0 x19-x28] minReg=1 wt=200.00> BB06 regmask=[x0-xip0 x19-x28] minReg=1 last wt=50.00> IND BB06 regmask=[x0-xip0 x19-x28] minReg=1 wt=200.00> BB06 regmask=[x0-xip0 x19-x28] minReg=1 last wt=50.00> ADD BB06 regmask=[x0-xip0 x19-x28] minReg=1 wt=200.00> LCL_VAR BB06 regmask=[x0-xip0 x19-x28] minReg=1 wt=2800.00> BB06 regmask=[x0-xip0 x19-x28] minReg=1 last wt=50.00> LCL_VAR BB06 regmask=[x0-xip0 x19-x28] minReg=1 last wt=2800.00> CNS_INT BB06 regmask=[x0] minReg=1 wt=200.00> BB06 regmask=[x0] minReg=1 wt=50.00> BB06 regmask=[x0] minReg=1 last fixed wt=50.00> CNS_INT BB02 regmask=[x0-xip0 x19-x28] minReg=1 wt=0.00> BB02 regmask=[x0-xip0 x19-x28] minReg=1 last wt=0.00> IND BB02 regmask=[x0-xip0 x19-x28] minReg=1 wt=0.00> BB02 regmask=[x0-xip0 x19-x28] minReg=1 last wt=0.00> BB02 regmask=[x0] minReg=1 last wt=0.00> BB02 regmask=[x1] minReg=1 last wt=0.00> BB02 regmask=[x2] minReg=1 last wt=0.00> BB02 regmask=[x3] minReg=1 last wt=0.00> BB02 regmask=[x4] minReg=1 last wt=0.00> BB02 regmask=[x5] minReg=1 last wt=0.00> BB02 regmask=[x6] minReg=1 last wt=0.00> BB02 regmask=[x7] minReg=1 last wt=0.00> BB02 regmask=[x8] minReg=1 last wt=0.00> BB02 regmask=[x9] minReg=1 last wt=0.00> BB02 regmask=[x10] minReg=1 last wt=0.00> BB02 regmask=[x11] minReg=1 last wt=0.00> BB02 regmask=[x12] minReg=1 last wt=0.00> BB02 regmask=[x13] minReg=1 last wt=0.00> BB02 regmask=[x14] minReg=1 last wt=0.00> BB02 regmask=[x15] minReg=1 last wt=0.00> BB02 regmask=[xip0] minReg=1 last wt=0.00> BB02 regmask=[xip1] minReg=1 last wt=0.00> BB02 regmask=[lr] minReg=1 last wt=0.00> BB07 regmask=[x0] minReg=1 last wt=0.00> BB07 regmask=[x1] minReg=1 last wt=0.00> BB07 regmask=[x2] minReg=1 last wt=0.00> BB07 regmask=[x3] minReg=1 last wt=0.00> BB07 regmask=[x4] minReg=1 last wt=0.00> BB07 regmask=[x5] minReg=1 last wt=0.00> BB07 regmask=[x6] minReg=1 last wt=0.00> BB07 regmask=[x7] minReg=1 last wt=0.00> BB07 regmask=[x8] minReg=1 last wt=0.00> BB07 regmask=[x9] minReg=1 last wt=0.00> BB07 regmask=[x10] minReg=1 last wt=0.00> BB07 regmask=[x11] minReg=1 last wt=0.00> BB07 regmask=[x12] minReg=1 last wt=0.00> BB07 regmask=[x13] minReg=1 last wt=0.00> BB07 regmask=[x14] minReg=1 last wt=0.00> BB07 regmask=[x15] minReg=1 last wt=0.00> BB07 regmask=[xip0] minReg=1 last wt=0.00> BB07 regmask=[xip1] minReg=1 last wt=0.00> BB07 regmask=[lr] minReg=1 last wt=0.00> ------------ REFPOSITIONS DURING VALIDATE INTERVALS (RefPositions per interval) ------------ ----------------- BB00 regmask=[x0] minReg=1 fixed regOptional wt=100.00> LCL_VAR BB01 regmask=[x0-xip0 x19-x28] minReg=1 wt=2800.00> LCL_VAR BB01 regmask=[x0-xip0 x19-x28] minReg=1 wt=2800.00> LCL_VAR BB05 regmask=[x0-xip0 x19-x28] minReg=1 wt=2800.00> LCL_VAR BB05 regmask=[x0-xip0 x19-x28] minReg=1 wt=2800.00> LCL_VAR BB03 regmask=[x0-xip0 x19-x28] minReg=1 wt=2800.00> LCL_VAR BB03 regmask=[x0-xip0 x19-x28] minReg=1 wt=2800.00> LCL_VAR BB03 regmask=[x0-xip0 x19-x28] minReg=1 wt=2800.00> LCL_VAR BB04 regmask=[x0-xip0 x19-x28] minReg=1 last wt=2800.00> LCL_VAR BB06 regmask=[x0-xip0 x19-x28] minReg=1 wt=2800.00> LCL_VAR BB06 regmask=[x0-xip0 x19-x28] minReg=1 wt=2800.00> LCL_VAR BB06 regmask=[x0-xip0 x19-x28] minReg=1 last wt=2800.00> ----------------- STORE_LCL_VAR BB03 regmask=[x0-xip0 x19-x28] minReg=1 wt=1200.00> LCL_VAR BB03 regmask=[x0-xip0 x19-x28] minReg=1 wt=1200.00> LCL_VAR BB03 regmask=[x0-xip0 x19-x28] minReg=1 last wt=1200.00> ----------------- STORE_LCL_VAR BB03 regmask=[x0-xip0 x19-x28] minReg=1 wt=800.00> LCL_VAR BB03 regmask=[x0-xip0 x19-x28] minReg=1 wt=800.00> LCL_VAR BB03 regmask=[x0-xip0 x19-x28] minReg=1 wt=800.00> LCL_VAR BB03 regmask=[x0-xip0 x19-x28] minReg=1 last wt=800.00> ----------------- STORE_LCL_VAR BB03 regmask=[x0-xip0 x19-x28] minReg=1 wt=500.00> LCL_VAR BB03 regmask=[x0-xip0 x19-x28] minReg=1 wt=500.00> BB04 regmask=[x0-xip0 x19-x28] minReg=1 regOptional wt=50.00> LCL_VAR BB04 regmask=[x0-xip0 x19-x28] minReg=1 wt=500.00> LCL_VAR BB04 regmask=[x0-xip0 x19-x28] minReg=1 last wt=500.00> ----------------- STORE_LCL_VAR BB04 regmask=[x0-xip0 x19-x28] minReg=1 wt=300.00> LCL_VAR BB04 regmask=[x0-xip0 x19-x28] minReg=1 wt=300.00> LCL_VAR BB04 regmask=[x0-xip0 x19-x28] minReg=1 last wt=300.00> ----------------- STORE_LCL_VAR BB04 regmask=[x0-xip0 x19-x28] minReg=1 wt=200.00> LCL_VAR BB04 regmask=[x0-xip0 x19-x28] minReg=1 last wt=200.00> ----------------- STORE_LCL_VAR BB04 regmask=[x0-xip0 x19-x28] minReg=1 wt=200.00> LCL_VAR BB04 regmask=[x0-xip0 x19-x28] minReg=1 last wt=200.00> ----------------- STORE_LCL_VAR BB04 regmask=[x0-xip0 x19-x28] minReg=1 wt=100.00> LCL_VAR BB04 regmask=[x0-xip0 x19-x28] minReg=1 last wt=100.00> ----------------- STORE_LCL_VAR BB04 regmask=[x0-xip0 x19-x28] minReg=1 wt=100.00> LCL_VAR BB04 regmask=[x0-xip0 x19-x28] minReg=1 last wt=100.00> TUPLE STYLE DUMP WITH REF POSITIONS Incoming Parameters: V00 BB01 [000..013) -> BB02 (cond), preds={} succs={BB05,BB02} ===== N003. IL_OFFSET INLRT @ 0x000[E-] N005. V00(L0) N007. LEA(b+8) N009. IND Use:(#2) Def:(#3) N011. V00(L0) N013. IND Use:(#4) Def:(#5) N015. LEA(b+68) N017. IND Use:(#6) * Def:(#7) N019. NE Use:(#8) * Use:(#9) * N021. JTRUE BB05 [05E..071) -> BB03 (cond), preds={BB01,BB03} succs={BB06,BB03} ===== N025. IL_OFFSET INLRT @ 0x05E[E-] N027. V00(L0) N029. LEA(b+12) N031. IND Use:(#11) Def:(#12) N033. V00(L0) N035. IND Use:(#13) Def:(#14) N037. LEA(b+56) N039. IND Use:(#15) * Def:(#16) N041. LT Use:(#17) * Use:(#18) * N043. JTRUE BB03 [01A..045) -> BB05 (cond), preds={BB05} succs={BB04,BB05} ===== N047. IL_OFFSET INLRT @ 0x01A[E-] N049. V00(L0) N051. IND Use:(#20) Def:(#21) N053. LEA(b+16) N055. IND Use:(#22) * Def:(#23) Pref: N057. V04(L3) Use:(#24) * Def:(#25) N059. IL_OFFSET INLRT @ 0x01A[E-] N061. V00(L0) N063. LEA(b+12) N065. IND Use:(#26) Def:(#27) Pref: N067. V02(L2) Use:(#28) * Def:(#29) N069. V02(L2) N071. CNS_INT 1 N073. ADD Use:(#30) Def:(#31) N075. V00(L0) N077. LEA(b+12) N079. STOREIND Use:(#32) Use:(#33) * N081. V02(L2) N083. V04(L3) N085. LEA(b+8) N087. IND Use:(#34) Def:(#35) N089. BOUNDS_CHECK_Rng -> BB07 Use:(#36) Use:(#37) * N091. V04(L3) N093. V02(L2) N095. CAST N097. CNS_INT 4 N099. BFIZ Use:(#38) * Def:(#39) N101. CNS_INT 16 N103. ADD Use:(#40) * Def:(#41) N105. ADD Use:(#42) * Use:(#43) * Def:(#44) Pref: N107. V01(L1) Use:(#45) * Def:(#46) N109. IL_OFFSET INLRT @ 0x03C[E-] N111. V01(L1) N113. LEA(b+4) N115. IND Use:(#47) Def:(#48) N117. CNS_INT -1 N119. LT Use:(#49) * N121. JTRUE Dummy def of V01 at #50 BB04 [045..05E) (return), preds={BB03} succs={} ===== N125. V01(L1) N127. LEA(b+8) N129. IND Use:(#52) Def:(#53) Pref: N131. V06(L4) Use:(#54) * Def:(#55) Pref: N133. V01(L1) N135. LEA(b+12) N137. IND Use:(#56) * Def:(#57) Pref: N139. V07(L5) Use:(#58) * Def:(#59) Pref: N141. IL_OFFSET INL01 @ 0x000[E-] <- INLRT @ ??? N143. V06(L4) N145. V08(L6) Use:(#60) * Def:(#61) N147. IL_OFFSET INL01 @ 0x007[E-] <- INLRT @ ??? N149. V07(L5) N151. V09(L7) Use:(#62) * Def:(#63) N153. IL_OFFSET INLRT @ 0x057[--] N155. V00(L0) N157. CNS_INT 20 N159. ADD Use:(#64) * Def:(#65) Pref: N161. V10(L8) Use:(#66) * Def:(#67) N163. V10(L8) N165. V08(L6) N167. STOREIND Use:(#68) Use:(#69) * N169. V10(L8) N171. LEA(b+4) N173. V09(L7) N175. STOREIND Use:(#70) * Use:(#71) * N177. IL_OFFSET INLRT @ 0x05C[E-] N179. CNS_INT 1 Def:(#72) N181. RETURN Use:(#74) Fixed:x0(#73) * BB06 [071..092) (return), preds={BB05} succs={} ===== N185. IL_OFFSET INLRT @ 0x071[E-] N187. V00(L0) N189. IND Use:(#76) Def:(#77) N191. LEA(b+56) N193. IND Use:(#78) * Def:(#79) N195. CNS_INT 1 N197. ADD Use:(#80) * Def:(#81) N199. V00(L0) N201. LEA(b+12) N203. STOREIND Use:(#82) Use:(#83) * N205. IL_OFFSET INLRT @ 0x084[E-] N207. V00(L0) N209. LEA(b+20) N211. CNS_INT 0 N213. STOREIND Use:(#84) * N215. IL_OFFSET INLRT @ 0x090[E-] N217. CNS_INT 0 Def:(#85) N219. RETURN Use:(#87) Fixed:x0(#86) * BB02 [013..01A) (throw), preds={BB01} succs={} ===== N223. IL_OFFSET INLRT @ 0x013[E-] N225. CNS_INT(h) 0xffff707cb078 ftn Def:(#89) N227. IND Use:(#90) * Def:(#91) N229. CALL Use:(#92) * Kill: x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13 x14 x15 xip0 xip1 lr BB07 [???..???) (throw), preds={} succs={} ===== N233. CALL help Kill: x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13 x14 x15 xip0 xip1 lr Linear scan intervals after buildIntervals: Interval 0: (V00) byref RefPositions {#0@0 #2@9 #4@13 #11@31 #13@35 #20@51 #26@65 #32@79 #64@159 #76@189 #82@203 #84@213} physReg:x0 Preferences=[x0] Interval 1: (V01) byref RefPositions {#46@108 #47@115 #50@123 #52@129 #56@137} physReg:NA Preferences=[x0-xip0 x19-x28] Interval 2: (V02) int RefPositions {#29@68 #30@73 #36@89 #38@99} physReg:NA Preferences=[x0-xip0 x19-x28] Interval 3: (V04) ref RefPositions {#25@58 #34@87 #42@105} physReg:NA Preferences=[x0-xip0 x19-x28] Interval 4: (V06) int RefPositions {#55@132 #60@145} physReg:NA Preferences=[x0-xip0 x19-x28] RelatedInterval Interval 5: (V07) int RefPositions {#59@140 #62@151} physReg:NA Preferences=[x0-xip0 x19-x28] RelatedInterval Interval 6: (V08) int (field) RefPositions {#61@146 #69@167} physReg:NA Preferences=[x0-xip0 x19-x28] Interval 7: (V09) int (field) RefPositions {#63@152 #71@175} physReg:NA Preferences=[x0-xip0 x19-x28] Interval 8: (V10) byref RefPositions {#67@162 #68@167 #70@175} physReg:NA Preferences=[x0-xip0 x19-x28] Interval 9: int RefPositions {#3@10 #8@19} physReg:NA Preferences=[x0-xip0 x19-x28] Interval 10: ref RefPositions {#5@14 #6@17} physReg:NA Preferences=[x0-xip0 x19-x28] Interval 11: int RefPositions {#7@18 #9@19} physReg:NA Preferences=[x0-xip0 x19-x28] Interval 12: int RefPositions {#12@32 #17@41} physReg:NA Preferences=[x0-xip0 x19-x28] Interval 13: ref RefPositions {#14@36 #15@39} physReg:NA Preferences=[x0-xip0 x19-x28] Interval 14: int RefPositions {#16@40 #18@41} physReg:NA Preferences=[x0-xip0 x19-x28] Interval 15: ref RefPositions {#21@52 #22@55} physReg:NA Preferences=[x0-xip0 x19-x28] Interval 16: ref RefPositions {#23@56 #24@57} physReg:NA Preferences=[x0-xip0 x19-x28] RelatedInterval Interval 17: int RefPositions {#27@66 #28@67} physReg:NA Preferences=[x0-xip0 x19-x28] RelatedInterval Interval 18: int RefPositions {#31@74 #33@79} physReg:NA Preferences=[x0-xip0 x19-x28] Interval 19: int RefPositions {#35@88 #37@89} physReg:NA Preferences=[x0-xip0 x19-x28] Interval 20: long RefPositions {#39@100 #40@103} physReg:NA Preferences=[x0-xip0 x19-x28] Interval 21: long RefPositions {#41@104 #43@105} physReg:NA Preferences=[x0-xip0 x19-x28] Interval 22: byref RefPositions {#44@106 #45@107} physReg:NA Preferences=[x0-xip0 x19-x28] RelatedInterval Interval 23: int RefPositions {#48@116 #49@119} physReg:NA Preferences=[x0-xip0 x19-x28] Interval 24: int RefPositions {#53@130 #54@131} physReg:NA Preferences=[x0-xip0 x19-x28] RelatedInterval Interval 25: int RefPositions {#57@138 #58@139} physReg:NA Preferences=[x0-xip0 x19-x28] RelatedInterval Interval 26: byref RefPositions {#65@160 #66@161} physReg:NA Preferences=[x0-xip0 x19-x28] RelatedInterval Interval 27: int (constant) RefPositions {#72@180 #74@181} physReg:NA Preferences=[x0] Interval 28: ref RefPositions {#77@190 #78@193} physReg:NA Preferences=[x0-xip0 x19-x28] Interval 29: int RefPositions {#79@194 #80@197} physReg:NA Preferences=[x0-xip0 x19-x28] Interval 30: int RefPositions {#81@198 #83@203} physReg:NA Preferences=[x0-xip0 x19-x28] Interval 31: int (constant) RefPositions {#85@218 #87@219} physReg:NA Preferences=[x0] Interval 32: long (constant) RefPositions {#89@226 #90@227} physReg:NA Preferences=[x0-xip0 x19-x28] Interval 33: long RefPositions {#91@228 #92@229} physReg:NA Preferences=[x0-xip0 x19-x28] *************** In LinearScan::allocateRegisters() Linear scan intervals before allocateRegisters: Interval 0: (V00) byref RefPositions {#0@0 #2@9 #4@13 #11@31 #13@35 #20@51 #26@65 #32@79 #64@159 #76@189 #82@203 #84@213} physReg:x0 Preferences=[x0] Interval 1: (V01) byref RefPositions {#46@108 #47@115 #50@123 #52@129 #56@137} physReg:NA Preferences=[x0-xip0 x19-x28] Interval 2: (V02) int RefPositions {#29@68 #30@73 #36@89 #38@99} physReg:NA Preferences=[x0-xip0 x19-x28] Interval 3: (V04) ref RefPositions {#25@58 #34@87 #42@105} physReg:NA Preferences=[x0-xip0 x19-x28] Interval 4: (V06) int RefPositions {#55@132 #60@145} physReg:NA Preferences=[x0-xip0 x19-x28] RelatedInterval Interval 5: (V07) int RefPositions {#59@140 #62@151} physReg:NA Preferences=[x0-xip0 x19-x28] RelatedInterval Interval 6: (V08) int (field) RefPositions {#61@146 #69@167} physReg:NA Preferences=[x0-xip0 x19-x28] Interval 7: (V09) int (field) RefPositions {#63@152 #71@175} physReg:NA Preferences=[x0-xip0 x19-x28] Interval 8: (V10) byref RefPositions {#67@162 #68@167 #70@175} physReg:NA Preferences=[x0-xip0 x19-x28] Interval 9: int RefPositions {#3@10 #8@19} physReg:NA Preferences=[x0-xip0 x19-x28] Interval 10: ref RefPositions {#5@14 #6@17} physReg:NA Preferences=[x0-xip0 x19-x28] Interval 11: int RefPositions {#7@18 #9@19} physReg:NA Preferences=[x0-xip0 x19-x28] Interval 12: int RefPositions {#12@32 #17@41} physReg:NA Preferences=[x0-xip0 x19-x28] Interval 13: ref RefPositions {#14@36 #15@39} physReg:NA Preferences=[x0-xip0 x19-x28] Interval 14: int RefPositions {#16@40 #18@41} physReg:NA Preferences=[x0-xip0 x19-x28] Interval 15: ref RefPositions {#21@52 #22@55} physReg:NA Preferences=[x0-xip0 x19-x28] Interval 16: ref RefPositions {#23@56 #24@57} physReg:NA Preferences=[x0-xip0 x19-x28] RelatedInterval Interval 17: int RefPositions {#27@66 #28@67} physReg:NA Preferences=[x0-xip0 x19-x28] RelatedInterval Interval 18: int RefPositions {#31@74 #33@79} physReg:NA Preferences=[x0-xip0 x19-x28] Interval 19: int RefPositions {#35@88 #37@89} physReg:NA Preferences=[x0-xip0 x19-x28] Interval 20: long RefPositions {#39@100 #40@103} physReg:NA Preferences=[x0-xip0 x19-x28] Interval 21: long RefPositions {#41@104 #43@105} physReg:NA Preferences=[x0-xip0 x19-x28] Interval 22: byref RefPositions {#44@106 #45@107} physReg:NA Preferences=[x0-xip0 x19-x28] RelatedInterval Interval 23: int RefPositions {#48@116 #49@119} physReg:NA Preferences=[x0-xip0 x19-x28] Interval 24: int RefPositions {#53@130 #54@131} physReg:NA Preferences=[x0-xip0 x19-x28] RelatedInterval Interval 25: int RefPositions {#57@138 #58@139} physReg:NA Preferences=[x0-xip0 x19-x28] RelatedInterval Interval 26: byref RefPositions {#65@160 #66@161} physReg:NA Preferences=[x0-xip0 x19-x28] RelatedInterval Interval 27: int (constant) RefPositions {#72@180 #74@181} physReg:NA Preferences=[x0] Interval 28: ref RefPositions {#77@190 #78@193} physReg:NA Preferences=[x0-xip0 x19-x28] Interval 29: int RefPositions {#79@194 #80@197} physReg:NA Preferences=[x0-xip0 x19-x28] Interval 30: int RefPositions {#81@198 #83@203} physReg:NA Preferences=[x0-xip0 x19-x28] Interval 31: int (constant) RefPositions {#85@218 #87@219} physReg:NA Preferences=[x0] Interval 32: long (constant) RefPositions {#89@226 #90@227} physReg:NA Preferences=[x0-xip0 x19-x28] Interval 33: long RefPositions {#91@228 #92@229} physReg:NA Preferences=[x0-xip0 x19-x28] ------------ REFPOSITIONS BEFORE ALLOCATION: ------------ BB00 regmask=[x0] minReg=1 fixed regOptional wt=100.00> LCL_VAR BB01 regmask=[x0-xip0 x19-x28] minReg=1 wt=2800.00> IND BB01 regmask=[x0-xip0 x19-x28] minReg=1 wt=400.00> LCL_VAR BB01 regmask=[x0-xip0 x19-x28] minReg=1 wt=2800.00> IND BB01 regmask=[x0-xip0 x19-x28] minReg=1 wt=400.00> BB01 regmask=[x0-xip0 x19-x28] minReg=1 last wt=100.00> IND BB01 regmask=[x0-xip0 x19-x28] minReg=1 wt=400.00> BB01 regmask=[x0-xip0 x19-x28] minReg=1 last wt=100.00> BB01 regmask=[x0-xip0 x19-x28] minReg=1 last wt=100.00> LCL_VAR BB05 regmask=[x0-xip0 x19-x28] minReg=1 wt=2800.00> IND BB05 regmask=[x0-xip0 x19-x28] minReg=1 wt=3200.00> LCL_VAR BB05 regmask=[x0-xip0 x19-x28] minReg=1 wt=2800.00> IND BB05 regmask=[x0-xip0 x19-x28] minReg=1 wt=3200.00> BB05 regmask=[x0-xip0 x19-x28] minReg=1 last wt=800.00> IND BB05 regmask=[x0-xip0 x19-x28] minReg=1 wt=3200.00> BB05 regmask=[x0-xip0 x19-x28] minReg=1 last wt=800.00> BB05 regmask=[x0-xip0 x19-x28] minReg=1 last wt=800.00> LCL_VAR BB03 regmask=[x0-xip0 x19-x28] minReg=1 wt=2800.00> IND BB03 regmask=[x0-xip0 x19-x28] minReg=1 wt=800.00> BB03 regmask=[x0-xip0 x19-x28] minReg=1 last wt=200.00> IND BB03 regmask=[x0-xip0 x19-x28] minReg=1 wt=800.00> BB03 regmask=[x0-xip0 x19-x28] minReg=1 last wt=200.00> STORE_LCL_VAR BB03 regmask=[x0-xip0 x19-x28] minReg=1 wt=1200.00> LCL_VAR BB03 regmask=[x0-xip0 x19-x28] minReg=1 wt=2800.00> IND BB03 regmask=[x0-xip0 x19-x28] minReg=1 wt=800.00> BB03 regmask=[x0-xip0 x19-x28] minReg=1 last wt=200.00> STORE_LCL_VAR BB03 regmask=[x0-xip0 x19-x28] minReg=1 wt=800.00> LCL_VAR BB03 regmask=[x0-xip0 x19-x28] minReg=1 wt=800.00> ADD BB03 regmask=[x0-xip0 x19-x28] minReg=1 wt=800.00> LCL_VAR BB03 regmask=[x0-xip0 x19-x28] minReg=1 wt=2800.00> BB03 regmask=[x0-xip0 x19-x28] minReg=1 last wt=200.00> LCL_VAR BB03 regmask=[x0-xip0 x19-x28] minReg=1 wt=1200.00> IND BB03 regmask=[x0-xip0 x19-x28] minReg=1 wt=800.00> LCL_VAR BB03 regmask=[x0-xip0 x19-x28] minReg=1 wt=800.00> BB03 regmask=[x0-xip0 x19-x28] minReg=1 last wt=200.00> LCL_VAR BB03 regmask=[x0-xip0 x19-x28] minReg=1 last wt=800.00> BFIZ BB03 regmask=[x0-xip0 x19-x28] minReg=1 wt=800.00> BB03 regmask=[x0-xip0 x19-x28] minReg=1 last wt=200.00> ADD BB03 regmask=[x0-xip0 x19-x28] minReg=1 wt=800.00> LCL_VAR BB03 regmask=[x0-xip0 x19-x28] minReg=1 last wt=1200.00> BB03 regmask=[x0-xip0 x19-x28] minReg=1 last wt=200.00> ADD BB03 regmask=[x0-xip0 x19-x28] minReg=1 wt=800.00> BB03 regmask=[x0-xip0 x19-x28] minReg=1 last wt=200.00> STORE_LCL_VAR BB03 regmask=[x0-xip0 x19-x28] minReg=1 wt=500.00> LCL_VAR BB03 regmask=[x0-xip0 x19-x28] minReg=1 wt=500.00> IND BB03 regmask=[x0-xip0 x19-x28] minReg=1 wt=800.00> BB03 regmask=[x0-xip0 x19-x28] minReg=1 last wt=200.00> BB04 regmask=[x0-xip0 x19-x28] minReg=1 regOptional wt=50.00> LCL_VAR BB04 regmask=[x0-xip0 x19-x28] minReg=1 wt=500.00> IND BB04 regmask=[x0-xip0 x19-x28] minReg=1 wt=200.00> BB04 regmask=[x0-xip0 x19-x28] minReg=1 last wt=50.00> STORE_LCL_VAR BB04 regmask=[x0-xip0 x19-x28] minReg=1 wt=200.00> LCL_VAR BB04 regmask=[x0-xip0 x19-x28] minReg=1 last wt=500.00> IND BB04 regmask=[x0-xip0 x19-x28] minReg=1 wt=200.00> BB04 regmask=[x0-xip0 x19-x28] minReg=1 last wt=50.00> STORE_LCL_VAR BB04 regmask=[x0-xip0 x19-x28] minReg=1 wt=200.00> LCL_VAR BB04 regmask=[x0-xip0 x19-x28] minReg=1 last wt=200.00> STORE_LCL_VAR BB04 regmask=[x0-xip0 x19-x28] minReg=1 wt=100.00> LCL_VAR BB04 regmask=[x0-xip0 x19-x28] minReg=1 last wt=200.00> STORE_LCL_VAR BB04 regmask=[x0-xip0 x19-x28] minReg=1 wt=100.00> LCL_VAR BB04 regmask=[x0-xip0 x19-x28] minReg=1 last wt=2800.00> ADD BB04 regmask=[x0-xip0 x19-x28] minReg=1 wt=200.00> BB04 regmask=[x0-xip0 x19-x28] minReg=1 last wt=50.00> STORE_LCL_VAR BB04 regmask=[x0-xip0 x19-x28] minReg=1 wt=300.00> LCL_VAR BB04 regmask=[x0-xip0 x19-x28] minReg=1 wt=300.00> LCL_VAR BB04 regmask=[x0-xip0 x19-x28] minReg=1 last wt=100.00> LCL_VAR BB04 regmask=[x0-xip0 x19-x28] minReg=1 last wt=300.00> LCL_VAR BB04 regmask=[x0-xip0 x19-x28] minReg=1 last wt=100.00> CNS_INT BB04 regmask=[x0] minReg=1 wt=200.00> BB04 regmask=[x0] minReg=1 wt=50.00> BB04 regmask=[x0] minReg=1 last fixed wt=50.00> LCL_VAR BB06 regmask=[x0-xip0 x19-x28] minReg=1 wt=2800.00> IND BB06 regmask=[x0-xip0 x19-x28] minReg=1 wt=200.00> BB06 regmask=[x0-xip0 x19-x28] minReg=1 last wt=50.00> IND BB06 regmask=[x0-xip0 x19-x28] minReg=1 wt=200.00> BB06 regmask=[x0-xip0 x19-x28] minReg=1 last wt=50.00> ADD BB06 regmask=[x0-xip0 x19-x28] minReg=1 wt=200.00> LCL_VAR BB06 regmask=[x0-xip0 x19-x28] minReg=1 wt=2800.00> BB06 regmask=[x0-xip0 x19-x28] minReg=1 last wt=50.00> LCL_VAR BB06 regmask=[x0-xip0 x19-x28] minReg=1 last wt=2800.00> CNS_INT BB06 regmask=[x0] minReg=1 wt=200.00> BB06 regmask=[x0] minReg=1 wt=50.00> BB06 regmask=[x0] minReg=1 last fixed wt=50.00> CNS_INT BB02 regmask=[x0-xip0 x19-x28] minReg=1 wt=0.00> BB02 regmask=[x0-xip0 x19-x28] minReg=1 last wt=0.00> IND BB02 regmask=[x0-xip0 x19-x28] minReg=1 wt=0.00> BB02 regmask=[x0-xip0 x19-x28] minReg=1 last wt=0.00> BB02 regmask=[x0] minReg=1 last wt=0.00> BB02 regmask=[x1] minReg=1 last wt=0.00> BB02 regmask=[x2] minReg=1 last wt=0.00> BB02 regmask=[x3] minReg=1 last wt=0.00> BB02 regmask=[x4] minReg=1 last wt=0.00> BB02 regmask=[x5] minReg=1 last wt=0.00> BB02 regmask=[x6] minReg=1 last wt=0.00> BB02 regmask=[x7] minReg=1 last wt=0.00> BB02 regmask=[x8] minReg=1 last wt=0.00> BB02 regmask=[x9] minReg=1 last wt=0.00> BB02 regmask=[x10] minReg=1 last wt=0.00> BB02 regmask=[x11] minReg=1 last wt=0.00> BB02 regmask=[x12] minReg=1 last wt=0.00> BB02 regmask=[x13] minReg=1 last wt=0.00> BB02 regmask=[x14] minReg=1 last wt=0.00> BB02 regmask=[x15] minReg=1 last wt=0.00> BB02 regmask=[xip0] minReg=1 last wt=0.00> BB02 regmask=[xip1] minReg=1 last wt=0.00> BB02 regmask=[lr] minReg=1 last wt=0.00> BB07 regmask=[x0] minReg=1 last wt=0.00> BB07 regmask=[x1] minReg=1 last wt=0.00> BB07 regmask=[x2] minReg=1 last wt=0.00> BB07 regmask=[x3] minReg=1 last wt=0.00> BB07 regmask=[x4] minReg=1 last wt=0.00> BB07 regmask=[x5] minReg=1 last wt=0.00> BB07 regmask=[x6] minReg=1 last wt=0.00> BB07 regmask=[x7] minReg=1 last wt=0.00> BB07 regmask=[x8] minReg=1 last wt=0.00> BB07 regmask=[x9] minReg=1 last wt=0.00> BB07 regmask=[x10] minReg=1 last wt=0.00> BB07 regmask=[x11] minReg=1 last wt=0.00> BB07 regmask=[x12] minReg=1 last wt=0.00> BB07 regmask=[x13] minReg=1 last wt=0.00> BB07 regmask=[x14] minReg=1 last wt=0.00> BB07 regmask=[x15] minReg=1 last wt=0.00> BB07 regmask=[xip0] minReg=1 last wt=0.00> BB07 regmask=[xip1] minReg=1 last wt=0.00> BB07 regmask=[lr] minReg=1 last wt=0.00> VAR REFPOSITIONS BEFORE ALLOCATION --- V00 (Interval 0) BB00 regmask=[x0] minReg=1 fixed regOptional wt=100.00> LCL_VAR BB01 regmask=[x0-xip0 x19-x28] minReg=1 wt=2800.00> LCL_VAR BB01 regmask=[x0-xip0 x19-x28] minReg=1 wt=2800.00> LCL_VAR BB05 regmask=[x0-xip0 x19-x28] minReg=1 wt=2800.00> LCL_VAR BB05 regmask=[x0-xip0 x19-x28] minReg=1 wt=2800.00> LCL_VAR BB03 regmask=[x0-xip0 x19-x28] minReg=1 wt=2800.00> LCL_VAR BB03 regmask=[x0-xip0 x19-x28] minReg=1 wt=2800.00> LCL_VAR BB03 regmask=[x0-xip0 x19-x28] minReg=1 wt=2800.00> LCL_VAR BB04 regmask=[x0-xip0 x19-x28] minReg=1 last wt=2800.00> LCL_VAR BB06 regmask=[x0-xip0 x19-x28] minReg=1 wt=2800.00> LCL_VAR BB06 regmask=[x0-xip0 x19-x28] minReg=1 wt=2800.00> LCL_VAR BB06 regmask=[x0-xip0 x19-x28] minReg=1 last wt=2800.00> --- V01 (Interval 1) STORE_LCL_VAR BB03 regmask=[x0-xip0 x19-x28] minReg=1 wt=500.00> LCL_VAR BB03 regmask=[x0-xip0 x19-x28] minReg=1 wt=500.00> BB04 regmask=[x0-xip0 x19-x28] minReg=1 regOptional wt=50.00> LCL_VAR BB04 regmask=[x0-xip0 x19-x28] minReg=1 wt=500.00> LCL_VAR BB04 regmask=[x0-xip0 x19-x28] minReg=1 last wt=500.00> --- V02 (Interval 2) STORE_LCL_VAR BB03 regmask=[x0-xip0 x19-x28] minReg=1 wt=800.00> LCL_VAR BB03 regmask=[x0-xip0 x19-x28] minReg=1 wt=800.00> LCL_VAR BB03 regmask=[x0-xip0 x19-x28] minReg=1 wt=800.00> LCL_VAR BB03 regmask=[x0-xip0 x19-x28] minReg=1 last wt=800.00> --- V03 --- V04 (Interval 3) STORE_LCL_VAR BB03 regmask=[x0-xip0 x19-x28] minReg=1 wt=1200.00> LCL_VAR BB03 regmask=[x0-xip0 x19-x28] minReg=1 wt=1200.00> LCL_VAR BB03 regmask=[x0-xip0 x19-x28] minReg=1 last wt=1200.00> --- V05 --- V06 (Interval 4) STORE_LCL_VAR BB04 regmask=[x0-xip0 x19-x28] minReg=1 wt=200.00> LCL_VAR BB04 regmask=[x0-xip0 x19-x28] minReg=1 last wt=200.00> --- V07 (Interval 5) STORE_LCL_VAR BB04 regmask=[x0-xip0 x19-x28] minReg=1 wt=200.00> LCL_VAR BB04 regmask=[x0-xip0 x19-x28] minReg=1 last wt=200.00> --- V08 (Interval 6) STORE_LCL_VAR BB04 regmask=[x0-xip0 x19-x28] minReg=1 wt=100.00> LCL_VAR BB04 regmask=[x0-xip0 x19-x28] minReg=1 last wt=100.00> --- V09 (Interval 7) STORE_LCL_VAR BB04 regmask=[x0-xip0 x19-x28] minReg=1 wt=100.00> LCL_VAR BB04 regmask=[x0-xip0 x19-x28] minReg=1 last wt=100.00> --- V10 (Interval 8) STORE_LCL_VAR BB04 regmask=[x0-xip0 x19-x28] minReg=1 wt=300.00> LCL_VAR BB04 regmask=[x0-xip0 x19-x28] minReg=1 wt=300.00> LCL_VAR BB04 regmask=[x0-xip0 x19-x28] minReg=1 last wt=300.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 |x0 |x1 |x2 |x3 |x4 |x5 |x6 |x7 |x19 |x20 | --------------------------------------------+----+----+----+----+----+----+----+----+----+----+ |V0 a| | | | | | | | | | 0.#0 V0 Parm Keep x0 |V0 a| | | | | | | | | | 1.#1 BB1 PredBB0 |V0 a| | | | | | | | | | [000001] 9.#2 V0 Use Keep x0 |V0 a| | | | | | | | | | 10.#3 I9 Def ORDER(A) x1 |V0 a|I9 a| | | | | | | | | [000003] 13.#4 V0 Use Keep x0 |V0 a|I9 a| | | | | | | | | 14.#5 I10 Def ORDER(A) x2 |V0 a|I9 a|I10a| | | | | | | | [000004] 17.#6 I10 Use * Keep x2 |V0 a|I9 a|I10a| | | | | | | | 18.#7 I11 Def ORDER(A) x2 |V0 a|I9 a|I11a| | | | | | | | [000005] 19.#8 I9 Use * Keep x1 |V0 a|I9 a|I11a| | | | | | | | 19.#9 I11 Use * Keep x2 |V0 a|I9 a|I11a| | | | | | | | --------------------------------------------+----+----+----+----+----+----+----+----+----+----+ TreeID Loc RP# Name Type Action Reg |x0 |x1 |x2 |x3 |x4 |x5 |x6 |x7 |x19 |x20 | --------------------------------------------+----+----+----+----+----+----+----+----+----+----+ 23.#10 BB5 PredBB1 |V0 a| | | | | | | | | | [000008] 31.#11 V0 Use Keep x0 |V0 a| | | | | | | | | | 32.#12 I12 Def ORDER(A) x1 |V0 a|I12a| | | | | | | | | [000010] 35.#13 V0 Use Keep x0 |V0 a|I12a| | | | | | | | | 36.#14 I13 Def ORDER(A) x2 |V0 a|I12a|I13a| | | | | | | | [000011] 39.#15 I13 Use * Keep x2 |V0 a|I12a|I13a| | | | | | | | 40.#16 I14 Def ORDER(A) x2 |V0 a|I12a|I14a| | | | | | | | [000012] 41.#17 I12 Use * Keep x1 |V0 a|I12a|I14a| | | | | | | | 41.#18 I14 Use * Keep x2 |V0 a|I12a|I14a| | | | | | | | --------------------------------------------+----+----+----+----+----+----+----+----+----+----+ TreeID Loc RP# Name Type Action Reg |x0 |x1 |x2 |x3 |x4 |x5 |x6 |x7 |x19 |x20 | --------------------------------------------+----+----+----+----+----+----+----+----+----+----+ 45.#19 BB3 PredBB5 |V0 a| | | | | | | | | | [000015] 51.#20 V0 Use Keep x0 |V0 a| | | | | | | | | | 52.#21 I15 Def ORDER(A) x1 |V0 a|I15a| | | | | | | | | [000016] 55.#22 I15 Use * Keep x1 |V0 a|I15a| | | | | | | | | 56.#23 I16 Def ORDER(A) x1 |V0 a|I16a| | | | | | | | | [000023] 57.#24 I16 Use * Keep x1 |V0 a|I16a| | | | | | | | | 58.#25 V4 Def COVRS(A) x1 |V0 a|V4 a| | | | | | | | | [000019] 65.#26 V0 Use Keep x0 |V0 a|V4 a| | | | | | | | | 66.#27 I17 Def ORDER(A) x2 |V0 a|V4 a|I17a| | | | | | | | [000021] 67.#28 I17 Use * Keep x2 |V0 a|V4 a|I17a| | | | | | | | 68.#29 V2 Def COVRS(A) x2 |V0 a|V4 a|V2 a| | | | | | | | [000027] 73.#30 V2 Use Keep x2 |V0 a|V4 a|V2 a| | | | | | | | 74.#31 I18 Def ORDER(A) x3 |V0 a|V4 a|V2 a|I18a| | | | | | | [000148] 79.#32 V0 Use Keep x0 |V0 a|V4 a|V2 a|I18a| | | | | | | 79.#33 I18 Use * Keep x3 |V0 a|V4 a|V2 a|I18a| | | | | | | [000095] 87.#34 V4 Use Keep x1 |V0 a|V4 a|V2 a| | | | | | | | 88.#35 I19 Def ORDER(A) x3 |V0 a|V4 a|V2 a|I19a| | | | | | | [000096] 89.#36 V2 Use Keep x2 |V0 a|V4 a|V2 a|I19a| | | | | | | 89.#37 I19 Use * Keep x3 |V0 a|V4 a|V2 a|I19a| | | | | | | [000099] 99.#38 V2 Use * Keep x2 |V0 a|V4 a|V2 a| | | | | | | | 100.#39 I20 Def ORDER(A) x2 |V0 a|V4 a|I20a| | | | | | | | [000101] 103.#40 I20 Use * Keep x2 |V0 a|V4 a|I20a| | | | | | | | 104.#41 I21 Def ORDER(A) x2 |V0 a|V4 a|I21a| | | | | | | | [000102] 105.#42 V4 Use * Keep x1 |V0 a|V4 a|I21a| | | | | | | | 105.#43 I21 Use * Keep x2 |V0 a|V4 a|I21a| | | | | | | | 106.#44 I22 Def ORDER(A) x1 |V0 a|I22a| | | | | | | | | [000033] 107.#45 I22 Use * Keep x1 |V0 a|I22a| | | | | | | | | 108.#46 V1 Def COVRS(A) x1 |V0 a|V1 a| | | | | | | | | [000035] 115.#47 V1 Use Keep x1 |V0 a|V1 a| | | | | | | | | 116.#48 I23 Def ORDER(A) x2 |V0 a|V1 a|I23a| | | | | | | | [000037] 119.#49 I23 Use * Keep x2 |V0 a|V1 a|I23a| | | | | | | | --------------------------------------------+----+----+----+----+----+----+----+----+----+----+ TreeID Loc RP# Name Type Action Reg |x0 |x1 |x2 |x3 |x4 |x5 |x6 |x7 |x19 |x20 | --------------------------------------------+----+----+----+----+----+----+----+----+----+----+ DDefs |V0 a|V1 a| | | | | | | | | [000038] 123.#50 V1 DDef Keep x1 |V0 a|V1 a| | | | | | | | | --------------------------------------------+----+----+----+----+----+----+----+----+----+----+ TreeID Loc RP# Name Type Action Reg |x0 |x1 |x2 |x3 |x4 |x5 |x6 |x7 |x19 |x20 | --------------------------------------------+----+----+----+----+----+----+----+----+----+----+ 123.#51 BB4 PredBB1 |V0 a|V1 a| | | | | | | | | [000041] 129.#52 V1 Use Keep x1 |V0 a|V1 a| | | | | | | | | 130.#53 I24 Def ORDER(A) x2 |V0 a|V1 a|I24a| | | | | | | | [000079] 131.#54 I24 Use * Keep x2 |V0 a|V1 a|I24a| | | | | | | | 132.#55 V6 Def COVRS(A) x2 |V0 a|V1 a|V6 a| | | | | | | | [000043] 137.#56 V1 Use * Keep x1 |V0 a|V1 a|V6 a| | | | | | | | 138.#57 I25 Def ORDER(A) x1 |V0 a|I25a|V6 a| | | | | | | | [000081] 139.#58 I25 Use * Keep x1 |V0 a|I25a|V6 a| | | | | | | | 140.#59 V7 Def COVRS(A) x1 |V0 a|V7 a|V6 a| | | | | | | | [000073] 145.#60 V6 Use * Keep x2 |V0 a|V7 a|V6 a| | | | | | | | 146.#61 V8 Def COVRS(A) x2 |V0 a|V7 a|V8 a| | | | | | | | [000077] 151.#62 V7 Use * Keep x1 |V0 a|V7 a|V8 a| | | | | | | | 152.#63 V9 Def COVRS(A) x1 |V0 a|V9 a|V8 a| | | | | | | | [000112] 159.#64 V0 Use * Keep x0 |V0 i|V9 a|V8 a| | | | | | | | 160.#65 I26 Def BSFIT(A) x0 |I26a|V9 a|V8 a| | | | | | | | [000114] 161.#66 I26 Use * Keep x0 |I26a|V9 a|V8 a| | | | | | | | Restr x0 |V0 i|V9 a|V8 a| | | | | | | | 162.#67 V10 Def COVRS(A) x0 |V10a|V9 a|V8 a| | | | | | | | [000153] 167.#68 V10 Use Keep x0 |V10a|V9 a|V8 a| | | | | | | | 167.#69 V8 Use * Keep x2 |V10a|V9 a|V8 a| | | | | | | | [000154] 175.#70 V10 Use * Keep x0 |V10a|V9 a| | | | | | | | | 175.#71 V9 Use * Keep x1 |V10a|V9 a| | | | | | | | | [000127] 180.#72 C27 Def Alloc x0 |C27a| | | | | | | | | | [000053] 181.#73 x0 Fixd Keep x0 |C27a| | | | | | | | | | 181.#74 C27 Use * Keep x0 |C27a| | | | | | | | | | --------------------------------------------+----+----+----+----+----+----+----+----+----+----+ TreeID Loc RP# Name Type Action Reg |x0 |x1 |x2 |x3 |x4 |x5 |x6 |x7 |x19 |x20 | --------------------------------------------+----+----+----+----+----+----+----+----+----+----+ 183.#75 BB6 PredBB5 |V0 a| | | | | | | | | | [000056] 189.#76 V0 Use Keep x0 |V0 a| | | | | | | | | | 190.#77 I28 Def ORDER(A) x1 |V0 a|I28a| | | | | | | | | [000057] 193.#78 I28 Use * Keep x1 |V0 a|I28a| | | | | | | | | 194.#79 I29 Def ORDER(A) x1 |V0 a|I29a| | | | | | | | | [000059] 197.#80 I29 Use * Keep x1 |V0 a|I29a| | | | | | | | | 198.#81 I30 Def ORDER(A) x1 |V0 a|I30a| | | | | | | | | [000143] 203.#82 V0 Use Keep x0 |V0 a|I30a| | | | | | | | | 203.#83 I30 Use * Keep x1 |V0 a|I30a| | | | | | | | | [000064] 213.#84 V0 Use * Keep x0 |V0 a| | | | | | | | | | [000138] 218.#85 C31 Def Alloc x0 |C31a| | | | | | | | | | [000068] 219.#86 x0 Fixd Keep x0 |C31a| | | | | | | | | | 219.#87 C31 Use * Keep x0 |C31a| | | | | | | | | | --------------------------------------------+----+----+----+----+----+----+----+----+----+----+ TreeID Loc RP# Name Type Action Reg |x0 |x1 |x2 |x3 |x4 |x5 |x6 |x7 |x19 |x20 | --------------------------------------------+----+----+----+----+----+----+----+----+----+----+ 221.#88 BB2 PredBB1 | | | | | | | | | | | [000160] 226.#89 C32 Def ORDER(A) x0 |C32a| | | | | | | | | | [000161] 227.#90 C32 Use * Keep x0 |C32a| | | | | | | | | | 228.#91 I33 Def ORDER(A) x0 |I33a| | | | | | | | | | [000069] 229.#92 I33 Use * Keep x0 |I33a| | | | | | | | | | 230.#93 x0 Kill Keep x0 | | | | | | | | | | | 230.#94 x1 Kill Keep x1 | | | | | | | | | | | 230.#95 x2 Kill Keep x2 | | | | | | | | | | | 230.#96 x3 Kill Keep x3 | | | | | | | | | | | 230.#97 x4 Kill Keep x4 | | | | | | | | | | | 230.#98 x5 Kill Keep x5 | | | | | | | | | | | 230.#99 x6 Kill Keep x6 | | | | | | | | | | | 230.#100 x7 Kill Keep x7 | | | | | | | | | | | 230.#101 x8 Kill Keep x8 | | | | | | | | | | | 230.#102 x9 Kill Keep x9 | | | | | | | | | | | 230.#103 x10 Kill Keep x10 | | | | | | | | | | | 230.#104 x11 Kill Keep x11 | | | | | | | | | | | 230.#105 x12 Kill Keep x12 | | | | | | | | | | | 230.#106 x13 Kill Keep x13 | | | | | | | | | | | 230.#107 x14 Kill Keep x14 | | | | | | | | | | | 230.#108 x15 Kill Keep x15 | | | | | | | | | | | 230.#109 xip0 Kill Keep xip0 | | | | | | | | | | | 230.#110 xip1 Kill Keep xip1 | | | | | | | | | | | 230.#111 lr Kill Keep lr | | | | | | | | | | | --------------------------------------------+----+----+----+----+----+----+----+----+----+----+ TreeID Loc RP# Name Type Action Reg |x0 |x1 |x2 |x3 |x4 |x5 |x6 |x7 |x19 |x20 | --------------------------------------------+----+----+----+----+----+----+----+----+----+----+ 231.#112 BB7 PredBB0 | | | | | | | | | | | [000159] 234.#113 x0 Kill Keep x0 | | | | | | | | | | | 234.#114 x1 Kill Keep x1 | | | | | | | | | | | 234.#115 x2 Kill Keep x2 | | | | | | | | | | | 234.#116 x3 Kill Keep x3 | | | | | | | | | | | 234.#117 x4 Kill Keep x4 | | | | | | | | | | | 234.#118 x5 Kill Keep x5 | | | | | | | | | | | 234.#119 x6 Kill Keep x6 | | | | | | | | | | | 234.#120 x7 Kill Keep x7 | | | | | | | | | | | 234.#121 x8 Kill Keep x8 | | | | | | | | | | | 234.#122 x9 Kill Keep x9 | | | | | | | | | | | 234.#123 x10 Kill Keep x10 | | | | | | | | | | | 234.#124 x11 Kill Keep x11 | | | | | | | | | | | 234.#125 x12 Kill Keep x12 | | | | | | | | | | | 234.#126 x13 Kill Keep x13 | | | | | | | | | | | 234.#127 x14 Kill Keep x14 | | | | | | | | | | | 234.#128 x15 Kill Keep x15 | | | | | | | | | | | 234.#129 xip0 Kill Keep xip0 | | | | | | | | | | | 234.#130 xip1 Kill Keep xip1 | | | | | | | | | | | 234.#131 lr Kill Keep lr | | | | | | | | | | | ------------ REFPOSITIONS AFTER ALLOCATION: ------------ BB00 regmask=[x0] minReg=1 fixed regOptional wt=100.00> LCL_VAR BB01 regmask=[x0] minReg=1 wt=2800.00> IND BB01 regmask=[x1] minReg=1 wt=400.00> LCL_VAR BB01 regmask=[x0] minReg=1 wt=2800.00> IND BB01 regmask=[x2] minReg=1 wt=400.00> BB01 regmask=[x2] minReg=1 last wt=100.00> IND BB01 regmask=[x2] minReg=1 wt=400.00> BB01 regmask=[x1] minReg=1 last wt=100.00> BB01 regmask=[x2] minReg=1 last wt=100.00> LCL_VAR BB05 regmask=[x0] minReg=1 wt=2800.00> IND BB05 regmask=[x1] minReg=1 wt=3200.00> LCL_VAR BB05 regmask=[x0] minReg=1 wt=2800.00> IND BB05 regmask=[x2] minReg=1 wt=3200.00> BB05 regmask=[x2] minReg=1 last wt=800.00> IND BB05 regmask=[x2] minReg=1 wt=3200.00> BB05 regmask=[x1] minReg=1 last wt=800.00> BB05 regmask=[x2] minReg=1 last wt=800.00> LCL_VAR BB03 regmask=[x0] minReg=1 wt=2800.00> IND BB03 regmask=[x1] minReg=1 wt=800.00> BB03 regmask=[x1] minReg=1 last wt=200.00> IND BB03 regmask=[x1] minReg=1 wt=800.00> BB03 regmask=[x1] minReg=1 last wt=200.00> STORE_LCL_VAR BB03 regmask=[x1] minReg=1 wt=1200.00> LCL_VAR BB03 regmask=[x0] minReg=1 wt=2800.00> IND BB03 regmask=[x2] minReg=1 wt=800.00> BB03 regmask=[x2] minReg=1 last wt=200.00> STORE_LCL_VAR BB03 regmask=[x2] minReg=1 wt=800.00> LCL_VAR BB03 regmask=[x2] minReg=1 wt=800.00> ADD BB03 regmask=[x3] minReg=1 wt=800.00> LCL_VAR BB03 regmask=[x0] minReg=1 wt=2800.00> BB03 regmask=[x3] minReg=1 last wt=200.00> LCL_VAR BB03 regmask=[x1] minReg=1 wt=1200.00> IND BB03 regmask=[x3] minReg=1 wt=800.00> LCL_VAR BB03 regmask=[x2] minReg=1 wt=800.00> BB03 regmask=[x3] minReg=1 last wt=200.00> LCL_VAR BB03 regmask=[x2] minReg=1 last wt=800.00> BFIZ BB03 regmask=[x2] minReg=1 wt=800.00> BB03 regmask=[x2] minReg=1 last wt=200.00> ADD BB03 regmask=[x2] minReg=1 wt=800.00> LCL_VAR BB03 regmask=[x1] minReg=1 last wt=1200.00> BB03 regmask=[x2] minReg=1 last wt=200.00> ADD BB03 regmask=[x1] minReg=1 wt=800.00> BB03 regmask=[x1] minReg=1 last wt=200.00> STORE_LCL_VAR BB03 regmask=[x1] minReg=1 wt=500.00> LCL_VAR BB03 regmask=[x1] minReg=1 wt=500.00> IND BB03 regmask=[x2] minReg=1 wt=800.00> BB03 regmask=[x2] minReg=1 last wt=200.00> BB04 regmask=[x1] minReg=1 regOptional wt=50.00> LCL_VAR BB04 regmask=[x1] minReg=1 outOfOrder wt=500.00> IND BB04 regmask=[x2] minReg=1 wt=200.00> BB04 regmask=[x2] minReg=1 last wt=50.00> STORE_LCL_VAR BB04 regmask=[x2] minReg=1 wt=200.00> LCL_VAR BB04 regmask=[x1] minReg=1 last wt=500.00> IND BB04 regmask=[x1] minReg=1 wt=200.00> BB04 regmask=[x1] minReg=1 last wt=50.00> STORE_LCL_VAR BB04 regmask=[x1] minReg=1 wt=200.00> LCL_VAR BB04 regmask=[x2] minReg=1 last wt=200.00> STORE_LCL_VAR BB04 regmask=[x2] minReg=1 wt=100.00> LCL_VAR BB04 regmask=[x1] minReg=1 last wt=200.00> STORE_LCL_VAR BB04 regmask=[x1] minReg=1 wt=100.00> LCL_VAR BB04 regmask=[x0] minReg=1 last wt=2800.00> ADD BB04 regmask=[x0] minReg=1 wt=200.00> BB04 regmask=[x0] minReg=1 last wt=50.00> STORE_LCL_VAR BB04 regmask=[x0] minReg=1 wt=300.00> LCL_VAR BB04 regmask=[x0] minReg=1 wt=300.00> LCL_VAR BB04 regmask=[x2] minReg=1 last wt=100.00> LCL_VAR BB04 regmask=[x0] minReg=1 last wt=300.00> LCL_VAR BB04 regmask=[x1] minReg=1 last wt=100.00> CNS_INT BB04 regmask=[x0] minReg=1 wt=200.00> BB04 regmask=[x0] minReg=1 wt=50.00> BB04 regmask=[x0] minReg=1 last fixed wt=50.00> LCL_VAR BB06 regmask=[x0] minReg=1 wt=2800.00> IND BB06 regmask=[x1] minReg=1 wt=200.00> BB06 regmask=[x1] minReg=1 last wt=50.00> IND BB06 regmask=[x1] minReg=1 wt=200.00> BB06 regmask=[x1] minReg=1 last wt=50.00> ADD BB06 regmask=[x1] minReg=1 wt=200.00> LCL_VAR BB06 regmask=[x0] minReg=1 wt=2800.00> BB06 regmask=[x1] minReg=1 last wt=50.00> LCL_VAR BB06 regmask=[x0] minReg=1 last wt=2800.00> CNS_INT BB06 regmask=[x0] minReg=1 wt=200.00> BB06 regmask=[x0] minReg=1 wt=50.00> BB06 regmask=[x0] minReg=1 last fixed wt=50.00> CNS_INT BB02 regmask=[x0] minReg=1 wt=0.00> BB02 regmask=[x0] minReg=1 last wt=0.00> IND BB02 regmask=[x0] minReg=1 wt=0.00> BB02 regmask=[x0] minReg=1 last wt=0.00> BB02 regmask=[x0] minReg=1 last wt=0.00> BB02 regmask=[x1] minReg=1 last wt=0.00> BB02 regmask=[x2] minReg=1 last wt=0.00> BB02 regmask=[x3] minReg=1 last wt=0.00> BB02 regmask=[x4] minReg=1 last wt=0.00> BB02 regmask=[x5] minReg=1 last wt=0.00> BB02 regmask=[x6] minReg=1 last wt=0.00> BB02 regmask=[x7] minReg=1 last wt=0.00> BB02 regmask=[x8] minReg=1 last wt=0.00> BB02 regmask=[x9] minReg=1 last wt=0.00> BB02 regmask=[x10] minReg=1 last wt=0.00> BB02 regmask=[x11] minReg=1 last wt=0.00> BB02 regmask=[x12] minReg=1 last wt=0.00> BB02 regmask=[x13] minReg=1 last wt=0.00> BB02 regmask=[x14] minReg=1 last wt=0.00> BB02 regmask=[x15] minReg=1 last wt=0.00> BB02 regmask=[xip0] minReg=1 last wt=0.00> BB02 regmask=[xip1] minReg=1 last wt=0.00> BB02 regmask=[lr] minReg=1 last wt=0.00> BB07 regmask=[x0] minReg=1 last wt=0.00> BB07 regmask=[x1] minReg=1 last wt=0.00> BB07 regmask=[x2] minReg=1 last wt=0.00> BB07 regmask=[x3] minReg=1 last wt=0.00> BB07 regmask=[x4] minReg=1 last wt=0.00> BB07 regmask=[x5] minReg=1 last wt=0.00> BB07 regmask=[x6] minReg=1 last wt=0.00> BB07 regmask=[x7] minReg=1 last wt=0.00> BB07 regmask=[x8] minReg=1 last wt=0.00> BB07 regmask=[x9] minReg=1 last wt=0.00> BB07 regmask=[x10] minReg=1 last wt=0.00> BB07 regmask=[x11] minReg=1 last wt=0.00> BB07 regmask=[x12] minReg=1 last wt=0.00> BB07 regmask=[x13] minReg=1 last wt=0.00> BB07 regmask=[x14] minReg=1 last wt=0.00> BB07 regmask=[x15] minReg=1 last wt=0.00> BB07 regmask=[xip0] minReg=1 last wt=0.00> BB07 regmask=[xip1] minReg=1 last wt=0.00> BB07 regmask=[lr] minReg=1 last wt=0.00> VAR REFPOSITIONS AFTER ALLOCATION --- V00 (Interval 0) BB00 regmask=[x0] minReg=1 fixed regOptional wt=100.00> LCL_VAR BB01 regmask=[x0] minReg=1 wt=2800.00> LCL_VAR BB01 regmask=[x0] minReg=1 wt=2800.00> LCL_VAR BB05 regmask=[x0] minReg=1 wt=2800.00> LCL_VAR BB05 regmask=[x0] minReg=1 wt=2800.00> LCL_VAR BB03 regmask=[x0] minReg=1 wt=2800.00> LCL_VAR BB03 regmask=[x0] minReg=1 wt=2800.00> LCL_VAR BB03 regmask=[x0] minReg=1 wt=2800.00> LCL_VAR BB04 regmask=[x0] minReg=1 last wt=2800.00> LCL_VAR BB06 regmask=[x0] minReg=1 wt=2800.00> LCL_VAR BB06 regmask=[x0] minReg=1 wt=2800.00> LCL_VAR BB06 regmask=[x0] minReg=1 last wt=2800.00> --- V01 (Interval 1) STORE_LCL_VAR BB03 regmask=[x1] minReg=1 wt=500.00> LCL_VAR BB03 regmask=[x1] minReg=1 wt=500.00> BB04 regmask=[x1] minReg=1 regOptional wt=50.00> LCL_VAR BB04 regmask=[x1] minReg=1 outOfOrder wt=500.00> LCL_VAR BB04 regmask=[x1] minReg=1 last wt=500.00> --- V02 (Interval 2) STORE_LCL_VAR BB03 regmask=[x2] minReg=1 wt=800.00> LCL_VAR BB03 regmask=[x2] minReg=1 wt=800.00> LCL_VAR BB03 regmask=[x2] minReg=1 wt=800.00> LCL_VAR BB03 regmask=[x2] minReg=1 last wt=800.00> --- V03 --- V04 (Interval 3) STORE_LCL_VAR BB03 regmask=[x1] minReg=1 wt=1200.00> LCL_VAR BB03 regmask=[x1] minReg=1 wt=1200.00> LCL_VAR BB03 regmask=[x1] minReg=1 last wt=1200.00> --- V05 --- V06 (Interval 4) STORE_LCL_VAR BB04 regmask=[x2] minReg=1 wt=200.00> LCL_VAR BB04 regmask=[x2] minReg=1 last wt=200.00> --- V07 (Interval 5) STORE_LCL_VAR BB04 regmask=[x1] minReg=1 wt=200.00> LCL_VAR BB04 regmask=[x1] minReg=1 last wt=200.00> --- V08 (Interval 6) STORE_LCL_VAR BB04 regmask=[x2] minReg=1 wt=100.00> LCL_VAR BB04 regmask=[x2] minReg=1 last wt=100.00> --- V09 (Interval 7) STORE_LCL_VAR BB04 regmask=[x1] minReg=1 wt=100.00> LCL_VAR BB04 regmask=[x1] minReg=1 last wt=100.00> --- V10 (Interval 8) STORE_LCL_VAR BB04 regmask=[x0] minReg=1 wt=300.00> LCL_VAR BB04 regmask=[x0] minReg=1 wt=300.00> LCL_VAR BB04 regmask=[x0] minReg=1 last wt=300.00> Active intervals at end of allocation: ----------------------- RESOLVING BB BOUNDARIES ----------------------- Resolution Candidates: {V00 V01} Has Critical Edges Prior to Resolution BB01 use: {V00} def: {} in: {V00} out: {V00} Var=Reg beg of BB01: V00=x0 Var=Reg end of BB01: V00=x0 BB05 use: {V00} def: {} in: {V00} out: {V00} Var=Reg beg of BB05: V00=x0 Var=Reg end of BB05: V00=x0 BB06 use: {V00} def: {} in: {V00} out: {} Var=Reg beg of BB06: V00=x0 Var=Reg end of BB06: none BB03 use: {V00} def: {V01 V02 V04} in: {V00} out: {V00 V01} Var=Reg beg of BB03: V00=x0 Var=Reg end of BB03: V00=x0 V01=x1 BB04 use: {V00 V01} def: {V06 V07 V08 V09 V10} in: {V00 V01} out: {} Var=Reg beg of BB04: V00=x0 V01=x1 Var=Reg end of BB04: none BB02 use: {} def: {} in: {} out: {} Var=Reg beg of BB02: none Var=Reg end of BB02: none BB07 use: {} def: {} in: {} out: {} Var=Reg beg of BB07: none Var=Reg end of BB07: none RESOLVING EDGES Set V00 argument initial register to x0 Trees after linear scan register allocator (LSRA) ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..013)-> BB02 ( cond ) i LIR BB05 [0004] 2 BB01,BB03 8 [05E..071)-> BB03 ( cond ) i bwd bwd-src LIR BB06 [0005] 1 BB05 0.50 [071..092) (return) i LIR BB03 [0002] 1 BB05 2 [01A..045)-> BB05 ( cond ) i Loop Loop0 idxlen bwd bwd-target LIR BB04 [0003] 1 BB03 0.50 [045..05E) (return) i LIR BB02 [0001] 1 BB01 0 [013..01A) (throw ) i rare hascall gcsafe LIR BB07 [0007] 0 0 [???..???) (throw ) keep i internal rare LIR ----------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [000..013) -> BB02 (cond), preds={} succs={BB05,BB02} N003 (???,???) [000140] ----------- IL_OFFSET void INLRT @ 0x000[E-] REG NA N005 ( 1, 1) [000000] ----------- t0 = LCL_VAR byref V00 this u:1 x0 REG x0 $80 /--* t0 byref N007 ( 3, 4) [000084] -c--------- t84 = * LEA(b+8) byref REG NA /--* t84 byref N009 ( 4, 3) [000001] ---XG------ t1 = * IND int REG x1 N011 ( 1, 1) [000002] ----------- t2 = LCL_VAR byref V00 this u:1 x0 REG x0 $80 /--* t2 byref N013 ( 3, 2) [000003] n---GO----- t3 = * IND ref REG x2 /--* t3 ref N015 ( 5, 5) [000086] -c--------- t86 = * LEA(b+68) byref REG NA /--* t86 byref N017 ( 6, 4) [000004] ---XGO----- t4 = * IND int REG x2 /--* t1 int +--* t4 int N019 ( 11, 8) [000005] J--XGO-N--- * NE void REG NA N021 ( 13, 10) [000006] ---XGO----- * JTRUE void REG NA ------------ BB05 [05E..071) -> BB03 (cond), preds={BB01,BB03} succs={BB06,BB03} N025 (???,???) [000141] ----------- IL_OFFSET void INLRT @ 0x05E[E-] REG NA N027 ( 1, 1) [000007] ----------- t7 = LCL_VAR byref V00 this u:1 x0 REG x0 $80 /--* t7 byref N029 ( 3, 4) [000129] -c--------- t129 = * LEA(b+12) byref REG NA /--* t129 byref N031 ( 4, 3) [000008] n---GO----- t8 = * IND int REG x1 N033 ( 1, 1) [000009] ----------- t9 = LCL_VAR byref V00 this u:1 x0 REG x0 $80 /--* t9 byref N035 ( 3, 2) [000010] n---GO----- t10 = * IND ref REG x2 /--* t10 ref N037 ( 5, 5) [000131] -c--------- t131 = * LEA(b+56) byref REG NA /--* t131 byref N039 ( 6, 4) [000011] ---XGO----- t11 = * IND int REG x2 /--* t8 int +--* t11 int N041 ( 11, 8) [000012] N--XGO-N-U- * LT void REG NA N043 ( 13, 10) [000013] ---XGO----- * JTRUE void REG NA ------------ BB06 [071..092) (return), preds={BB05} succs={} N185 (???,???) [000142] ----------- IL_OFFSET void INLRT @ 0x071[E-] REG NA N187 ( 1, 1) [000055] ----------- t55 = LCL_VAR byref V00 this u:1 x0 REG x0 $80 /--* t55 byref N189 ( 3, 2) [000056] n---GO----- t56 = * IND ref REG x1 /--* t56 ref N191 ( 5, 5) [000135] -c--------- t135 = * LEA(b+56) byref REG NA /--* t135 byref N193 ( 6, 4) [000057] ---XGO----- t57 = * IND int REG x1 N195 ( 1, 2) [000058] -c--------- t58 = CNS_INT int 1 REG NA $44 /--* t57 int +--* t58 int N197 ( 8, 7) [000059] ---XGO----- t59 = * ADD int REG x1 N199 ( 1, 1) [000054] ----------- t54 = LCL_VAR byref V00 this u:1 x0 REG x0 $80 /--* t54 byref N201 ( 3, 4) [000133] -c--------- t133 = * LEA(b+12) byref REG NA /--* t133 byref +--* t59 int N203 (???,???) [000143] -A-XGO----- * STOREIND int REG NA N205 (???,???) [000144] ----------- IL_OFFSET void INLRT @ 0x084[E-] REG NA N207 ( 1, 1) [000062] ----------- t62 = LCL_VAR byref V00 this u:1 x0 (last use) REG x0 $80 /--* t62 byref N209 ( 3, 4) [000137] -c--------- t137 = * LEA(b+20) byref REG NA N211 ( 1, 2) [000065] -c--------- t65 = CNS_INT int 0 REG NA $40 /--* t137 byref +--* t65 int N213 ( 9, 8) [000064] -A--G------ * STOREIND long REG NA N215 (???,???) [000145] ----------- IL_OFFSET void INLRT @ 0x090[E-] REG NA N217 ( 1, 2) [000138] ----------- t138 = CNS_INT int 0 REG x0 $40 /--* t138 int N219 ( 2, 3) [000068] ----------- * RETURN int REG NA $VN.Void ------------ BB03 [01A..045) -> BB05 (cond), preds={BB05} succs={BB04,BB05} N047 (???,???) [000146] ----------- IL_OFFSET void INLRT @ 0x01A[E-] REG NA N049 ( 1, 1) [000014] ----------- t14 = LCL_VAR byref V00 this u:1 x0 REG x0 $80 /--* t14 byref N051 ( 3, 2) [000015] n---GO----- t15 = * IND ref REG x1 /--* t15 ref N053 ( 5, 5) [000088] -c--------- t88 = * LEA(b+16) byref REG NA /--* t88 byref N055 ( 6, 4) [000016] ---XGO----- t16 = * IND ref REG x1 /--* t16 ref N057 ( 6, 4) [000023] DA-XGO----- * STORE_LCL_VAR ref V04 tmp1 d:1 x1 REG x1 N059 (???,???) [000147] ----------- IL_OFFSET void INLRT @ 0x01A[E-] REG NA N061 ( 1, 1) [000018] ----------- t18 = LCL_VAR byref V00 this u:1 x0 REG x0 $80 /--* t18 byref N063 ( 3, 4) [000090] -c--------- t90 = * LEA(b+12) byref REG NA /--* t90 byref N065 ( 4, 3) [000019] n---GO----- t19 = * IND int REG x2 /--* t19 int N067 ( 4, 3) [000021] DA--GO----- * STORE_LCL_VAR int V02 loc1 d:1 x2 REG x2 N069 ( 1, 1) [000025] ----------- t25 = LCL_VAR int V02 loc1 u:1 x2 REG x2 N071 ( 1, 2) [000026] -c--------- t26 = CNS_INT int 1 REG NA $44 /--* t25 int +--* t26 int N073 ( 3, 4) [000027] ----------- t27 = * ADD int REG x3 N075 ( 1, 1) [000017] ----------- t17 = LCL_VAR byref V00 this u:1 x0 REG x0 $80 /--* t17 byref N077 ( 3, 4) [000092] -c--------- t92 = * LEA(b+12) byref REG NA /--* t92 byref +--* t27 int N079 (???,???) [000148] -A--GO----- * STOREIND int REG NA N081 ( 1, 1) [000030] ----------- t30 = LCL_VAR int V02 loc1 u:1 x2 REG x2 N083 ( 1, 1) [000024] ----------- t24 = LCL_VAR ref V04 tmp1 u:1 x1 REG x1 /--* t24 ref N085 (???,???) [000158] -c--------- t158 = * LEA(b+8) byref REG NA /--* t158 byref N087 ( 3, 3) [000095] ---X------- t95 = * IND int REG x3 /--* t30 int +--* t95 int N089 ( 8, 11) [000096] ---X-O----- * BOUNDS_CHECK_Rng -> BB07 void REG NA N091 ( 1, 1) [000093] ----------- t93 = LCL_VAR ref V04 tmp1 u:1 x1 (last use) REG x1 N093 ( 1, 1) [000094] ----------- t94 = LCL_VAR int V02 loc1 u:1 x2 (last use) REG x2 /--* t94 int N095 ( 2, 3) [000097] -c-------U- t97 = * CAST long <- uint REG NA N097 ( 1, 2) [000098] -c-----N--- t98 = CNS_INT long 4 REG NA $105 /--* t97 long +--* t98 long N099 ( 4, 6) [000099] ----------- t99 = * BFIZ long REG x2 N101 ( 1, 2) [000100] -c--------- t100 = CNS_INT long 16 REG NA $104 /--* t99 long +--* t100 long N103 ( 6, 9) [000101] ----------- t101 = * ADD long REG x2 /--* t93 ref +--* t101 long N105 ( 7, 10) [000102] -------N--- t102 = * ADD byref REG x1 /--* t102 byref N107 ( 15, 21) [000033] DA-XGO----- * STORE_LCL_VAR byref V01 loc0 d:1 x1 REG x1 N109 (???,???) [000149] ----------- IL_OFFSET void INLRT @ 0x03C[E-] REG NA N111 ( 1, 1) [000034] ----------- t34 = LCL_VAR byref V01 loc0 u:1 x1 REG x1 $400 /--* t34 byref N113 ( 3, 4) [000106] -c--------- t106 = * LEA(b+4) byref REG NA /--* t106 byref N115 ( 4, 3) [000035] ---XG------ t35 = * IND int REG x2 N117 ( 1, 2) [000036] -c--------- t36 = CNS_INT int -1 REG NA $41 /--* t35 int +--* t36 int N119 ( 6, 6) [000037] J--XG--N--- * LT void REG NA N121 ( 8, 8) [000038] ---XG------ * JTRUE void REG NA $268 ------------ BB04 [045..05E) (return), preds={BB03} succs={} N125 ( 1, 1) [000040] ----------- t40 = LCL_VAR byref V01 loc0 u:1 x1 REG x1 $400 /--* t40 byref N127 ( 3, 4) [000108] -c--------- t108 = * LEA(b+8) byref REG NA /--* t108 byref N129 ( 4, 3) [000041] n---GO----- t41 = * IND int REG x2 /--* t41 int N131 ( 8, 6) [000079] DA--GO----- * STORE_LCL_VAR int V06 tmp3 d:1 x2 REG x2 N133 ( 1, 1) [000042] ----------- t42 = LCL_VAR byref V01 loc0 u:1 x1 (last use) REG x1 $400 /--* t42 byref N135 ( 3, 4) [000110] -c--------- t110 = * LEA(b+12) byref REG NA /--* t110 byref N137 ( 4, 3) [000043] n---GO----- t43 = * IND int REG x1 /--* t43 int N139 ( 8, 6) [000081] DA--GO----- * STORE_LCL_VAR int V07 tmp4 d:1 x1 REG x1 N141 (???,???) [000150] ----------- IL_OFFSET void INL01 @ 0x000[E-] <- INLRT @ ??? REG NA N143 ( 3, 2) [000071] ----------- t71 = LCL_VAR int V06 tmp3 u:1 x2 (last use) REG x2 /--* t71 int N145 ( 7, 5) [000073] DA--------- * STORE_LCL_VAR int V08 tmp5 d:1 x2 REG x2 N147 (???,???) [000151] ----------- IL_OFFSET void INL01 @ 0x007[E-] <- INLRT @ ??? REG NA N149 ( 3, 2) [000075] ----------- t75 = LCL_VAR int V07 tmp4 u:1 x1 (last use) REG x1 /--* t75 int N151 ( 7, 5) [000077] DA--------- * STORE_LCL_VAR int V09 tmp6 d:1 x1 REG x1 N153 (???,???) [000152] ----------- IL_OFFSET void INLRT @ 0x057[--] REG NA N155 ( 1, 1) [000039] ----------- t39 = LCL_VAR byref V00 this u:1 x0 (last use) REG x0 $80 N157 ( 1, 2) [000111] -c--------- t111 = CNS_INT long 20 REG NA $10b /--* t39 byref +--* t111 long N159 ( 3, 4) [000112] ----------- t112 = * ADD byref REG x0 $152 /--* t112 byref N161 ( 3, 4) [000114] DA--------- * STORE_LCL_VAR byref V10 tmp7 d:1 x0 REG x0 N163 ( 1, 1) [000115] ----------- t115 = LCL_VAR byref V10 tmp7 u:1 x0 REG x0 $152 N165 ( 3, 2) [000117] ----------- t117 = LCL_VAR int V08 tmp5 u:1 x2 (last use) REG x2 /--* t115 byref +--* t117 int N167 (???,???) [000153] -A---O----- * STOREIND int REG NA N169 ( 1, 1) [000120] ----------- t120 = LCL_VAR byref V10 tmp7 u:1 x0 (last use) REG x0 $152 /--* t120 byref N171 ( 3, 4) [000122] -c--------- t122 = * LEA(b+4) byref REG NA N173 ( 3, 2) [000124] ----------- t124 = LCL_VAR int V09 tmp6 u:1 x1 (last use) REG x1 /--* t122 byref +--* t124 int N175 (???,???) [000154] -A---O----- * STOREIND int REG NA N177 (???,???) [000155] ----------- IL_OFFSET void INLRT @ 0x05C[E-] REG NA N179 ( 1, 2) [000127] ----------- t127 = CNS_INT int 1 REG x0 $44 /--* t127 int N181 ( 2, 3) [000053] ----------- * RETURN int REG NA $VN.Void ------------ BB02 [013..01A) (throw), preds={BB01} succs={} N223 (???,???) [000156] ----------- IL_OFFSET void INLRT @ 0x013[E-] REG NA N225 ( 3, 12) [000160] H---------- t160 = CNS_INT(h) long 0xffff707cb078 ftn REG x0 /--* t160 long N227 ( 6, 14) [000161] ----------- t161 = * IND long REG x0 /--* t161 long control expr N229 ( 14, 2) [000069] --CXG------ * CALL void System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion() REG NA $VN.Void ------------ BB07 [???..???) (throw), preds={} succs={} N233 ( 14, 2) [000159] --CXG------ CALL help void CORINFO_HELP_RNGCHKFAIL REG NA ------------------------------------------------------------------------------------------------------------------- Final allocation --------------------------------------------+----+----+----+----+----+----+----+----+----+----+ TreeID Loc RP# Name Type Action Reg |x0 |x1 |x2 |x3 |x4 |x5 |x6 |x7 |x19 |x20 | --------------------------------------------+----+----+----+----+----+----+----+----+----+----+ 0.#0 V0 Parm Alloc x0 |V0 a| | | | | | | | | | 1.#1 BB1 PredBB0 |V0 a| | | | | | | | | | [000001] 9.#2 V0 Use Keep x0 |V0 a| | | | | | | | | | 10.#3 I9 Def Alloc x1 |V0 a|I9 a| | | | | | | | | [000003] 13.#4 V0 Use Keep x0 |V0 a|I9 a| | | | | | | | | 14.#5 I10 Def Alloc x2 |V0 a|I9 a|I10a| | | | | | | | [000004] 17.#6 I10 Use * Keep x2 |V0 a|I9 a|I10i| | | | | | | | 18.#7 I11 Def Alloc x2 |V0 a|I9 a|I11a| | | | | | | | [000005] 19.#8 I9 Use * Keep x1 |V0 a|I9 i|I11a| | | | | | | | 19.#9 I11 Use * Keep x2 |V0 a| |I11i| | | | | | | | --------------------------------------------+----+----+----+----+----+----+----+----+----+----+ TreeID Loc RP# Name Type Action Reg |x0 |x1 |x2 |x3 |x4 |x5 |x6 |x7 |x19 |x20 | --------------------------------------------+----+----+----+----+----+----+----+----+----+----+ 23.#10 BB5 PredBB1 |V0 a| | | | | | | | | | [000008] 31.#11 V0 Use Keep x0 |V0 a| | | | | | | | | | 32.#12 I12 Def Alloc x1 |V0 a|I12a| | | | | | | | | [000010] 35.#13 V0 Use Keep x0 |V0 a|I12a| | | | | | | | | 36.#14 I13 Def Alloc x2 |V0 a|I12a|I13a| | | | | | | | [000011] 39.#15 I13 Use * Keep x2 |V0 a|I12a|I13i| | | | | | | | 40.#16 I14 Def Alloc x2 |V0 a|I12a|I14a| | | | | | | | [000012] 41.#17 I12 Use * Keep x1 |V0 a|I12i|I14a| | | | | | | | 41.#18 I14 Use * Keep x2 |V0 a| |I14i| | | | | | | | --------------------------------------------+----+----+----+----+----+----+----+----+----+----+ TreeID Loc RP# Name Type Action Reg |x0 |x1 |x2 |x3 |x4 |x5 |x6 |x7 |x19 |x20 | --------------------------------------------+----+----+----+----+----+----+----+----+----+----+ 45.#19 BB3 PredBB5 |V0 a| | | | | | | | | | [000015] 51.#20 V0 Use Keep x0 |V0 a| | | | | | | | | | 52.#21 I15 Def Alloc x1 |V0 a|I15a| | | | | | | | | [000016] 55.#22 I15 Use * Keep x1 |V0 a|I15i| | | | | | | | | 56.#23 I16 Def Alloc x1 |V0 a|I16a| | | | | | | | | [000023] 57.#24 I16 Use * Keep x1 |V0 a|I16i| | | | | | | | | 58.#25 V4 Def Alloc x1 |V0 a|V4 a| | | | | | | | | [000019] 65.#26 V0 Use Keep x0 |V0 a|V4 a| | | | | | | | | 66.#27 I17 Def Alloc x2 |V0 a|V4 a|I17a| | | | | | | | [000021] 67.#28 I17 Use * Keep x2 |V0 a|V4 a|I17i| | | | | | | | 68.#29 V2 Def Alloc x2 |V0 a|V4 a|V2 a| | | | | | | | [000027] 73.#30 V2 Use Keep x2 |V0 a|V4 a|V2 a| | | | | | | | 74.#31 I18 Def Alloc x3 |V0 a|V4 a|V2 a|I18a| | | | | | | [000148] 79.#32 V0 Use Keep x0 |V0 a|V4 a|V2 a|I18a| | | | | | | 79.#33 I18 Use * Keep x3 |V0 a|V4 a|V2 a|I18i| | | | | | | [000095] 87.#34 V4 Use Keep x1 |V0 a|V4 a|V2 a| | | | | | | | 88.#35 I19 Def Alloc x3 |V0 a|V4 a|V2 a|I19a| | | | | | | [000096] 89.#36 V2 Use Keep x2 |V0 a|V4 a|V2 a|I19a| | | | | | | 89.#37 I19 Use * Keep x3 |V0 a|V4 a|V2 a|I19i| | | | | | | [000099] 99.#38 V2 Use * Keep x2 |V0 a|V4 a|V2 i| | | | | | | | 100.#39 I20 Def Alloc x2 |V0 a|V4 a|I20a| | | | | | | | [000101] 103.#40 I20 Use * Keep x2 |V0 a|V4 a|I20i| | | | | | | | 104.#41 I21 Def Alloc x2 |V0 a|V4 a|I21a| | | | | | | | [000102] 105.#42 V4 Use * Keep x1 |V0 a|V4 i|I21a| | | | | | | | 105.#43 I21 Use * Keep x2 |V0 a| |I21i| | | | | | | | 106.#44 I22 Def Alloc x1 |V0 a|I22a| | | | | | | | | [000033] 107.#45 I22 Use * Keep x1 |V0 a|I22i| | | | | | | | | 108.#46 V1 Def Alloc x1 |V0 a|V1 a| | | | | | | | | [000035] 115.#47 V1 Use Keep x1 |V0 a|V1 a| | | | | | | | | 116.#48 I23 Def Alloc x2 |V0 a|V1 a|I23a| | | | | | | | [000037] 119.#49 I23 Use * Keep x2 |V0 a|V1 a|I23i| | | | | | | | [000038] 123.#50 V1 DDef |V0 a|V1 a| | | | | | | | | --------------------------------------------+----+----+----+----+----+----+----+----+----+----+ TreeID Loc RP# Name Type Action Reg |x0 |x1 |x2 |x3 |x4 |x5 |x6 |x7 |x19 |x20 | --------------------------------------------+----+----+----+----+----+----+----+----+----+----+ 123.#51 BB4 PredBB1 |V0 a|V1 a| | | | | | | | | [000041] 129.#52 V1 Use Keep x1 |V0 a|V1 a| | | | | | | | | 130.#53 I24 Def Alloc x2 |V0 a|V1 a|I24a| | | | | | | | [000079] 131.#54 I24 Use * Keep x2 |V0 a|V1 a|I24i| | | | | | | | 132.#55 V6 Def Alloc x2 |V0 a|V1 a|V6 a| | | | | | | | [000043] 137.#56 V1 Use * Keep x1 |V0 a|V1 i|V6 a| | | | | | | | 138.#57 I25 Def Alloc x1 |V0 a|I25a|V6 a| | | | | | | | [000081] 139.#58 I25 Use * Keep x1 |V0 a|I25i|V6 a| | | | | | | | 140.#59 V7 Def Alloc x1 |V0 a|V7 a|V6 a| | | | | | | | [000073] 145.#60 V6 Use * Keep x2 |V0 a|V7 a|V6 i| | | | | | | | 146.#61 V8 Def Alloc x2 |V0 a|V7 a|V8 a| | | | | | | | [000077] 151.#62 V7 Use * Keep x1 |V0 a|V7 i|V8 a| | | | | | | | 152.#63 V9 Def Alloc x1 |V0 a|V9 a|V8 a| | | | | | | | [000112] 159.#64 V0 Use * Keep x0 |V0 i|V9 a|V8 a| | | | | | | | 160.#65 I26 Def Alloc x0 |I26a|V9 a|V8 a| | | | | | | | [000114] 161.#66 I26 Use * Keep x0 |I26i|V9 a|V8 a| | | | | | | | 162.#67 V10 Def Alloc x0 |V10a|V9 a|V8 a| | | | | | | | [000153] 167.#68 V10 Use Keep x0 |V10a|V9 a|V8 a| | | | | | | | 167.#69 V8 Use * Keep x2 |V10a|V9 a|V8 i| | | | | | | | [000154] 175.#70 V10 Use * Keep x0 |V10i|V9 a| | | | | | | | | 175.#71 V9 Use * Keep x1 | |V9 i| | | | | | | | | [000127] 180.#72 C27 Def Alloc x0 |C27a| | | | | | | | | | [000053] 181.#73 x0 Fixd Keep x0 |C27a| | | | | | | | | | 181.#74 C27 Use * Keep x0 |C27i| | | | | | | | | | --------------------------------------------+----+----+----+----+----+----+----+----+----+----+ TreeID Loc RP# Name Type Action Reg |x0 |x1 |x2 |x3 |x4 |x5 |x6 |x7 |x19 |x20 | --------------------------------------------+----+----+----+----+----+----+----+----+----+----+ 183.#75 BB6 PredBB5 |V0 a| | | | | | | | | | [000056] 189.#76 V0 Use Keep x0 |V0 a| | | | | | | | | | 190.#77 I28 Def Alloc x1 |V0 a|I28a| | | | | | | | | [000057] 193.#78 I28 Use * Keep x1 |V0 a|I28i| | | | | | | | | 194.#79 I29 Def Alloc x1 |V0 a|I29a| | | | | | | | | [000059] 197.#80 I29 Use * Keep x1 |V0 a|I29i| | | | | | | | | 198.#81 I30 Def Alloc x1 |V0 a|I30a| | | | | | | | | [000143] 203.#82 V0 Use Keep x0 |V0 a|I30a| | | | | | | | | 203.#83 I30 Use * Keep x1 |V0 a|I30i| | | | | | | | | [000064] 213.#84 V0 Use * Keep x0 |V0 i| | | | | | | | | | [000138] 218.#85 C31 Def Alloc x0 |C31a| | | | | | | | | | [000068] 219.#86 x0 Fixd Keep x0 |C31a| | | | | | | | | | 219.#87 C31 Use * Keep x0 |C31i| | | | | | | | | | --------------------------------------------+----+----+----+----+----+----+----+----+----+----+ TreeID Loc RP# Name Type Action Reg |x0 |x1 |x2 |x3 |x4 |x5 |x6 |x7 |x19 |x20 | --------------------------------------------+----+----+----+----+----+----+----+----+----+----+ 221.#88 BB2 PredBB1 | | | | | | | | | | | [000160] 226.#89 C32 Def Alloc x0 |C32a| | | | | | | | | | [000161] 227.#90 C32 Use * Keep x0 |C32i| | | | | | | | | | 228.#91 I33 Def Alloc x0 |I33a| | | | | | | | | | [000069] 229.#92 I33 Use * Keep x0 |I33i| | | | | | | | | | 230.#93 x0 Kill Keep x0 | | | | | | | | | | | 230.#94 x1 Kill Keep x1 | | | | | | | | | | | 230.#95 x2 Kill Keep x2 | | | | | | | | | | | 230.#96 x3 Kill Keep x3 | | | | | | | | | | | 230.#97 x4 Kill Keep x4 | | | | | | | | | | | 230.#98 x5 Kill Keep x5 | | | | | | | | | | | 230.#99 x6 Kill Keep x6 | | | | | | | | | | | 230.#100 x7 Kill Keep x7 | | | | | | | | | | | 230.#101 x8 Kill Keep x8 | | | | | | | | | | | 230.#102 x9 Kill Keep x9 | | | | | | | | | | | 230.#103 x10 Kill Keep x10 | | | | | | | | | | | 230.#104 x11 Kill Keep x11 | | | | | | | | | | | 230.#105 x12 Kill Keep x12 | | | | | | | | | | | 230.#106 x13 Kill Keep x13 | | | | | | | | | | | 230.#107 x14 Kill Keep x14 | | | | | | | | | | | 230.#108 x15 Kill Keep x15 | | | | | | | | | | | 230.#109 xip0 Kill Keep xip0 | | | | | | | | | | | 230.#110 xip1 Kill Keep xip1 | | | | | | | | | | | 230.#111 lr Kill Keep lr | | | | | | | | | | | --------------------------------------------+----+----+----+----+----+----+----+----+----+----+ TreeID Loc RP# Name Type Action Reg |x0 |x1 |x2 |x3 |x4 |x5 |x6 |x7 |x19 |x20 | --------------------------------------------+----+----+----+----+----+----+----+----+----+----+ 231.#112 BB7 PredBB0 | | | | | | | | | | | [000159] 234.#113 x0 Kill Keep x0 | | | | | | | | | | | 234.#114 x1 Kill Keep x1 | | | | | | | | | | | 234.#115 x2 Kill Keep x2 | | | | | | | | | | | 234.#116 x3 Kill Keep x3 | | | | | | | | | | | 234.#117 x4 Kill Keep x4 | | | | | | | | | | | 234.#118 x5 Kill Keep x5 | | | | | | | | | | | 234.#119 x6 Kill Keep x6 | | | | | | | | | | | 234.#120 x7 Kill Keep x7 | | | | | | | | | | | 234.#121 x8 Kill Keep x8 | | | | | | | | | | | 234.#122 x9 Kill Keep x9 | | | | | | | | | | | 234.#123 x10 Kill Keep x10 | | | | | | | | | | | 234.#124 x11 Kill Keep x11 | | | | | | | | | | | 234.#125 x12 Kill Keep x12 | | | | | | | | | | | 234.#126 x13 Kill Keep x13 | | | | | | | | | | | 234.#127 x14 Kill Keep x14 | | | | | | | | | | | 234.#128 x15 Kill Keep x15 | | | | | | | | | | | 234.#129 xip0 Kill Keep xip0 | | | | | | | | | | | 234.#130 xip1 Kill Keep xip1 | | | | | | | | | | | 234.#131 lr Kill Keep lr | | | | | | | | | | | Recording the maximum number of concurrent spills: ---------- LSRA Stats ---------- Register selection order: ABCDEFGHIJKLMNOPQ Total Tracked Vars: 9 Total Reg Cand Vars: 9 Total number of Intervals: 33 Total number of RefPositions: 131 Total Number of spill temps created: 0 .......... BB01 [ 100.00]: REG_ORDER = 3 BB05 [ 800.00]: REG_ORDER = 3 BB06 [ 50.00]: REG_ORDER = 3 BB03 [ 200.00]: COVERS = 3, REG_ORDER = 9 BB04 [ 50.00]: COVERS = 5, BEST_FIT = 1, REG_ORDER = 2 BB02 [ 0.00]: REG_ORDER = 2 .......... Total SpillCount : 0 Weighted: 0.000000 Total CopyReg : 0 Weighted: 0.000000 Total ResolutionMovs : 0 Weighted: 0.000000 Total SplitEdges : 0 Weighted: 0.000000 .......... Total COVERS [# 4] : 8 Weighted: 850.000000 Total BEST_FIT [#11] : 1 Weighted: 50.000000 Total REG_ORDER [#13] : 22 Weighted: 4750.000000 TUPLE STYLE DUMP WITH REGISTER ASSIGNMENTS Incoming Parameters: V00(x0) BB01 [000..013) -> BB02 (cond), preds={} succs={BB05,BB02} ===== N003. IL_OFFSET INLRT @ 0x000[E-] N005. V00(x0) N007. STK = LEA(b+8) ; x0 N009. x1 = IND ; STK N011. V00(x0) N013. x2 = IND ; x0 N015. STK = LEA(b+68); x2 N017. x2 = IND ; STK N019. NE ; x1,x2 N021. JTRUE Var=Reg end of BB01: V00=x0 BB05 [05E..071) -> BB03 (cond), preds={BB01,BB03} succs={BB06,BB03} ===== Predecessor for variable locations: BB01 Var=Reg beg of BB05: V00=x0 N025. IL_OFFSET INLRT @ 0x05E[E-] N027. V00(x0) N029. STK = LEA(b+12); x0 N031. x1 = IND ; STK N033. V00(x0) N035. x2 = IND ; x0 N037. STK = LEA(b+56); x2 N039. x2 = IND ; STK N041. LT ; x1,x2 N043. JTRUE Var=Reg end of BB05: V00=x0 BB03 [01A..045) -> BB05 (cond), preds={BB05} succs={BB04,BB05} ===== Predecessor for variable locations: BB05 Var=Reg beg of BB03: V00=x0 N047. IL_OFFSET INLRT @ 0x01A[E-] N049. V00(x0) N051. x1 = IND ; x0 N053. STK = LEA(b+16); x1 N055. x1 = IND ; STK * N057. V04(x1); x1 N059. IL_OFFSET INLRT @ 0x01A[E-] N061. V00(x0) N063. STK = LEA(b+12); x0 N065. x2 = IND ; STK * N067. V02(x2); x2 N069. V02(x2) N071. CNS_INT 1 N073. x3 = ADD ; x2 N075. V00(x0) N077. STK = LEA(b+12); x0 N079. STOREIND ; STK,x3 N081. V02(x2) N083. V04(x1) N085. STK = LEA(b+8) ; x1 N087. x3 = IND ; STK N089. BOUNDS_CHECK_Rng -> BB07; x2,x3 N091. V04(x1*) N093. V02(x2*) N095. STK = CAST ; x2* N097. CNS_INT 4 N099. x2 = BFIZ ; STK N101. CNS_INT 16 N103. x2 = ADD ; x2 N105. x1 = ADD ; x1*,x2 * N107. V01(x1); x1 N109. IL_OFFSET INLRT @ 0x03C[E-] N111. V01(x1) N113. STK = LEA(b+4) ; x1 N115. x2 = IND ; STK N117. CNS_INT -1 N119. LT ; x2 N121. JTRUE Var=Reg end of BB03: V00=x0 V01=x1 BB04 [045..05E) (return), preds={BB03} succs={} ===== Predecessor for variable locations: BB01 Var=Reg beg of BB04: V00=x0 V01=x1 N125. V01(x1) N127. STK = LEA(b+8) ; x1 N129. x2 = IND ; STK * N131. V06(x2); x2 N133. V01(x1*) N135. STK = LEA(b+12); x1* N137. x1 = IND ; STK * N139. V07(x1); x1 N141. IL_OFFSET INL01 @ 0x000[E-] <- INLRT @ ??? N143. V06(x2*) * N145. V08(x2); x2* N147. IL_OFFSET INL01 @ 0x007[E-] <- INLRT @ ??? N149. V07(x1*) * N151. V09(x1); x1* N153. IL_OFFSET INLRT @ 0x057[--] N155. V00(x0*) N157. CNS_INT 20 N159. x0 = ADD ; x0* * N161. V10(x0); x0 N163. V10(x0) N165. V08(x2*) N167. STOREIND ; x0,x2* N169. V10(x0*) N171. STK = LEA(b+4) ; x0* N173. V09(x1*) N175. STOREIND ; STK,x1* N177. IL_OFFSET INLRT @ 0x05C[E-] N179. x0 = CNS_INT 1 N181. RETURN ; x0 Var=Reg end of BB04: none BB06 [071..092) (return), preds={BB05} succs={} ===== Predecessor for variable locations: BB05 Var=Reg beg of BB06: V00=x0 N185. IL_OFFSET INLRT @ 0x071[E-] N187. V00(x0) N189. x1 = IND ; x0 N191. STK = LEA(b+56); x1 N193. x1 = IND ; STK N195. CNS_INT 1 N197. x1 = ADD ; x1 N199. V00(x0) N201. STK = LEA(b+12); x0 N203. STOREIND ; STK,x1 N205. IL_OFFSET INLRT @ 0x084[E-] N207. V00(x0*) N209. STK = LEA(b+20); x0* N211. CNS_INT 0 N213. STOREIND ; STK N215. IL_OFFSET INLRT @ 0x090[E-] N217. x0 = CNS_INT 0 N219. RETURN ; x0 Var=Reg end of BB06: none BB02 [013..01A) (throw), preds={BB01} succs={} ===== Predecessor for variable locations: BB01 Var=Reg beg of BB02: none N223. IL_OFFSET INLRT @ 0x013[E-] N225. x0 = CNS_INT(h) 0xffff707cb078 ftn N227. x0 = IND ; x0 N229. CALL ; x0 Var=Reg end of BB02: none BB07 [???..???) (throw), preds={} succs={} ===== Predecessor for variable locations: BB00 Var=Reg beg of BB07: none N233. CALL help Var=Reg end of BB07: none *************** Finishing PHASE Linear scan register alloc Trees after Linear scan register alloc ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..013)-> BB02 ( cond ) i LIR BB05 [0004] 2 BB01,BB03 8 [05E..071)-> BB03 ( cond ) i bwd bwd-src LIR BB06 [0005] 1 BB05 0.50 [071..092) (return) i LIR BB03 [0002] 1 BB05 2 [01A..045)-> BB05 ( cond ) i Loop Loop0 idxlen bwd bwd-target LIR BB04 [0003] 1 BB03 0.50 [045..05E) (return) i LIR BB02 [0001] 1 BB01 0 [013..01A) (throw ) i rare hascall gcsafe LIR BB07 [0007] 0 0 [???..???) (throw ) keep i internal rare LIR ----------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [000..013) -> BB02 (cond), preds={} succs={BB05,BB02} N003 (???,???) [000140] ----------- IL_OFFSET void INLRT @ 0x000[E-] REG NA N005 ( 1, 1) [000000] ----------- t0 = LCL_VAR byref V00 this u:1 x0 REG x0 $80 /--* t0 byref N007 ( 3, 4) [000084] -c--------- t84 = * LEA(b+8) byref REG NA /--* t84 byref N009 ( 4, 3) [000001] ---XG------ t1 = * IND int REG x1 N011 ( 1, 1) [000002] ----------- t2 = LCL_VAR byref V00 this u:1 x0 REG x0 $80 /--* t2 byref N013 ( 3, 2) [000003] n---GO----- t3 = * IND ref REG x2 /--* t3 ref N015 ( 5, 5) [000086] -c--------- t86 = * LEA(b+68) byref REG NA /--* t86 byref N017 ( 6, 4) [000004] ---XGO----- t4 = * IND int REG x2 /--* t1 int +--* t4 int N019 ( 11, 8) [000005] J--XGO-N--- * NE void REG NA N021 ( 13, 10) [000006] ---XGO----- * JTRUE void REG NA ------------ BB05 [05E..071) -> BB03 (cond), preds={BB01,BB03} succs={BB06,BB03} N025 (???,???) [000141] ----------- IL_OFFSET void INLRT @ 0x05E[E-] REG NA N027 ( 1, 1) [000007] ----------- t7 = LCL_VAR byref V00 this u:1 x0 REG x0 $80 /--* t7 byref N029 ( 3, 4) [000129] -c--------- t129 = * LEA(b+12) byref REG NA /--* t129 byref N031 ( 4, 3) [000008] n---GO----- t8 = * IND int REG x1 N033 ( 1, 1) [000009] ----------- t9 = LCL_VAR byref V00 this u:1 x0 REG x0 $80 /--* t9 byref N035 ( 3, 2) [000010] n---GO----- t10 = * IND ref REG x2 /--* t10 ref N037 ( 5, 5) [000131] -c--------- t131 = * LEA(b+56) byref REG NA /--* t131 byref N039 ( 6, 4) [000011] ---XGO----- t11 = * IND int REG x2 /--* t8 int +--* t11 int N041 ( 11, 8) [000012] N--XGO-N-U- * LT void REG NA N043 ( 13, 10) [000013] ---XGO----- * JTRUE void REG NA ------------ BB06 [071..092) (return), preds={BB05} succs={} N185 (???,???) [000142] ----------- IL_OFFSET void INLRT @ 0x071[E-] REG NA N187 ( 1, 1) [000055] ----------- t55 = LCL_VAR byref V00 this u:1 x0 REG x0 $80 /--* t55 byref N189 ( 3, 2) [000056] n---GO----- t56 = * IND ref REG x1 /--* t56 ref N191 ( 5, 5) [000135] -c--------- t135 = * LEA(b+56) byref REG NA /--* t135 byref N193 ( 6, 4) [000057] ---XGO----- t57 = * IND int REG x1 N195 ( 1, 2) [000058] -c--------- t58 = CNS_INT int 1 REG NA $44 /--* t57 int +--* t58 int N197 ( 8, 7) [000059] ---XGO----- t59 = * ADD int REG x1 N199 ( 1, 1) [000054] ----------- t54 = LCL_VAR byref V00 this u:1 x0 REG x0 $80 /--* t54 byref N201 ( 3, 4) [000133] -c--------- t133 = * LEA(b+12) byref REG NA /--* t133 byref +--* t59 int N203 (???,???) [000143] -A-XGO----- * STOREIND int REG NA N205 (???,???) [000144] ----------- IL_OFFSET void INLRT @ 0x084[E-] REG NA N207 ( 1, 1) [000062] ----------- t62 = LCL_VAR byref V00 this u:1 x0 (last use) REG x0 $80 /--* t62 byref N209 ( 3, 4) [000137] -c--------- t137 = * LEA(b+20) byref REG NA N211 ( 1, 2) [000065] -c--------- t65 = CNS_INT int 0 REG NA $40 /--* t137 byref +--* t65 int N213 ( 9, 8) [000064] -A--G------ * STOREIND long REG NA N215 (???,???) [000145] ----------- IL_OFFSET void INLRT @ 0x090[E-] REG NA N217 ( 1, 2) [000138] ----------- t138 = CNS_INT int 0 REG x0 $40 /--* t138 int N219 ( 2, 3) [000068] ----------- * RETURN int REG NA $VN.Void ------------ BB03 [01A..045) -> BB05 (cond), preds={BB05} succs={BB04,BB05} N047 (???,???) [000146] ----------- IL_OFFSET void INLRT @ 0x01A[E-] REG NA N049 ( 1, 1) [000014] ----------- t14 = LCL_VAR byref V00 this u:1 x0 REG x0 $80 /--* t14 byref N051 ( 3, 2) [000015] n---GO----- t15 = * IND ref REG x1 /--* t15 ref N053 ( 5, 5) [000088] -c--------- t88 = * LEA(b+16) byref REG NA /--* t88 byref N055 ( 6, 4) [000016] ---XGO----- t16 = * IND ref REG x1 /--* t16 ref N057 ( 6, 4) [000023] DA-XGO----- * STORE_LCL_VAR ref V04 tmp1 d:1 x1 REG x1 N059 (???,???) [000147] ----------- IL_OFFSET void INLRT @ 0x01A[E-] REG NA N061 ( 1, 1) [000018] ----------- t18 = LCL_VAR byref V00 this u:1 x0 REG x0 $80 /--* t18 byref N063 ( 3, 4) [000090] -c--------- t90 = * LEA(b+12) byref REG NA /--* t90 byref N065 ( 4, 3) [000019] n---GO----- t19 = * IND int REG x2 /--* t19 int N067 ( 4, 3) [000021] DA--GO----- * STORE_LCL_VAR int V02 loc1 d:1 x2 REG x2 N069 ( 1, 1) [000025] ----------- t25 = LCL_VAR int V02 loc1 u:1 x2 REG x2 N071 ( 1, 2) [000026] -c--------- t26 = CNS_INT int 1 REG NA $44 /--* t25 int +--* t26 int N073 ( 3, 4) [000027] ----------- t27 = * ADD int REG x3 N075 ( 1, 1) [000017] ----------- t17 = LCL_VAR byref V00 this u:1 x0 REG x0 $80 /--* t17 byref N077 ( 3, 4) [000092] -c--------- t92 = * LEA(b+12) byref REG NA /--* t92 byref +--* t27 int N079 (???,???) [000148] -A--GO----- * STOREIND int REG NA N081 ( 1, 1) [000030] ----------- t30 = LCL_VAR int V02 loc1 u:1 x2 REG x2 N083 ( 1, 1) [000024] ----------- t24 = LCL_VAR ref V04 tmp1 u:1 x1 REG x1 /--* t24 ref N085 (???,???) [000158] -c--------- t158 = * LEA(b+8) byref REG NA /--* t158 byref N087 ( 3, 3) [000095] ---X------- t95 = * IND int REG x3 /--* t30 int +--* t95 int N089 ( 8, 11) [000096] ---X-O----- * BOUNDS_CHECK_Rng -> BB07 void REG NA N091 ( 1, 1) [000093] ----------- t93 = LCL_VAR ref V04 tmp1 u:1 x1 (last use) REG x1 N093 ( 1, 1) [000094] ----------- t94 = LCL_VAR int V02 loc1 u:1 x2 (last use) REG x2 /--* t94 int N095 ( 2, 3) [000097] -c-------U- t97 = * CAST long <- uint REG NA N097 ( 1, 2) [000098] -c-----N--- t98 = CNS_INT long 4 REG NA $105 /--* t97 long +--* t98 long N099 ( 4, 6) [000099] ----------- t99 = * BFIZ long REG x2 N101 ( 1, 2) [000100] -c--------- t100 = CNS_INT long 16 REG NA $104 /--* t99 long +--* t100 long N103 ( 6, 9) [000101] ----------- t101 = * ADD long REG x2 /--* t93 ref +--* t101 long N105 ( 7, 10) [000102] -------N--- t102 = * ADD byref REG x1 /--* t102 byref N107 ( 15, 21) [000033] DA-XGO----- * STORE_LCL_VAR byref V01 loc0 d:1 x1 REG x1 N109 (???,???) [000149] ----------- IL_OFFSET void INLRT @ 0x03C[E-] REG NA N111 ( 1, 1) [000034] ----------- t34 = LCL_VAR byref V01 loc0 u:1 x1 REG x1 $400 /--* t34 byref N113 ( 3, 4) [000106] -c--------- t106 = * LEA(b+4) byref REG NA /--* t106 byref N115 ( 4, 3) [000035] ---XG------ t35 = * IND int REG x2 N117 ( 1, 2) [000036] -c--------- t36 = CNS_INT int -1 REG NA $41 /--* t35 int +--* t36 int N119 ( 6, 6) [000037] J--XG--N--- * LT void REG NA N121 ( 8, 8) [000038] ---XG------ * JTRUE void REG NA $268 ------------ BB04 [045..05E) (return), preds={BB03} succs={} N125 ( 1, 1) [000040] ----------- t40 = LCL_VAR byref V01 loc0 u:1 x1 REG x1 $400 /--* t40 byref N127 ( 3, 4) [000108] -c--------- t108 = * LEA(b+8) byref REG NA /--* t108 byref N129 ( 4, 3) [000041] n---GO----- t41 = * IND int REG x2 /--* t41 int N131 ( 8, 6) [000079] DA--GO----- * STORE_LCL_VAR int V06 tmp3 d:1 x2 REG x2 N133 ( 1, 1) [000042] ----------- t42 = LCL_VAR byref V01 loc0 u:1 x1 (last use) REG x1 $400 /--* t42 byref N135 ( 3, 4) [000110] -c--------- t110 = * LEA(b+12) byref REG NA /--* t110 byref N137 ( 4, 3) [000043] n---GO----- t43 = * IND int REG x1 /--* t43 int N139 ( 8, 6) [000081] DA--GO----- * STORE_LCL_VAR int V07 tmp4 d:1 x1 REG x1 N141 (???,???) [000150] ----------- IL_OFFSET void INL01 @ 0x000[E-] <- INLRT @ ??? REG NA N143 ( 3, 2) [000071] ----------- t71 = LCL_VAR int V06 tmp3 u:1 x2 (last use) REG x2 /--* t71 int N145 ( 7, 5) [000073] DA--------- * STORE_LCL_VAR int V08 tmp5 d:1 x2 REG x2 N147 (???,???) [000151] ----------- IL_OFFSET void INL01 @ 0x007[E-] <- INLRT @ ??? REG NA N149 ( 3, 2) [000075] ----------- t75 = LCL_VAR int V07 tmp4 u:1 x1 (last use) REG x1 /--* t75 int N151 ( 7, 5) [000077] DA--------- * STORE_LCL_VAR int V09 tmp6 d:1 x1 REG x1 N153 (???,???) [000152] ----------- IL_OFFSET void INLRT @ 0x057[--] REG NA N155 ( 1, 1) [000039] ----------- t39 = LCL_VAR byref V00 this u:1 x0 (last use) REG x0 $80 N157 ( 1, 2) [000111] -c--------- t111 = CNS_INT long 20 REG NA $10b /--* t39 byref +--* t111 long N159 ( 3, 4) [000112] ----------- t112 = * ADD byref REG x0 $152 /--* t112 byref N161 ( 3, 4) [000114] DA--------- * STORE_LCL_VAR byref V10 tmp7 d:1 x0 REG x0 N163 ( 1, 1) [000115] ----------- t115 = LCL_VAR byref V10 tmp7 u:1 x0 REG x0 $152 N165 ( 3, 2) [000117] ----------- t117 = LCL_VAR int V08 tmp5 u:1 x2 (last use) REG x2 /--* t115 byref +--* t117 int N167 (???,???) [000153] -A---O----- * STOREIND int REG NA N169 ( 1, 1) [000120] ----------- t120 = LCL_VAR byref V10 tmp7 u:1 x0 (last use) REG x0 $152 /--* t120 byref N171 ( 3, 4) [000122] -c--------- t122 = * LEA(b+4) byref REG NA N173 ( 3, 2) [000124] ----------- t124 = LCL_VAR int V09 tmp6 u:1 x1 (last use) REG x1 /--* t122 byref +--* t124 int N175 (???,???) [000154] -A---O----- * STOREIND int REG NA N177 (???,???) [000155] ----------- IL_OFFSET void INLRT @ 0x05C[E-] REG NA N179 ( 1, 2) [000127] ----------- t127 = CNS_INT int 1 REG x0 $44 /--* t127 int N181 ( 2, 3) [000053] ----------- * RETURN int REG NA $VN.Void ------------ BB02 [013..01A) (throw), preds={BB01} succs={} N223 (???,???) [000156] ----------- IL_OFFSET void INLRT @ 0x013[E-] REG NA N225 ( 3, 12) [000160] H---------- t160 = CNS_INT(h) long 0xffff707cb078 ftn REG x0 /--* t160 long N227 ( 6, 14) [000161] ----------- t161 = * IND long REG x0 /--* t161 long control expr N229 ( 14, 2) [000069] --CXG------ * CALL void System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion() REG NA $VN.Void ------------ BB07 [???..???) (throw), preds={} succs={} N233 ( 14, 2) [000159] --CXG------ CALL help void CORINFO_HELP_RNGCHKFAIL REG NA ------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist *************** In fgDebugCheckLoopTable: loop table not valid *************** Starting PHASE Place 'align' instructions *************** Finishing PHASE Place 'align' instructions [no changes] *************** In genGenerateCode() ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..013)-> BB02 ( cond ) i LIR BB05 [0004] 2 BB01,BB03 8 [05E..071)-> BB03 ( cond ) i bwd bwd-src LIR BB06 [0005] 1 BB05 0.50 [071..092) (return) i LIR BB03 [0002] 1 BB05 2 [01A..045)-> BB05 ( cond ) i Loop Loop0 idxlen bwd bwd-target LIR BB04 [0003] 1 BB03 0.50 [045..05E) (return) i LIR BB02 [0001] 1 BB01 0 [013..01A) (throw ) i rare hascall gcsafe LIR BB07 [0007] 0 0 [???..???) (throw ) keep i internal rare LIR ----------------------------------------------------------------------------------------------------------------------------------------- *************** Starting PHASE Generate code *************** In fgDebugCheckBBlist Finalizing stack frame Recording Var Locations at start of BB01 V00(x0) Modified regs: [x0-xip1 lr] Callee-saved registers pushed: 2 [fp lr] *************** In lvaAssignFrameOffsets(FINAL_FRAME_LAYOUT) Setting genSaveFpLrWithAllCalleeSavedRegisters to false --- delta bump 16 for FP frame --- virtual stack offset to actual stack offset delta is 16 -- V03 was 0, now 16 ; Final local variable assignments ; ; V00 this [V00,T00] ( 13, 28 ) byref -> x0 this single-def ; V01 loc0 [V01,T03] ( 4, 5 ) byref -> x1 ; V02 loc1 [V02,T02] ( 4, 8 ) int -> x2 ;# V03 OutArgs [V03 ] ( 1, 1 ) lclBlk ( 0) [sp+00H] "OutgoingArgSpace" ; V04 tmp1 [V04,T01] ( 3, 12 ) ref -> x1 class-hnd "impAppendStmt" ;* V05 tmp2 [V05 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" ; V06 tmp3 [V06,T05] ( 2, 2 ) int -> x2 "Inlining Arg" ; V07 tmp4 [V07,T06] ( 2, 2 ) int -> x1 "Inlining Arg" ; V08 tmp5 [V08,T07] ( 2, 1 ) int -> x2 V05.key(offs=0x00) P-INDEP "field V05.key (fldOffset=0x0)" ; V09 tmp6 [V09,T08] ( 2, 1 ) int -> x1 V05.value(offs=0x04) P-INDEP "field V05.value (fldOffset=0x4)" ; V10 tmp7 [V10,T04] ( 3, 3 ) byref -> x0 single-def "BlockOp address local" ; ; Lcl frame size = 0 Created: G_M39015_IG02: ; func=00, offs=000000H, size=0000H, bbWeight=1, gcrefRegs=0000 {} Mark labels for codegen BB01 : first block BB02 : branch target BB03 : branch target BB05 : branch target BB07 : throw helper block *************** After genMarkLabelsForCodegen() ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..013)-> BB02 ( cond ) i label LIR BB05 [0004] 2 BB01,BB03 8 [05E..071)-> BB03 ( cond ) i label bwd bwd-src LIR BB06 [0005] 1 BB05 0.50 [071..092) (return) i LIR BB03 [0002] 1 BB05 2 [01A..045)-> BB05 ( cond ) i Loop Loop0 label idxlen bwd bwd-target LIR BB04 [0003] 1 BB03 0.50 [045..05E) (return) i LIR BB02 [0001] 1 BB01 0 [013..01A) (throw ) i rare label hascall gcsafe LIR BB07 [0007] 0 0 [???..???) (throw ) keep i internal rare label LIR ----------------------------------------------------------------------------------------------------------------------------------------- Setting stack level from -572662307 to 0 =============== Generating BB01 [000..013) -> BB02 (cond), preds={} succs={BB05,BB02} flags=0x00000000.20010020: i label LIR BB01 IN (1)={V00} + ByrefExposed + GcHeap OUT(1)={V00} + ByrefExposed + GcHeap Recording Var Locations at start of BB01 V00(x0) Change life 0000000000000000 {} -> 0000000000000001 {V00} V00 in reg x0 is becoming live [------] Live regs: 0000 {} => 0001 {x0} New debug range: first Live regs: (unchanged) 0001 {x0} GC regs: (unchanged) 0000 {} Byref regs: (unchanged) 0001 {x0} L_M39015_BB01: Label: G_M39015_IG02, GCvars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0001 {x0} Scope info: begin block BB01, IL range [000..013) Added IP mapping: 0x0000 STACK_EMPTY (G_M39015_IG02,ins#0,ofs#0) label Generating: N003 (???,???) [000140] ----------- IL_OFFSET void INLRT @ 0x000[E-] REG NA Generating: N005 ( 1, 1) [000000] ----------- t0 = LCL_VAR byref V00 this u:1 x0 REG x0 $80 /--* t0 byref Generating: N007 ( 3, 4) [000084] -c--------- t84 = * LEA(b+8) byref REG NA /--* t84 byref Generating: N009 ( 4, 3) [000001] ---XG------ t1 = * IND int REG x1 Mapped BB01 to G_M39015_IG02 IN0001: ldr w1, [x0, #0x08] Generating: N011 ( 1, 1) [000002] ----------- t2 = LCL_VAR byref V00 this u:1 x0 REG x0 $80 /--* t2 byref Generating: N013 ( 3, 2) [000003] n---GO----- t3 = * IND ref REG x2 IN0002: ldr x2, [x0] GC regs: 0000 {} => 0004 {x2} /--* t3 ref Generating: N015 ( 5, 5) [000086] -c--------- t86 = * LEA(b+68) byref REG NA /--* t86 byref Generating: N017 ( 6, 4) [000004] ---XGO----- t4 = * IND int REG x2 GC regs: 0004 {x2} => 0000 {} IN0003: ldr w2, [x2, #0x44] /--* t1 int +--* t4 int Generating: N019 ( 11, 8) [000005] J--XGO-N--- * NE void REG NA IN0004: cmp w1, w2 Generating: N021 ( 13, 10) [000006] ---XGO----- * JTRUE void REG NA IN0005: bne (LARGEJMP)L_M39015_BB02 Variable Live Range History Dump for BB01 V00 this: x0 [(G_M39015_IG02,ins#0,ofs#0), ...] =============== Generating BB05 [05E..071) -> BB03 (cond), preds={BB01,BB03} succs={BB06,BB03} flags=0x00000200.21010020: i label bwd bwd-src LIR BB05 IN (1)={V00} + ByrefExposed + GcHeap OUT(1)={V00} + ByrefExposed + GcHeap Recording Var Locations at start of BB05 V00(x0) Liveness not changing: 0000000000000001 {V00} Live regs: 0000 {} => 0001 {x0} GC regs: (unchanged) 0000 {} Byref regs: 0000 {} => 0001 {x0} L_M39015_BB05: Adding label due to BB weight difference: BBJ_COND BB01 with weight 100 different from BB05 with weight 800 Saved: G_M39015_IG02: ; func=00, offs=000000H, size=0018H, bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, BB01 [0000], byref Created: G_M39015_IG03: ; func=00, offs=000018H, size=0000H, bbWeight=8, gcrefRegs=0000 {} Label: G_M39015_IG03, GCvars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0001 {x0} Scope info: begin block BB05, IL range [05E..071) Added IP mapping: 0x005E STACK_EMPTY (G_M39015_IG03,ins#0,ofs#0) label Generating: N025 (???,???) [000141] ----------- IL_OFFSET void INLRT @ 0x05E[E-] REG NA Generating: N027 ( 1, 1) [000007] ----------- t7 = LCL_VAR byref V00 this u:1 x0 REG x0 $80 /--* t7 byref Generating: N029 ( 3, 4) [000129] -c--------- t129 = * LEA(b+12) byref REG NA /--* t129 byref Generating: N031 ( 4, 3) [000008] n---GO----- t8 = * IND int REG x1 Mapped BB05 to G_M39015_IG03 IN0006: ldr w1, [x0, #0x0C] Generating: N033 ( 1, 1) [000009] ----------- t9 = LCL_VAR byref V00 this u:1 x0 REG x0 $80 /--* t9 byref Generating: N035 ( 3, 2) [000010] n---GO----- t10 = * IND ref REG x2 IN0007: ldr x2, [x0] GC regs: 0000 {} => 0004 {x2} /--* t10 ref Generating: N037 ( 5, 5) [000131] -c--------- t131 = * LEA(b+56) byref REG NA /--* t131 byref Generating: N039 ( 6, 4) [000011] ---XGO----- t11 = * IND int REG x2 GC regs: 0004 {x2} => 0000 {} IN0008: ldr w2, [x2, #0x38] /--* t8 int +--* t11 int Generating: N041 ( 11, 8) [000012] N--XGO-N-U- * LT void REG NA IN0009: cmp w1, w2 Generating: N043 ( 13, 10) [000013] ---XGO----- * JTRUE void REG NA IN000a: blo (LARGEJMP)L_M39015_BB03 Variable Live Range History Dump for BB05 V00 this: x0 [(G_M39015_IG02,ins#0,ofs#0), ...] =============== Generating BB06 [071..092) (return), preds={BB05} succs={} flags=0x00000000.20000020: i LIR BB06 IN (1)={V00} + ByrefExposed + GcHeap OUT(0)={ } Recording Var Locations at start of BB06 V00(x0) Liveness not changing: 0000000000000001 {V00} Live regs: 0000 {} => 0001 {x0} GC regs: (unchanged) 0000 {} Byref regs: 0000 {} => 0001 {x0} L_M39015_BB06: Adding label due to BB weight difference: BBJ_COND BB05 with weight 800 different from BB06 with weight 50 Saved: G_M39015_IG03: ; func=00, offs=000018H, size=0018H, bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, BB05 [0004], byref Created: G_M39015_IG04: ; func=00, offs=000030H, size=0000H, bbWeight=0.50, gcrefRegs=0000 {} Label: G_M39015_IG04, GCvars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0001 {x0} Scope info: begin block BB06, IL range [071..092) Added IP mapping: 0x0071 STACK_EMPTY (G_M39015_IG04,ins#0,ofs#0) label Generating: N185 (???,???) [000142] ----------- IL_OFFSET void INLRT @ 0x071[E-] REG NA Generating: N187 ( 1, 1) [000055] ----------- t55 = LCL_VAR byref V00 this u:1 x0 REG x0 $80 /--* t55 byref Generating: N189 ( 3, 2) [000056] n---GO----- t56 = * IND ref REG x1 Mapped BB06 to G_M39015_IG04 IN000b: ldr x1, [x0] GC regs: 0000 {} => 0002 {x1} /--* t56 ref Generating: N191 ( 5, 5) [000135] -c--------- t135 = * LEA(b+56) byref REG NA /--* t135 byref Generating: N193 ( 6, 4) [000057] ---XGO----- t57 = * IND int REG x1 GC regs: 0002 {x1} => 0000 {} IN000c: ldr w1, [x1, #0x38] Generating: N195 ( 1, 2) [000058] -c--------- t58 = CNS_INT int 1 REG NA $44 /--* t57 int +--* t58 int Generating: N197 ( 8, 7) [000059] ---XGO----- t59 = * ADD int REG x1 IN000d: add w1, w1, #1 Generating: N199 ( 1, 1) [000054] ----------- t54 = LCL_VAR byref V00 this u:1 x0 REG x0 $80 /--* t54 byref Generating: N201 ( 3, 4) [000133] -c--------- t133 = * LEA(b+12) byref REG NA /--* t133 byref +--* t59 int Generating: N203 (???,???) [000143] -A-XGO----- * STOREIND int REG NA IN000e: str w1, [x0, #0x0C] Added IP mapping: 0x0084 STACK_EMPTY (G_M39015_IG04,ins#4,ofs#16) Generating: N205 (???,???) [000144] ----------- IL_OFFSET void INLRT @ 0x084[E-] REG NA Generating: N207 ( 1, 1) [000062] ----------- t62 = LCL_VAR byref V00 this u:1 x0 (last use) REG x0 $80 /--* t62 byref Generating: N209 ( 3, 4) [000137] -c--------- t137 = * LEA(b+20) byref REG NA Generating: N211 ( 1, 2) [000065] -c--------- t65 = CNS_INT int 0 REG NA $40 /--* t137 byref +--* t65 int Generating: N213 ( 9, 8) [000064] -A--G------ * STOREIND long REG NA V00 in reg x0 is becoming dead [000062] Live regs: 0001 {x0} => 0000 {} Closing debug range. Live vars after [000062]: {V00} => {} Byref regs: 0001 {x0} => 0000 {} IN000f: str xzr, [x0, #0x14] Added IP mapping: 0x0090 STACK_EMPTY (G_M39015_IG04,ins#5,ofs#20) Generating: N215 (???,???) [000145] ----------- IL_OFFSET void INLRT @ 0x090[E-] REG NA Generating: N217 ( 1, 2) [000138] ----------- t138 = CNS_INT int 0 REG x0 $40 IN0010: mov w0, wzr /--* t138 int Generating: N219 ( 2, 3) [000068] ----------- * RETURN int REG NA $VN.Void Added IP mapping: EPILOG (G_M39015_IG04,ins#6,ofs#24) label Reserving epilog IG for block BB06 Saved: G_M39015_IG04: ; func=00, offs=000030H, size=0018H, bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, BB06 [0005], byref Created: G_M39015_IG05: ; func=00, offs=000048H, size=0000H, bbWeight=0.50, gcrefRegs=0000 {} Created: G_M39015_IG06: ; func=00, offs=000148H, size=0000H, bbWeight=0.50, gcrefRegs=0000 {}, epilog *************** After placeholder IG creation G_M39015_IG01: ; func=00, offs=000000H, size=0000H, bbWeight=1, gcrefRegs=0000 {} <-- Prolog IG G_M39015_IG02: ; offs=000000H, size=0018H, bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, BB01 [0000], byref G_M39015_IG03: ; offs=000018H, size=0018H, bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, BB05 [0004], byref G_M39015_IG04: ; offs=000030H, size=0018H, bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, BB06 [0005], byref G_M39015_IG05: ; epilog placeholder, next placeholder=, BB06 [0005], epilog, extend <-- First placeholder <-- Last placeholder ; PrevGCVars=0000000000000000 {}, PrevGCrefRegs=0000 {}, PrevByrefRegs=0001 {x0} ; InitGCVars=0000000000000000 {}, InitGCrefRegs=0000 {}, InitByrefRegs=0001 {x0} G_M39015_IG06: ; offs=000148H, size=0000H, bbWeight=0.50, gcrefRegs=0000 {} <-- Current IG Variable Live Range History Dump for BB06 V00 this: x0 [(G_M39015_IG02,ins#0,ofs#0), (G_M39015_IG04,ins#4,ofs#16)] =============== Generating BB03 [01A..045) -> BB05 (cond), preds={BB05} succs={BB04,BB05} flags=0x00000008.21116020: i Loop Loop0 label idxlen bwd bwd-target LIR BB03 IN (1)={V00 } + ByrefExposed + GcHeap OUT(2)={V00 V01} + ByrefExposed + GcHeap Recording Var Locations at start of BB03 V00(x0) Change life 0000000000000000 {} -> 0000000000000001 {V00} V00 in reg x0 is becoming live [------] Live regs: 0000 {} => 0001 {x0} New debug range: new var or location Live regs: (unchanged) 0001 {x0} GC regs: (unchanged) 0000 {} Byref regs: (unchanged) 0001 {x0} L_M39015_BB03: Label: G_M39015_IG06, GCvars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0001 {x0} Scope info: begin block BB03, IL range [01A..045) Added IP mapping: 0x001A STACK_EMPTY (G_M39015_IG06,ins#0,ofs#0) label Generating: N047 (???,???) [000146] ----------- IL_OFFSET void INLRT @ 0x01A[E-] REG NA Generating: N049 ( 1, 1) [000014] ----------- t14 = LCL_VAR byref V00 this u:1 x0 REG x0 $80 /--* t14 byref Generating: N051 ( 3, 2) [000015] n---GO----- t15 = * IND ref REG x1 Mapped BB03 to G_M39015_IG06 IN0011: ldr x1, [x0] GC regs: 0000 {} => 0002 {x1} /--* t15 ref Generating: N053 ( 5, 5) [000088] -c--------- t88 = * LEA(b+16) byref REG NA /--* t88 byref Generating: N055 ( 6, 4) [000016] ---XGO----- t16 = * IND ref REG x1 GC regs: 0002 {x1} => 0000 {} IN0012: ldr x1, [x1, #0x10] GC regs: 0000 {} => 0002 {x1} /--* t16 ref Generating: N057 ( 6, 4) [000023] DA-XGO----- * STORE_LCL_VAR ref V04 tmp1 d:1 x1 REG x1 GC regs: 0002 {x1} => 0000 {} V04 in reg x1 is becoming live [000023] Live regs: 0001 {x0} => 0003 {x0 x1} Live vars after [000023]: {V00} => {V00 V04} GC regs: 0000 {} => 0002 {x1} genIPmappingAdd: ignoring duplicate IL offset 0x1a Generating: N059 (???,???) [000147] ----------- IL_OFFSET void INLRT @ 0x01A[E-] REG NA Generating: N061 ( 1, 1) [000018] ----------- t18 = LCL_VAR byref V00 this u:1 x0 REG x0 $80 /--* t18 byref Generating: N063 ( 3, 4) [000090] -c--------- t90 = * LEA(b+12) byref REG NA /--* t90 byref Generating: N065 ( 4, 3) [000019] n---GO----- t19 = * IND int REG x2 IN0013: ldr w2, [x0, #0x0C] /--* t19 int Generating: N067 ( 4, 3) [000021] DA--GO----- * STORE_LCL_VAR int V02 loc1 d:1 x2 REG x2 V02 in reg x2 is becoming live [000021] Live regs: 0003 {x0 x1} => 0007 {x0 x1 x2} New debug range: first Live vars after [000021]: {V00 V04} => {V00 V02 V04} Generating: N069 ( 1, 1) [000025] ----------- t25 = LCL_VAR int V02 loc1 u:1 x2 REG x2 Generating: N071 ( 1, 2) [000026] -c--------- t26 = CNS_INT int 1 REG NA $44 /--* t25 int +--* t26 int Generating: N073 ( 3, 4) [000027] ----------- t27 = * ADD int REG x3 IN0014: add w3, w2, #1 Generating: N075 ( 1, 1) [000017] ----------- t17 = LCL_VAR byref V00 this u:1 x0 REG x0 $80 /--* t17 byref Generating: N077 ( 3, 4) [000092] -c--------- t92 = * LEA(b+12) byref REG NA /--* t92 byref +--* t27 int Generating: N079 (???,???) [000148] -A--GO----- * STOREIND int REG NA IN0015: str w3, [x0, #0x0C] Generating: N081 ( 1, 1) [000030] ----------- t30 = LCL_VAR int V02 loc1 u:1 x2 REG x2 Generating: N083 ( 1, 1) [000024] ----------- t24 = LCL_VAR ref V04 tmp1 u:1 x1 REG x1 /--* t24 ref Generating: N085 (???,???) [000158] -c--------- t158 = * LEA(b+8) byref REG NA /--* t158 byref Generating: N087 ( 3, 3) [000095] ---X------- t95 = * IND int REG x3 IN0016: ldr w3, [x1, #0x08] /--* t30 int +--* t95 int Generating: N089 ( 8, 11) [000096] ---X-O----- * BOUNDS_CHECK_Rng -> BB07 void REG NA IN0017: cmp w2, w3 IN0018: bhs (LARGEJMP)L_M39015_BB07 Generating: N091 ( 1, 1) [000093] ----------- t93 = LCL_VAR ref V04 tmp1 u:1 x1 (last use) REG x1 Generating: N093 ( 1, 1) [000094] ----------- t94 = LCL_VAR int V02 loc1 u:1 x2 (last use) REG x2 /--* t94 int Generating: N095 ( 2, 3) [000097] -c-------U- t97 = * CAST long <- uint REG NA Generating: N097 ( 1, 2) [000098] -c-----N--- t98 = CNS_INT long 4 REG NA $105 /--* t97 long +--* t98 long Generating: N099 ( 4, 6) [000099] ----------- t99 = * BFIZ long REG x2 V02 in reg x2 is becoming dead [000094] Live regs: 0007 {x0 x1 x2} => 0003 {x0 x1} Closing debug range. Live vars after [000094]: {V00 V02 V04} => {V00 V04} IN0019: ubfiz x2, x2, #4, #32 Generating: N101 ( 1, 2) [000100] -c--------- t100 = CNS_INT long 16 REG NA $104 /--* t99 long +--* t100 long Generating: N103 ( 6, 9) [000101] ----------- t101 = * ADD long REG x2 IN001a: add x2, x2, #16 /--* t93 ref +--* t101 long Generating: N105 ( 7, 10) [000102] -------N--- t102 = * ADD byref REG x1 V04 in reg x1 is becoming dead [000093] Live regs: 0003 {x0 x1} => 0001 {x0} Live vars after [000093]: {V00 V04} => {V00} GC regs: 0002 {x1} => 0000 {} IN001b: add x1, x1, x2 Byref regs: 0001 {x0} => 0003 {x0 x1} /--* t102 byref Generating: N107 ( 15, 21) [000033] DA-XGO----- * STORE_LCL_VAR byref V01 loc0 d:1 x1 REG x1 Byref regs: 0003 {x0 x1} => 0001 {x0} V01 in reg x1 is becoming live [000033] Live regs: 0001 {x0} => 0003 {x0 x1} New debug range: first Live vars after [000033]: {V00} => {V00 V01} Byref regs: 0001 {x0} => 0003 {x0 x1} Added IP mapping: 0x003C STACK_EMPTY (G_M39015_IG06,ins#11,ofs#48) Generating: N109 (???,???) [000149] ----------- IL_OFFSET void INLRT @ 0x03C[E-] REG NA Generating: N111 ( 1, 1) [000034] ----------- t34 = LCL_VAR byref V01 loc0 u:1 x1 REG x1 $400 /--* t34 byref Generating: N113 ( 3, 4) [000106] -c--------- t106 = * LEA(b+4) byref REG NA /--* t106 byref Generating: N115 ( 4, 3) [000035] ---XG------ t35 = * IND int REG x2 IN001c: ldr w2, [x1, #0x04] Generating: N117 ( 1, 2) [000036] -c--------- t36 = CNS_INT int -1 REG NA $41 /--* t35 int +--* t36 int Generating: N119 ( 6, 6) [000037] J--XG--N--- * LT void REG NA IN001d: cmn w2, #1 Generating: N121 ( 8, 8) [000038] ---XG------ * JTRUE void REG NA $268 IN001e: blt (LARGEJMP)L_M39015_BB05 Variable Live Range History Dump for BB03 V00 this: x0 [(G_M39015_IG06,ins#0,ofs#0), ...] V01 loc0: x1 [(G_M39015_IG06,ins#11,ofs#48), ...] V02 loc1: x2 [(G_M39015_IG06,ins#3,ofs#12), (G_M39015_IG06,ins#8,ofs#36)] =============== Generating BB04 [045..05E) (return), preds={BB03} succs={} flags=0x00000000.20000020: i LIR BB04 IN (2)={V00 V01} + ByrefExposed + GcHeap OUT(0)={ } Recording Var Locations at start of BB04 V00(x0) V01(x1) Liveness not changing: 0000000000000009 {V00 V01} Live regs: 0000 {} => 0003 {x0 x1} GC regs: (unchanged) 0000 {} Byref regs: 0000 {} => 0003 {x0 x1} L_M39015_BB04: Adding label due to BB weight difference: BBJ_COND BB03 with weight 200 different from BB04 with weight 50 Saved: G_M39015_IG06: ; func=00, offs=000148H, size=0040H, bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, BB03 [0002], gcvars, byref Created: G_M39015_IG07: ; func=00, offs=000188H, size=0000H, bbWeight=0.50, gcrefRegs=0000 {} Label: G_M39015_IG07, GCvars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0003 {x0 x1} Scope info: begin block BB04, IL range [045..05E) Generating: N125 ( 1, 1) [000040] ----------- t40 = LCL_VAR byref V01 loc0 u:1 x1 REG x1 $400 /--* t40 byref Generating: N127 ( 3, 4) [000108] -c--------- t108 = * LEA(b+8) byref REG NA /--* t108 byref Generating: N129 ( 4, 3) [000041] n---GO----- t41 = * IND int REG x2 Mapped BB04 to G_M39015_IG07 IN001f: ldr w2, [x1, #0x08] /--* t41 int Generating: N131 ( 8, 6) [000079] DA--GO----- * STORE_LCL_VAR int V06 tmp3 d:1 x2 REG x2 V06 in reg x2 is becoming live [000079] Live regs: 0003 {x0 x1} => 0007 {x0 x1 x2} Live vars after [000079]: {V00 V01} => {V00 V01 V06} Generating: N133 ( 1, 1) [000042] ----------- t42 = LCL_VAR byref V01 loc0 u:1 x1 (last use) REG x1 $400 /--* t42 byref Generating: N135 ( 3, 4) [000110] -c--------- t110 = * LEA(b+12) byref REG NA /--* t110 byref Generating: N137 ( 4, 3) [000043] n---GO----- t43 = * IND int REG x1 V01 in reg x1 is becoming dead [000042] Live regs: 0007 {x0 x1 x2} => 0005 {x0 x2} Closing debug range. Live vars after [000042]: {V00 V01 V06} => {V00 V06} Byref regs: 0003 {x0 x1} => 0001 {x0} Removing saved instruction in G_M39015_IG07: > IN001f: ldr w2, [x1, #0x08] IN001f: ldp w2, w1, [x1, #0x08] /--* t43 int Generating: N139 ( 8, 6) [000081] DA--GO----- * STORE_LCL_VAR int V07 tmp4 d:1 x1 REG x1 V07 in reg x1 is becoming live [000081] Live regs: 0005 {x0 x2} => 0007 {x0 x1 x2} Live vars after [000081]: {V00 V06} => {V00 V06 V07} Generating: N141 (???,???) [000150] ----------- IL_OFFSET void INL01 @ 0x000[E-] <- INLRT @ ??? REG NA Generating: N143 ( 3, 2) [000071] ----------- t71 = LCL_VAR int V06 tmp3 u:1 x2 (last use) REG x2 /--* t71 int Generating: N145 ( 7, 5) [000073] DA--------- * STORE_LCL_VAR int V08 tmp5 d:1 x2 REG x2 V06 in reg x2 is becoming dead [000071] Live regs: 0007 {x0 x1 x2} => 0003 {x0 x1} Live vars after [000071]: {V00 V06 V07} => {V00 V07} V08 in reg x2 is becoming live [000073] Live regs: 0003 {x0 x1} => 0007 {x0 x1 x2} Live vars after [000073]: {V00 V07} => {V00 V07 V08} Generating: N147 (???,???) [000151] ----------- IL_OFFSET void INL01 @ 0x007[E-] <- INLRT @ ??? REG NA Generating: N149 ( 3, 2) [000075] ----------- t75 = LCL_VAR int V07 tmp4 u:1 x1 (last use) REG x1 /--* t75 int Generating: N151 ( 7, 5) [000077] DA--------- * STORE_LCL_VAR int V09 tmp6 d:1 x1 REG x1 V07 in reg x1 is becoming dead [000075] Live regs: 0007 {x0 x1 x2} => 0005 {x0 x2} Live vars after [000075]: {V00 V07 V08} => {V00 V08} V09 in reg x1 is becoming live [000077] Live regs: 0005 {x0 x2} => 0007 {x0 x1 x2} Live vars after [000077]: {V00 V08} => {V00 V08 V09} Added IP mapping: 0x0057 (G_M39015_IG07,ins#1,ofs#4) label Generating: N153 (???,???) [000152] ----------- IL_OFFSET void INLRT @ 0x057[--] REG NA Generating: N155 ( 1, 1) [000039] ----------- t39 = LCL_VAR byref V00 this u:1 x0 (last use) REG x0 $80 Generating: N157 ( 1, 2) [000111] -c--------- t111 = CNS_INT long 20 REG NA $10b /--* t39 byref +--* t111 long Generating: N159 ( 3, 4) [000112] ----------- t112 = * ADD byref REG x0 $152 V00 in reg x0 is becoming dead [000039] Live regs: 0007 {x0 x1 x2} => 0006 {x1 x2} Closing debug range. Live vars after [000039]: {V00 V08 V09} => {V08 V09} Byref regs: 0001 {x0} => 0000 {} IN0020: add x0, x0, #20 Byref regs: 0000 {} => 0001 {x0} /--* t112 byref Generating: N161 ( 3, 4) [000114] DA--------- * STORE_LCL_VAR byref V10 tmp7 d:1 x0 REG x0 Byref regs: 0001 {x0} => 0000 {} V10 in reg x0 is becoming live [000114] Live regs: 0006 {x1 x2} => 0007 {x0 x1 x2} Live vars after [000114]: {V08 V09} => {V08 V09 V10} Byref regs: 0000 {} => 0001 {x0} Generating: N163 ( 1, 1) [000115] ----------- t115 = LCL_VAR byref V10 tmp7 u:1 x0 REG x0 $152 Generating: N165 ( 3, 2) [000117] ----------- t117 = LCL_VAR int V08 tmp5 u:1 x2 (last use) REG x2 /--* t115 byref +--* t117 int Generating: N167 (???,???) [000153] -A---O----- * STOREIND int REG NA V08 in reg x2 is becoming dead [000117] Live regs: 0007 {x0 x1 x2} => 0003 {x0 x1} Live vars after [000117]: {V08 V09 V10} => {V09 V10} IN0021: str w2, [x0] Generating: N169 ( 1, 1) [000120] ----------- t120 = LCL_VAR byref V10 tmp7 u:1 x0 (last use) REG x0 $152 /--* t120 byref Generating: N171 ( 3, 4) [000122] -c--------- t122 = * LEA(b+4) byref REG NA Generating: N173 ( 3, 2) [000124] ----------- t124 = LCL_VAR int V09 tmp6 u:1 x1 (last use) REG x1 /--* t122 byref +--* t124 int Generating: N175 (???,???) [000154] -A---O----- * STOREIND int REG NA V10 in reg x0 is becoming dead [000120] Live regs: 0003 {x0 x1} => 0002 {x1} Live vars after [000120]: {V09 V10} => {V09} Byref regs: 0001 {x0} => 0000 {} V09 in reg x1 is becoming dead [000124] Live regs: 0002 {x1} => 0000 {} Live vars after [000124]: {V09} => {} IN0022: str w1, [x0, #0x04] Added IP mapping: 0x005C STACK_EMPTY (G_M39015_IG07,ins#4,ofs#16) Generating: N177 (???,???) [000155] ----------- IL_OFFSET void INLRT @ 0x05C[E-] REG NA Generating: N179 ( 1, 2) [000127] ----------- t127 = CNS_INT int 1 REG x0 $44 IN0023: mov w0, #1 /--* t127 int Generating: N181 ( 2, 3) [000053] ----------- * RETURN int REG NA $VN.Void Added IP mapping: EPILOG (G_M39015_IG07,ins#5,ofs#20) label Reserving epilog IG for block BB04 Saved: G_M39015_IG07: ; func=00, offs=000188H, size=0014H, bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0003 {x0 x1}, BB04 [0003], byref Created: G_M39015_IG08: ; func=00, offs=00019CH, size=0000H, bbWeight=0.50, gcrefRegs=0000 {} Created: G_M39015_IG09: ; func=00, offs=00029CH, size=0000H, bbWeight=0.50, gcrefRegs=0000 {}, epilog *************** After placeholder IG creation G_M39015_IG01: ; func=00, offs=000000H, size=0000H, bbWeight=1, gcrefRegs=0000 {} <-- Prolog IG G_M39015_IG02: ; offs=000000H, size=0018H, bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, BB01 [0000], byref G_M39015_IG03: ; offs=000018H, size=0018H, bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, BB05 [0004], byref G_M39015_IG04: ; offs=000030H, size=0018H, bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, BB06 [0005], byref G_M39015_IG05: ; epilog placeholder, next placeholder=IG08 , BB06 [0005], epilog, extend <-- First placeholder ; PrevGCVars=0000000000000000 {}, PrevGCrefRegs=0000 {}, PrevByrefRegs=0001 {x0} ; InitGCVars=0000000000000000 {}, InitGCrefRegs=0000 {}, InitByrefRegs=0001 {x0} G_M39015_IG06: ; offs=000148H, size=0040H, bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, BB03 [0002], gcvars, byref G_M39015_IG07: ; offs=000188H, size=0014H, bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0003 {x0 x1}, BB04 [0003], byref G_M39015_IG08: ; epilog placeholder, next placeholder=, BB04 [0003], epilog, extend <-- Last placeholder ; PrevGCVars=0000000000000000 {}, PrevGCrefRegs=0000 {}, PrevByrefRegs=0001 {x0} ; InitGCVars=0000000000000000 {}, InitGCrefRegs=0000 {}, InitByrefRegs=0003 {x0 x1} G_M39015_IG09: ; offs=00029CH, size=0000H, bbWeight=0.50, gcrefRegs=0000 {} <-- Current IG Variable Live Range History Dump for BB04 V00 this: x0 [(G_M39015_IG06,ins#0,ofs#0), (G_M39015_IG07,ins#1,ofs#4)] V01 loc0: x1 [(G_M39015_IG06,ins#11,ofs#48), (G_M39015_IG07,ins#1,ofs#4)] =============== Generating BB02 [013..01A) (throw), preds={BB01} succs={} flags=0x00000002.20091020: i rare label hascall gcsafe LIR BB02 IN (0)={} + ByrefExposed + GcHeap OUT(0)={} Recording Var Locations at start of BB02 Liveness not changing: 0000000000000000 {} Live regs: (unchanged) 0000 {} GC regs: (unchanged) 0000 {} Byref regs: (unchanged) 0000 {} L_M39015_BB02: Label: G_M39015_IG09, GCvars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {} Scope info: begin block BB02, IL range [013..01A) Added IP mapping: 0x0013 STACK_EMPTY (G_M39015_IG09,ins#0,ofs#0) label Generating: N223 (???,???) [000156] ----------- IL_OFFSET void INLRT @ 0x013[E-] REG NA Generating: N225 ( 3, 12) [000160] H---------- t160 = CNS_INT(h) long 0xffff707cb078 ftn REG x0 Mapped BB02 to G_M39015_IG09 IN0024: movz x0, #0xB078 // code for System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion() IN0025: movk x0, #0x707C LSL #16 IN0026: movk x0, #0xFFFF LSL #32 /--* t160 long Generating: N227 ( 6, 14) [000161] ----------- t161 = * IND long REG x0 IN0027: ldr x0, [x0] /--* t161 long control expr Generating: N229 ( 14, 2) [000069] --CXG------ * CALL void System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion() REG NA $VN.Void Call: GCvars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {} IN0028: blr x0 IN0029: brk_unix #0 Variable Live Range History Dump for BB02 ..None.. =============== Generating BB07 [???..???) (throw), preds={} succs={} flags=0x00000000.20011070: keep i internal rare label LIR BB07 IN (0)={} OUT(0)={} Recording Var Locations at start of BB07 Liveness not changing: 0000000000000000 {} Live regs: (unchanged) 0000 {} GC regs: (unchanged) 0000 {} Byref regs: (unchanged) 0000 {} L_M39015_BB07: Saved: G_M39015_IG09: ; func=00, offs=00029CH, size=0018H, bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, BB02 [0001], gcvars, byref Created: G_M39015_IG10: ; func=00, offs=0002B4H, size=0000H, bbWeight=0, gcrefRegs=0000 {} Label: G_M39015_IG10, GCvars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {} Scope info: begin block BB07, IL range [???..???) Scope info: ignoring block beginning Added IP mapping: NO_MAP (G_M39015_IG10,ins#0,ofs#0) label Generating: N233 ( 14, 2) [000159] --CXG------ CALL help void CORINFO_HELP_RNGCHKFAIL REG NA Call: GCvars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {} Mapped BB07 to G_M39015_IG10 IN002a: bl CORINFO_HELP_RNGCHKFAIL Scope info: ignoring block end IN002b: brk_unix #0 Variable Live Range History Dump for BB07 ..None.. Liveness not changing: 0000000000000000 {} # compCycleEstimate = 157, compSizeEstimate = 131 System.Collections.Generic.Dictionary`2+Enumerator[int,int]:MoveNext():bool:this ; Final local variable assignments ; ; V00 this [V00,T00] ( 13, 28 ) byref -> x0 this single-def ; V01 loc0 [V01,T03] ( 4, 5 ) byref -> x1 ; V02 loc1 [V02,T02] ( 4, 8 ) int -> x2 ;# V03 OutArgs [V03 ] ( 1, 1 ) lclBlk ( 0) [sp+00H] "OutgoingArgSpace" ; V04 tmp1 [V04,T01] ( 3, 12 ) ref -> x1 class-hnd "impAppendStmt" ;* V05 tmp2 [V05 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" ; V06 tmp3 [V06,T05] ( 2, 2 ) int -> x2 "Inlining Arg" ; V07 tmp4 [V07,T06] ( 2, 2 ) int -> x1 "Inlining Arg" ; V08 tmp5 [V08,T07] ( 2, 1 ) int -> x2 V05.key(offs=0x00) P-INDEP "field V05.key (fldOffset=0x0)" ; V09 tmp6 [V09,T08] ( 2, 1 ) int -> x1 V05.value(offs=0x04) P-INDEP "field V05.value (fldOffset=0x4)" ; V10 tmp7 [V10,T04] ( 3, 3 ) byref -> x0 single-def "BlockOp address local" ; ; Lcl frame size = 0 *************** Before prolog / epilog generation G_M39015_IG01: ; func=00, offs=000000H, size=0000H, bbWeight=1, gcrefRegs=0000 {} <-- Prolog IG G_M39015_IG02: ; offs=000000H, size=0018H, bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, BB01 [0000], byref G_M39015_IG03: ; offs=000018H, size=0018H, bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, BB05 [0004], byref G_M39015_IG04: ; offs=000030H, size=0018H, bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, BB06 [0005], byref G_M39015_IG05: ; epilog placeholder, next placeholder=IG08 , BB06 [0005], epilog, extend <-- First placeholder ; PrevGCVars=0000000000000000 {}, PrevGCrefRegs=0000 {}, PrevByrefRegs=0001 {x0} ; InitGCVars=0000000000000000 {}, InitGCrefRegs=0000 {}, InitByrefRegs=0001 {x0} G_M39015_IG06: ; offs=000148H, size=0040H, bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, BB03 [0002], gcvars, byref G_M39015_IG07: ; offs=000188H, size=0014H, bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0003 {x0 x1}, BB04 [0003], byref G_M39015_IG08: ; epilog placeholder, next placeholder=, BB04 [0003], epilog, extend <-- Last placeholder ; PrevGCVars=0000000000000000 {}, PrevGCrefRegs=0000 {}, PrevByrefRegs=0001 {x0} ; InitGCVars=0000000000000000 {}, InitGCrefRegs=0000 {}, InitByrefRegs=0003 {x0 x1} G_M39015_IG09: ; offs=00029CH, size=0018H, bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, BB02 [0001], gcvars, byref G_M39015_IG10: ; offs=0002B4H, size=0000H, bbWeight=0, gcrefRegs=0000 {}, BB07 [0007] <-- Current IG Recording Var Locations at start of BB01 V00(x0) Saved: G_M39015_IG10: ; func=00, offs=0002B4H, size=0008H, bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, BB07 [0007], byref *************** In genFnProlog() Added IP mapping to front: PROLOG (G_M39015_IG01,ins#0,ofs#0) label __prolog: New debug range: first Save float regs: [] Save int regs: [fp lr] Frame type 1. #outsz=0; #framesz=16; LclFrameSize=0 IN002c: stp fp, lr, [sp, #-0x10]! offset=16, calleeSaveSpDelta=0 offsetSpToSavedFp=0 IN002d: mov fp, sp *************** In genFnPrologCalleeRegArgs() for int regs *************** In genEnregisterIncomingStackArgs() Closing debug range. Saved: G_M39015_IG01: ; func=00, offs=000000H, size=0008H, bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc *************** In genFnEpilog() __epilog: gcVarPtrSetCur=0000000000000000 {}, gcRegGCrefSetCur=0000 {}, gcRegByrefSetCur=0001 {x0} Frame type 1. #outsz=0; #framesz=16; localloc? false calleeSaveSpOffset=16, calleeSaveSpDelta=0 IN002e: ldp fp, lr, [sp], #0x10 IN002f: ret lr Saved: G_M39015_IG05: ; func=00, offs=000048H, size=0008H, bbWeight=0.50, epilog, nogc, extend *************** In genFnEpilog() __epilog: gcVarPtrSetCur=0000000000000000 {}, gcRegGCrefSetCur=0000 {}, gcRegByrefSetCur=0003 {x0 x1} Frame type 1. #outsz=0; #framesz=16; localloc? false calleeSaveSpOffset=16, calleeSaveSpDelta=0 IN0030: ldp fp, lr, [sp], #0x10 IN0031: ret lr Saved: G_M39015_IG08: ; func=00, offs=00019CH, size=0008H, bbWeight=0.50, epilog, nogc, extend 0 prologs, 2 epilogs, 0 funclet prologs, 0 funclet epilogs *************** After prolog / epilog generation G_M39015_IG01: ; func=00, offs=000000H, size=0008H, bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG G_M39015_IG02: ; offs=000008H, size=0018H, bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, BB01 [0000], byref G_M39015_IG03: ; offs=000020H, size=0018H, bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, BB05 [0004], byref G_M39015_IG04: ; offs=000038H, size=0018H, bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, BB06 [0005], byref G_M39015_IG05: ; offs=000050H, size=0008H, bbWeight=0.50, epilog, nogc, extend G_M39015_IG06: ; offs=000058H, size=0040H, bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, BB03 [0002], gcvars, byref G_M39015_IG07: ; offs=000098H, size=0014H, bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0003 {x0 x1}, BB04 [0003], byref G_M39015_IG08: ; offs=0000ACH, size=0008H, bbWeight=0.50, epilog, nogc, extend G_M39015_IG09: ; offs=0000B4H, size=0018H, bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, BB02 [0001], gcvars, byref G_M39015_IG10: ; offs=0000CCH, size=0008H, bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, BB07 [0007], byref *************** In emitJumpDistBind() Emitter Jump List: IG02 IN0005 bne[8] -> IG09 IG03 IN000a blo[8] -> IG06 IG06 IN0018 bhs[8] -> IG10 IG06 IN001e blt[8] -> IG03 total jump count: 4 Binding: IN0005: bne (LARGEJMP)L_M39015_BB02 Binding L_M39015_BB02 to G_M39015_IG09 Estimate of fwd jump [C40289A4/005]: 0018 -> 00B4 = 009C Shrinking jump [C40289A4/005] Adjusted offset of BB03 from 0020 to 001C Binding: IN000a: blo (LARGEJMP)L_M39015_BB03 Binding L_M39015_BB03 to G_M39015_IG06 Estimate of fwd jump [C4028D2C/010]: 002C -> 0054 = 0028 Shrinking jump [C4028D2C/010] Adjusted offset of BB04 from 0038 to 0030 Adjusted offset of BB05 from 0050 to 0048 Adjusted offset of BB06 from 0058 to 0050 Binding: IN0018: bhs (LARGEJMP)L_M39015_BB07 Binding L_M39015_BB07 to G_M39015_IG10 Estimate of fwd jump [C4029B1C/024]: 006C -> 00C4 = 0058 Shrinking jump [C4029B1C/024] Binding: IN001e: blt (LARGEJMP)L_M39015_BB05 Binding L_M39015_BB05 to G_M39015_IG03 Estimate of bwd jump [C4029BAC/030]: 0084 -> 001C = 0068 Shrinking jump [C4029BAC/030] Adjusted offset of BB07 from 0098 to 0088 Adjusted offset of BB08 from 00AC to 009C Adjusted offset of BB09 from 00B4 to 00A4 Adjusted offset of BB10 from 00CC to 00BC Total shrinkage = 16, min extra jump size = 4294967295 *************** Finishing PHASE Generate code *************** Starting PHASE Emit code Hot code size = 0xC4 bytes Cold code size = 0x0 bytes reserveUnwindInfo(isFunclet=false, isColdCode=false, unwindSize=0x10) *************** In emitEndCodeGen() Converting emitMaxStackDepth from bytes (0) to elements (0) *************************************************************************** Instructions as they come out of the scheduler G_M39015_IG01: ; func=00, offs=000000H, size=0008H, bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG IN002c: 000000 A9BF7BFD stp fp, lr, [sp, #-0x10]! IN002d: 000004 910003FD mov fp, sp ;; size=8 bbWeight=1 PerfScore 1.50 G_M39015_IG02: ; func=00, offs=000008H, size=0014H, bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, BB01 [0000], byref, isz ; byrRegs +[x0] IN0001: 000008 B9400801 ldr w1, [x0, #0x08] IN0002: 00000C F9400002 ldr x2, [x0] ; gcrRegs +[x2] IN0003: 000010 B9404442 ldr w2, [x2, #0x44] ; gcrRegs -[x2] IN0004: 000014 6B02003F cmp w1, w2 IN0005: 000018 54000461 bne G_M39015_IG09 ;; size=20 bbWeight=1 PerfScore 10.50 G_M39015_IG03: ; func=00, offs=00001CH, size=0014H, bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, BB05 [0004], byref, isz IN0006: 00001C B9400C01 ldr w1, [x0, #0x0C] IN0007: 000020 F9400002 ldr x2, [x0] ; gcrRegs +[x2] IN0008: 000024 B9403842 ldr w2, [x2, #0x38] ; gcrRegs -[x2] IN0009: 000028 6B02003F cmp w1, w2 IN000a: 00002C 54000123 blo G_M39015_IG06 ;; size=20 bbWeight=8 PerfScore 84.00 G_M39015_IG04: ; func=00, offs=000030H, size=0018H, bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, BB06 [0005], byref IN000b: 000030 F9400001 ldr x1, [x0] ; gcrRegs +[x1] IN000c: 000034 B9403821 ldr w1, [x1, #0x38] ; gcrRegs -[x1] IN000d: 000038 11000421 add w1, w1, #1 IN000e: 00003C B9000C01 str w1, [x0, #0x0C] IN000f: 000040 F801401F str xzr, [x0, #0x14] IN0010: 000044 2A1F03E0 mov w0, wzr ; byrRegs -[x0] ;; size=24 bbWeight=0.50 PerfScore 4.50 G_M39015_IG05: ; func=00, offs=000048H, size=0008H, bbWeight=0.50, epilog, nogc, extend IN002e: 000048 A8C17BFD ldp fp, lr, [sp], #0x10 IN002f: 00004C D65F03C0 ret lr ;; size=8 bbWeight=0.50 PerfScore 1.00 G_M39015_IG06: ; func=00, offs=000050H, size=0038H, bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, BB03 [0002], gcvars, byref, isz ; byrRegs +[x0] IN0011: 000050 F9400001 ldr x1, [x0] ; gcrRegs +[x1] IN0012: 000054 F9400821 ldr x1, [x1, #0x10] IN0013: 000058 B9400C02 ldr w2, [x0, #0x0C] IN0014: 00005C 11000443 add w3, w2, #1 IN0015: 000060 B9000C03 str w3, [x0, #0x0C] IN0016: 000064 B9400823 ldr w3, [x1, #0x08] IN0017: 000068 6B03005F cmp w2, w3 IN0018: 00006C 54000282 bhs G_M39015_IG10 IN0019: 000070 D37C7C42 ubfiz x2, x2, #4, #32 IN001a: 000074 91004042 add x2, x2, #16 IN001b: 000078 8B020021 add x1, x1, x2 ; gcrRegs -[x1] ; byrRegs +[x1] IN001c: 00007C B9400422 ldr w2, [x1, #0x04] IN001d: 000080 3100045F cmn w2, #1 IN001e: 000084 54FFFCCB blt G_M39015_IG03 ;; size=56 bbWeight=2 PerfScore 43.00 G_M39015_IG07: ; func=00, offs=000088H, size=0014H, bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0003 {x0 x1}, BB04 [0003], byref IN001f: 000088 29410422 ldp w2, w1, [x1, #0x08] ; byrRegs -[x1] IN0020: 00008C 91005000 add x0, x0, #20 IN0021: 000090 B9000002 str w2, [x0] IN0022: 000094 B9000401 str w1, [x0, #0x04] IN0023: 000098 52800020 mov w0, #1 ; byrRegs -[x0] ;; size=20 bbWeight=0.50 PerfScore 3.00 G_M39015_IG08: ; func=00, offs=00009CH, size=0008H, bbWeight=0.50, epilog, nogc, extend IN0030: 00009C A8C17BFD ldp fp, lr, [sp], #0x10 IN0031: 0000A0 D65F03C0 ret lr ;; size=8 bbWeight=0.50 PerfScore 1.00 G_M39015_IG09: ; func=00, offs=0000A4H, size=0018H, bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, BB02 [0001], gcvars, byref IN0024: 0000A4 D2960F00 movz x0, #0xB078 // code for System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion() IN0025: 0000A8 F2AE0F80 movk x0, #0x707C LSL #16 IN0026: 0000AC F2DFFFE0 movk x0, #0xFFFF LSL #32 IN0027: 0000B0 F9400000 ldr x0, [x0] IN0028: 0000B4 D63F0000 blr x0 ; gcr arg pop 0 IN0029: 0000B8 D4200000 brk_unix #0 ;; size=24 bbWeight=0 PerfScore 0.00 G_M39015_IG10: ; func=00, offs=0000BCH, size=0008H, bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, BB07 [0007], byref recordRelocation: 0xffff7169a9bc (rw: 0xff80c400d7a4) => 0xffffb07d2650, type 3 (IMAGE_REL_ARM64_BRANCH26), delta 0 IN002a: 0000BC 97C0D5CF bl CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 IN002b: 0000C0 D4200000 brk_unix #0 ;; size=8 bbWeight=0 PerfScore 0.00Allocated method code size = 196 , actual size = 196, unused size = 0 ; Total bytes of code 196, prolog size 8, PerfScore 168.10, instruction count 49, allocated bytes for code 196 (MethodHash=db9e6798) for method System.Collections.Generic.Dictionary`2+Enumerator[int,int]:MoveNext():bool:this ; ============================================================ *************** After end code gen, before unwindEmit() G_M39015_IG01: ; func=00, offs=000000H, size=0008H, bbWeight=1, PerfScore 1.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG IN002c: 000000 stp fp, lr, [sp, #-0x10]! IN002d: 000004 mov fp, sp G_M39015_IG02: ; offs=000008H, size=0014H, bbWeight=1, PerfScore 10.50, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, BB01 [0000], byref, isz IN0001: 000008 ldr w1, [x0, #0x08] IN0002: 00000C ldr x2, [x0] IN0003: 000010 ldr w2, [x2, #0x44] IN0004: 000014 cmp w1, w2 IN0005: 000018 bne G_M39015_IG09 G_M39015_IG03: ; offs=00001CH, size=0014H, bbWeight=8, PerfScore 84.00, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, BB05 [0004], byref, isz IN0006: 00001C ldr w1, [x0, #0x0C] IN0007: 000020 ldr x2, [x0] IN0008: 000024 ldr w2, [x2, #0x38] IN0009: 000028 cmp w1, w2 IN000a: 00002C blo G_M39015_IG06 G_M39015_IG04: ; offs=000030H, size=0018H, bbWeight=0.50, PerfScore 4.50, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, BB06 [0005], byref IN000b: 000030 ldr x1, [x0] IN000c: 000034 ldr w1, [x1, #0x38] IN000d: 000038 add w1, w1, #1 IN000e: 00003C str w1, [x0, #0x0C] IN000f: 000040 str xzr, [x0, #0x14] IN0010: 000044 mov w0, wzr G_M39015_IG05: ; offs=000048H, size=0008H, bbWeight=0.50, PerfScore 1.00, epilog, nogc, extend IN002e: 000048 ldp fp, lr, [sp], #0x10 IN002f: 00004C ret lr G_M39015_IG06: ; offs=000050H, size=0038H, bbWeight=2, PerfScore 43.00, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, BB03 [0002], gcvars, byref, isz IN0011: 000050 ldr x1, [x0] IN0012: 000054 ldr x1, [x1, #0x10] IN0013: 000058 ldr w2, [x0, #0x0C] IN0014: 00005C add w3, w2, #1 IN0015: 000060 str w3, [x0, #0x0C] IN0016: 000064 ldr w3, [x1, #0x08] IN0017: 000068 cmp w2, w3 IN0018: 00006C bhs G_M39015_IG10 IN0019: 000070 ubfiz x2, x2, #4, #32 IN001a: 000074 add x2, x2, #16 IN001b: 000078 add x1, x1, x2 IN001c: 00007C ldr w2, [x1, #0x04] IN001d: 000080 cmn w2, #1 IN001e: 000084 blt G_M39015_IG03 G_M39015_IG07: ; offs=000088H, size=0014H, bbWeight=0.50, PerfScore 3.00, gcrefRegs=0000 {}, byrefRegs=0003 {x0 x1}, BB04 [0003], byref IN001f: 000088 ldp w2, w1, [x1, #0x08] IN0020: 00008C add x0, x0, #20 IN0021: 000090 str w2, [x0] IN0022: 000094 str w1, [x0, #0x04] IN0023: 000098 mov w0, #1 G_M39015_IG08: ; offs=00009CH, size=0008H, bbWeight=0.50, PerfScore 1.00, epilog, nogc, extend IN0030: 00009C ldp fp, lr, [sp], #0x10 IN0031: 0000A0 ret lr G_M39015_IG09: ; offs=0000A4H, size=0018H, bbWeight=0, PerfScore 0.00, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, BB02 [0001], gcvars, byref IN0024: 0000A4 movz x0, #0xB078 // code for System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion() IN0025: 0000A8 movk x0, #0x707C LSL #16 IN0026: 0000AC movk x0, #0xFFFF LSL #32 IN0027: 0000B0 ldr x0, [x0] IN0028: 0000B4 blr x0 IN0029: 0000B8 brk_unix #0 G_M39015_IG10: ; offs=0000BCH, size=0008H, bbWeight=0, PerfScore 0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, BB07 [0007], byref IN002a: 0000BC bl CORINFO_HELP_RNGCHKFAIL IN002b: 0000C0 brk_unix #0 *************** Finishing PHASE Emit code *************** Starting PHASE Emit GC+EH tables Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0x0000c4 (not in unwind data) Code Words : 1 Epilog Count : 2 E bit : 0 X bit : 0 Vers : 0 Function Length : 49 (0x00031) Actual length = 196 (0x0000c4) ---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 18 (0x00012) Actual offset = 72 (0x000048) Offset from main function begin = 72 (0x000048) Epilog Start Index : 1 (0x01) ---- Scope 1 Epilog Start Offset : 39 (0x00027) Actual offset = 156 (0x00009c) Offset from main function begin = 156 (0x00009c) Epilog Start Index : 1 (0x01) ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ---- 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]! E4 end E4 end allocUnwindInfo(pHotCode=0x0xffff7169a900, pColdCode=0x(nil), startOffset=0x0, endOffset=0xc4, unwindSize=0x10, pUnwindBlock=0x0xff80c40a2e4e, funKind=0 (main function)) *************** In genIPmappingGen() IP mapping count : 14 IL offs PROLOG : 0x00000000 ( STACK_EMPTY ) IL offs 0x0000 : 0x00000008 ( STACK_EMPTY ) IL offs 0x005E : 0x0000001C ( STACK_EMPTY ) IL offs 0x0071 : 0x00000030 ( STACK_EMPTY ) IL offs 0x0084 : 0x00000040 ( STACK_EMPTY ) IL offs 0x0090 : 0x00000044 ( STACK_EMPTY ) IL offs EPILOG : 0x00000048 ( STACK_EMPTY ) IL offs 0x001A : 0x00000050 ( STACK_EMPTY ) IL offs 0x003C : 0x0000007C ( STACK_EMPTY ) IL offs 0x0057 : 0x0000008C IL offs 0x005C : 0x00000098 ( STACK_EMPTY ) IL offs EPILOG : 0x0000009C ( STACK_EMPTY ) IL offs 0x0013 : 0x000000A4 ( STACK_EMPTY ) IL offs NO_MAP : 0x000000BC ( STACK_EMPTY ) *************** In genSetScopeInfo() VarLocInfo count is 5 ; Variable debug info: 4 live ranges, 3 vars for method System.Collections.Generic.Dictionary`2+Enumerator[int,int]:MoveNext():bool:this (V00 this) : From 00000000h to 00000040h, in x0 (V00 this) : From 00000050h to 0000008Ch, in x0 (V01 loc0) : From 0000007Ch to 0000008Ch, in x1 (V02 loc1) : From 0000005Ch to 00000070h, in x2 *************** In gcInfoBlockHdrSave() Set code length to 196. Set ReturnKind to Scalar. Set stack base register to fp. Set Outgoing stack arg area size to 0. Register slot id for reg x0 (byref) = 0. Register slot id for reg x2 = 1. Register slot id for reg x1 = 2. Register slot id for reg x1 (byref) = 3. Set state of slot 0 at instr offset 0x8 to Live. Set state of slot 1 at instr offset 0x10 to Live. Set state of slot 1 at instr offset 0x14 to Dead. Set state of slot 1 at instr offset 0x24 to Live. Set state of slot 1 at instr offset 0x28 to Dead. Set state of slot 2 at instr offset 0x34 to Live. Set state of slot 2 at instr offset 0x38 to Dead. Set state of slot 0 at instr offset 0x48 to Dead. Set state of slot 0 at instr offset 0x50 to Live. Set state of slot 2 at instr offset 0x54 to Live. Set state of slot 2 at instr offset 0x7c to Dead. Set state of slot 3 at instr offset 0x7c to Live. Set state of slot 3 at instr offset 0x8c to Dead. Set state of slot 0 at instr offset 0x9c to Dead. Defining interruptible range: [0x8, 0x48). Defining interruptible range: [0x50, 0x9c). Defining interruptible range: [0xa4, 0xc4). *************** Finishing PHASE Emit GC+EH tables Method code size: 196 Allocations for System.Collections.Generic.Dictionary`2+Enumerator[int,int]:MoveNext():bool:this (MethodHash=db9e6798) count: 2074, size: 191195, max = 5888 allocateMemory: 262144, nraUsed: 196680 Alloc'd bytes by kind: kind | size | pct ---------------------+------------+-------- AssertionProp | 6772 | 3.54% ASTNode | 25232 | 13.20% InstDesc | 9808 | 5.13% ImpStack | 384 | 0.20% BasicBlock | 3016 | 1.58% CallArgs | 216 | 0.11% FlowEdge | 320 | 0.17% TreeStatementList | 288 | 0.15% SiScope | 0 | 0.00% DominatorMemory | 336 | 0.18% LSRA | 8668 | 4.53% LSRA_Interval | 2720 | 1.42% LSRA_RefPosition | 10560 | 5.52% Reachability | 200 | 0.10% SSA | 1384 | 0.72% ValueNumber | 25471 | 13.32% LvaTable | 2004 | 1.05% UnwindInfo | 136 | 0.07% hashBv | 40 | 0.02% bitset | 992 | 0.52% FixedBitVect | 80 | 0.04% Generic | 2124 | 1.11% LocalAddressVisitor | 0 | 0.00% FieldSeqStore | 208 | 0.11% MemorySsaMap | 40 | 0.02% MemoryPhiArg | 32 | 0.02% CSE | 3264 | 1.71% GC | 3160 | 1.65% CorTailCallInfo | 0 | 0.00% Inlining | 2136 | 1.12% ArrayStack | 0 | 0.00% DebugInfo | 792 | 0.41% DebugOnly | 75369 | 39.42% Codegen | 1088 | 0.57% LoopOpt | 0 | 0.00% LoopClone | 0 | 0.00% LoopHoist | 0 | 0.00% Unknown | 315 | 0.16% RangeCheck | 1152 | 0.60% CopyProp | 1840 | 0.96% SideEffects | 0 | 0.00% ObjectAllocator | 0 | 0.00% VariableLiveRanges | 832 | 0.44% ClassLayout | 128 | 0.07% TailMergeThrows | 0 | 0.00% EarlyProp | 0 | 0.00% ZeroInit | 88 | 0.05% Pgo | 0 | 0.00% ****** DONE compiling System.Collections.Generic.Dictionary`2+Enumerator[int,int]:MoveNext():bool:this