Created
July 14, 2025 21:47
-
-
Save BoyBaykiller/f486cdf2ffd0703041bc019c3ffe4c53 to your computer and use it in GitHub Desktop.
Tier0 and Tier1 jitdump of Get in https://github.com/dotnet/runtime/issues/117577
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| ****** START compiling Program.EntryPoint:GetTest(Program.EntryPoint+Vector2,int):float (MethodHash=2b4c0cab) | |
| Generating code for Windows x64 | |
| OPTIONS: Tier-0 compilation (set DOTNET_TieredCompilation=0 to disable) | |
| OPTIONS: compCodeOpt = BLENDED_CODE | |
| OPTIONS: compDbgCode = false | |
| OPTIONS: compDbgInfo = true | |
| OPTIONS: compDbgEnC = false | |
| OPTIONS: compProcedureSplitting = false | |
| OPTIONS: compProcedureSplittingEH = false | |
| IL to import: | |
| IL_0000 03 ldarg.1 | |
| IL_0001 17 ldc.i4.1 | |
| IL_0002 30 04 bgt.s 4 (IL_0008) | |
| IL_0004 03 ldarg.1 | |
| IL_0005 16 ldc.i4.0 | |
| IL_0006 2f 0b bge.s 11 (IL_0013) | |
| IL_0008 72 01 00 00 70 ldstr 0x70000001 | |
| IL_000d 03 ldarg.1 | |
| IL_000e 28 01 00 00 2b call 0x2B000001 | |
| IL_0013 0f 00 ldarga.s 0x0 | |
| IL_0015 7c f8 01 00 04 ldflda 0x40001F8 | |
| IL_001a e0 conv.u | |
| IL_001b 03 ldarg.1 | |
| IL_001c d3 conv.i | |
| IL_001d 1a ldc.i4.4 | |
| IL_001e 5a mul | |
| IL_001f 58 add | |
| IL_0020 4e ldind.r4 | |
| IL_0021 2a ret | |
| 1 return registers for return type float | |
| [00..04) reg mm0 | |
| Parameter V00 ABI info: [00..08) reg rcx (implicit by-ref) | |
| Parameter V01 ABI info: [00..04) reg rdx | |
| lvaGrabTemp returning 2 (V02 tmp0) (a long lifetime temp) called for OutgoingArgSpace. | |
| Local V02 should not be enregistered because: it is address exposed | |
| ; Initial local variable assignments | |
| ; | |
| ; V00 arg0 struct <Program.EntryPoint+Vector2, 12> <Program.EntryPoint+Vector2> | |
| ; V01 arg1 int | |
| ; V02 OutArgs struct <0> do-not-enreg[XS] addr-exposed "OutgoingArgSpace" <Empty> | |
| *************** In compInitDebuggingInfo() for Program.EntryPoint:GetTest(Program.EntryPoint+Vector2,int):float | |
| getVars() returned cVars = 0, extendOthers = true | |
| info.compVarScopesCount = 2 | |
| VarNum LVNum Name Beg End | |
| 0: 00h 00h V00 arg0 000h 022h | |
| 1: 01h 01h V01 arg1 000h 022h | |
| info.compStmtOffsetsCount = 0 | |
| info.compStmtOffsetsImplicit = 0005h ( STACK_EMPTY CALL_SITE ) | |
| *************** In fgFindBasicBlocks() for Program.EntryPoint:GetTest(Program.EntryPoint+Vector2,int):float | |
| Jump targets: | |
| IL_0008 | |
| IL_0013 | |
| New Basic Block BB01 [0000] created. | |
| BB01 [0000] [000..004) | |
| New Basic Block BB02 [0001] created. | |
| BB02 [0001] [004..008) | |
| New Basic Block BB03 [0002] created. | |
| BB03 [0002] [008..013) | |
| New Basic Block BB04 [0003] created. | |
| BB04 [0003] [013..022) | |
| setting likelihood of BB01 -> BB03 to 0.5 | |
| setting likelihood of BB01 -> BB02 to 0.5 | |
| setting likelihood of BB02 -> BB04 to 0.5 | |
| setting likelihood of BB02 -> BB03 to 0.5 | |
| setting likelihood of BB03 -> BB04 to 1 | |
| CLFLG_MINOPT set for method Program.EntryPoint:GetTest(Program.EntryPoint+Vector2,int):float | |
| IL Code Size,Instr 34, 19, Basic Block count 4, Local Variable Num,Ref count 3, 5 for method Program.EntryPoint:GetTest(Program.EntryPoint+Vector2,int):float | |
| IL Code Size,Instr 34, 19, Basic Block count 4, Local Variable Num,Ref count 3, 5 for method Program.EntryPoint:GetTest(Program.EntryPoint+Vector2,int):float | |
| OPTIONS: opts.MinOpts() == true | |
| Basic block list for 'Program.EntryPoint:GetTest(Program.EntryPoint+Vector2,int):float' | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BB01 [0000] 1 1 [000..004)-> BB03(0.5),BB02(0.5) ( cond ) | |
| BB02 [0001] 1 BB01 1 [004..008)-> BB04(0.5),BB03(0.5) ( cond ) | |
| BB03 [0002] 2 BB01,BB02 1 [008..013)-> BB04(1) (always) | |
| BB04 [0003] 2 BB02,BB03 1 [013..022) (return) | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| *************** Starting PHASE Pre-import | |
| *************** Finishing PHASE Pre-import | |
| Trees after Pre-import | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BB01 [0000] 1 1 [000..004)-> BB03(0.5),BB02(0.5) ( cond ) | |
| BB02 [0001] 1 BB01 1 [004..008)-> BB04(0.5),BB03(0.5) ( cond ) | |
| BB03 [0002] 2 BB01,BB02 1 [008..013)-> BB04(1) (always) | |
| BB04 [0003] 2 BB02,BB03 1 [013..022) (return) | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| ------------ BB01 [0000] [000..004) -> BB03(0.5),BB02(0.5) (cond), preds={} succs={BB02,BB03} | |
| ------------ BB02 [0001] [004..008) -> BB04(0.5),BB03(0.5) (cond), preds={BB01} succs={BB03,BB04} | |
| ------------ BB03 [0002] [008..013) -> BB04(1) (always), preds={BB01,BB02} succs={BB04} | |
| ------------ BB04 [0003] [013..022) (return), preds={BB02,BB03} succs={} | |
| ------------------------------------------------------------------------------------------------------------------- | |
| *************** In fgDebugCheckBBlist | |
| *************** Starting PHASE Profile incorporation | |
| not optimizing, so not incorporating any profile data | |
| *************** Finishing PHASE Profile incorporation [no changes] | |
| *************** Starting PHASE Canonicalize entry | |
| *************** Finishing PHASE Canonicalize entry [no changes] | |
| *************** Starting PHASE Importation | |
| impImportBlockPending for BB01 | |
| Importing BB01 (PC=000) of 'Program.EntryPoint:GetTest(Program.EntryPoint+Vector2,int):float' | |
| [ 0] 0 (0x000) ldarg.1 | |
| [ 1] 1 (0x001) ldc.i4.1 1 | |
| [ 2] 2 (0x002) bgt.s | |
| STMT00000 ( 0x000[E-] ... ??? ) | |
| [000003] ----------- * JTRUE void | |
| [000002] ----------- \--* GT int | |
| [000000] ----------- +--* LCL_VAR int V01 arg1 | |
| [000001] ----------- \--* CNS_INT int 1 | |
| impImportBlockPending for BB02 | |
| impImportBlockPending for BB03 | |
| Importing BB03 (PC=008) of 'Program.EntryPoint:GetTest(Program.EntryPoint+Vector2,int):float' | |
| [ 0] 8 (0x008) ldstr 70000001 | |
| [ 1] 13 (0x00d) ldarg.1 | |
| [ 2] 14 (0x00e) call 2B000001 | |
| In Compiler::impImportCall: opcode is call, kind=0, callRetType is void, structSize is 0 | |
| STMT00001 ( 0x008[E-] ... ??? ) | |
| [000006] --C-G------ * CALL void Program.EntryPoint:ThrowOutOfRangeException[int](System.String,int) | |
| [000004] ----------- arg0 +--* CNS_STR ref <string constant> | |
| [000005] ----------- arg1 \--* LCL_VAR int V01 arg1 | |
| impImportBlockPending for BB04 | |
| Importing BB04 (PC=019) of 'Program.EntryPoint:GetTest(Program.EntryPoint+Vector2,int):float' | |
| [ 0] 19 (0x013) ldarga.s 0 | |
| [ 1] 21 (0x015) ldflda 040001F8 | |
| [ 1] 26 (0x01a) conv.u | |
| [ 1] 27 (0x01b) ldarg.1 | |
| [ 2] 28 (0x01c) conv.i | |
| [ 2] 29 (0x01d) ldc.i4.4 4 | |
| [ 3] 30 (0x01e) mul | |
| [ 2] 31 (0x01f) add | |
| [ 1] 32 (0x020) ldind.r4 | |
| [ 1] 33 (0x021) ret | |
| STMT00002 ( 0x013[E-] ... ??? ) | |
| [000017] ---XG------ * RETURN float | |
| [000016] ---XG------ \--* IND float | |
| [000015] ----------- \--* ADD long | |
| [000009] ---------U- +--* CAST long <- ulong <- byref | |
| [000008] ----------- | \--* FIELD_ADDR byref Program.EntryPoint+Vector2:X | |
| [000007] ----------- | \--* LCL_ADDR byref V00 arg0 [+0] | |
| [000014] ----------- \--* MUL long | |
| [000011] ----------- +--* CAST long <- int | |
| [000010] ----------- | \--* LCL_VAR int V01 arg1 | |
| [000013] ----------- \--* CAST long <- int | |
| [000012] ----------- \--* CNS_INT int 4 | |
| Importing BB02 (PC=004) of 'Program.EntryPoint:GetTest(Program.EntryPoint+Vector2,int):float' | |
| [ 0] 4 (0x004) ldarg.1 | |
| [ 1] 5 (0x005) ldc.i4.0 0 | |
| [ 2] 6 (0x006) bge.s | |
| STMT00003 ( 0x004[E-] ... ??? ) | |
| [000021] ----------- * JTRUE void | |
| [000020] ----------- \--* GE int | |
| [000018] ----------- +--* LCL_VAR int V01 arg1 | |
| [000019] ----------- \--* CNS_INT int 0 | |
| impImportBlockPending for BB03 | |
| impImportBlockPending for BB04 | |
| *************** Finishing PHASE Importation | |
| Trees after Importation | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BB01 [0000] 1 1 [000..004)-> BB03(0.5),BB02(0.5) ( cond ) i | |
| BB02 [0001] 1 BB01 1 [004..008)-> BB04(0.5),BB03(0.5) ( cond ) i | |
| BB03 [0002] 2 BB01,BB02 1 [008..013)-> BB04(1) (always) i | |
| BB04 [0003] 2 BB02,BB03 1 [013..022) (return) i | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| ------------ BB01 [0000] [000..004) -> BB03(0.5),BB02(0.5) (cond), preds={} succs={BB02,BB03} | |
| ***** BB01 [0000] | |
| STMT00000 ( 0x000[E-] ... 0x002 ) | |
| [000003] ----------- * JTRUE void | |
| [000002] ----------- \--* GT int | |
| [000000] ----------- +--* LCL_VAR int V01 arg1 | |
| [000001] ----------- \--* CNS_INT int 1 | |
| ------------ BB02 [0001] [004..008) -> BB04(0.5),BB03(0.5) (cond), preds={BB01} succs={BB03,BB04} | |
| ***** BB02 [0001] | |
| STMT00003 ( 0x004[E-] ... 0x006 ) | |
| [000021] ----------- * JTRUE void | |
| [000020] ----------- \--* GE int | |
| [000018] ----------- +--* LCL_VAR int V01 arg1 | |
| [000019] ----------- \--* CNS_INT int 0 | |
| ------------ BB03 [0002] [008..013) -> BB04(1) (always), preds={BB01,BB02} succs={BB04} | |
| ***** BB03 [0002] | |
| STMT00001 ( 0x008[E-] ... 0x00E ) | |
| [000006] --C-G------ * CALL void Program.EntryPoint:ThrowOutOfRangeException[int](System.String,int) | |
| [000004] ----------- arg0 +--* CNS_STR ref <string constant> | |
| [000005] ----------- arg1 \--* LCL_VAR int V01 arg1 | |
| ------------ BB04 [0003] [013..022) (return), preds={BB02,BB03} succs={} | |
| ***** BB04 [0003] | |
| STMT00002 ( 0x013[E-] ... 0x021 ) | |
| [000017] ---XG------ * RETURN float | |
| [000016] ---XG------ \--* IND float | |
| [000015] ----------- \--* ADD long | |
| [000009] ---------U- +--* CAST long <- ulong <- byref | |
| [000008] ----------- | \--* FIELD_ADDR byref Program.EntryPoint+Vector2:X | |
| [000007] ----------- | \--* LCL_ADDR byref V00 arg0 [+0] | |
| [000014] ----------- \--* MUL long | |
| [000011] ----------- +--* CAST long <- int | |
| [000010] ----------- | \--* LCL_VAR int V01 arg1 | |
| [000013] ----------- \--* CAST long <- int | |
| [000012] ----------- \--* CNS_INT int 4 | |
| ------------------------------------------------------------------------------------------------------------------- | |
| *************** In fgDebugCheckBBlist | |
| [deferred prior check failed -- skipping this check] | |
| *************** 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 Save contexts around async calls | |
| No async calls where execution context capture/restore is necessary | |
| *************** Finishing PHASE Save contexts around async calls [no changes] | |
| *************** Starting PHASE Morph - Init | |
| *************** Finishing PHASE Morph - Init [no changes] | |
| *************** Starting PHASE Morph - Inlining | |
| *************** Finishing PHASE Morph - Inlining [no changes] | |
| *************** Starting PHASE Allocate Objects | |
| no newobjs or newarr in this method; punting | |
| *************** Finishing PHASE Allocate Objects [no changes] | |
| *************** Starting PHASE Morph - Add internal blocks | |
| *************** After fgAddInternal() | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BB01 [0000] 1 1 [000..004)-> BB03(0.5),BB02(0.5) ( cond ) i | |
| BB02 [0001] 1 BB01 1 [004..008)-> BB04(0.5),BB03(0.5) ( cond ) i | |
| BB03 [0002] 2 BB01,BB02 1 [008..013)-> BB04(1) (always) i | |
| BB04 [0003] 2 BB02,BB03 1 [013..022) (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 try/catch/fault | |
| *************** In fgRemoveEmptyTryCatchOrTryFault() | |
| No EH in this method, nothing to remove. | |
| *************** Finishing PHASE Remove empty try/catch/fault [no changes] | |
| *************** Starting PHASE Remove empty finally | |
| No EH in this method, nothing to remove. | |
| *************** Finishing PHASE Remove empty finally [no changes] | |
| *************** Starting PHASE Merge callfinally chains | |
| No EH in this method, nothing to merge. | |
| *************** Finishing PHASE Merge callfinally chains [no changes] | |
| *************** Starting PHASE Clone finally | |
| No EH in this method, no cloning. | |
| *************** Finishing PHASE Clone finally [no changes] | |
| *************** Starting PHASE Morph - Promote Structs | |
| promotion opt flag not enabled | |
| *************** Finishing PHASE Morph - Promote Structs [no changes] | |
| *************** Starting PHASE Morph - Structs/AddrExp | |
| LocalAddressVisitor visiting statement: | |
| STMT00000 ( 0x000[E-] ... 0x002 ) | |
| [000003] ----------- * JTRUE void | |
| [000002] ----------- \--* GT int | |
| [000000] ----------- +--* LCL_VAR int V01 arg1 | |
| [000001] ----------- \--* CNS_INT int 1 | |
| LocalAddressVisitor visiting statement: | |
| STMT00003 ( 0x004[E-] ... 0x006 ) | |
| [000021] ----------- * JTRUE void | |
| [000020] ----------- \--* GE int | |
| [000018] ----------- +--* LCL_VAR int V01 arg1 | |
| [000019] ----------- \--* CNS_INT int 0 | |
| LocalAddressVisitor visiting statement: | |
| STMT00001 ( 0x008[E-] ... 0x00E ) | |
| [000006] --C-G------ * CALL void Program.EntryPoint:ThrowOutOfRangeException[int](System.String,int) | |
| [000004] ----------- arg0 +--* CNS_STR ref <string constant> | |
| [000005] ----------- arg1 \--* LCL_VAR int V01 arg1 | |
| LocalAddressVisitor visiting statement: | |
| STMT00002 ( 0x013[E-] ... 0x021 ) | |
| [000017] ---XG------ * RETURN float | |
| [000016] ---XG------ \--* IND float | |
| [000015] ----------- \--* ADD long | |
| [000009] ---------U- +--* CAST long <- ulong <- byref | |
| [000008] ----------- | \--* FIELD_ADDR byref Program.EntryPoint+Vector2:X | |
| [000007] ----------- | \--* LCL_ADDR byref V00 arg0 [+0] | |
| [000014] ----------- \--* MUL long | |
| [000011] ----------- +--* CAST long <- int | |
| [000010] ----------- | \--* LCL_VAR int V01 arg1 | |
| [000013] ----------- \--* CAST long <- int | |
| [000012] ----------- \--* CNS_INT int 4 | |
| Local V00 should not be enregistered because: it is address exposed | |
| LocalAddressVisitor modified statement: | |
| STMT00002 ( 0x013[E-] ... 0x021 ) | |
| [000017] ---XG------ * RETURN float | |
| [000016] ---XG------ \--* IND float | |
| [000015] ----------- \--* ADD long | |
| [000009] ---------U- +--* CAST long <- ulong <- byref | |
| [000008] ----------- | \--* LCL_ADDR byref V00 arg0 [+0] | |
| [000014] ----------- \--* MUL long | |
| [000011] ----------- +--* CAST long <- int | |
| [000010] ----------- | \--* LCL_VAR int V01 arg1 | |
| [000013] ----------- \--* CAST long <- int | |
| [000012] ----------- \--* CNS_INT int 4 | |
| *************** Finishing PHASE Morph - Structs/AddrExp | |
| Trees after Morph - Structs/AddrExp | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BB01 [0000] 1 1 [000..004)-> BB03(0.5),BB02(0.5) ( cond ) i | |
| BB02 [0001] 1 BB01 1 [004..008)-> BB04(0.5),BB03(0.5) ( cond ) i | |
| BB03 [0002] 2 BB01,BB02 1 [008..013)-> BB04(1) (always) i | |
| BB04 [0003] 2 BB02,BB03 1 [013..022) (return) i | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| ------------ BB01 [0000] [000..004) -> BB03(0.5),BB02(0.5) (cond), preds={} succs={BB02,BB03} | |
| ***** BB01 [0000] | |
| STMT00000 ( 0x000[E-] ... 0x002 ) | |
| [000003] ----------- * JTRUE void | |
| [000002] ----------- \--* GT int | |
| [000000] ----------- +--* LCL_VAR int V01 arg1 | |
| [000001] ----------- \--* CNS_INT int 1 | |
| ------------ BB02 [0001] [004..008) -> BB04(0.5),BB03(0.5) (cond), preds={BB01} succs={BB03,BB04} | |
| ***** BB02 [0001] | |
| STMT00003 ( 0x004[E-] ... 0x006 ) | |
| [000021] ----------- * JTRUE void | |
| [000020] ----------- \--* GE int | |
| [000018] ----------- +--* LCL_VAR int V01 arg1 | |
| [000019] ----------- \--* CNS_INT int 0 | |
| ------------ BB03 [0002] [008..013) -> BB04(1) (always), preds={BB01,BB02} succs={BB04} | |
| ***** BB03 [0002] | |
| STMT00001 ( 0x008[E-] ... 0x00E ) | |
| [000006] --C-G------ * CALL void Program.EntryPoint:ThrowOutOfRangeException[int](System.String,int) | |
| [000004] ----------- arg0 +--* CNS_STR ref <string constant> | |
| [000005] ----------- arg1 \--* LCL_VAR int V01 arg1 | |
| ------------ BB04 [0003] [013..022) (return), preds={BB02,BB03} succs={} | |
| ***** BB04 [0003] | |
| STMT00002 ( 0x013[E-] ... 0x021 ) | |
| [000017] ---XG------ * RETURN float | |
| [000016] ---XG------ \--* IND float | |
| [000015] ----------- \--* ADD long | |
| [000009] ---------U- +--* CAST long <- ulong <- byref | |
| [000008] ----------- | \--* LCL_ADDR byref V00 arg0 [+0] | |
| [000014] ----------- \--* MUL long | |
| [000011] ----------- +--* CAST long <- int | |
| [000010] ----------- | \--* LCL_VAR int V01 arg1 | |
| [000013] ----------- \--* CAST long <- int | |
| [000012] ----------- \--* CNS_INT int 4 | |
| ------------------------------------------------------------------------------------------------------------------- | |
| *************** In fgDebugCheckBBlist | |
| [deferred prior check failed -- skipping this check] | |
| *************** Starting PHASE Optimize mask conversions | |
| Skipping. Optimizations Disabled | |
| *************** Finishing PHASE Optimize mask conversions [no changes] | |
| *************** Starting PHASE Early liveness | |
| *************** Finishing PHASE Early liveness [no changes] | |
| *************** Starting PHASE Forward Substitution | |
| *************** Finishing PHASE Forward Substitution [no changes] | |
| *************** Starting PHASE Physical promotion | |
| *************** Finishing PHASE Physical promotion [no changes] | |
| *************** Starting PHASE Identify candidates for implicit byref copy omission | |
| *************** Finishing PHASE Identify candidates for implicit byref copy omission [no changes] | |
| *************** Starting PHASE Morph - ByRefs | |
| Changing the lvType for struct parameter V00 to TYP_BYREF. | |
| *************** Finishing PHASE Morph - ByRefs | |
| Trees after Morph - ByRefs | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BB01 [0000] 1 1 [000..004)-> BB03(0.5),BB02(0.5) ( cond ) i | |
| BB02 [0001] 1 BB01 1 [004..008)-> BB04(0.5),BB03(0.5) ( cond ) i | |
| BB03 [0002] 2 BB01,BB02 1 [008..013)-> BB04(1) (always) i | |
| BB04 [0003] 2 BB02,BB03 1 [013..022) (return) i | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| ------------ BB01 [0000] [000..004) -> BB03(0.5),BB02(0.5) (cond), preds={} succs={BB02,BB03} | |
| ***** BB01 [0000] | |
| STMT00000 ( 0x000[E-] ... 0x002 ) | |
| [000003] ----------- * JTRUE void | |
| [000002] ----------- \--* GT int | |
| [000000] ----------- +--* LCL_VAR int V01 arg1 | |
| [000001] ----------- \--* CNS_INT int 1 | |
| ------------ BB02 [0001] [004..008) -> BB04(0.5),BB03(0.5) (cond), preds={BB01} succs={BB03,BB04} | |
| ***** BB02 [0001] | |
| STMT00003 ( 0x004[E-] ... 0x006 ) | |
| [000021] ----------- * JTRUE void | |
| [000020] ----------- \--* GE int | |
| [000018] ----------- +--* LCL_VAR int V01 arg1 | |
| [000019] ----------- \--* CNS_INT int 0 | |
| ------------ BB03 [0002] [008..013) -> BB04(1) (always), preds={BB01,BB02} succs={BB04} | |
| ***** BB03 [0002] | |
| STMT00001 ( 0x008[E-] ... 0x00E ) | |
| [000006] --C-G------ * CALL void Program.EntryPoint:ThrowOutOfRangeException[int](System.String,int) | |
| [000004] ----------- arg0 +--* CNS_STR ref <string constant> | |
| [000005] ----------- arg1 \--* LCL_VAR int V01 arg1 | |
| ------------ BB04 [0003] [013..022) (return), preds={BB02,BB03} succs={} | |
| ***** BB04 [0003] | |
| STMT00002 ( 0x013[E-] ... 0x021 ) | |
| [000017] ---XG------ * RETURN float | |
| [000016] ---XG------ \--* IND float | |
| [000015] ----------- \--* ADD long | |
| [000009] ---------U- +--* CAST long <- ulong <- byref | |
| [000008] ----------- | \--* LCL_ADDR byref V00 arg0 [+0] | |
| [000014] ----------- \--* MUL long | |
| [000011] ----------- +--* CAST long <- int | |
| [000010] ----------- | \--* LCL_VAR int V01 arg1 | |
| [000013] ----------- \--* CAST long <- int | |
| [000012] ----------- \--* CNS_INT int 4 | |
| ------------------------------------------------------------------------------------------------------------------- | |
| *************** In fgDebugCheckBBlist | |
| [deferred prior check failed -- skipping this check] | |
| *************** Starting PHASE Morph - Global | |
| compEnregLocals() is false, setting doNotEnreg flag for all locals. | |
| Local V00 should not be enregistered because: opts.compFlags & CLFLG_REGVAR is not set | |
| Local V01 should not be enregistered because: opts.compFlags & CLFLG_REGVAR is not set | |
| Local V02 should not be enregistered because: opts.compFlags & CLFLG_REGVAR is not set | |
| Morphing BB01 | |
| fgMorphTree BB01, STMT00000 (before) | |
| [000003] ----------- * JTRUE void | |
| [000002] ----------- \--* GT int | |
| [000000] ----------- +--* LCL_VAR int V01 arg1 | |
| [000001] ----------- \--* CNS_INT int 1 | |
| Morphing BB02 | |
| fgMorphTree BB02, STMT00003 (before) | |
| [000021] ----------- * JTRUE void | |
| [000020] ----------- \--* GE int | |
| [000018] ----------- +--* LCL_VAR int V01 arg1 | |
| [000019] ----------- \--* CNS_INT int 0 | |
| Morphing BB03 | |
| fgMorphTree BB03, STMT00001 (before) | |
| [000006] --C-G------ * CALL void Program.EntryPoint:ThrowOutOfRangeException[int](System.String,int) | |
| [000004] ----------- arg0 +--* CNS_STR ref <string constant> | |
| [000005] ----------- arg1 \--* LCL_VAR int V01 arg1 | |
| Adding final args and determining ABI info for [000006]: | |
| Argument 0 ABI info: [00..08) reg rcx | |
| Argument 1 ABI info: [00..04) reg rdx | |
| Args for call [000006] CALL after AddFinalArgsAndDetermineABIInfo: | |
| CallArg[[000004].CNS_STR ref (By value), 1 segments: <[00..08) reg rcx>] | |
| CallArg[[000005].LCL_VAR int (By value), 1 segments: <[00..04) reg rdx>] | |
| Morphing args for 6.CALL: | |
| Sorting the arguments: | |
| Deferred argument: | |
| [000005] -----+----- * LCL_VAR int V01 arg1 | |
| Moved to late list | |
| Deferred argument: | |
| [000022] H----+----- * CNS_INT(h) ref 'You tried to access this vector at index: {0}' | |
| Moved to late list | |
| Register placement order: rdx rcx | |
| Args for [000006].CALL after fgMorphArgs: | |
| CallArg[[000022].CNS_INT ref (By value), 1 segments: <[00..08) reg rcx>, processed] | |
| CallArg[[000005].LCL_VAR int (By value), 1 segments: <[00..04) reg rdx>, processed] | |
| OutgoingArgsStackSize is 32 | |
| fgMorphTree BB03, STMT00001 (after) | |
| [000006] --CXG+----- * CALL void Program.EntryPoint:ThrowOutOfRangeException[int](System.String,int) | |
| [000005] -----+----- arg1 rdx +--* LCL_VAR int V01 arg1 | |
| [000022] H----+----- arg0 rcx \--* CNS_INT(h) ref 'You tried to access this vector at index: {0}' | |
| Morphing BB04 | |
| fgMorphTree BB04, STMT00002 (before) | |
| [000017] ---XG------ * RETURN float | |
| [000016] ---XG------ \--* IND float | |
| [000015] ----------- \--* ADD long | |
| [000009] ---------U- +--* CAST long <- ulong <- byref | |
| [000008] ----------- | \--* LCL_ADDR byref V00 arg0 [+0] | |
| [000014] ----------- \--* MUL long | |
| [000011] ----------- +--* CAST long <- int | |
| [000010] ----------- | \--* LCL_VAR int V01 arg1 | |
| [000013] ----------- \--* CAST long <- int | |
| [000012] ----------- \--* CNS_INT int 4 | |
| lvaGrabTemp returning 3 (V03 tmp1) called for Cast away GC. | |
| Rewriting an implicit by-ref parameter reference: | |
| [000008] ----------- * LCL_ADDR byref V00 arg0 [+0] | |
| Transformed into: | |
| [000008] ----------- * LCL_VAR byref V00 arg0 | |
| Folding long operator with constant nodes into a constant: | |
| [000013] ----------- * CAST long <- int | |
| [000012] -----+----- \--* CNS_INT int 4 | |
| Bashed to long constant: | |
| [000013] ----------- * CNS_INT long 4 | |
| fgMorphTree BB04, STMT00002 (after) | |
| [000017] -A-XG+----- * RETURN float | |
| [000016] -A-XG+----- \--* IND float | |
| [000015] -A---+----- \--* ADD long | |
| [000026] -A---+----- +--* COMMA long | |
| [000023] DA---+----- | +--* STORE_LCL_VAR long V03 tmp1 | |
| [000008] -----+----- | | \--* LCL_VAR byref V00 arg0 | |
| [000024] -----+----- | \--* LCL_VAR long V03 tmp1 | |
| [000014] -----+----- \--* LSH long | |
| [000011] -----+----- +--* CAST long <- int | |
| [000010] -----+----- | \--* LCL_VAR int V01 arg1 | |
| [000013] -----+----- \--* CNS_INT long 2 | |
| *************** Finishing PHASE Morph - Global | |
| Trees after Morph - Global | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BB01 [0000] 1 1 [000..004)-> BB03(0.5),BB02(0.5) ( cond ) i | |
| BB02 [0001] 1 BB01 1 [004..008)-> BB04(0.5),BB03(0.5) ( cond ) i | |
| BB03 [0002] 2 BB01,BB02 1 [008..013)-> BB04(1) (always) i hascall gcsafe | |
| BB04 [0003] 2 BB02,BB03 1 [013..022) (return) i | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| ------------ BB01 [0000] [000..004) -> BB03(0.5),BB02(0.5) (cond), preds={} succs={BB02,BB03} | |
| ***** BB01 [0000] | |
| STMT00000 ( 0x000[E-] ... 0x002 ) | |
| [000003] -----+----- * JTRUE void | |
| [000002] J----+-N--- \--* GT int | |
| [000000] -----+----- +--* LCL_VAR int V01 arg1 | |
| [000001] -----+----- \--* CNS_INT int 1 | |
| ------------ BB02 [0001] [004..008) -> BB04(0.5),BB03(0.5) (cond), preds={BB01} succs={BB03,BB04} | |
| ***** BB02 [0001] | |
| STMT00003 ( 0x004[E-] ... 0x006 ) | |
| [000021] -----+----- * JTRUE void | |
| [000020] J----+-N--- \--* GE int | |
| [000018] -----+----- +--* LCL_VAR int V01 arg1 | |
| [000019] -----+----- \--* CNS_INT int 0 | |
| ------------ BB03 [0002] [008..013) -> BB04(1) (always), preds={BB01,BB02} succs={BB04} | |
| ***** BB03 [0002] | |
| STMT00001 ( 0x008[E-] ... 0x00E ) | |
| [000006] --CXG+----- * CALL void Program.EntryPoint:ThrowOutOfRangeException[int](System.String,int) | |
| [000005] -----+----- arg1 rdx +--* LCL_VAR int V01 arg1 | |
| [000022] H----+----- arg0 rcx \--* CNS_INT(h) ref 'You tried to access this vector at index: {0}' | |
| ------------ BB04 [0003] [013..022) (return), preds={BB02,BB03} succs={} | |
| ***** BB04 [0003] | |
| STMT00002 ( 0x013[E-] ... 0x021 ) | |
| [000017] -A-XG+----- * RETURN float | |
| [000016] -A-XG+----- \--* IND float | |
| [000015] -A---+----- \--* ADD long | |
| [000026] -A---+----- +--* COMMA long | |
| [000023] DA---+----- | +--* STORE_LCL_VAR long V03 tmp1 | |
| [000008] -----+----- | | \--* LCL_VAR byref V00 arg0 | |
| [000024] -----+----- | \--* LCL_VAR long V03 tmp1 | |
| [000014] -----+----- \--* LSH long | |
| [000011] -----+----- +--* CAST long <- int | |
| [000010] -----+----- | \--* LCL_VAR int V01 arg1 | |
| [000013] -----+----- \--* CNS_INT long 2 | |
| ------------------------------------------------------------------------------------------------------------------- | |
| *************** In fgDebugCheckBBlist | |
| [deferred prior check failed -- skipping this check] | |
| *************** Starting PHASE Post-Morph | |
| *************** In fgMarkDemotedImplicitByRefArgs() | |
| Clearing annotation for V00 | |
| *************** Finishing PHASE Post-Morph | |
| Trees after Post-Morph | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BB01 [0000] 1 1 [000..004)-> BB03(0.5),BB02(0.5) ( cond ) i | |
| BB02 [0001] 1 BB01 1 [004..008)-> BB04(0.5),BB03(0.5) ( cond ) i | |
| BB03 [0002] 2 BB01,BB02 1 [008..013)-> BB04(1) (always) i hascall gcsafe | |
| BB04 [0003] 2 BB02,BB03 1 [013..022) (return) i | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| ------------ BB01 [0000] [000..004) -> BB03(0.5),BB02(0.5) (cond), preds={} succs={BB02,BB03} | |
| ***** BB01 [0000] | |
| STMT00000 ( 0x000[E-] ... 0x002 ) | |
| [000003] -----+----- * JTRUE void | |
| [000002] J----+-N--- \--* GT int | |
| [000000] -----+----- +--* LCL_VAR int V01 arg1 | |
| [000001] -----+----- \--* CNS_INT int 1 | |
| ------------ BB02 [0001] [004..008) -> BB04(0.5),BB03(0.5) (cond), preds={BB01} succs={BB03,BB04} | |
| ***** BB02 [0001] | |
| STMT00003 ( 0x004[E-] ... 0x006 ) | |
| [000021] -----+----- * JTRUE void | |
| [000020] J----+-N--- \--* GE int | |
| [000018] -----+----- +--* LCL_VAR int V01 arg1 | |
| [000019] -----+----- \--* CNS_INT int 0 | |
| ------------ BB03 [0002] [008..013) -> BB04(1) (always), preds={BB01,BB02} succs={BB04} | |
| ***** BB03 [0002] | |
| STMT00001 ( 0x008[E-] ... 0x00E ) | |
| [000006] --CXG+----- * CALL void Program.EntryPoint:ThrowOutOfRangeException[int](System.String,int) | |
| [000005] -----+----- arg1 rdx +--* LCL_VAR int V01 arg1 | |
| [000022] H----+----- arg0 rcx \--* CNS_INT(h) ref 'You tried to access this vector at index: {0}' | |
| ------------ BB04 [0003] [013..022) (return), preds={BB02,BB03} succs={} | |
| ***** BB04 [0003] | |
| STMT00002 ( 0x013[E-] ... 0x021 ) | |
| [000017] -A-XG+----- * RETURN float | |
| [000016] -A-XG+----- \--* IND float | |
| [000015] -A---+----- \--* ADD long | |
| [000026] -A---+----- +--* COMMA long | |
| [000023] DA---+----- | +--* STORE_LCL_VAR long V03 tmp1 | |
| [000008] -----+----- | | \--* LCL_VAR byref V00 arg0 | |
| [000024] -----+----- | \--* LCL_VAR long V03 tmp1 | |
| [000014] -----+----- \--* LSH long | |
| [000011] -----+----- +--* CAST long <- int | |
| [000010] -----+----- | \--* LCL_VAR int V01 arg1 | |
| [000013] -----+----- \--* CNS_INT long 2 | |
| ------------------------------------------------------------------------------------------------------------------- | |
| *************** In fgDebugCheckBBlist | |
| [deferred prior check failed -- skipping this check] | |
| *************** Starting PHASE GS Cookie | |
| No GS security needed | |
| *************** Finishing PHASE GS Cookie [no changes] | |
| *************** Starting PHASE Morph array ops | |
| No multi-dimensional array references in the function | |
| *************** Finishing PHASE Morph array ops [no changes] | |
| *************** Starting PHASE Mark local vars | |
| *************** In lvaMarkLocalVars() | |
| *** lvaComputeRefCounts *** | |
| *************** Finishing PHASE Mark local vars [no changes] | |
| *************** Starting PHASE Find oper order | |
| *************** In fgFindOperOrder() | |
| *************** Finishing PHASE Find oper order | |
| Trees after Find oper order | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BB01 [0000] 1 1 [000..004)-> BB03(0.5),BB02(0.5) ( cond ) i | |
| BB02 [0001] 1 BB01 1 [004..008)-> BB04(0.5),BB03(0.5) ( cond ) i | |
| BB03 [0002] 2 BB01,BB02 1 [008..013)-> BB04(1) (always) i hascall gcsafe | |
| BB04 [0003] 2 BB02,BB03 1 [013..022) (return) i | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| ------------ BB01 [0000] [000..004) -> BB03(0.5),BB02(0.5) (cond), preds={} succs={BB02,BB03} | |
| ***** BB01 [0000] | |
| STMT00000 ( 0x000[E-] ... 0x002 ) | |
| [000003] -----+----- * JTRUE void | |
| [000002] J----+-N--- \--* GT int | |
| [000000] -----+----- +--* LCL_VAR int V01 arg1 | |
| [000001] -----+----- \--* CNS_INT int 1 | |
| ------------ BB02 [0001] [004..008) -> BB04(0.5),BB03(0.5) (cond), preds={BB01} succs={BB03,BB04} | |
| ***** BB02 [0001] | |
| STMT00003 ( 0x004[E-] ... 0x006 ) | |
| [000021] -----+----- * JTRUE void | |
| [000020] J----+-N--- \--* GE int | |
| [000018] -----+----- +--* LCL_VAR int V01 arg1 | |
| [000019] -----+----- \--* CNS_INT int 0 | |
| ------------ BB03 [0002] [008..013) -> BB04(1) (always), preds={BB01,BB02} succs={BB04} | |
| ***** BB03 [0002] | |
| STMT00001 ( 0x008[E-] ... 0x00E ) | |
| [000006] --CXG+----- * CALL void Program.EntryPoint:ThrowOutOfRangeException[int](System.String,int) | |
| [000005] -----+----- arg1 rdx +--* LCL_VAR int V01 arg1 | |
| [000022] H----+----- arg0 rcx \--* CNS_INT(h) ref 'You tried to access this vector at index: {0}' | |
| ------------ BB04 [0003] [013..022) (return), preds={BB02,BB03} succs={} | |
| ***** BB04 [0003] | |
| STMT00002 ( 0x013[E-] ... 0x021 ) | |
| [000017] -A-XG+----- * RETURN float | |
| [000016] -A-XG+----- \--* IND float | |
| [000015] -A---+----- \--* ADD long | |
| [000026] -A---+----- +--* COMMA long | |
| [000023] DA---+----- | +--* STORE_LCL_VAR long V03 tmp1 | |
| [000008] -----+----- | | \--* LCL_VAR byref V00 arg0 | |
| [000024] -----+----- | \--* LCL_VAR long V03 tmp1 | |
| [000014] -----+----- \--* LSH long | |
| [000011] -----+----- +--* CAST long <- int | |
| [000010] -----+----- | \--* LCL_VAR int V01 arg1 | |
| [000013] -----+----- \--* CNS_INT long 2 | |
| ------------------------------------------------------------------------------------------------------------------- | |
| *************** In fgDebugCheckBBlist | |
| [deferred prior check failed -- skipping this check] | |
| *************** Starting PHASE Set block order | |
| *************** In fgSetBlockOrder() | |
| The biggest BB has 11 tree nodes | |
| *************** Finishing PHASE Set block order | |
| Trees after Set block order | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BB01 [0000] 1 1 [000..004)-> BB03(0.5),BB02(0.5) ( cond ) i | |
| BB02 [0001] 1 BB01 1 [004..008)-> BB04(0.5),BB03(0.5) ( cond ) i | |
| BB03 [0002] 2 BB01,BB02 1 [008..013)-> BB04(1) (always) i hascall gcsafe | |
| BB04 [0003] 2 BB02,BB03 1 [013..022) (return) i | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| ------------ BB01 [0000] [000..004) -> BB03(0.5),BB02(0.5) (cond), preds={} succs={BB02,BB03} | |
| ***** BB01 [0000] | |
| STMT00000 ( 0x000[E-] ... 0x002 ) | |
| N004 (???,???) [000003] -----+----- * JTRUE void | |
| N003 (???,???) [000002] J----+-N--- \--* GT int | |
| N001 (???,???) [000000] -----+----- +--* LCL_VAR int V01 arg1 | |
| N002 (???,???) [000001] -----+----- \--* CNS_INT int 1 | |
| ------------ BB02 [0001] [004..008) -> BB04(0.5),BB03(0.5) (cond), preds={BB01} succs={BB03,BB04} | |
| ***** BB02 [0001] | |
| STMT00003 ( 0x004[E-] ... 0x006 ) | |
| N004 (???,???) [000021] -----+----- * JTRUE void | |
| N003 (???,???) [000020] J----+-N--- \--* GE int | |
| N001 (???,???) [000018] -----+----- +--* LCL_VAR int V01 arg1 | |
| N002 (???,???) [000019] -----+----- \--* CNS_INT int 0 | |
| ------------ BB03 [0002] [008..013) -> BB04(1) (always), preds={BB01,BB02} succs={BB04} | |
| ***** BB03 [0002] | |
| STMT00001 ( 0x008[E-] ... 0x00E ) | |
| N003 (???,???) [000006] --CXG+----- * CALL void Program.EntryPoint:ThrowOutOfRangeException[int](System.String,int) | |
| N001 (???,???) [000005] -----+----- arg1 rdx +--* LCL_VAR int V01 arg1 | |
| N002 (???,???) [000022] H----+----- arg0 rcx \--* CNS_INT(h) ref 'You tried to access this vector at index: {0}' | |
| ------------ BB04 [0003] [013..022) (return), preds={BB02,BB03} succs={} | |
| ***** BB04 [0003] | |
| STMT00002 ( 0x013[E-] ... 0x021 ) | |
| N011 (???,???) [000017] -A-XG+----- * RETURN float | |
| N010 (???,???) [000016] -A-XG+----- \--* IND float | |
| N009 (???,???) [000015] -A---+----- \--* ADD long | |
| N004 (???,???) [000026] -A---+----- +--* COMMA long | |
| N002 (???,???) [000023] DA---+----- | +--* STORE_LCL_VAR long V03 tmp1 | |
| N001 (???,???) [000008] -----+----- | | \--* LCL_VAR byref V00 arg0 | |
| N003 (???,???) [000024] -----+----- | \--* LCL_VAR long V03 tmp1 | |
| N008 (???,???) [000014] -----+----- \--* LSH long | |
| N006 (???,???) [000011] -----+----- +--* CAST long <- int | |
| N005 (???,???) [000010] -----+----- | \--* LCL_VAR int V01 arg1 | |
| N007 (???,???) [000013] -----+----- \--* CNS_INT long 2 | |
| ------------------------------------------------------------------------------------------------------------------- | |
| *************** In fgDebugCheckBBlist | |
| [deferred prior check failed -- skipping this check] | |
| *************** Starting PHASE Stress gtSplitTree | |
| *************** Finishing PHASE Stress gtSplitTree [no changes] | |
| *************** Starting PHASE Remove empty finally 3 | |
| No EH in this method, nothing to remove. | |
| *************** Finishing PHASE Remove empty finally 3 [no changes] | |
| *************** Starting PHASE Remove empty try 3 | |
| *************** In fgRemoveEmptyTry() | |
| No EH in this method, nothing to remove. | |
| *************** Finishing PHASE Remove empty try 3 [no changes] | |
| *************** Starting PHASE Remove empty try-catch-fault 3 | |
| *************** In fgRemoveEmptyTryCatchOrTryFault() | |
| No EH in this method, nothing to remove. | |
| *************** Finishing PHASE Remove empty try-catch-fault 3 [no changes] | |
| *************** Starting PHASE Create EH funclets | |
| *************** Finishing PHASE Create EH funclets [no changes] | |
| *************** Starting PHASE Expand casts | |
| *************** Finishing PHASE Expand casts [no changes] | |
| *************** Starting PHASE Expand runtime lookups | |
| *************** Finishing PHASE Expand runtime lookups [no changes] | |
| *************** Starting PHASE Expand static init | |
| Nothing to expand. | |
| *************** Finishing PHASE Expand static init [no changes] | |
| *************** Starting PHASE Expand TLS access | |
| Nothing to expand. | |
| *************** Finishing PHASE Expand TLS access [no changes] | |
| *************** Starting PHASE Expand stack array allocation | |
| *************** Finishing PHASE Expand stack array allocation [no changes] | |
| *************** Starting PHASE Insert GC Polls | |
| *************** Finishing PHASE Insert GC Polls [no changes] | |
| *************** Starting PHASE Create throw helper blocks | |
| *************** Finishing PHASE Create throw helper blocks [no changes] | |
| *************** Starting PHASE Rationalize IR | |
| *************** Finishing PHASE Rationalize IR | |
| Trees after Rationalize IR | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BB01 [0000] 1 1 [000..004)-> BB03(0.5),BB02(0.5) ( cond ) i LIR | |
| BB02 [0001] 1 BB01 1 [004..008)-> BB04(0.5),BB03(0.5) ( cond ) i LIR | |
| BB03 [0002] 2 BB01,BB02 1 [008..013)-> BB04(1) (always) i LIR hascall gcsafe | |
| BB04 [0003] 2 BB02,BB03 1 [013..022) (return) i LIR | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| ------------ BB01 [0000] [000..004) -> BB03(0.5),BB02(0.5) (cond), preds={} succs={BB02,BB03} | |
| [000027] ----------- IL_OFFSET void INLRT @ 0x000[E-] | |
| N001 (???,???) [000000] -----+----- t0 = LCL_VAR int V01 arg1 | |
| N002 (???,???) [000001] -----+----- t1 = CNS_INT int 1 | |
| /--* t0 int | |
| +--* t1 int | |
| N003 (???,???) [000002] J----+-N--- t2 = * GT int | |
| /--* t2 int | |
| N004 (???,???) [000003] -----+----- * JTRUE void | |
| ------------ BB02 [0001] [004..008) -> BB04(0.5),BB03(0.5) (cond), preds={BB01} succs={BB03,BB04} | |
| [000028] ----------- IL_OFFSET void INLRT @ 0x004[E-] | |
| N001 (???,???) [000018] -----+----- t18 = LCL_VAR int V01 arg1 | |
| N002 (???,???) [000019] -----+----- t19 = CNS_INT int 0 | |
| /--* t18 int | |
| +--* t19 int | |
| N003 (???,???) [000020] J----+-N--- t20 = * GE int | |
| /--* t20 int | |
| N004 (???,???) [000021] -----+----- * JTRUE void | |
| ------------ BB03 [0002] [008..013) -> BB04(1) (always), preds={BB01,BB02} succs={BB04} | |
| [000029] ----------- IL_OFFSET void INLRT @ 0x008[E-] | |
| N001 (???,???) [000005] -----+----- t5 = LCL_VAR int V01 arg1 | |
| N002 (???,???) [000022] H----+----- t22 = CNS_INT(h) ref 'You tried to access this vector at index: {0}' | |
| /--* t5 int arg1 rdx | |
| +--* t22 ref arg0 rcx | |
| N003 (???,???) [000006] --CXG+----- * CALL void Program.EntryPoint:ThrowOutOfRangeException[int](System.String,int) | |
| ------------ BB04 [0003] [013..022) (return), preds={BB02,BB03} succs={} | |
| [000030] ----------- IL_OFFSET void INLRT @ 0x013[E-] | |
| N001 (???,???) [000008] -----+----- t8 = LCL_VAR byref V00 arg0 | |
| /--* t8 byref | |
| N002 (???,???) [000023] DA---+----- * STORE_LCL_VAR long V03 tmp1 | |
| N003 (???,???) [000024] -----+----- t24 = LCL_VAR long V03 tmp1 | |
| N005 (???,???) [000010] -----+----- t10 = LCL_VAR int V01 arg1 | |
| /--* t10 int | |
| N006 (???,???) [000011] -----+----- t11 = * CAST long <- int | |
| N007 (???,???) [000013] -----+----- t13 = CNS_INT long 2 | |
| /--* t11 long | |
| +--* t13 long | |
| N008 (???,???) [000014] -----+----- t14 = * LSH long | |
| /--* t24 long | |
| +--* t14 long | |
| N009 (???,???) [000015] -A---+----- t15 = * ADD long | |
| /--* t15 long | |
| N010 (???,???) [000016] -A-XG+----- t16 = * IND float | |
| /--* t16 float | |
| N011 (???,???) [000017] -A-XG+----- * RETURN float | |
| ------------------------------------------------------------------------------------------------------------------- | |
| *************** In fgDebugCheckBBlist | |
| [deferred prior check failed -- skipping this check] | |
| *************** Starting PHASE Lowering nodeinfo | |
| compEnregLocals() is false, setting doNotEnreg flag for all locals. | |
| Local V00 should not be enregistered because: opts.compFlags & CLFLG_REGVAR is not set | |
| Local V01 should not be enregistered because: opts.compFlags & CLFLG_REGVAR is not set | |
| Local V02 should not be enregistered because: opts.compFlags & CLFLG_REGVAR is not set | |
| Local V03 should not be enregistered because: opts.compFlags & CLFLG_REGVAR is not set | |
| Lowering JTRUE: | |
| N001 (???,???) [000000] -c---+----- t0 = LCL_VAR int V01 arg1 | |
| N002 (???,???) [000001] -c---+----- t1 = CNS_INT int 1 | |
| /--* t0 int | |
| +--* t1 int | |
| N003 (???,???) [000002] J----+-N--- t2 = * GT int | |
| /--* t2 int | |
| N004 (???,???) [000003] -----+----- * JTRUE void | |
| Lowering condition: | |
| N001 (???,???) [000000] -c---+----- t0 = LCL_VAR int V01 arg1 | |
| N002 (???,???) [000001] -c---+----- t1 = CNS_INT int 1 | |
| /--* t0 int | |
| +--* t1 int | |
| N003 (???,???) [000002] J----+-N--- t2 = * GT int | |
| Lowering JTRUE Result: | |
| N001 (???,???) [000000] -c---+----- t0 = LCL_VAR int V01 arg1 | |
| N002 (???,???) [000001] -c---+----- t1 = CNS_INT int 1 | |
| /--* t0 int | |
| +--* t1 int | |
| N003 (???,???) [000002] -----+-N--- * CMP void | |
| N004 (???,???) [000003] -----+----- JCC void cond=SGT | |
| Lowering JTRUE: | |
| N001 (???,???) [000018] -c---+----- t18 = LCL_VAR int V01 arg1 | |
| N002 (???,???) [000019] -c---+----- t19 = CNS_INT int 0 | |
| /--* t18 int | |
| +--* t19 int | |
| N003 (???,???) [000020] J----+-N--- t20 = * GE int | |
| /--* t20 int | |
| N004 (???,???) [000021] -----+----- * JTRUE void | |
| Lowering condition: | |
| N001 (???,???) [000018] -c---+----- t18 = LCL_VAR int V01 arg1 | |
| N002 (???,???) [000019] -c---+----- t19 = CNS_INT int 0 | |
| /--* t18 int | |
| +--* t19 int | |
| N003 (???,???) [000020] J----+-N--- t20 = * GE int | |
| Lowering JTRUE Result: | |
| N001 (???,???) [000018] -c---+----- t18 = LCL_VAR int V01 arg1 | |
| N002 (???,???) [000019] -c---+----- t19 = CNS_INT int 0 | |
| /--* t18 int | |
| +--* t19 int | |
| N003 (???,???) [000020] -----+-N--- * CMP void | |
| N004 (???,???) [000021] -----+----- JCC void cond=SGE | |
| lowering call (before): | |
| N001 (???,???) [000005] -----+----- t5 = LCL_VAR int V01 arg1 | |
| N002 (???,???) [000022] H----+----- t22 = CNS_INT(h) ref 'You tried to access this vector at index: {0}' | |
| /--* t5 int arg1 rdx | |
| +--* t22 ref arg0 rcx | |
| N003 (???,???) [000006] --CXG+----- * CALL void Program.EntryPoint:ThrowOutOfRangeException[int](System.String,int) | |
| Args: | |
| ====== | |
| Late args: | |
| ====== | |
| Lowering arg: | |
| N001 (???,???) [000005] -----+----- t5 = LCL_VAR int V01 arg1 | |
| Passed in [00..04) reg rdx | |
| N001 (???,???) [000005] -----+----- t5 = LCL_VAR int V01 arg1 | |
| /--* t5 int | |
| [000031] ----------- t31 = * PUTARG_REG int REG rdx | |
| Lowering arg: | |
| N002 (???,???) [000022] H----+----- t22 = CNS_INT(h) ref 'You tried to access this vector at index: {0}' | |
| Passed in [00..08) reg rcx | |
| N002 (???,???) [000022] H----+----- t22 = CNS_INT(h) ref 'You tried to access this vector at index: {0}' | |
| /--* t22 ref | |
| [000032] ----------- t32 = * PUTARG_REG ref REG rcx | |
| results of lowering call: | |
| N001 (???,???) [000033] H---------- t33 = CNS_INT(h) long 0x7ff7f13342a0 ftn | |
| /--* t33 long | |
| N002 (???,???) [000034] n---G------ t34 = * IND long | |
| Bumping outgoing arg space size from 0 to 32 for [000006] | |
| lowering call (after): | |
| N001 (???,???) [000005] -----+----- t5 = LCL_VAR int V01 arg1 | |
| /--* t5 int | |
| [000031] ----------- t31 = * PUTARG_REG int REG rdx | |
| N002 (???,???) [000022] H----+----- t22 = CNS_INT(h) ref 'You tried to access this vector at index: {0}' | |
| /--* t22 ref | |
| [000032] ----------- t32 = * PUTARG_REG ref REG rcx | |
| N001 (???,???) [000033] Hc--------- t33 = CNS_INT(h) long 0x7ff7f13342a0 ftn | |
| /--* t33 long | |
| N002 (???,???) [000034] nc--G------ t34 = * IND long REG NA | |
| /--* t31 int arg1 rdx | |
| +--* t32 ref arg0 rcx | |
| +--* t34 long control expr | |
| N003 (???,???) [000006] --CXG+----- * CALL void Program.EntryPoint:ThrowOutOfRangeException[int](System.String,int) | |
| lowering store lcl var/field (before): | |
| N001 (???,???) [000008] -----+----- t8 = LCL_VAR byref V00 arg0 | |
| /--* t8 byref | |
| N002 (???,???) [000023] DA---+----- * STORE_LCL_VAR long V03 tmp1 | |
| lowering store lcl var/field (after): | |
| N001 (???,???) [000008] -----+----- t8 = LCL_VAR byref V00 arg0 | |
| /--* t8 byref | |
| N002 (???,???) [000023] DA---+----- * STORE_LCL_VAR long V03 tmp1 | |
| Addressing mode: | |
| Base | |
| N003 (???,???) [000024] -c---+----- * LCL_VAR long V03 tmp1 | |
| + Index * 4 + 0 | |
| N006 (???,???) [000011] -----+----- * CAST long <- int | |
| Removing unused node: | |
| N008 (???,???) [000014] -----+----- * LSH long | |
| Removing unused node: | |
| N007 (???,???) [000013] -c---+----- * CNS_INT long 2 | |
| New addressing mode node: | |
| N009 (???,???) [000015] -----+----- * LEA(b+(i*4)+0) long | |
| lowering return node | |
| N011 (???,???) [000017] -A-XG+----- * RETURN float | |
| ============ | |
| Lower has completed modifying nodes. | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BB01 [0000] 1 1 [000..004)-> BB03(0.5),BB02(0.5) ( cond ) i LIR | |
| BB02 [0001] 1 BB01 1 [004..008)-> BB04(0.5),BB03(0.5) ( cond ) i LIR | |
| BB03 [0002] 2 BB01,BB02 1 [008..013)-> BB04(1) (always) i LIR hascall gcsafe | |
| BB04 [0003] 2 BB02,BB03 1 [013..022) (return) i LIR | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| ------------ BB01 [0000] [000..004) -> BB03(0.5),BB02(0.5) (cond), preds={} succs={BB02,BB03} | |
| [000027] ----------- IL_OFFSET void INLRT @ 0x000[E-] | |
| N001 (???,???) [000000] -c---+----- t0 = LCL_VAR int V01 arg1 | |
| N002 (???,???) [000001] -c---+----- t1 = CNS_INT int 1 | |
| /--* t0 int | |
| +--* t1 int | |
| N003 (???,???) [000002] -----+-N--- * CMP void | |
| N004 (???,???) [000003] -----+----- JCC void cond=SGT | |
| ------------ BB02 [0001] [004..008) -> BB04(0.5),BB03(0.5) (cond), preds={BB01} succs={BB03,BB04} | |
| [000028] ----------- IL_OFFSET void INLRT @ 0x004[E-] | |
| N001 (???,???) [000018] -c---+----- t18 = LCL_VAR int V01 arg1 | |
| N002 (???,???) [000019] -c---+----- t19 = CNS_INT int 0 | |
| /--* t18 int | |
| +--* t19 int | |
| N003 (???,???) [000020] -----+-N--- * CMP void | |
| N004 (???,???) [000021] -----+----- JCC void cond=SGE | |
| ------------ BB03 [0002] [008..013) -> BB04(1) (always), preds={BB01,BB02} succs={BB04} | |
| [000029] ----------- IL_OFFSET void INLRT @ 0x008[E-] | |
| N001 (???,???) [000005] -----+----- t5 = LCL_VAR int V01 arg1 | |
| /--* t5 int | |
| [000031] ----------- t31 = * PUTARG_REG int REG rdx | |
| N002 (???,???) [000022] H----+----- t22 = CNS_INT(h) ref 'You tried to access this vector at index: {0}' | |
| /--* t22 ref | |
| [000032] ----------- t32 = * PUTARG_REG ref REG rcx | |
| N001 (???,???) [000033] Hc--------- t33 = CNS_INT(h) long 0x7ff7f13342a0 ftn | |
| /--* t33 long | |
| N002 (???,???) [000034] nc--G------ t34 = * IND long REG NA | |
| /--* t31 int arg1 rdx | |
| +--* t32 ref arg0 rcx | |
| +--* t34 long control expr | |
| N003 (???,???) [000006] --CXG+----- * CALL void Program.EntryPoint:ThrowOutOfRangeException[int](System.String,int) | |
| ------------ BB04 [0003] [013..022) (return), preds={BB02,BB03} succs={} | |
| [000030] ----------- IL_OFFSET void INLRT @ 0x013[E-] | |
| N001 (???,???) [000008] -----+----- t8 = LCL_VAR byref V00 arg0 | |
| /--* t8 byref | |
| N002 (???,???) [000023] DA---+----- * STORE_LCL_VAR long V03 tmp1 | |
| N003 (???,???) [000024] -----+----- t24 = LCL_VAR long V03 tmp1 | |
| N005 (???,???) [000010] -c---+----- t10 = LCL_VAR int V01 arg1 | |
| /--* t10 int | |
| N006 (???,???) [000011] -----+----- t11 = * CAST long <- int | |
| /--* t24 long | |
| +--* t11 long | |
| N009 (???,???) [000015] -c---+----- t15 = * LEA(b+(i*4)+0) long | |
| /--* t15 long | |
| N010 (???,???) [000016] -A-XG+----- t16 = * IND float | |
| /--* t16 float | |
| N011 (???,???) [000017] -A-XG+----- * RETURN float | |
| ------------------------------------------------------------------------------------------------------------------- | |
| *** lvaComputeRefCounts *** | |
| *************** Finishing PHASE Lowering nodeinfo | |
| Trees after Lowering nodeinfo | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BB01 [0000] 1 1 [000..004)-> BB03(0.5),BB02(0.5) ( cond ) i LIR | |
| BB02 [0001] 1 BB01 1 [004..008)-> BB04(0.5),BB03(0.5) ( cond ) i LIR | |
| BB03 [0002] 2 BB01,BB02 1 [008..013)-> BB04(1) (always) i LIR hascall gcsafe | |
| BB04 [0003] 2 BB02,BB03 1 [013..022) (return) i LIR | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| ------------ BB01 [0000] [000..004) -> BB03(0.5),BB02(0.5) (cond), preds={} succs={BB02,BB03} | |
| [000027] ----------- IL_OFFSET void INLRT @ 0x000[E-] | |
| N001 (???,???) [000000] -c---+----- t0 = LCL_VAR int V01 arg1 | |
| N002 (???,???) [000001] -c---+----- t1 = CNS_INT int 1 | |
| /--* t0 int | |
| +--* t1 int | |
| N003 (???,???) [000002] -----+-N--- * CMP void | |
| N004 (???,???) [000003] -----+----- JCC void cond=SGT | |
| ------------ BB02 [0001] [004..008) -> BB04(0.5),BB03(0.5) (cond), preds={BB01} succs={BB03,BB04} | |
| [000028] ----------- IL_OFFSET void INLRT @ 0x004[E-] | |
| N001 (???,???) [000018] -c---+----- t18 = LCL_VAR int V01 arg1 | |
| N002 (???,???) [000019] -c---+----- t19 = CNS_INT int 0 | |
| /--* t18 int | |
| +--* t19 int | |
| N003 (???,???) [000020] -----+-N--- * CMP void | |
| N004 (???,???) [000021] -----+----- JCC void cond=SGE | |
| ------------ BB03 [0002] [008..013) -> BB04(1) (always), preds={BB01,BB02} succs={BB04} | |
| [000029] ----------- IL_OFFSET void INLRT @ 0x008[E-] | |
| N001 (???,???) [000005] -----+----- t5 = LCL_VAR int V01 arg1 | |
| /--* t5 int | |
| [000031] ----------- t31 = * PUTARG_REG int REG rdx | |
| N002 (???,???) [000022] H----+----- t22 = CNS_INT(h) ref 'You tried to access this vector at index: {0}' | |
| /--* t22 ref | |
| [000032] ----------- t32 = * PUTARG_REG ref REG rcx | |
| N001 (???,???) [000033] Hc--------- t33 = CNS_INT(h) long 0x7ff7f13342a0 ftn | |
| /--* t33 long | |
| N002 (???,???) [000034] nc--G------ t34 = * IND long REG NA | |
| /--* t31 int arg1 rdx | |
| +--* t32 ref arg0 rcx | |
| +--* t34 long control expr | |
| N003 (???,???) [000006] --CXG+----- * CALL void Program.EntryPoint:ThrowOutOfRangeException[int](System.String,int) | |
| ------------ BB04 [0003] [013..022) (return), preds={BB02,BB03} succs={} | |
| [000030] ----------- IL_OFFSET void INLRT @ 0x013[E-] | |
| N001 (???,???) [000008] -----+----- t8 = LCL_VAR byref V00 arg0 | |
| /--* t8 byref | |
| N002 (???,???) [000023] DA---+----- * STORE_LCL_VAR long V03 tmp1 | |
| N003 (???,???) [000024] -----+----- t24 = LCL_VAR long V03 tmp1 | |
| N005 (???,???) [000010] -c---+----- t10 = LCL_VAR int V01 arg1 | |
| /--* t10 int | |
| N006 (???,???) [000011] -----+----- t11 = * CAST long <- int | |
| /--* t24 long | |
| +--* t11 long | |
| N009 (???,???) [000015] -c---+----- t15 = * LEA(b+(i*4)+0) long | |
| /--* t15 long | |
| N010 (???,???) [000016] -A-XG+----- t16 = * IND float | |
| /--* t16 float | |
| N011 (???,???) [000017] -A-XG+----- * RETURN float | |
| ------------------------------------------------------------------------------------------------------------------- | |
| *************** In fgDebugCheckBBlist | |
| [deferred prior check failed -- skipping this check] | |
| *************** Starting PHASE Calculate stack level slots | |
| *************** Finishing PHASE Calculate stack level slots [no changes] | |
| *************** Starting PHASE Linear scan register alloc | |
| Clearing modified regs. | |
| buildIntervals ======== | |
| ----------------- | |
| LIVENESS: | |
| ----------------- | |
| BB01 | |
| use: {} | |
| def: {} | |
| in: {} | |
| out: {} | |
| BB02 | |
| use: {} | |
| def: {} | |
| in: {} | |
| out: {} | |
| BB03 | |
| use: {} | |
| def: {} | |
| in: {} | |
| out: {} | |
| BB04 | |
| use: {} | |
| def: {} | |
| in: {} | |
| out: {} | |
| FP callee save candidate vars: None | |
| floatVarCount = 0; hasLoops = false, singleExit = true | |
| TUPLE STYLE DUMP BEFORE LSRA | |
| Start LSRA Block Sequence: | |
| Current block: BB01 | |
| Current block: BB02 | |
| Current block: BB03 | |
| Current block: BB04 | |
| Final LSRA Block Sequence: | |
| BB01 ( 1 ) critical-out | |
| BB02 ( 1 ) critical-out | |
| BB03 ( 1 ) critical-in | |
| BB04 ( 1 ) critical-in | |
| BB01 [0000] [000..004) -> BB03(0.5),BB02(0.5) (cond), preds={} succs={BB02,BB03} | |
| ===== | |
| N000. IL_OFFSET INLRT @ 0x000[E-] | |
| N001. V01 MEM | |
| N002. CNS_INT 1 | |
| N003. CMP | |
| N004. JCC cond=SGT | |
| BB02 [0001] [004..008) -> BB04(0.5),BB03(0.5) (cond), preds={BB01} succs={BB03,BB04} | |
| ===== | |
| N000. IL_OFFSET INLRT @ 0x004[E-] | |
| N001. V01 MEM | |
| N002. CNS_INT 0 | |
| N003. CMP | |
| N004. JCC cond=SGE | |
| BB03 [0002] [008..013) -> BB04(1) (always), preds={BB01,BB02} succs={BB04} | |
| ===== | |
| N000. IL_OFFSET INLRT @ 0x008[E-] | |
| N001. t5 = V01 MEM | |
| N000. t31 = PUTARG_REG; t5 | |
| N002. t22 = CNS_INT(h) 'You tried to access this vector at index: {0}' | |
| N000. t32 = PUTARG_REG; t22 | |
| N001. CNS_INT(h) 0x7ff7f13342a0 ftn | |
| N002. IND | |
| N003. CALL ; t31,t32 | |
| BB04 [0003] [013..022) (return), preds={BB02,BB03} succs={} | |
| ===== | |
| N000. IL_OFFSET INLRT @ 0x013[E-] | |
| N001. t8 = V00 MEM | |
| N002. V03 MEM; t8 | |
| N003. t24 = V03 MEM | |
| N005. V01 MEM | |
| N006. t11 = CAST | |
| N009. t15 = LEA(b+(i*4)+0); t24,t11 | |
| N010. t16 = IND ; t15 | |
| N011. RETURN ; t16 | |
| buildIntervals second part ======== | |
| Arg V00 is live in reg rcx | |
| Arg V01 is live in reg rdx | |
| NEW BLOCK BB01 | |
| <RefPosition #0 @0 RefTypeBB BB01 regmask=[allMask] minReg=1 wt=100.00> | |
| DefList: { } | |
| N002 (???,???) [000027] ----------- * IL_OFFSET void INLRT @ 0x000[E-] REG NA | |
| DefList: { } | |
| N004 (???,???) [000000] -c---+----- * LCL_VAR int V01 arg1 NA REG NA | |
| Contained | |
| DefList: { } | |
| N006 (???,???) [000001] -c---+----- * CNS_INT int 1 REG NA | |
| Contained | |
| DefList: { } | |
| N008 (???,???) [000002] -----+-N--- * CMP void REG NA | |
| DefList: { } | |
| N010 (???,???) [000003] -----+----- * JCC void cond=SGT REG NA | |
| NEW BLOCK BB02 | |
| <RefPosition #1 @12 RefTypeBB BB02 regmask=[allMask] minReg=1 wt=100.00> | |
| DefList: { } | |
| N014 (???,???) [000028] ----------- * IL_OFFSET void INLRT @ 0x004[E-] REG NA | |
| DefList: { } | |
| N016 (???,???) [000018] -c---+----- * LCL_VAR int V01 arg1 NA REG NA | |
| Contained | |
| DefList: { } | |
| N018 (???,???) [000019] -c---+----- * CNS_INT int 0 REG NA | |
| Contained | |
| DefList: { } | |
| N020 (???,???) [000020] -----+-N--- * CMP void REG NA | |
| DefList: { } | |
| N022 (???,???) [000021] -----+----- * JCC void cond=SGE REG NA | |
| NEW BLOCK BB03 | |
| <RefPosition #2 @24 RefTypeBB BB03 regmask=[allMask] minReg=1 wt=100.00> | |
| DefList: { } | |
| N026 (???,???) [000029] ----------- * IL_OFFSET void INLRT @ 0x008[E-] REG NA | |
| DefList: { } | |
| N028 (???,???) [000005] -----+----- * LCL_VAR int V01 arg1 NA REG NA | |
| Interval 0: int RefPositions {} physReg:NA Preferences=[allIntButFP] Aversions=[allMask] | |
| <RefPosition #3 @29 RefTypeDef <Ivl:0> LCL_VAR BB03 regmask=[allIntButFP] minReg=1 wt=400.00> | |
| DefList: { N028.t5. LCL_VAR } | |
| N030 (???,???) [000031] ----------- * PUTARG_REG int REG rdx | |
| <RefPosition #4 @30 RefTypeFixedReg <Reg:rdx> BB03 regmask=[rdx] minReg=1 wt=100.00> | |
| <RefPosition #5 @30 RefTypeUse <Ivl:0> BB03 regmask=[rdx] minReg=1 last fixed wt=100.00> | |
| Interval 1: int RefPositions {} physReg:NA Preferences=[allIntButFP] Aversions=[allMask] | |
| <RefPosition #6 @31 RefTypeFixedReg <Reg:rdx> BB03 regmask=[rdx] minReg=1 wt=100.00> | |
| <RefPosition #7 @31 RefTypeDef <Ivl:1> PUTARG_REG BB03 regmask=[rdx] minReg=1 fixed wt=400.00> | |
| DefList: { N030.t31. PUTARG_REG } | |
| N032 (???,???) [000022] H----+----- * CNS_INT(h) ref 'You tried to access this vector at index: {0}' REG NA | |
| Interval 2: ref RefPositions {} physReg:NA Preferences=[allIntButFP] Aversions=[allMask] | |
| <RefPosition #8 @33 RefTypeDef <Ivl:2> CNS_INT BB03 regmask=[allIntButFP] minReg=1 wt=400.00> | |
| DefList: { N030.t31. PUTARG_REG; N032.t22. CNS_INT } | |
| N034 (???,???) [000032] ----------- * PUTARG_REG ref REG rcx | |
| <RefPosition #9 @34 RefTypeFixedReg <Reg:rcx> BB03 regmask=[rcx] minReg=1 wt=100.00> | |
| <RefPosition #10 @34 RefTypeUse <Ivl:2> BB03 regmask=[rcx] minReg=1 last fixed wt=100.00> | |
| Interval 3: ref RefPositions {} physReg:NA Preferences=[allIntButFP] Aversions=[allMask] | |
| <RefPosition #11 @35 RefTypeFixedReg <Reg:rcx> BB03 regmask=[rcx] minReg=1 wt=100.00> | |
| <RefPosition #12 @35 RefTypeDef <Ivl:3> PUTARG_REG BB03 regmask=[rcx] minReg=1 fixed wt=400.00> | |
| DefList: { N030.t31. PUTARG_REG; N034.t32. PUTARG_REG } | |
| N036 (???,???) [000033] Hc--------- * CNS_INT(h) long 0x7ff7f13342a0 ftn REG NA | |
| Contained | |
| DefList: { N030.t31. PUTARG_REG; N034.t32. PUTARG_REG } | |
| N038 (???,???) [000034] nc--G------ * IND long REG NA | |
| Contained | |
| DefList: { N030.t31. PUTARG_REG; N034.t32. PUTARG_REG } | |
| N040 (???,???) [000006] --CXG+----- * CALL void Program.EntryPoint:ThrowOutOfRangeException[int](System.String,int) REG NA | |
| <RefPosition #13 @40 RefTypeFixedReg <Reg:rdx> BB03 regmask=[rdx] minReg=1 wt=100.00> | |
| <RefPosition #14 @40 RefTypeUse <Ivl:1> BB03 regmask=[rdx] minReg=1 last fixed wt=100.00> | |
| <RefPosition #15 @40 RefTypeFixedReg <Reg:rcx> BB03 regmask=[rcx] minReg=1 wt=100.00> | |
| <RefPosition #16 @40 RefTypeUse <Ivl:3> BB03 regmask=[rcx] minReg=1 last fixed wt=100.00> | |
| <RefPosition #17 @41 RefTypeKill BB03 regmask=[rax rcx rdx r8-r11] minReg=1> | |
| NEW BLOCK BB04 | |
| <RefPosition #18 @42 RefTypeBB BB04 regmask=[allMask] minReg=1 wt=100.00> | |
| DefList: { } | |
| N044 (???,???) [000030] ----------- * IL_OFFSET void INLRT @ 0x013[E-] REG NA | |
| DefList: { } | |
| N046 (???,???) [000008] -----+----- * LCL_VAR byref V00 arg0 NA REG NA | |
| Interval 4: byref RefPositions {} physReg:NA Preferences=[allIntButFP] Aversions=[allMask] | |
| <RefPosition #19 @47 RefTypeDef <Ivl:4> LCL_VAR BB04 regmask=[allIntButFP] minReg=1 wt=400.00> | |
| DefList: { N046.t8. LCL_VAR } | |
| N048 (???,???) [000023] DA---+----- * STORE_LCL_VAR long V03 tmp1 NA REG NA | |
| <RefPosition #20 @48 RefTypeUse <Ivl:4> BB04 regmask=[allIntButFP] minReg=1 last wt=100.00> | |
| DefList: { } | |
| N050 (???,???) [000024] -----+----- * LCL_VAR long V03 tmp1 NA REG NA | |
| Interval 5: long RefPositions {} physReg:NA Preferences=[allIntButFP] Aversions=[allMask] | |
| <RefPosition #21 @51 RefTypeDef <Ivl:5> LCL_VAR BB04 regmask=[allIntButFP] minReg=1 wt=400.00> | |
| DefList: { N050.t24. LCL_VAR } | |
| N052 (???,???) [000010] -c---+----- * LCL_VAR int V01 arg1 NA REG NA | |
| Contained | |
| DefList: { N050.t24. LCL_VAR } | |
| N054 (???,???) [000011] -----+----- * CAST long <- int REG NA | |
| Interval 6: long RefPositions {} physReg:NA Preferences=[allIntButFP] Aversions=[allMask] | |
| <RefPosition #22 @55 RefTypeDef <Ivl:6> CAST BB04 regmask=[allIntButFP] minReg=1 wt=400.00> | |
| DefList: { N050.t24. LCL_VAR; N054.t11. CAST } | |
| N056 (???,???) [000015] -c---+----- * LEA(b+(i*4)+0) long REG NA | |
| Contained | |
| DefList: { N050.t24. LCL_VAR; N054.t11. CAST } | |
| N058 (???,???) [000016] -A-XG+----- * IND float REG NA | |
| <RefPosition #23 @58 RefTypeUse <Ivl:5> BB04 regmask=[allIntButFP] minReg=1 last wt=100.00> | |
| <RefPosition #24 @58 RefTypeUse <Ivl:6> BB04 regmask=[allIntButFP] minReg=1 last wt=100.00> | |
| Interval 7: float RefPositions {} physReg:NA Preferences=[allFloat] Aversions=[allMask] | |
| <RefPosition #25 @59 RefTypeDef <Ivl:7> IND BB04 regmask=[allFloat] minReg=1 wt=400.00> | |
| DefList: { N058.t16. IND } | |
| N060 (???,???) [000017] -A-XG+----- * RETURN float REG NA | |
| <RefPosition #26 @60 RefTypeFixedReg <Reg:mm0> BB04 regmask=[mm0] minReg=1 wt=100.00> | |
| <RefPosition #27 @60 RefTypeUse <Ivl:7> BB04 regmask=[mm0] minReg=1 last fixed wt=100.00> | |
| Linear scan intervals BEFORE VALIDATING INTERVALS: | |
| Interval 0: int RefPositions {#3@29 #5@30} physReg:NA Preferences=[rdx] Aversions=[allMask] | |
| Interval 1: int RefPositions {#7@31 #14@40} physReg:NA Preferences=[rdx] Aversions=[allMask] | |
| Interval 2: ref (constant) RefPositions {#8@33 #10@34} physReg:NA Preferences=[rcx] Aversions=[allMask] | |
| Interval 3: ref RefPositions {#12@35 #16@40} physReg:NA Preferences=[rcx] Aversions=[allMask] | |
| Interval 4: byref RefPositions {#19@47 #20@48} physReg:NA Preferences=[allIntButFP] Aversions=[allMask] | |
| Interval 5: long RefPositions {#21@51 #23@58} physReg:NA Preferences=[allIntButFP] Aversions=[allMask] | |
| Interval 6: long RefPositions {#22@55 #24@58} physReg:NA Preferences=[allIntButFP] Aversions=[allMask] | |
| Interval 7: float RefPositions {#25@59 #27@60} physReg:NA Preferences=[mm0] Aversions=[allMask] | |
| ------------ | |
| REFPOSITIONS BEFORE VALIDATING INTERVALS: | |
| ------------ | |
| <RefPosition #0 @0 RefTypeBB BB01 regmask=[allMask] minReg=1 wt=100.00> | |
| <RefPosition #1 @12 RefTypeBB BB02 regmask=[allMask] minReg=1 wt=100.00> | |
| <RefPosition #2 @24 RefTypeBB BB03 regmask=[allMask] minReg=1 wt=100.00> | |
| <RefPosition #3 @29 RefTypeDef <Ivl:0> LCL_VAR BB03 regmask=[rdx] minReg=1 wt=400.00> | |
| <RefPosition #4 @30 RefTypeFixedReg <Reg:rdx> BB03 regmask=[rdx] minReg=1 wt=100.00> | |
| <RefPosition #5 @30 RefTypeUse <Ivl:0> BB03 regmask=[rdx] minReg=1 last fixed wt=100.00> | |
| <RefPosition #6 @31 RefTypeFixedReg <Reg:rdx> BB03 regmask=[rdx] minReg=1 wt=100.00> | |
| <RefPosition #7 @31 RefTypeDef <Ivl:1> PUTARG_REG BB03 regmask=[rdx] minReg=1 fixed wt=400.00> | |
| <RefPosition #8 @33 RefTypeDef <Ivl:2> CNS_INT BB03 regmask=[rcx] minReg=1 wt=400.00> | |
| <RefPosition #9 @34 RefTypeFixedReg <Reg:rcx> BB03 regmask=[rcx] minReg=1 wt=100.00> | |
| <RefPosition #10 @34 RefTypeUse <Ivl:2> BB03 regmask=[rcx] minReg=1 last fixed wt=100.00> | |
| <RefPosition #11 @35 RefTypeFixedReg <Reg:rcx> BB03 regmask=[rcx] minReg=1 wt=100.00> | |
| <RefPosition #12 @35 RefTypeDef <Ivl:3> PUTARG_REG BB03 regmask=[rcx] minReg=1 fixed wt=400.00> | |
| <RefPosition #13 @40 RefTypeFixedReg <Reg:rdx> BB03 regmask=[rdx] minReg=1 wt=100.00> | |
| <RefPosition #14 @40 RefTypeUse <Ivl:1> BB03 regmask=[rdx] minReg=1 last fixed wt=100.00> | |
| <RefPosition #15 @40 RefTypeFixedReg <Reg:rcx> BB03 regmask=[rcx] minReg=1 wt=100.00> | |
| <RefPosition #16 @40 RefTypeUse <Ivl:3> BB03 regmask=[rcx] minReg=1 last fixed wt=100.00> | |
| <RefPosition #17 @41 RefTypeKill BB03 regmask=[rax rcx rdx r8-r11] minReg=1> | |
| <RefPosition #18 @42 RefTypeBB BB04 regmask=[allMask] minReg=1 wt=100.00> | |
| <RefPosition #19 @47 RefTypeDef <Ivl:4> LCL_VAR BB04 regmask=[allIntButFP] minReg=1 wt=400.00> | |
| <RefPosition #20 @48 RefTypeUse <Ivl:4> BB04 regmask=[allIntButFP] minReg=1 last wt=100.00> | |
| <RefPosition #21 @51 RefTypeDef <Ivl:5> LCL_VAR BB04 regmask=[allIntButFP] minReg=1 wt=400.00> | |
| <RefPosition #22 @55 RefTypeDef <Ivl:6> CAST BB04 regmask=[allIntButFP] minReg=1 wt=400.00> | |
| <RefPosition #23 @58 RefTypeUse <Ivl:5> BB04 regmask=[allIntButFP] minReg=1 last wt=100.00> | |
| <RefPosition #24 @58 RefTypeUse <Ivl:6> BB04 regmask=[allIntButFP] minReg=1 last wt=100.00> | |
| <RefPosition #25 @59 RefTypeDef <Ivl:7> IND BB04 regmask=[mm0] minReg=1 wt=400.00> | |
| <RefPosition #26 @60 RefTypeFixedReg <Reg:mm0> BB04 regmask=[mm0] minReg=1 wt=100.00> | |
| <RefPosition #27 @60 RefTypeUse <Ivl:7> BB04 regmask=[mm0] minReg=1 last fixed wt=100.00> | |
| TUPLE STYLE DUMP WITH REF POSITIONS | |
| Incoming Parameters: | |
| BB01 [0000] [000..004) -> BB03(0.5),BB02(0.5) (cond), preds={} succs={BB02,BB03} | |
| ===== | |
| N002. IL_OFFSET INLRT @ 0x000[E-] | |
| N004. V01 MEM | |
| N006. CNS_INT 1 | |
| N008. CMP | |
| N010. JCC cond=SGT | |
| BB02 [0001] [004..008) -> BB04(0.5),BB03(0.5) (cond), preds={BB01} succs={BB03,BB04} | |
| ===== | |
| N014. IL_OFFSET INLRT @ 0x004[E-] | |
| N016. V01 MEM | |
| N018. CNS_INT 0 | |
| N020. CMP | |
| N022. JCC cond=SGE | |
| BB03 [0002] [008..013) -> BB04(1) (always), preds={BB01,BB02} succs={BB04} | |
| ===== | |
| N026. IL_OFFSET INLRT @ 0x008[E-] | |
| N028. V01 MEM | |
| Def:<I0>(#3) | |
| N030. PUTARG_REG | |
| Use:<I0>(#5) Fixed:rdx(#4) * | |
| Def:<I1>(#7) rdx | |
| N032. CNS_INT(h) 'You tried to access this vector at index: {0}' | |
| Def:<I2>(#8) | |
| N034. PUTARG_REG | |
| Use:<I2>(#10) Fixed:rcx(#9) * | |
| Def:<I3>(#12) rcx | |
| N036. CNS_INT(h) 0x7ff7f13342a0 ftn | |
| N038. IND | |
| N040. CALL | |
| Use:<I1>(#14) Fixed:rdx(#13) * | |
| Use:<I3>(#16) Fixed:rcx(#15) * | |
| Kill: [rax rcx rdx r8-r11] | |
| BB04 [0003] [013..022) (return), preds={BB02,BB03} succs={} | |
| ===== | |
| N044. IL_OFFSET INLRT @ 0x013[E-] | |
| N046. V00 MEM | |
| Def:<I4>(#19) | |
| N048. V03 MEM | |
| Use:<I4>(#20) * | |
| N050. V03 MEM | |
| Def:<I5>(#21) | |
| N052. V01 MEM | |
| N054. CAST | |
| Def:<I6>(#22) | |
| N056. LEA(b+(i*4)+0) | |
| N058. IND | |
| Use:<I5>(#23) * | |
| Use:<I6>(#24) * | |
| Def:<I7>(#25) | |
| N060. RETURN | |
| Use:<I7>(#27) Fixed:mm0(#26) * | |
| Linear scan intervals after buildIntervals: | |
| Interval 0: int RefPositions {#3@29 #5@30} physReg:NA Preferences=[rdx] Aversions=[allMask] | |
| Interval 1: int RefPositions {#7@31 #14@40} physReg:NA Preferences=[rdx] Aversions=[allMask] | |
| Interval 2: ref (constant) RefPositions {#8@33 #10@34} physReg:NA Preferences=[rcx] Aversions=[allMask] | |
| Interval 3: ref RefPositions {#12@35 #16@40} physReg:NA Preferences=[rcx] Aversions=[allMask] | |
| Interval 4: byref RefPositions {#19@47 #20@48} physReg:NA Preferences=[allIntButFP] Aversions=[allMask] | |
| Interval 5: long RefPositions {#21@51 #23@58} physReg:NA Preferences=[allIntButFP] Aversions=[allMask] | |
| Interval 6: long RefPositions {#22@55 #24@58} physReg:NA Preferences=[allIntButFP] Aversions=[allMask] | |
| Interval 7: float RefPositions {#25@59 #27@60} physReg:NA Preferences=[mm0] Aversions=[allMask] | |
| *************** In LinearScan::allocateRegistersMinimal() | |
| Linear scan intervals before allocateRegistersMinimal: | |
| Interval 0: int RefPositions {#3@29 #5@30} physReg:NA Preferences=[rdx] Aversions=[allMask] | |
| Interval 1: int RefPositions {#7@31 #14@40} physReg:NA Preferences=[rdx] Aversions=[allMask] | |
| Interval 2: ref (constant) RefPositions {#8@33 #10@34} physReg:NA Preferences=[rcx] Aversions=[allMask] | |
| Interval 3: ref RefPositions {#12@35 #16@40} physReg:NA Preferences=[rcx] Aversions=[allMask] | |
| Interval 4: byref RefPositions {#19@47 #20@48} physReg:NA Preferences=[allIntButFP] Aversions=[allMask] | |
| Interval 5: long RefPositions {#21@51 #23@58} physReg:NA Preferences=[allIntButFP] Aversions=[allMask] | |
| Interval 6: long RefPositions {#22@55 #24@58} physReg:NA Preferences=[allIntButFP] Aversions=[allMask] | |
| Interval 7: float RefPositions {#25@59 #27@60} physReg:NA Preferences=[mm0] Aversions=[allMask] | |
| ------------ | |
| REFPOSITIONS BEFORE ALLOCATION: | |
| ------------ | |
| <RefPosition #0 @0 RefTypeBB BB01 regmask=[allMask] minReg=1 wt=100.00> | |
| <RefPosition #1 @12 RefTypeBB BB02 regmask=[allMask] minReg=1 wt=100.00> | |
| <RefPosition #2 @24 RefTypeBB BB03 regmask=[allMask] minReg=1 wt=100.00> | |
| <RefPosition #3 @29 RefTypeDef <Ivl:0> LCL_VAR BB03 regmask=[rdx] minReg=1 wt=400.00> | |
| <RefPosition #4 @30 RefTypeFixedReg <Reg:rdx> BB03 regmask=[rdx] minReg=1 wt=100.00> | |
| <RefPosition #5 @30 RefTypeUse <Ivl:0> BB03 regmask=[rdx] minReg=1 last fixed wt=100.00> | |
| <RefPosition #6 @31 RefTypeFixedReg <Reg:rdx> BB03 regmask=[rdx] minReg=1 wt=100.00> | |
| <RefPosition #7 @31 RefTypeDef <Ivl:1> PUTARG_REG BB03 regmask=[rdx] minReg=1 fixed wt=400.00> | |
| <RefPosition #8 @33 RefTypeDef <Ivl:2> CNS_INT BB03 regmask=[rcx] minReg=1 wt=400.00> | |
| <RefPosition #9 @34 RefTypeFixedReg <Reg:rcx> BB03 regmask=[rcx] minReg=1 wt=100.00> | |
| <RefPosition #10 @34 RefTypeUse <Ivl:2> BB03 regmask=[rcx] minReg=1 last fixed wt=100.00> | |
| <RefPosition #11 @35 RefTypeFixedReg <Reg:rcx> BB03 regmask=[rcx] minReg=1 wt=100.00> | |
| <RefPosition #12 @35 RefTypeDef <Ivl:3> PUTARG_REG BB03 regmask=[rcx] minReg=1 fixed wt=400.00> | |
| <RefPosition #13 @40 RefTypeFixedReg <Reg:rdx> BB03 regmask=[rdx] minReg=1 wt=100.00> | |
| <RefPosition #14 @40 RefTypeUse <Ivl:1> BB03 regmask=[rdx] minReg=1 last fixed wt=100.00> | |
| <RefPosition #15 @40 RefTypeFixedReg <Reg:rcx> BB03 regmask=[rcx] minReg=1 wt=100.00> | |
| <RefPosition #16 @40 RefTypeUse <Ivl:3> BB03 regmask=[rcx] minReg=1 last fixed wt=100.00> | |
| <RefPosition #17 @41 RefTypeKill BB03 regmask=[rax rcx rdx r8-r11] minReg=1> | |
| <RefPosition #18 @42 RefTypeBB BB04 regmask=[allMask] minReg=1 wt=100.00> | |
| <RefPosition #19 @47 RefTypeDef <Ivl:4> LCL_VAR BB04 regmask=[allIntButFP] minReg=1 wt=400.00> | |
| <RefPosition #20 @48 RefTypeUse <Ivl:4> BB04 regmask=[allIntButFP] minReg=1 last wt=100.00> | |
| <RefPosition #21 @51 RefTypeDef <Ivl:5> LCL_VAR BB04 regmask=[allIntButFP] minReg=1 wt=400.00> | |
| <RefPosition #22 @55 RefTypeDef <Ivl:6> CAST BB04 regmask=[allIntButFP] minReg=1 wt=400.00> | |
| <RefPosition #23 @58 RefTypeUse <Ivl:5> BB04 regmask=[allIntButFP] minReg=1 last wt=100.00> | |
| <RefPosition #24 @58 RefTypeUse <Ivl:6> BB04 regmask=[allIntButFP] minReg=1 last wt=100.00> | |
| <RefPosition #25 @59 RefTypeDef <Ivl:7> IND BB04 regmask=[mm0] minReg=1 wt=400.00> | |
| <RefPosition #26 @60 RefTypeFixedReg <Reg:mm0> BB04 regmask=[mm0] minReg=1 wt=100.00> | |
| <RefPosition #27 @60 RefTypeUse <Ivl:7> BB04 regmask=[mm0] minReg=1 last fixed wt=100.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 LocRP# Name Type Action Reg |rax |rcx |rdx |rbx |rbp |rsi |rdi |r8 |r9 |mm0 |mm1 |mm2 |mm6 |mm7 | | |
| ------------------------------------------+----+----+----+----+----+----+----+----+----+----+----+----+----+----+ | |
| | | | | | | | | | | | | | | | | |
| 0.#0 BB1 PredBB0 | | | | | | | | | | | | | | | | |
| ------------------------------------------+----+----+----+----+----+----+----+----+----+----+----+----+----+----+ | |
| TreeID LocRP# Name Type Action Reg |rax |rcx |rdx |rbx |rbp |rsi |rdi |r8 |r9 |mm0 |mm1 |mm2 |mm6 |mm7 | | |
| ------------------------------------------+----+----+----+----+----+----+----+----+----+----+----+----+----+----+ | |
| 12.#1 BB2 PredBB0 | | | | | | | | | | | | | | | | |
| ------------------------------------------+----+----+----+----+----+----+----+----+----+----+----+----+----+----+ | |
| TreeID LocRP# Name Type Action Reg |rax |rcx |rdx |rbx |rbp |rsi |rdi |r8 |r9 |mm0 |mm1 |mm2 |mm6 |mm7 | | |
| ------------------------------------------+----+----+----+----+----+----+----+----+----+----+----+----+----+----+ | |
| 24.#2 BB3 PredBB0 | | | | | | | | | | | | | | | | |
| [000005] 29.#3 I0 Def Alloc rdx | | |I0 a| | | | | | | | | | | | | |
| [000031] 30.#4 rdx Fixd Keep rdx | | |I0 a| | | | | | | | | | | | | |
| 30.#5 I0 Use * Keep rdx | | |I0 a| | | | | | | | | | | | | |
| 31.#6 rdx Fixd Keep rdx | | | | | | | | | | | | | | | | |
| 31.#7 I1 Def Alloc rdx | | |I1 a| | | | | | | | | | | | | |
| [000022] 33.#8 C2 Def Alloc rcx | |C2 a|I1 a| | | | | | | | | | | | | |
| [000032] 34.#9 rcx Fixd Keep rcx | |C2 a|I1 a| | | | | | | | | | | | | |
| 34.#10 C2 Use * Keep rcx | |C2 a|I1 a| | | | | | | | | | | | | |
| 35.#11 rcx Fixd Keep rcx | | |I1 a| | | | | | | | | | | | | |
| 35.#12 I3 Def Alloc rcx | |I3 a|I1 a| | | | | | | | | | | | | |
| [000006] 40.#13 rdx Fixd Keep rdx | |I3 a|I1 a| | | | | | | | | | | | | |
| 40.#14 I1 Use * Keep rdx | |I3 a|I1 a| | | | | | | | | | | | | |
| 40.#15 rcx Fixd Keep rcx | |I3 a|I1 a| | | | | | | | | | | | | |
| 40.#16 I3 Use * Keep rcx | |I3 a|I1 a| | | | | | | | | | | | | |
| 41.#17 Kill None [rax rcx rdx r8-r11] | |
| | | | | | | | | | | | | | | | | |
| ------------------------------------------+----+----+----+----+----+----+----+----+----+----+----+----+----+----+ | |
| TreeID LocRP# Name Type Action Reg |rax |rcx |rdx |rbx |rbp |rsi |rdi |r8 |r9 |mm0 |mm1 |mm2 |mm6 |mm7 | | |
| ------------------------------------------+----+----+----+----+----+----+----+----+----+----+----+----+----+----+ | |
| 42.#18 BB4 PredBB0 | | | | | | | | | | | | | | | | |
| [000008] 47.#19 I4 Def ORDER(A) rax |I4 a| | | | | | | | | | | | | | | |
| [000023] 48.#20 I4 Use * Keep rax |I4 a| | | | | | | | | | | | | | | |
| [000024] 51.#21 I5 Def ORDER(A) rax |I5 a| | | | | | | | | | | | | | | |
| [000011] 55.#22 I6 Def ORDER(A) rcx |I5 a|I6 a| | | | | | | | | | | | | | |
| [000016] 58.#23 I5 Use * Keep rax |I5 a|I6 a| | | | | | | | | | | | | | |
| 58.#24 I6 Use * Keep rcx |I5 a|I6 a| | | | | | | | | | | | | | |
| 59.#25 I7 Def Alloc mm0 | | | | | | | | | |I7 a| | | | | | |
| [000017] 60.#26 mm0 Fixd Keep mm0 | | | | | | | | | |I7 a| | | | | | |
| 60.#27 I7 Use * Keep mm0 | | | | | | | | | | | | | | | | |
| ------------ | |
| REFPOSITIONS AFTER ALLOCATION: | |
| ------------ | |
| <RefPosition #0 @0 RefTypeBB BB01 regmask=[allMask] minReg=1 wt=100.00> | |
| <RefPosition #1 @12 RefTypeBB BB02 regmask=[allMask] minReg=1 wt=100.00> | |
| <RefPosition #2 @24 RefTypeBB BB03 regmask=[allMask] minReg=1 wt=100.00> | |
| <RefPosition #3 @29 RefTypeDef <Ivl:0> LCL_VAR BB03 regmask=[rdx] minReg=1 wt=400.00> | |
| <RefPosition #4 @30 RefTypeFixedReg <Reg:rdx> BB03 regmask=[rdx] minReg=1 wt=100.00> | |
| <RefPosition #5 @30 RefTypeUse <Ivl:0> BB03 regmask=[rdx] minReg=1 last fixed wt=100.00> | |
| <RefPosition #6 @31 RefTypeFixedReg <Reg:rdx> BB03 regmask=[rdx] minReg=1 wt=100.00> | |
| <RefPosition #7 @31 RefTypeDef <Ivl:1> PUTARG_REG BB03 regmask=[rdx] minReg=1 fixed wt=400.00> | |
| <RefPosition #8 @33 RefTypeDef <Ivl:2> CNS_INT BB03 regmask=[rcx] minReg=1 wt=400.00> | |
| <RefPosition #9 @34 RefTypeFixedReg <Reg:rcx> BB03 regmask=[rcx] minReg=1 wt=100.00> | |
| <RefPosition #10 @34 RefTypeUse <Ivl:2> BB03 regmask=[rcx] minReg=1 last fixed wt=100.00> | |
| <RefPosition #11 @35 RefTypeFixedReg <Reg:rcx> BB03 regmask=[rcx] minReg=1 wt=100.00> | |
| <RefPosition #12 @35 RefTypeDef <Ivl:3> PUTARG_REG BB03 regmask=[rcx] minReg=1 fixed wt=400.00> | |
| <RefPosition #13 @40 RefTypeFixedReg <Reg:rdx> BB03 regmask=[rdx] minReg=1 wt=100.00> | |
| <RefPosition #14 @40 RefTypeUse <Ivl:1> BB03 regmask=[rdx] minReg=1 last fixed wt=100.00> | |
| <RefPosition #15 @40 RefTypeFixedReg <Reg:rcx> BB03 regmask=[rcx] minReg=1 wt=100.00> | |
| <RefPosition #16 @40 RefTypeUse <Ivl:3> BB03 regmask=[rcx] minReg=1 last fixed wt=100.00> | |
| <RefPosition #17 @41 RefTypeKill BB03 regmask=[rax rcx rdx r8-r11] minReg=1> | |
| <RefPosition #18 @42 RefTypeBB BB04 regmask=[allMask] minReg=1 wt=100.00> | |
| <RefPosition #19 @47 RefTypeDef <Ivl:4> LCL_VAR BB04 regmask=[rax] minReg=1 wt=400.00> | |
| <RefPosition #20 @48 RefTypeUse <Ivl:4> BB04 regmask=[rax] minReg=1 last wt=100.00> | |
| <RefPosition #21 @51 RefTypeDef <Ivl:5> LCL_VAR BB04 regmask=[rax] minReg=1 wt=400.00> | |
| <RefPosition #22 @55 RefTypeDef <Ivl:6> CAST BB04 regmask=[rcx] minReg=1 wt=400.00> | |
| <RefPosition #23 @58 RefTypeUse <Ivl:5> BB04 regmask=[rax] minReg=1 last wt=100.00> | |
| <RefPosition #24 @58 RefTypeUse <Ivl:6> BB04 regmask=[rcx] minReg=1 last wt=100.00> | |
| <RefPosition #25 @59 RefTypeDef <Ivl:7> IND BB04 regmask=[mm0] minReg=1 wt=400.00> | |
| <RefPosition #26 @60 RefTypeFixedReg <Reg:mm0> BB04 regmask=[mm0] minReg=1 wt=100.00> | |
| <RefPosition #27 @60 RefTypeUse <Ivl:7> BB04 regmask=[mm0] minReg=1 last fixed wt=100.00> | |
| Active intervals at end of allocation: | |
| Trees after linear scan register allocator (LSRA) | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BB01 [0000] 1 1 [000..004)-> BB03(0.5),BB02(0.5) ( cond ) i LIR | |
| BB02 [0001] 1 BB01 1 [004..008)-> BB04(0.5),BB03(0.5) ( cond ) i LIR | |
| BB03 [0002] 2 BB01,BB02 1 [008..013)-> BB04(1) (always) i LIR hascall gcsafe | |
| BB04 [0003] 2 BB02,BB03 1 [013..022) (return) i LIR | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| ------------ BB01 [0000] [000..004) -> BB03(0.5),BB02(0.5) (cond), preds={} succs={BB02,BB03} | |
| N002 (???,???) [000027] ----------- IL_OFFSET void INLRT @ 0x000[E-] REG NA | |
| N004 (???,???) [000000] -c---+----- t0 = LCL_VAR int V01 arg1 NA REG NA | |
| N006 (???,???) [000001] -c---+----- t1 = CNS_INT int 1 REG NA | |
| /--* t0 int | |
| +--* t1 int | |
| N008 (???,???) [000002] -----+-N--- * CMP void REG NA | |
| N010 (???,???) [000003] -----+----- JCC void cond=SGT REG NA | |
| ------------ BB02 [0001] [004..008) -> BB04(0.5),BB03(0.5) (cond), preds={BB01} succs={BB03,BB04} | |
| N014 (???,???) [000028] ----------- IL_OFFSET void INLRT @ 0x004[E-] REG NA | |
| N016 (???,???) [000018] -c---+----- t18 = LCL_VAR int V01 arg1 NA REG NA | |
| N018 (???,???) [000019] -c---+----- t19 = CNS_INT int 0 REG NA | |
| /--* t18 int | |
| +--* t19 int | |
| N020 (???,???) [000020] -----+-N--- * CMP void REG NA | |
| N022 (???,???) [000021] -----+----- JCC void cond=SGE REG NA | |
| ------------ BB03 [0002] [008..013) -> BB04(1) (always), preds={BB01,BB02} succs={BB04} | |
| N026 (???,???) [000029] ----------- IL_OFFSET void INLRT @ 0x008[E-] REG NA | |
| N028 (???,???) [000005] -----+----- t5 = LCL_VAR int V01 arg1 rdx REG rdx | |
| /--* t5 int | |
| N030 (???,???) [000031] ----------- t31 = * PUTARG_REG int REG rdx | |
| N032 (???,???) [000022] H----+----- t22 = CNS_INT(h) ref 'You tried to access this vector at index: {0}' REG rcx | |
| /--* t22 ref | |
| N034 (???,???) [000032] ----------- t32 = * PUTARG_REG ref REG rcx | |
| N036 (???,???) [000033] Hc--------- t33 = CNS_INT(h) long 0x7ff7f13342a0 ftn REG NA | |
| /--* t33 long | |
| N038 (???,???) [000034] nc--G------ t34 = * IND long REG NA | |
| /--* t31 int arg1 rdx | |
| +--* t32 ref arg0 rcx | |
| +--* t34 long control expr | |
| N040 (???,???) [000006] --CXG+----- * CALL void Program.EntryPoint:ThrowOutOfRangeException[int](System.String,int) REG NA | |
| ------------ BB04 [0003] [013..022) (return), preds={BB02,BB03} succs={} | |
| N044 (???,???) [000030] ----------- IL_OFFSET void INLRT @ 0x013[E-] REG NA | |
| N046 (???,???) [000008] -----+----- t8 = LCL_VAR byref V00 arg0 rax REG rax | |
| /--* t8 byref | |
| N048 (???,???) [000023] DA---+----- * STORE_LCL_VAR long V03 tmp1 NA REG NA | |
| N050 (???,???) [000024] -----+----- t24 = LCL_VAR long V03 tmp1 rax REG rax | |
| N052 (???,???) [000010] -c---+----- t10 = LCL_VAR int V01 arg1 NA REG NA | |
| /--* t10 int | |
| N054 (???,???) [000011] -----+----- t11 = * CAST long <- int REG rcx | |
| /--* t24 long | |
| +--* t11 long | |
| N056 (???,???) [000015] -c---+----- t15 = * LEA(b+(i*4)+0) long REG NA | |
| /--* t15 long | |
| N058 (???,???) [000016] -A-XG+----- t16 = * IND float REG mm0 | |
| /--* t16 float | |
| N060 (???,???) [000017] -A-XG+----- * RETURN float REG NA | |
| ------------------------------------------------------------------------------------------------------------------- | |
| Final allocation | |
| ------------------------------------------+----+----+----+----+----+----+----+----+----+----+----+----+----+----+ | |
| TreeID LocRP# Name Type Action Reg |rax |rcx |rdx |rbx |rbp |rsi |rdi |r8 |r9 |mm0 |mm1 |mm2 |mm6 |mm7 | | |
| ------------------------------------------+----+----+----+----+----+----+----+----+----+----+----+----+----+----+ | |
| 0.#0 BB1 PredBB0 | | | | | | | | | | | | | | | | |
| ------------------------------------------+----+----+----+----+----+----+----+----+----+----+----+----+----+----+ | |
| TreeID LocRP# Name Type Action Reg |rax |rcx |rdx |rbx |rbp |rsi |rdi |r8 |r9 |mm0 |mm1 |mm2 |mm6 |mm7 | | |
| ------------------------------------------+----+----+----+----+----+----+----+----+----+----+----+----+----+----+ | |
| 12.#1 BB2 PredBB0 | | | | | | | | | | | | | | | | |
| ------------------------------------------+----+----+----+----+----+----+----+----+----+----+----+----+----+----+ | |
| TreeID LocRP# Name Type Action Reg |rax |rcx |rdx |rbx |rbp |rsi |rdi |r8 |r9 |mm0 |mm1 |mm2 |mm6 |mm7 | | |
| ------------------------------------------+----+----+----+----+----+----+----+----+----+----+----+----+----+----+ | |
| 24.#2 BB3 PredBB0 | | | | | | | | | | | | | | | | |
| [000005] 29.#3 I0 Def Alloc rdx | | |I0 a| | | | | | | | | | | | | |
| [000031] 30.#4 rdx Fixd Keep rdx | | |I0 a| | | | | | | | | | | | | |
| 30.#5 I0 Use * Keep rdx | | |I0 i| | | | | | | | | | | | | |
| 31.#6 rdx Fixd Keep rdx | | | | | | | | | | | | | | | | |
| 31.#7 I1 Def Alloc rdx | | |I1 a| | | | | | | | | | | | | |
| [000022] 33.#8 C2 Def Alloc rcx | |C2 a|I1 a| | | | | | | | | | | | | |
| [000032] 34.#9 rcx Fixd Keep rcx | |C2 a|I1 a| | | | | | | | | | | | | |
| 34.#10 C2 Use * Keep rcx | |C2 i|I1 a| | | | | | | | | | | | | |
| 35.#11 rcx Fixd Keep rcx | | |I1 a| | | | | | | | | | | | | |
| 35.#12 I3 Def Alloc rcx | |I3 a|I1 a| | | | | | | | | | | | | |
| [000006] 40.#13 rdx Fixd Keep rdx | |I3 a|I1 a| | | | | | | | | | | | | |
| 40.#14 I1 Use * Keep rdx | |I3 a|I1 i| | | | | | | | | | | | | |
| 40.#15 rcx Fixd Keep rcx | |I3 a| | | | | | | | | | | | | | |
| 40.#16 I3 Use * Keep rcx | |I3 i| | | | | | | | | | | | | | |
| 41.#17 Kill None [rax rcx rdx r8-r11] | |
| | | | | | | | | | | | | | | | | |
| ------------------------------------------+----+----+----+----+----+----+----+----+----+----+----+----+----+----+ | |
| TreeID LocRP# Name Type Action Reg |rax |rcx |rdx |rbx |rbp |rsi |rdi |r8 |r9 |mm0 |mm1 |mm2 |mm6 |mm7 | | |
| ------------------------------------------+----+----+----+----+----+----+----+----+----+----+----+----+----+----+ | |
| 42.#18 BB4 PredBB0 | | | | | | | | | | | | | | | | |
| [000008] 47.#19 I4 Def Alloc rax |I4 a| | | | | | | | | | | | | | | |
| [000023] 48.#20 I4 Use * Keep rax |I4 i| | | | | | | | | | | | | | | |
| [000024] 51.#21 I5 Def Alloc rax |I5 a| | | | | | | | | | | | | | | |
| [000011] 55.#22 I6 Def Alloc rcx |I5 a|I6 a| | | | | | | | | | | | | | |
| [000016] 58.#23 I5 Use * Keep rax |I5 i|I6 a| | | | | | | | | | | | | | |
| 58.#24 I6 Use * Keep rcx | |I6 i| | | | | | | | | | | | | | |
| 59.#25 I7 Def Alloc mm0 | | | | | | | | | |I7 a| | | | | | |
| [000017] 60.#26 mm0 Fixd Keep mm0 | | | | | | | | | |I7 a| | | | | | |
| 60.#27 I7 Use * Keep mm0 | | | | | | | | | |I7 i| | | | | | |
| Recording the maximum number of concurrent spills: | |
| ---------- | |
| LSRA Stats | |
| ---------- | |
| Register selection order: ABCDEFGHIJKLMNOPQ | |
| Total Tracked Vars: 0 | |
| Total Reg Cand Vars: 0 | |
| Total number of Intervals: 7 | |
| Total number of RefPositions: 27 | |
| Total Number of spill temps created: 0 | |
| .......... | |
| BB04 [ 100.00]: REG_ORDER = 3 | |
| .......... | |
| 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 REG_ORDER [#13] : 3 Weighted: 300.000000 | |
| TUPLE STYLE DUMP WITH REGISTER ASSIGNMENTS | |
| Incoming Parameters: | |
| BB01 [0000] [000..004) -> BB03(0.5),BB02(0.5) (cond), preds={} succs={BB02,BB03} | |
| ===== | |
| N002. IL_OFFSET INLRT @ 0x000[E-] | |
| N004. V01 MEM | |
| N006. CNS_INT 1 | |
| N008. CMP | |
| N010. JCC cond=SGT | |
| BB02 [0001] [004..008) -> BB04(0.5),BB03(0.5) (cond), preds={BB01} succs={BB03,BB04} | |
| ===== | |
| N014. IL_OFFSET INLRT @ 0x004[E-] | |
| N016. V01 MEM | |
| N018. CNS_INT 0 | |
| N020. CMP | |
| N022. JCC cond=SGE | |
| BB03 [0002] [008..013) -> BB04(1) (always), preds={BB01,BB02} succs={BB04} | |
| ===== | |
| N026. IL_OFFSET INLRT @ 0x008[E-] | |
| N028. rdx = V01 MEM | |
| N030. rdx = PUTARG_REG; rdx | |
| N032. rcx = CNS_INT(h) 'You tried to access this vector at index: {0}' | |
| N034. rcx = PUTARG_REG; rcx | |
| N036. CNS_INT(h) 0x7ff7f13342a0 ftn | |
| N038. IND | |
| N040. CALL ; rdx,rcx | |
| BB04 [0003] [013..022) (return), preds={BB02,BB03} succs={} | |
| ===== | |
| N044. IL_OFFSET INLRT @ 0x013[E-] | |
| N046. rax = V00 MEM | |
| N048. V03 MEM; rax | |
| N050. rax = V03 MEM | |
| N052. V01 MEM | |
| N054. rcx = CAST | |
| N056. STK = LEA(b+(i*4)+0); rax,rcx | |
| N058. mm0 = IND ; STK | |
| N060. RETURN ; mm0 | |
| *************** Finishing PHASE Linear scan register alloc | |
| Trees after Linear scan register alloc | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BB01 [0000] 1 1 [000..004)-> BB03(0.5),BB02(0.5) ( cond ) i LIR | |
| BB02 [0001] 1 BB01 1 [004..008)-> BB04(0.5),BB03(0.5) ( cond ) i LIR | |
| BB03 [0002] 2 BB01,BB02 1 [008..013)-> BB04(1) (always) i LIR hascall gcsafe | |
| BB04 [0003] 2 BB02,BB03 1 [013..022) (return) i LIR | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| ------------ BB01 [0000] [000..004) -> BB03(0.5),BB02(0.5) (cond), preds={} succs={BB02,BB03} | |
| N002 (???,???) [000027] ----------- IL_OFFSET void INLRT @ 0x000[E-] REG NA | |
| N004 (???,???) [000000] -c---+----- t0 = LCL_VAR int V01 arg1 NA REG NA | |
| N006 (???,???) [000001] -c---+----- t1 = CNS_INT int 1 REG NA | |
| /--* t0 int | |
| +--* t1 int | |
| N008 (???,???) [000002] -----+-N--- * CMP void REG NA | |
| N010 (???,???) [000003] -----+----- JCC void cond=SGT REG NA | |
| ------------ BB02 [0001] [004..008) -> BB04(0.5),BB03(0.5) (cond), preds={BB01} succs={BB03,BB04} | |
| N014 (???,???) [000028] ----------- IL_OFFSET void INLRT @ 0x004[E-] REG NA | |
| N016 (???,???) [000018] -c---+----- t18 = LCL_VAR int V01 arg1 NA REG NA | |
| N018 (???,???) [000019] -c---+----- t19 = CNS_INT int 0 REG NA | |
| /--* t18 int | |
| +--* t19 int | |
| N020 (???,???) [000020] -----+-N--- * CMP void REG NA | |
| N022 (???,???) [000021] -----+----- JCC void cond=SGE REG NA | |
| ------------ BB03 [0002] [008..013) -> BB04(1) (always), preds={BB01,BB02} succs={BB04} | |
| N026 (???,???) [000029] ----------- IL_OFFSET void INLRT @ 0x008[E-] REG NA | |
| N028 (???,???) [000005] -----+----- t5 = LCL_VAR int V01 arg1 rdx REG rdx | |
| /--* t5 int | |
| N030 (???,???) [000031] ----------- t31 = * PUTARG_REG int REG rdx | |
| N032 (???,???) [000022] H----+----- t22 = CNS_INT(h) ref 'You tried to access this vector at index: {0}' REG rcx | |
| /--* t22 ref | |
| N034 (???,???) [000032] ----------- t32 = * PUTARG_REG ref REG rcx | |
| N036 (???,???) [000033] Hc--------- t33 = CNS_INT(h) long 0x7ff7f13342a0 ftn REG NA | |
| /--* t33 long | |
| N038 (???,???) [000034] nc--G------ t34 = * IND long REG NA | |
| /--* t31 int arg1 rdx | |
| +--* t32 ref arg0 rcx | |
| +--* t34 long control expr | |
| N040 (???,???) [000006] --CXG+----- * CALL void Program.EntryPoint:ThrowOutOfRangeException[int](System.String,int) REG NA | |
| ------------ BB04 [0003] [013..022) (return), preds={BB02,BB03} succs={} | |
| N044 (???,???) [000030] ----------- IL_OFFSET void INLRT @ 0x013[E-] REG NA | |
| N046 (???,???) [000008] -----+----- t8 = LCL_VAR byref V00 arg0 rax REG rax | |
| /--* t8 byref | |
| N048 (???,???) [000023] DA---+----- * STORE_LCL_VAR long V03 tmp1 NA REG NA | |
| N050 (???,???) [000024] -----+----- t24 = LCL_VAR long V03 tmp1 rax REG rax | |
| N052 (???,???) [000010] -c---+----- t10 = LCL_VAR int V01 arg1 NA REG NA | |
| /--* t10 int | |
| N054 (???,???) [000011] -----+----- t11 = * CAST long <- int REG rcx | |
| /--* t24 long | |
| +--* t11 long | |
| N056 (???,???) [000015] -c---+----- t15 = * LEA(b+(i*4)+0) long REG NA | |
| /--* t15 long | |
| N058 (???,???) [000016] -A-XG+----- t16 = * IND float REG mm0 | |
| /--* t16 float | |
| N060 (???,???) [000017] -A-XG+----- * RETURN float REG NA | |
| ------------------------------------------------------------------------------------------------------------------- | |
| *************** In fgDebugCheckBBlist | |
| [deferred prior check failed -- skipping this check] | |
| *************** Starting PHASE Place 'align' instructions | |
| *************** In placeLoopAlignInstructions() | |
| Not aligning loops; ShouldAlignLoops is false | |
| *************** Finishing PHASE Place 'align' instructions [no changes] | |
| *************** In genGenerateCode() | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BB01 [0000] 1 1 [000..004)-> BB03(0.5),BB02(0.5) ( cond ) i LIR | |
| BB02 [0001] 1 BB01 1 [004..008)-> BB04(0.5),BB03(0.5) ( cond ) i LIR | |
| BB03 [0002] 2 BB01,BB02 1 [008..013)-> BB04(1) (always) i LIR hascall gcsafe | |
| BB04 [0003] 2 BB02,BB03 1 [013..022) (return) i LIR | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| *************** Starting PHASE Generate code | |
| *************** In fgDebugCheckBBlist | |
| Finalizing stack frame | |
| Modified regs: [rax rcx rdx r8-r11 mm0] | |
| Callee-saved registers pushed: 0 [] | |
| *************** In lvaAssignFrameOffsets(FINAL_FRAME_LAYOUT) | |
| Set V00 to offset 0 | |
| Set V01 to offset 8 | |
| Assign V03 tmp1, size=8, stkOffs=-0x18 | |
| Assign V02 OutArgs, size=32, stkOffs=-0x38 | |
| --- delta bump 8 for RA | |
| --- delta bump 8 for FP | |
| --- delta bump 0 for FP frame | |
| --- virtual stack offset to actual stack offset delta is 16 | |
| -- V00 was 0, now 16 | |
| -- V01 was 8, now 24 | |
| -- V02 was -56, now -40 | |
| -- V03 was -24, now -8 | |
| ; Final local variable assignments | |
| ; | |
| ; V00 arg0 [V00 ] ( 1, 1 ) byref -> [rbp+0x10] do-not-enreg[] ld-addr-op | |
| ; V01 arg1 [V01 ] ( 1, 1 ) int -> [rbp+0x18] do-not-enreg[] | |
| ; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" <UNNAMED> | |
| ; V03 tmp1 [V03 ] ( 1, 1 ) long -> [rbp-0x08] do-not-enreg[] "Cast away GC" | |
| ; | |
| ; Lcl frame size = 48 | |
| Created: | |
| G_M62292_IG02: ; offs=0x000000, size=0x0000, bbWeight=1, gcrefRegs=0000 {} | |
| Mark labels for codegen | |
| BB01 : first block | |
| BB03 : branch target | |
| BB04 : branch target | |
| *************** After genMarkLabelsForCodegen() | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BB01 [0000] 1 1 [000..004)-> BB03(0.5),BB02(0.5) ( cond ) i LIR label | |
| BB02 [0001] 1 BB01 1 [004..008)-> BB04(0.5),BB03(0.5) ( cond ) i LIR | |
| BB03 [0002] 2 BB01,BB02 1 [008..013)-> BB04(1) (always) i LIR label hascall gcsafe | |
| BB04 [0003] 2 BB02,BB03 1 [013..022) (return) i LIR label | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| =============== Generating BB01 [0000] [000..004) -> BB03(0.5),BB02(0.5) (cond), preds={} succs={BB02,BB03} flags=0x00000000.00001011: i LIR label | |
| BB01 IN (0)={} | |
| OUT(0)={} | |
| Liveness not changing: 0000000000000000 {} | |
| Live regs: (unchanged) 0000000000000000 {} | |
| GC regs: (unchanged) 0000 {} | |
| Byref regs: (unchanged) 0000 {} | |
| L_M62292_BB01: | |
| Label: G_M62292_IG02, GCvars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {} | |
| Scope info: begin block BB01, IL range [000..004) | |
| Scope info: opening scope, LVnum=0 [000..022) | |
| Debug: New V00 debug range: first | |
| Scope info: opening scope, LVnum=1 [000..022) | |
| Debug: New V01 debug range: first | |
| Added IP mapping: 0x0000 STACK_EMPTY (G_M62292_IG02,ins#0,ofs#0) label | |
| Generating: N002 (???,???) [000027] ----------- IL_OFFSET void INLRT @ 0x000[E-] REG NA | |
| Generating: N004 (???,???) [000000] -c---+----- t0 = LCL_VAR int V01 arg1 NA REG NA | |
| Generating: N006 (???,???) [000001] -c---+----- t1 = CNS_INT int 1 REG NA | |
| /--* t0 int | |
| +--* t1 int | |
| Generating: N008 (???,???) [000002] -----+-N--- * CMP void REG NA | |
| Mapped BB01 to G_M62292_IG02 | |
| IN0001: cmp dword ptr [V01 rbp+0x18], 1 | |
| Generating: N010 (???,???) [000003] -----+----- JCC void cond=SGT REG NA | |
| IN0002: jg L_M62292_BB03 | |
| Variable Live Range History Dump for BB01 | |
| V00 arg0: rbp[16] (1 slot) [(G_M62292_IG02,ins#0,ofs#0), ...] | |
| V01 arg1: rbp[24] (1 slot) [(G_M62292_IG02,ins#0,ofs#0), ...] | |
| =============== Generating BB02 [0001] [004..008) -> BB04(0.5),BB03(0.5) (cond), preds={BB01} succs={BB03,BB04} flags=0x00000000.00000011: i LIR | |
| BB02 IN (0)={} | |
| OUT(0)={} | |
| Liveness not changing: 0000000000000000 {} | |
| Live regs: (unchanged) 0000000000000000 {} | |
| GC regs: (unchanged) 0000 {} | |
| Byref regs: (unchanged) 0000 {} | |
| L_M62292_BB02: | |
| Scope info: begin block BB02, IL range [004..008) | |
| Added IP mapping: 0x0004 STACK_EMPTY (G_M62292_IG02,ins#2,ofs#10) label | |
| Generating: N014 (???,???) [000028] ----------- IL_OFFSET void INLRT @ 0x004[E-] REG NA | |
| Generating: N016 (???,???) [000018] -c---+----- t18 = LCL_VAR int V01 arg1 NA REG NA | |
| Generating: N018 (???,???) [000019] -c---+----- t19 = CNS_INT int 0 REG NA | |
| /--* t18 int | |
| +--* t19 int | |
| Generating: N020 (???,???) [000020] -----+-N--- * CMP void REG NA | |
| Mapped BB02 to G_M62292_IG02 | |
| IN0003: cmp dword ptr [V01 rbp+0x18], 0 | |
| Generating: N022 (???,???) [000021] -----+----- JCC void cond=SGE REG NA | |
| IN0004: jge L_M62292_BB04 | |
| Variable Live Range History Dump for BB02 | |
| V00 arg0: rbp[16] (1 slot) [(G_M62292_IG02,ins#0,ofs#0), ...] | |
| V01 arg1: rbp[24] (1 slot) [(G_M62292_IG02,ins#0,ofs#0), ...] | |
| =============== Generating BB03 [0002] [008..013) -> BB04(1) (always), preds={BB01,BB02} succs={BB04} flags=0x00000000.02011011: i LIR label hascall gcsafe | |
| BB03 IN (0)={} | |
| OUT(0)={} | |
| Liveness not changing: 0000000000000000 {} | |
| Live regs: (unchanged) 0000000000000000 {} | |
| GC regs: (unchanged) 0000 {} | |
| Byref regs: (unchanged) 0000 {} | |
| L_M62292_BB03: | |
| Saved: | |
| G_M62292_IG02: ; offs=0x000000, size=0x0014, bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, BB01 [0000], BB02 [0001], byref | |
| Created: | |
| G_M62292_IG03: ; offs=0x000014, size=0x0000, bbWeight=1, gcrefRegs=0000 {} | |
| Label: G_M62292_IG03, GCvars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {} | |
| Scope info: begin block BB03, IL range [008..013) | |
| Added IP mapping: 0x0008 STACK_EMPTY (G_M62292_IG03,ins#0,ofs#0) label | |
| Generating: N026 (???,???) [000029] ----------- IL_OFFSET void INLRT @ 0x008[E-] REG NA | |
| Generating: N028 (???,???) [000005] -----+----- t5 = LCL_VAR int V01 arg1 rdx REG rdx | |
| Mapped BB03 to G_M62292_IG03 | |
| IN0005: mov edx, dword ptr [V01 rbp+0x18] | |
| /--* t5 int | |
| Generating: N030 (???,???) [000031] ----------- t31 = * PUTARG_REG int REG rdx | |
| Generating: N032 (???,???) [000022] H----+----- t22 = CNS_INT(h) ref 'You tried to access this vector at index: {0}' REG rcx | |
| IN0006: mov rcx, 0x230618FF1E8 ; 'You tried to access this vector at index: {0}' | |
| GC regs: 0000 {} => 0002 {rcx} | |
| /--* t22 ref | |
| Generating: N034 (???,???) [000032] ----------- t32 = * PUTARG_REG ref REG rcx | |
| GC regs: 0002 {rcx} => 0000 {} | |
| GC regs: 0000 {} => 0002 {rcx} | |
| Generating: N036 (???,???) [000033] Hc--------- t33 = CNS_INT(h) long 0x7ff7f13342a0 ftn REG NA | |
| /--* t33 long | |
| Generating: N038 (???,???) [000034] nc--G------ t34 = * IND long REG NA | |
| /--* t31 int arg1 rdx | |
| +--* t32 ref arg0 rcx | |
| +--* t34 long control expr | |
| Generating: N040 (???,???) [000006] --CXG+----- * CALL void Program.EntryPoint:ThrowOutOfRangeException[int](System.String,int) REG NA | |
| GC regs: 0002 {rcx} => 0000 {} | |
| Call: GCvars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {} | |
| IN0007: call [Program.EntryPoint:ThrowOutOfRangeException[int](System.String,int)] | |
| Variable Live Range History Dump for BB03 | |
| V00 arg0: rbp[16] (1 slot) [(G_M62292_IG02,ins#0,ofs#0), ...] | |
| V01 arg1: rbp[24] (1 slot) [(G_M62292_IG02,ins#0,ofs#0), ...] | |
| =============== Generating BB04 [0003] [013..022) (return), preds={BB02,BB03} succs={} flags=0x00000000.00001011: i LIR label | |
| BB04 IN (0)={} | |
| OUT(0)={} | |
| Liveness not changing: 0000000000000000 {} | |
| Live regs: (unchanged) 0000000000000000 {} | |
| GC regs: (unchanged) 0000 {} | |
| Byref regs: (unchanged) 0000 {} | |
| L_M62292_BB04: | |
| Saved: | |
| G_M62292_IG03: ; offs=0x000014, size=0x0013, bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, BB03 [0002], byref | |
| Created: | |
| G_M62292_IG04: ; offs=0x000027, size=0x0000, bbWeight=1, gcrefRegs=0000 {} | |
| Label: G_M62292_IG04, GCvars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {} | |
| Scope info: begin block BB04, IL range [013..022) | |
| Added IP mapping: 0x0013 STACK_EMPTY (G_M62292_IG04,ins#0,ofs#0) label | |
| Generating: N044 (???,???) [000030] ----------- IL_OFFSET void INLRT @ 0x013[E-] REG NA | |
| Generating: N046 (???,???) [000008] -----+----- t8 = LCL_VAR byref V00 arg0 rax REG rax | |
| Mapped BB04 to G_M62292_IG04 | |
| IN0008: mov rax, bword ptr [V00 rbp+0x10] | |
| Byref regs: 0000 {} => 0001 {rax} | |
| /--* t8 byref | |
| Generating: N048 (???,???) [000023] DA---+----- * STORE_LCL_VAR long V03 tmp1 NA REG NA | |
| Byref regs: 0001 {rax} => 0000 {} | |
| IN0009: mov qword ptr [V03 rbp-0x08], rax | |
| Generating: N050 (???,???) [000024] -----+----- t24 = LCL_VAR long V03 tmp1 rax REG rax | |
| IN000a: mov rax, qword ptr [V03 rbp-0x08] | |
| Generating: N052 (???,???) [000010] -c---+----- t10 = LCL_VAR int V01 arg1 NA REG NA | |
| /--* t10 int | |
| Generating: N054 (???,???) [000011] -----+----- t11 = * CAST long <- int REG rcx | |
| IN000b: movsxd rcx, dword ptr [V01 rbp+0x18] | |
| /--* t24 long | |
| +--* t11 long | |
| Generating: N056 (???,???) [000015] -c---+----- t15 = * LEA(b+(i*4)+0) long REG NA | |
| /--* t15 long | |
| Generating: N058 (???,???) [000016] -A-XG+----- t16 = * IND float REG mm0 | |
| IN000c: vmovss xmm0, dword ptr [rax+4*rcx] | |
| /--* t16 float | |
| Generating: N060 (???,???) [000017] -A-XG+----- * RETURN float REG NA | |
| Debug: Closing V00 debug range. | |
| Debug: Closing V01 debug range. | |
| Added IP mapping: EPILOG (G_M62292_IG04,ins#5,ofs#21) label | |
| Reserving epilog IG for block BB04 | |
| Saved: | |
| G_M62292_IG04: ; offs=0x000027, size=0x0015, bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, BB04 [0003], byref | |
| Created: | |
| G_M62292_IG05: ; offs=0x00003C, size=0x0000, bbWeight=1, gcrefRegs=0000 {} | |
| *************** After placeholder IG creation | |
| G_M62292_IG01: ; func=00, offs=0x000000, size=0x0000, bbWeight=1, gcrefRegs=0000 {} <-- Prolog IG | |
| G_M62292_IG02: ; offs=0x000000, size=0x0014, bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, BB01 [0000], BB02 [0001], byref | |
| G_M62292_IG03: ; offs=0x000014, size=0x0013, bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, BB03 [0002], byref | |
| G_M62292_IG04: ; offs=0x000027, size=0x0015, bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, BB04 [0003], byref | |
| G_M62292_IG05: ; epilog placeholder, next placeholder=<END>, BB04 [0003], epilog, extend <-- First placeholder <-- Last placeholder | |
| ; PrevGCVars=0000000000000000 {}, PrevGCrefRegs=0000 {}, PrevByrefRegs=0000 {} | |
| ; InitGCVars=0000000000000000 {}, InitGCrefRegs=0000 {}, InitByrefRegs=0000 {} | |
| Variable Live Range History Dump for BB04 | |
| V00 arg0: rbp[16] (1 slot) [(G_M62292_IG02,ins#0,ofs#0), (G_M62292_IG04,ins#5,ofs#21)] | |
| V01 arg1: rbp[24] (1 slot) [(G_M62292_IG02,ins#0,ofs#0), (G_M62292_IG04,ins#5,ofs#21)] | |
| Liveness not changing: 0000000000000000 {} | |
| # compCycleEstimate = -572662307, compSizeEstimate = -572662307 Program.EntryPoint:GetTest(Program.EntryPoint+Vector2,int):float | |
| ; Final local variable assignments | |
| ; | |
| ; V00 arg0 [V00 ] ( 1, 1 ) byref -> [rbp+0x10] do-not-enreg[] ld-addr-op | |
| ; V01 arg1 [V01 ] ( 1, 1 ) int -> [rbp+0x18] do-not-enreg[] | |
| ; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" <UNNAMED> | |
| ; V03 tmp1 [V03 ] ( 1, 1 ) long -> [rbp-0x08] do-not-enreg[] "Cast away GC" | |
| ; | |
| ; Lcl frame size = 48 | |
| *************** Before prolog / epilog generation | |
| G_M62292_IG01: ; func=00, offs=0x000000, size=0x0000, bbWeight=1, gcrefRegs=0000 {} <-- Prolog IG | |
| G_M62292_IG02: ; offs=0x000000, size=0x0014, bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, BB01 [0000], BB02 [0001], byref | |
| G_M62292_IG03: ; offs=0x000014, size=0x0013, bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, BB03 [0002], byref | |
| G_M62292_IG04: ; offs=0x000027, size=0x0015, bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, BB04 [0003], byref | |
| G_M62292_IG05: ; epilog placeholder, next placeholder=<END>, BB04 [0003], epilog, extend <-- First placeholder <-- Last placeholder | |
| ; PrevGCVars=0000000000000000 {}, PrevGCrefRegs=0000 {}, PrevByrefRegs=0000 {} | |
| ; InitGCVars=0000000000000000 {}, InitGCrefRegs=0000 {}, InitByrefRegs=0000 {} | |
| *************** In genFnProlog() | |
| Added IP mapping to front: PROLOG (G_M62292_IG01,ins#0,ofs#0) label | |
| __prolog: | |
| Debug: New V00 debug range: first | |
| Debug: New V01 debug range: first | |
| IN000d: push rbp | |
| IN000e: sub rsp, 48 | |
| IN000f: lea rbp, [rsp+0x30] | |
| *************** In genHomeRegisterParams() | |
| IN0010: mov bword ptr [V00 rbp+0x10], rcx | |
| IN0011: mov dword ptr [V01 rbp+0x18], edx | |
| *************** In genEnregisterIncomingStackArgs() | |
| Debug: Closing V00 debug range. | |
| Debug: Closing V01 debug range. | |
| Saved: | |
| G_M62292_IG01: ; offs=0x000000, size=0x0011, bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc | |
| *************** In genFnEpilog() | |
| __epilog: | |
| gcVarPtrSetCur=0000000000000000 {}, gcRegGCrefSetCur=0000 {}, gcRegByrefSetCur=0000 {} | |
| IN0012: add rsp, 48 | |
| IN0013: pop rbp | |
| IN0014: ret | |
| Saved: | |
| G_M62292_IG05: ; offs=0x00003C, size=0x0006, bbWeight=1, epilog, nogc, extend | |
| 0 prologs, 1 epilogs, 0 funclet prologs, 0 funclet epilogs | |
| *************** After prolog / epilog generation | |
| G_M62292_IG01: ; func=00, offs=0x000000, size=0x0011, bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG | |
| G_M62292_IG02: ; offs=0x000011, size=0x0014, bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, BB01 [0000], BB02 [0001], byref | |
| G_M62292_IG03: ; offs=0x000025, size=0x0013, bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, BB03 [0002], byref | |
| G_M62292_IG04: ; offs=0x000038, size=0x0015, bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, BB04 [0003], byref | |
| G_M62292_IG05: ; offs=0x00004D, size=0x0006, bbWeight=1, epilog, nogc, extend | |
| *************** In emitJumpDistBind() | |
| Emitter Jump List: | |
| IG02 IN0002 jg[6] -> IG03 | |
| IG02 IN0004 jge[6] -> IG04 | |
| total jump count: 2 | |
| Binding: IN0002: 000000 jg L_M62292_BB03 | |
| Binding L_M62292_BB03 to G_M62292_IG03 | |
| Estimate of fwd jump [61857F44/002]: 0015 -> 0025 = 000E | |
| Shrinking jump [61857F44/002] | |
| Binding: IN0004: 000000 jge L_M62292_BB04 | |
| Binding L_M62292_BB04 to G_M62292_IG04 | |
| Estimate of fwd jump [61857F94/004]: 001B -> 0034 = 0017 | |
| Shrinking jump [61857F94/004] | |
| Adjusted offset of BB03 from 0025 to 001D | |
| Adjusted offset of BB04 from 0038 to 0030 | |
| Adjusted offset of BB05 from 004D to 0045 | |
| Total shrinkage = 8, min extra jump size = 4294967295 | |
| *************** Finishing PHASE Generate code | |
| *************** Starting PHASE Emit code | |
| Hot code size = 0x4B bytes | |
| Cold code size = 0x0 bytes | |
| reserveUnwindInfo(isFunclet=false, isColdCode=false, unwindSize=0x8) | |
| *************** In emitEndCodeGen() | |
| Converting emitMaxStackDepth from bytes (0) to elements (0) | |
| *************************************************************************** | |
| Instructions as they come out of the scheduler | |
| G_M62292_IG01: ; offs=0x000000, size=0x0011, bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG | |
| IN000d: 000000 push rbp | |
| IN000e: 000001 sub rsp, 48 | |
| IN000f: 000005 lea rbp, [rsp+0x30] | |
| IN0010: 00000A mov bword ptr [rbp+0x10], rcx | |
| IN0011: 00000E mov dword ptr [rbp+0x18], edx | |
| ;; size=17 bbWeight=1 PerfScore 3.75 | |
| G_M62292_IG02: ; offs=0x000011, size=0x000C, bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, BB01 [0000], BB02 [0001], byref, isz | |
| IN0001: 000011 cmp dword ptr [rbp+0x18], 1 | |
| IN0002: 000015 jg SHORT G_M62292_IG03 | |
| IN0003: 000017 cmp dword ptr [rbp+0x18], 0 | |
| IN0004: 00001B jge SHORT G_M62292_IG04 | |
| ;; size=12 bbWeight=1 PerfScore 6.00 | |
| G_M62292_IG03: ; offs=0x00001D, size=0x0013, bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, BB03 [0002], byref | |
| IN0005: 00001D mov edx, dword ptr [rbp+0x18] | |
| IN0006: 000020 mov rcx, 0x230618FF1E8 ; 'You tried to access this vector at index: {0}' | |
| ; gcrRegs +[rcx] | |
| recordRelocation: 00007FF7F08C91AC (rw: 0000023061837634) => 00007FF7F13342A0, type 16 (IMAGE_REL_BASED_DISP32), delta 0 | |
| ; Call at 002A [stk=0], GCvars=none, gcrefRegs=0000 {}, byrefRegs=0000 {} | |
| IN0007: 00002A call [Program.EntryPoint:ThrowOutOfRangeException[int](System.String,int)] | |
| ; gcrRegs -[rcx] | |
| ;; size=19 bbWeight=1 PerfScore 4.25 | |
| G_M62292_IG04: ; offs=0x000030, size=0x0015, bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, BB04 [0003], byref | |
| IN0008: 000030 mov rax, bword ptr [rbp+0x10] | |
| ; byrRegs +[rax] | |
| IN0009: 000034 mov qword ptr [rbp-0x08], rax | |
| IN000a: 000038 mov rax, qword ptr [rbp-0x08] | |
| ; byrRegs -[rax] | |
| IN000b: 00003C movsxd rcx, dword ptr [rbp+0x18] | |
| IN000c: 000040 vmovss xmm0, dword ptr [rax+4*rcx] | |
| ;; size=21 bbWeight=1 PerfScore 10.00 | |
| G_M62292_IG05: ; offs=0x000045, size=0x0006, bbWeight=1, epilog, nogc, extend | |
| IN0012: 000045 add rsp, 48 | |
| IN0013: 000049 pop rbp | |
| IN0014: 00004A ret | |
| ;; size=6 bbWeight=1 PerfScore 1.75 | |
| Allocated method code size = 75 , actual size = 75, unused size = 0 | |
| ; Total bytes of code 75, prolog size 10, PerfScore 25.75, instruction count 20, allocated bytes for code 75 (MethodHash=2b4c0cab) for method Program.EntryPoint:GetTest(Program.EntryPoint+Vector2,int):float (Tier0) | |
| ; ============================================================ | |
| *************** After end code gen, before unwindEmit() | |
| G_M62292_IG01: ; func=00, offs=0x000000, size=0x0011, bbWeight=1, PerfScore 3.75, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG | |
| IN000d: 000000 push rbp | |
| IN000e: 000001 sub rsp, 48 | |
| IN000f: 000005 lea rbp, [rsp+0x30] | |
| IN0010: 00000A mov bword ptr [V00 rbp+0x10], rcx | |
| IN0011: 00000E mov dword ptr [V01 rbp+0x18], edx | |
| G_M62292_IG02: ; offs=0x000011, size=0x000C, bbWeight=1, PerfScore 6.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, BB01 [0000], BB02 [0001], byref, isz | |
| IN0001: 000011 cmp dword ptr [V01 rbp+0x18], 1 | |
| IN0002: 000015 jg SHORT G_M62292_IG03 | |
| IN0003: 000017 cmp dword ptr [V01 rbp+0x18], 0 | |
| IN0004: 00001B jge SHORT G_M62292_IG04 | |
| G_M62292_IG03: ; offs=0x00001D, size=0x0013, bbWeight=1, PerfScore 4.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, BB03 [0002], byref | |
| IN0005: 00001D mov edx, dword ptr [V01 rbp+0x18] | |
| IN0006: 000020 mov rcx, 0x230618FF1E8 ; 'You tried to access this vector at index: {0}' | |
| IN0007: 00002A call [Program.EntryPoint:ThrowOutOfRangeException[int](System.String,int)] | |
| G_M62292_IG04: ; offs=0x000030, size=0x0015, bbWeight=1, PerfScore 10.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, BB04 [0003], byref | |
| IN0008: 000030 mov rax, bword ptr [V00 rbp+0x10] | |
| IN0009: 000034 mov qword ptr [V03 rbp-0x08], rax | |
| IN000a: 000038 mov rax, qword ptr [V03 rbp-0x08] | |
| IN000b: 00003C movsxd rcx, dword ptr [V01 rbp+0x18] | |
| IN000c: 000040 vmovss xmm0, dword ptr [rax+4*rcx] | |
| G_M62292_IG05: ; offs=0x000045, size=0x0006, bbWeight=1, PerfScore 1.75, epilog, nogc, extend | |
| IN0012: 000045 add rsp, 48 | |
| IN0013: 000049 pop rbp | |
| IN0014: 00004A ret | |
| *************** Finishing PHASE Emit code | |
| *************** Starting PHASE Emit GC+EH tables | |
| Unwind Info: | |
| >> Start offset : 0x000000 (not in unwind data) | |
| >> End offset : 0x00004b (not in unwind data) | |
| Version : 1 | |
| Flags : 0x00 | |
| SizeOfProlog : 0x05 | |
| CountOfUnwindCodes: 2 | |
| FrameRegister : none (0) | |
| FrameOffset : N/A (no FrameRegister) (Value=0) | |
| UnwindCodes : | |
| CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 5 * 8 + 8 = 48 = 0x30 | |
| CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5) | |
| allocUnwindInfo(pHotCode=0x00007FF7F08C9180, pColdCode=0x0000000000000000, startOffset=0x0, endOffset=0x4b, unwindSize=0x8, pUnwindBlock=0x0000023061851308, funKind=0 (main function)) | |
| *************** In genIPmappingGen() | |
| IP mapping count : 6 | |
| IL offs PROLOG : 0x00000000 ( STACK_EMPTY ) | |
| IL offs 0x0000 : 0x00000011 ( STACK_EMPTY ) | |
| IL offs 0x0004 : 0x00000017 ( STACK_EMPTY ) | |
| IL offs 0x0008 : 0x0000001D ( STACK_EMPTY ) | |
| IL offs 0x0013 : 0x00000030 ( STACK_EMPTY ) | |
| IL offs EPILOG : 0x00000045 ( STACK_EMPTY ) | |
| *************** In genSetScopeInfo() | |
| VarLocInfo count is 4 | |
| ; Variable debug info: 4 live ranges, 2 vars for method Program.EntryPoint:GetTest(Program.EntryPoint+Vector2,int):float | |
| (V00 arg0) : From 00000000h to 00000011h, in rcx | |
| (V00 arg0) : From 00000011h to 00000045h, in rbp[16] (1 slot) | |
| (V01 arg1) : From 00000000h to 00000011h, in rdx | |
| (V01 arg1) : From 00000011h to 00000045h, in rbp[24] (1 slot) | |
| *************** In gcInfoBlockHdrSave() | |
| Set code length to 75. | |
| Set stack base register to rbp. | |
| Set Outgoing stack arg area size to 32. | |
| Stack slot id for offset 16 (0x10) (frame) (byref, untracked) = 0. | |
| Defining 0 call sites: | |
| *************** Finishing PHASE Emit GC+EH tables | |
| Method code size: 75 | |
| Allocations for Program.EntryPoint:GetTest(Program.EntryPoint+Vector2,int):float (MethodHash=2b4c0cab) | |
| count: 479, size: 53152, max = 7576 | |
| allocateMemory: 65536, nraUsed: 57264 | |
| Alloc'd bytes by kind: | |
| kind | size | pct | |
| ---------------------+------------+-------- | |
| ABI | 0 | 0.00% | |
| AssertionProp | 0 | 0.00% | |
| ASTNode | 5216 | 9.81% | |
| InstDesc | 3816 | 7.18% | |
| ImpStack | 384 | 0.72% | |
| BasicBlock | 1720 | 3.24% | |
| CallArgs | 160 | 0.30% | |
| FlowEdge | 200 | 0.38% | |
| DepthFirstSearch | 56 | 0.11% | |
| Loops | 0 | 0.00% | |
| TreeStatementList | 0 | 0.00% | |
| SiScope | 0 | 0.00% | |
| DominatorMemory | 0 | 0.00% | |
| LSRA | 9400 | 17.69% | |
| LSRA_Interval | 768 | 1.44% | |
| LSRA_RefPosition | 2240 | 4.21% | |
| Reachability | 0 | 0.00% | |
| SSA | 0 | 0.00% | |
| ValueNumber | 0 | 0.00% | |
| LvaTable | 1584 | 2.98% | |
| UnwindInfo | 0 | 0.00% | |
| hashBv | 128 | 0.24% | |
| bitset | 32 | 0.06% | |
| FixedBitVect | 24 | 0.05% | |
| Generic | 968 | 1.82% | |
| LocalAddressVisitor | 0 | 0.00% | |
| FieldSeqStore | 0 | 0.00% | |
| MemorySsaMap | 0 | 0.00% | |
| MemoryPhiArg | 0 | 0.00% | |
| CSE | 0 | 0.00% | |
| GC | 1300 | 2.45% | |
| CorTailCallInfo | 0 | 0.00% | |
| Inlining | 272 | 0.51% | |
| ArrayStack | 0 | 0.00% | |
| DebugInfo | 368 | 0.69% | |
| DebugOnly | 20738 | 39.02% | |
| Codegen | 2720 | 5.12% | |
| LoopOpt | 0 | 0.00% | |
| LoopClone | 0 | 0.00% | |
| LoopUnroll | 0 | 0.00% | |
| LoopHoist | 0 | 0.00% | |
| LoopIVOpts | 0 | 0.00% | |
| Unknown | 90 | 0.17% | |
| RangeCheck | 0 | 0.00% | |
| CopyProp | 0 | 0.00% | |
| Promotion | 120 | 0.23% | |
| SideEffects | 0 | 0.00% | |
| ObjectAllocator | 0 | 0.00% | |
| VariableLiveRanges | 648 | 1.22% | |
| ClassLayout | 200 | 0.38% | |
| TailMergeThrows | 0 | 0.00% | |
| EarlyProp | 0 | 0.00% | |
| ZeroInit | 0 | 0.00% | |
| Pgo | 0 | 0.00% | |
| MaskConversionOpt | 0 | 0.00% | |
| TryRegionClone | 0 | 0.00% | |
| Async | 0 | 0.00% | |
| RangeCheckCloning | 0 | 0.00% | |
| Final metrics: | |
| ActualCodeBytes : 75 | |
| AllocatedHotCodeBytes : 75 | |
| AllocatedColdCodeBytes : 0 | |
| ReadOnlyDataBytes : 0 | |
| GCInfoBytes : 4 | |
| EHClauseCount : 0 | |
| PhysicallyPromotedFields : 0 | |
| LoopsFoundDuringOpts : 0 | |
| LoopsInverted : 0 | |
| LoopsCloned : 0 | |
| LoopsUnrolled : 0 | |
| LoopAlignmentCandidates : 0 | |
| LoopsAligned : 0 | |
| LoopsIVWidened : 0 | |
| WidenedIVs : 0 | |
| UnusedIVsRemoved : 0 | |
| LoopsMadeDownwardsCounted : 0 | |
| LoopsStrengthReduced : 0 | |
| VarsInSsa : 0 | |
| HoistedExpressions : 0 | |
| RedundantBranchesEliminated : 0 | |
| JumpThreadingsPerformed : 0 | |
| CseCount : 0 | |
| BasicBlocksAtCodegen : 4 | |
| PerfScore : 25.750000 | |
| BytesAllocated : 57264 | |
| ImporterBranchFold : 0 | |
| ImporterSwitchFold : 0 | |
| DevirtualizedCall : 0 | |
| DevirtualizedCallUnboxedEntry : 0 | |
| DevirtualizedCallRemovedBox : 0 | |
| GDV : 0 | |
| ClassGDV : 0 | |
| MethodGDV : 0 | |
| MultiGuessGDV : 0 | |
| ChainedGDV : 0 | |
| EnumeratorGDV : 0 | |
| InlinerBranchFold : 0 | |
| InlineAttempt : 0 | |
| InlineCount : 0 | |
| ProfileConsistentBeforeInline : 0 | |
| ProfileConsistentAfterInline : 0 | |
| ProfileConsistentBeforeMorph : 0 | |
| ProfileConsistentAfterMorph : 0 | |
| ProfileSynthesizedBlendedOrRepaired : 0 | |
| ProfileInconsistentInitially : 0 | |
| ProfileInconsistentResetLeave : 0 | |
| ProfileInconsistentImporterBranchFold : 0 | |
| ProfileInconsistentImporterSwitchFold : 0 | |
| ProfileInconsistentChainedGDV : 0 | |
| ProfileInconsistentScratchBB : 0 | |
| ProfileInconsistentInlinerBranchFold : 0 | |
| ProfileInconsistentInlineeScale : 0 | |
| ProfileInconsistentInlinee : 0 | |
| ProfileInconsistentNoReturnInlinee : 0 | |
| ProfileInconsistentMayThrowInlinee : 0 | |
| NewRefClassHelperCalls : 0 | |
| StackAllocatedRefClasses : 0 | |
| NewBoxedValueClassHelperCalls : 0 | |
| StackAllocatedBoxedValueClasses : 0 | |
| NewArrayHelperCalls : 0 | |
| StackAllocatedArrays : 0 | |
| LocalAssertionCount : 0 | |
| LocalAssertionOverflow : 0 | |
| MorphTrackedLocals : 0 | |
| MorphLocals : 0 | |
| EnumeratorGDVProvisionalNoEscape : 0 | |
| EnumeratorGDVCanCloneToEnsureNoEscape : 0 | |
| ****** DONE compiling Program.EntryPoint:GetTest(Program.EntryPoint+Vector2,int):float | |
| ****** START compiling Program.EntryPoint:GetTest(Program.EntryPoint+Vector2,int):float (MethodHash=2b4c0cab) | |
| Generating code for Windows x64 | |
| OPTIONS: Tier-0 compilation (set DOTNET_TieredCompilation=0 to disable) | |
| OPTIONS: compCodeOpt = BLENDED_CODE | |
| OPTIONS: compDbgCode = false | |
| OPTIONS: compDbgInfo = true | |
| OPTIONS: compDbgEnC = false | |
| OPTIONS: compProcedureSplitting = false | |
| OPTIONS: compProcedureSplittingEH = false | |
| IL to import: | |
| IL_0000 03 ldarg.1 | |
| IL_0001 17 ldc.i4.1 | |
| IL_0002 30 04 bgt.s 4 (IL_0008) | |
| IL_0004 03 ldarg.1 | |
| IL_0005 16 ldc.i4.0 | |
| IL_0006 2f 0b bge.s 11 (IL_0013) | |
| IL_0008 72 01 00 00 70 ldstr 0x70000001 | |
| IL_000d 03 ldarg.1 | |
| IL_000e 28 01 00 00 2b call 0x2B000001 | |
| IL_0013 0f 00 ldarga.s 0x0 | |
| IL_0015 7c f8 01 00 04 ldflda 0x40001F8 | |
| IL_001a e0 conv.u | |
| IL_001b 03 ldarg.1 | |
| IL_001c d3 conv.i | |
| IL_001d 1a ldc.i4.4 | |
| IL_001e 5a mul | |
| IL_001f 58 add | |
| IL_0020 4e ldind.r4 | |
| IL_0021 2a ret | |
| 1 return registers for return type float | |
| [00..04) reg mm0 | |
| Parameter V00 ABI info: [00..08) reg rcx (implicit by-ref) | |
| Parameter V01 ABI info: [00..04) reg rdx | |
| lvaGrabTemp returning 2 (V02 tmp0) (a long lifetime temp) called for OutgoingArgSpace. | |
| Local V02 should not be enregistered because: it is address exposed | |
| ; Initial local variable assignments | |
| ; | |
| ; V00 arg0 struct <Program.EntryPoint+Vector2, 12> <Program.EntryPoint+Vector2> | |
| ; V01 arg1 int | |
| ; V02 OutArgs struct <0> do-not-enreg[XS] addr-exposed "OutgoingArgSpace" <Empty> | |
| *************** In compInitDebuggingInfo() for Program.EntryPoint:GetTest(Program.EntryPoint+Vector2,int):float | |
| getVars() returned cVars = 0, extendOthers = true | |
| info.compVarScopesCount = 2 | |
| VarNum LVNum Name Beg End | |
| 0: 00h 00h V00 arg0 000h 022h | |
| 1: 01h 01h V01 arg1 000h 022h | |
| info.compStmtOffsetsCount = 0 | |
| info.compStmtOffsetsImplicit = 0005h ( STACK_EMPTY CALL_SITE ) | |
| *************** In fgFindBasicBlocks() for Program.EntryPoint:GetTest(Program.EntryPoint+Vector2,int):float | |
| Jump targets: | |
| IL_0008 | |
| IL_0013 | |
| New Basic Block BB01 [0000] created. | |
| BB01 [0000] [000..004) | |
| New Basic Block BB02 [0001] created. | |
| BB02 [0001] [004..008) | |
| New Basic Block BB03 [0002] created. | |
| BB03 [0002] [008..013) | |
| New Basic Block BB04 [0003] created. | |
| BB04 [0003] [013..022) | |
| setting likelihood of BB01 -> BB03 to 0.5 | |
| setting likelihood of BB01 -> BB02 to 0.5 | |
| setting likelihood of BB02 -> BB04 to 0.5 | |
| setting likelihood of BB02 -> BB03 to 0.5 | |
| setting likelihood of BB03 -> BB04 to 1 | |
| CLFLG_MINOPT set for method Program.EntryPoint:GetTest(Program.EntryPoint+Vector2,int):float | |
| IL Code Size,Instr 34, 19, Basic Block count 4, Local Variable Num,Ref count 3, 5 for method Program.EntryPoint:GetTest(Program.EntryPoint+Vector2,int):float | |
| IL Code Size,Instr 34, 19, Basic Block count 4, Local Variable Num,Ref count 3, 5 for method Program.EntryPoint:GetTest(Program.EntryPoint+Vector2,int):float | |
| OPTIONS: opts.MinOpts() == true | |
| Basic block list for 'Program.EntryPoint:GetTest(Program.EntryPoint+Vector2,int):float' | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BB01 [0000] 1 1 [000..004)-> BB03(0.5),BB02(0.5) ( cond ) | |
| BB02 [0001] 1 BB01 1 [004..008)-> BB04(0.5),BB03(0.5) ( cond ) | |
| BB03 [0002] 2 BB01,BB02 1 [008..013)-> BB04(1) (always) | |
| BB04 [0003] 2 BB02,BB03 1 [013..022) (return) | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| *************** Starting PHASE Pre-import | |
| *************** Finishing PHASE Pre-import | |
| Trees after Pre-import | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BB01 [0000] 1 1 [000..004)-> BB03(0.5),BB02(0.5) ( cond ) | |
| BB02 [0001] 1 BB01 1 [004..008)-> BB04(0.5),BB03(0.5) ( cond ) | |
| BB03 [0002] 2 BB01,BB02 1 [008..013)-> BB04(1) (always) | |
| BB04 [0003] 2 BB02,BB03 1 [013..022) (return) | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| ------------ BB01 [0000] [000..004) -> BB03(0.5),BB02(0.5) (cond), preds={} succs={BB02,BB03} | |
| ------------ BB02 [0001] [004..008) -> BB04(0.5),BB03(0.5) (cond), preds={BB01} succs={BB03,BB04} | |
| ------------ BB03 [0002] [008..013) -> BB04(1) (always), preds={BB01,BB02} succs={BB04} | |
| ------------ BB04 [0003] [013..022) (return), preds={BB02,BB03} succs={} | |
| ------------------------------------------------------------------------------------------------------------------- | |
| *************** In fgDebugCheckBBlist | |
| *************** Starting PHASE Profile instrumentation prep | |
| Using edge profiling | |
| EfficientEdgeCountInstrumentor: preparing for instrumentation | |
| [0] New probe for BB04 -> BB01 [source] | |
| [1] New probe for BB02 -> BB04 [edge] | |
| [2] New probe for BB02 -> BB03 [edge] | |
| 4 blocks, 3 probes (2 on critical edges) | |
| *************** Finishing PHASE Profile instrumentation prep [no changes] | |
| *************** Starting PHASE Profile incorporation | |
| not optimizing, so not incorporating any profile data | |
| *************** Finishing PHASE Profile incorporation [no changes] | |
| *************** Starting PHASE Canonicalize entry | |
| *************** Finishing PHASE Canonicalize entry [no changes] | |
| *************** Starting PHASE Importation | |
| impImportBlockPending for BB01 | |
| Importing BB01 (PC=000) of 'Program.EntryPoint:GetTest(Program.EntryPoint+Vector2,int):float' | |
| [ 0] 0 (0x000) ldarg.1 | |
| [ 1] 1 (0x001) ldc.i4.1 1 | |
| [ 2] 2 (0x002) bgt.s | |
| STMT00000 ( 0x000[E-] ... ??? ) | |
| [000003] ----------- * JTRUE void | |
| [000002] ----------- \--* GT int | |
| [000000] ----------- +--* LCL_VAR int V01 arg1 | |
| [000001] ----------- \--* CNS_INT int 1 | |
| impImportBlockPending for BB02 | |
| impImportBlockPending for BB03 | |
| Importing BB03 (PC=008) of 'Program.EntryPoint:GetTest(Program.EntryPoint+Vector2,int):float' | |
| [ 0] 8 (0x008) ldstr 70000001 | |
| [ 1] 13 (0x00d) ldarg.1 | |
| [ 2] 14 (0x00e) call 2B000001 | |
| In Compiler::impImportCall: opcode is call, kind=0, callRetType is void, structSize is 0 | |
| STMT00001 ( 0x008[E-] ... ??? ) | |
| [000006] --C-G------ * CALL void Program.EntryPoint:ThrowOutOfRangeException[int](System.String,int) | |
| [000004] ----------- arg0 +--* CNS_STR ref <string constant> | |
| [000005] ----------- arg1 \--* LCL_VAR int V01 arg1 | |
| impImportBlockPending for BB04 | |
| Importing BB04 (PC=019) of 'Program.EntryPoint:GetTest(Program.EntryPoint+Vector2,int):float' | |
| [ 0] 19 (0x013) ldarga.s 0 | |
| [ 1] 21 (0x015) ldflda 040001F8 | |
| [ 1] 26 (0x01a) conv.u | |
| [ 1] 27 (0x01b) ldarg.1 | |
| [ 2] 28 (0x01c) conv.i | |
| [ 2] 29 (0x01d) ldc.i4.4 4 | |
| [ 3] 30 (0x01e) mul | |
| [ 2] 31 (0x01f) add | |
| [ 1] 32 (0x020) ldind.r4 | |
| [ 1] 33 (0x021) ret | |
| STMT00002 ( 0x013[E-] ... ??? ) | |
| [000017] ---XG------ * RETURN float | |
| [000016] ---XG------ \--* IND float | |
| [000015] ----------- \--* ADD long | |
| [000009] ---------U- +--* CAST long <- ulong <- byref | |
| [000008] ----------- | \--* FIELD_ADDR byref Program.EntryPoint+Vector2:X | |
| [000007] ----------- | \--* LCL_ADDR byref V00 arg0 [+0] | |
| [000014] ----------- \--* MUL long | |
| [000011] ----------- +--* CAST long <- int | |
| [000010] ----------- | \--* LCL_VAR int V01 arg1 | |
| [000013] ----------- \--* CAST long <- int | |
| [000012] ----------- \--* CNS_INT int 4 | |
| Importing BB02 (PC=004) of 'Program.EntryPoint:GetTest(Program.EntryPoint+Vector2,int):float' | |
| [ 0] 4 (0x004) ldarg.1 | |
| [ 1] 5 (0x005) ldc.i4.0 0 | |
| [ 2] 6 (0x006) bge.s | |
| STMT00003 ( 0x004[E-] ... ??? ) | |
| [000021] ----------- * JTRUE void | |
| [000020] ----------- \--* GE int | |
| [000018] ----------- +--* LCL_VAR int V01 arg1 | |
| [000019] ----------- \--* CNS_INT int 0 | |
| impImportBlockPending for BB03 | |
| impImportBlockPending for BB04 | |
| *************** Finishing PHASE Importation | |
| Trees after Importation | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BB01 [0000] 1 1 [000..004)-> BB03(0.5),BB02(0.5) ( cond ) i | |
| BB02 [0001] 1 BB01 1 [004..008)-> BB04(0.5),BB03(0.5) ( cond ) i | |
| BB03 [0002] 2 BB01,BB02 1 [008..013)-> BB04(1) (always) i | |
| BB04 [0003] 2 BB02,BB03 1 [013..022) (return) i | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| ------------ BB01 [0000] [000..004) -> BB03(0.5),BB02(0.5) (cond), preds={} succs={BB02,BB03} | |
| ***** BB01 [0000] | |
| STMT00000 ( 0x000[E-] ... 0x002 ) | |
| [000003] ----------- * JTRUE void | |
| [000002] ----------- \--* GT int | |
| [000000] ----------- +--* LCL_VAR int V01 arg1 | |
| [000001] ----------- \--* CNS_INT int 1 | |
| ------------ BB02 [0001] [004..008) -> BB04(0.5),BB03(0.5) (cond), preds={BB01} succs={BB03,BB04} | |
| ***** BB02 [0001] | |
| STMT00003 ( 0x004[E-] ... 0x006 ) | |
| [000021] ----------- * JTRUE void | |
| [000020] ----------- \--* GE int | |
| [000018] ----------- +--* LCL_VAR int V01 arg1 | |
| [000019] ----------- \--* CNS_INT int 0 | |
| ------------ BB03 [0002] [008..013) -> BB04(1) (always), preds={BB01,BB02} succs={BB04} | |
| ***** BB03 [0002] | |
| STMT00001 ( 0x008[E-] ... 0x00E ) | |
| [000006] --C-G------ * CALL void Program.EntryPoint:ThrowOutOfRangeException[int](System.String,int) | |
| [000004] ----------- arg0 +--* CNS_STR ref <string constant> | |
| [000005] ----------- arg1 \--* LCL_VAR int V01 arg1 | |
| ------------ BB04 [0003] [013..022) (return), preds={BB02,BB03} succs={} | |
| ***** BB04 [0003] | |
| STMT00002 ( 0x013[E-] ... 0x021 ) | |
| [000017] ---XG------ * RETURN float | |
| [000016] ---XG------ \--* IND float | |
| [000015] ----------- \--* ADD long | |
| [000009] ---------U- +--* CAST long <- ulong <- byref | |
| [000008] ----------- | \--* FIELD_ADDR byref Program.EntryPoint+Vector2:X | |
| [000007] ----------- | \--* LCL_ADDR byref V00 arg0 [+0] | |
| [000014] ----------- \--* MUL long | |
| [000011] ----------- +--* CAST long <- int | |
| [000010] ----------- | \--* LCL_VAR int V01 arg1 | |
| [000013] ----------- \--* CAST long <- int | |
| [000012] ----------- \--* CNS_INT int 4 | |
| ------------------------------------------------------------------------------------------------------------------- | |
| *************** In fgDebugCheckBBlist | |
| [deferred prior check failed -- skipping this check] | |
| *************** Starting PHASE Profile instrumentation | |
| EfficientEdgeCountInstrumentor: splitting up to 2 critical edges | |
| New Basic Block BB05 [0004] created. | |
| Splitting edge from BB02 to BB03; adding BB05 | |
| setting likelihood of BB05 -> BB03 to 1 | |
| New relocated probe for BB02 -> BB03 [reloc to BB05 ] | |
| fgFindInsertPoint(regionIndex=0, putInTryRegion=true, startBlk=BB01, endBlk=BB00, nearBlk=BB02, jumpBlk=BB00, runRarely=false) | |
| fgNewBBinRegion(jumpKind=BBJ_ALWAYS, tryIndex=0, hndIndex=0, putInFilter=false, runRarely=false, insertAtEnd=false): inserting after BB04 | |
| New Basic Block BB06 [0005] created. | |
| Splitting edge from BB02 to BB04; adding BB06 | |
| setting likelihood of BB06 -> BB04 to 1 | |
| New relocated probe for BB02 -> BB04 [reloc to BB06 ] | |
| Instrumenting method: 3 count probes, 0 class probes and 0 value probes | |
| Instrumentation data base address is 00007FF7F15423B0 | |
| Using scalable probes | |
| Using scalable probes | |
| Using scalable probes | |
| Using scalable probes | |
| Using scalable probes | |
| Using scalable probes | |
| *************** Finishing PHASE Profile instrumentation | |
| Trees after Profile instrumentation | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BB01 [0000] 1 1 [000..004)-> BB03(0.5),BB02(0.5) ( cond ) i | |
| BB02 [0001] 1 BB01 1 [004..008)-> BB06(0.5),BB05(0.5) ( cond ) i | |
| BB05 [0004] 1 BB02 0.50 [???..???)-> BB03(1) (always) i internal | |
| BB03 [0002] 2 BB01,BB05 1 [008..013)-> BB04(1) (always) i | |
| BB04 [0003] 2 BB03,BB06 1 [013..022) (return) i | |
| BB06 [0005] 1 BB02 0.50 [???..???)-> BB04(1) (always) i internal | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| ------------ BB01 [0000] [000..004) -> BB03(0.5),BB02(0.5) (cond), preds={} succs={BB02,BB03} | |
| ***** BB01 [0000] | |
| STMT00000 ( 0x000[E-] ... 0x002 ) | |
| [000003] ----------- * JTRUE void | |
| [000002] ----------- \--* GT int | |
| [000000] ----------- +--* LCL_VAR int V01 arg1 | |
| [000001] ----------- \--* CNS_INT int 1 | |
| ------------ BB02 [0001] [004..008) -> BB06(0.5),BB05(0.5) (cond), preds={BB01} succs={BB05,BB06} | |
| ***** BB02 [0001] | |
| STMT00003 ( 0x004[E-] ... 0x006 ) | |
| [000021] ----------- * JTRUE void | |
| [000020] ----------- \--* GE int | |
| [000018] ----------- +--* LCL_VAR int V01 arg1 | |
| [000019] ----------- \--* CNS_INT int 0 | |
| ------------ BB05 [0004] [???..???) -> BB03(1) (always), preds={BB02} succs={BB03} | |
| ***** BB05 [0004] | |
| STMT00004 ( ??? ... ??? ) | |
| [000023] --CXG------ * CALL help int CORINFO_HELP_COUNTPROFILE32 | |
| [000022] H---------- arg0 \--* CNS_INT(h) long 0x7ff7f15423c0 bbc | |
| ------------ BB03 [0002] [008..013) -> BB04(1) (always), preds={BB01,BB05} succs={BB04} | |
| ***** BB03 [0002] | |
| STMT00001 ( 0x008[E-] ... 0x00E ) | |
| [000006] --C-G------ * CALL void Program.EntryPoint:ThrowOutOfRangeException[int](System.String,int) | |
| [000004] ----------- arg0 +--* CNS_STR ref <string constant> | |
| [000005] ----------- arg1 \--* LCL_VAR int V01 arg1 | |
| ------------ BB04 [0003] [013..022) (return), preds={BB03,BB06} succs={} | |
| ***** BB04 [0003] | |
| STMT00005 ( ??? ... ??? ) | |
| [000025] --CXG------ * CALL help int CORINFO_HELP_COUNTPROFILE32 | |
| [000024] H---------- arg0 \--* CNS_INT(h) long 0x7ff7f15423c4 bbc | |
| ***** BB04 [0003] | |
| STMT00002 ( 0x013[E-] ... 0x021 ) | |
| [000017] ---XG------ * RETURN float | |
| [000016] ---XG------ \--* IND float | |
| [000015] ----------- \--* ADD long | |
| [000009] ---------U- +--* CAST long <- ulong <- byref | |
| [000008] ----------- | \--* FIELD_ADDR byref Program.EntryPoint+Vector2:X | |
| [000007] ----------- | \--* LCL_ADDR byref V00 arg0 [+0] | |
| [000014] ----------- \--* MUL long | |
| [000011] ----------- +--* CAST long <- int | |
| [000010] ----------- | \--* LCL_VAR int V01 arg1 | |
| [000013] ----------- \--* CAST long <- int | |
| [000012] ----------- \--* CNS_INT int 4 | |
| ------------ BB06 [0005] [???..???) -> BB04(1) (always), preds={BB02} succs={BB04} | |
| ***** BB06 [0005] | |
| STMT00006 ( ??? ... ??? ) | |
| [000027] --CXG------ * CALL help int CORINFO_HELP_COUNTPROFILE32 | |
| [000026] H---------- arg0 \--* CNS_INT(h) long 0x7ff7f15423c8 bbc | |
| ------------------------------------------------------------------------------------------------------------------- | |
| *************** In fgDebugCheckBBlist | |
| [deferred prior check failed -- skipping this check] | |
| *************** 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 Save contexts around async calls | |
| No async calls where execution context capture/restore is necessary | |
| *************** Finishing PHASE Save contexts around async calls [no changes] | |
| *************** Starting PHASE Morph - Init | |
| *************** Finishing PHASE Morph - Init [no changes] | |
| *************** Starting PHASE Morph - Inlining | |
| *************** Finishing PHASE Morph - Inlining [no changes] | |
| *************** Starting PHASE Allocate Objects | |
| no newobjs or newarr in this method; punting | |
| *************** Finishing PHASE Allocate Objects [no changes] | |
| *************** Starting PHASE Morph - Add internal blocks | |
| *************** After fgAddInternal() | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BB01 [0000] 1 1 [000..004)-> BB03(0.5),BB02(0.5) ( cond ) i | |
| BB02 [0001] 1 BB01 1 [004..008)-> BB06(0.5),BB05(0.5) ( cond ) i | |
| BB05 [0004] 1 BB02 0.50 [???..???)-> BB03(1) (always) i internal | |
| BB03 [0002] 2 BB01,BB05 1 [008..013)-> BB04(1) (always) i | |
| BB04 [0003] 2 BB03,BB06 1 [013..022) (return) i | |
| BB06 [0005] 1 BB02 0.50 [???..???)-> BB04(1) (always) i internal | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| *************** Exception Handling table is empty | |
| *************** Finishing PHASE Morph - Add internal blocks [no changes] | |
| *************** Starting PHASE Remove empty try | |
| *************** In fgRemoveEmptyTry() | |
| No EH in this method, nothing to remove. | |
| *************** Finishing PHASE Remove empty try [no changes] | |
| *************** Starting PHASE Remove empty try/catch/fault | |
| *************** In fgRemoveEmptyTryCatchOrTryFault() | |
| No EH in this method, nothing to remove. | |
| *************** Finishing PHASE Remove empty try/catch/fault [no changes] | |
| *************** Starting PHASE Remove empty finally | |
| No EH in this method, nothing to remove. | |
| *************** Finishing PHASE Remove empty finally [no changes] | |
| *************** Starting PHASE Merge callfinally chains | |
| No EH in this method, nothing to merge. | |
| *************** Finishing PHASE Merge callfinally chains [no changes] | |
| *************** Starting PHASE Clone finally | |
| No EH in this method, no cloning. | |
| *************** Finishing PHASE Clone finally [no changes] | |
| *************** Starting PHASE Morph - Promote Structs | |
| promotion opt flag not enabled | |
| *************** Finishing PHASE Morph - Promote Structs [no changes] | |
| *************** Starting PHASE Morph - Structs/AddrExp | |
| LocalAddressVisitor visiting statement: | |
| STMT00000 ( 0x000[E-] ... 0x002 ) | |
| [000003] ----------- * JTRUE void | |
| [000002] ----------- \--* GT int | |
| [000000] ----------- +--* LCL_VAR int V01 arg1 | |
| [000001] ----------- \--* CNS_INT int 1 | |
| LocalAddressVisitor visiting statement: | |
| STMT00003 ( 0x004[E-] ... 0x006 ) | |
| [000021] ----------- * JTRUE void | |
| [000020] ----------- \--* GE int | |
| [000018] ----------- +--* LCL_VAR int V01 arg1 | |
| [000019] ----------- \--* CNS_INT int 0 | |
| LocalAddressVisitor visiting statement: | |
| STMT00004 ( ??? ... ??? ) | |
| [000023] --CXG------ * CALL help int CORINFO_HELP_COUNTPROFILE32 | |
| [000022] H---------- arg0 \--* CNS_INT(h) long 0x7ff7f15423c0 bbc | |
| LocalAddressVisitor visiting statement: | |
| STMT00001 ( 0x008[E-] ... 0x00E ) | |
| [000006] --C-G------ * CALL void Program.EntryPoint:ThrowOutOfRangeException[int](System.String,int) | |
| [000004] ----------- arg0 +--* CNS_STR ref <string constant> | |
| [000005] ----------- arg1 \--* LCL_VAR int V01 arg1 | |
| LocalAddressVisitor visiting statement: | |
| STMT00005 ( ??? ... ??? ) | |
| [000025] --CXG------ * CALL help int CORINFO_HELP_COUNTPROFILE32 | |
| [000024] H---------- arg0 \--* CNS_INT(h) long 0x7ff7f15423c4 bbc | |
| LocalAddressVisitor visiting statement: | |
| STMT00002 ( 0x013[E-] ... 0x021 ) | |
| [000017] ---XG------ * RETURN float | |
| [000016] ---XG------ \--* IND float | |
| [000015] ----------- \--* ADD long | |
| [000009] ---------U- +--* CAST long <- ulong <- byref | |
| [000008] ----------- | \--* FIELD_ADDR byref Program.EntryPoint+Vector2:X | |
| [000007] ----------- | \--* LCL_ADDR byref V00 arg0 [+0] | |
| [000014] ----------- \--* MUL long | |
| [000011] ----------- +--* CAST long <- int | |
| [000010] ----------- | \--* LCL_VAR int V01 arg1 | |
| [000013] ----------- \--* CAST long <- int | |
| [000012] ----------- \--* CNS_INT int 4 | |
| Local V00 should not be enregistered because: it is address exposed | |
| LocalAddressVisitor modified statement: | |
| STMT00002 ( 0x013[E-] ... 0x021 ) | |
| [000017] ---XG------ * RETURN float | |
| [000016] ---XG------ \--* IND float | |
| [000015] ----------- \--* ADD long | |
| [000009] ---------U- +--* CAST long <- ulong <- byref | |
| [000008] ----------- | \--* LCL_ADDR byref V00 arg0 [+0] | |
| [000014] ----------- \--* MUL long | |
| [000011] ----------- +--* CAST long <- int | |
| [000010] ----------- | \--* LCL_VAR int V01 arg1 | |
| [000013] ----------- \--* CAST long <- int | |
| [000012] ----------- \--* CNS_INT int 4 | |
| LocalAddressVisitor visiting statement: | |
| STMT00006 ( ??? ... ??? ) | |
| [000027] --CXG------ * CALL help int CORINFO_HELP_COUNTPROFILE32 | |
| [000026] H---------- arg0 \--* CNS_INT(h) long 0x7ff7f15423c8 bbc | |
| *************** Finishing PHASE Morph - Structs/AddrExp | |
| Trees after Morph - Structs/AddrExp | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BB01 [0000] 1 1 [000..004)-> BB03(0.5),BB02(0.5) ( cond ) i | |
| BB02 [0001] 1 BB01 1 [004..008)-> BB06(0.5),BB05(0.5) ( cond ) i | |
| BB05 [0004] 1 BB02 0.50 [???..???)-> BB03(1) (always) i internal | |
| BB03 [0002] 2 BB01,BB05 1 [008..013)-> BB04(1) (always) i | |
| BB04 [0003] 2 BB03,BB06 1 [013..022) (return) i | |
| BB06 [0005] 1 BB02 0.50 [???..???)-> BB04(1) (always) i internal | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| ------------ BB01 [0000] [000..004) -> BB03(0.5),BB02(0.5) (cond), preds={} succs={BB02,BB03} | |
| ***** BB01 [0000] | |
| STMT00000 ( 0x000[E-] ... 0x002 ) | |
| [000003] ----------- * JTRUE void | |
| [000002] ----------- \--* GT int | |
| [000000] ----------- +--* LCL_VAR int V01 arg1 | |
| [000001] ----------- \--* CNS_INT int 1 | |
| ------------ BB02 [0001] [004..008) -> BB06(0.5),BB05(0.5) (cond), preds={BB01} succs={BB05,BB06} | |
| ***** BB02 [0001] | |
| STMT00003 ( 0x004[E-] ... 0x006 ) | |
| [000021] ----------- * JTRUE void | |
| [000020] ----------- \--* GE int | |
| [000018] ----------- +--* LCL_VAR int V01 arg1 | |
| [000019] ----------- \--* CNS_INT int 0 | |
| ------------ BB05 [0004] [???..???) -> BB03(1) (always), preds={BB02} succs={BB03} | |
| ***** BB05 [0004] | |
| STMT00004 ( ??? ... ??? ) | |
| [000023] --CXG------ * CALL help int CORINFO_HELP_COUNTPROFILE32 | |
| [000022] H---------- arg0 \--* CNS_INT(h) long 0x7ff7f15423c0 bbc | |
| ------------ BB03 [0002] [008..013) -> BB04(1) (always), preds={BB01,BB05} succs={BB04} | |
| ***** BB03 [0002] | |
| STMT00001 ( 0x008[E-] ... 0x00E ) | |
| [000006] --C-G------ * CALL void Program.EntryPoint:ThrowOutOfRangeException[int](System.String,int) | |
| [000004] ----------- arg0 +--* CNS_STR ref <string constant> | |
| [000005] ----------- arg1 \--* LCL_VAR int V01 arg1 | |
| ------------ BB04 [0003] [013..022) (return), preds={BB03,BB06} succs={} | |
| ***** BB04 [0003] | |
| STMT00005 ( ??? ... ??? ) | |
| [000025] --CXG------ * CALL help int CORINFO_HELP_COUNTPROFILE32 | |
| [000024] H---------- arg0 \--* CNS_INT(h) long 0x7ff7f15423c4 bbc | |
| ***** BB04 [0003] | |
| STMT00002 ( 0x013[E-] ... 0x021 ) | |
| [000017] ---XG------ * RETURN float | |
| [000016] ---XG------ \--* IND float | |
| [000015] ----------- \--* ADD long | |
| [000009] ---------U- +--* CAST long <- ulong <- byref | |
| [000008] ----------- | \--* LCL_ADDR byref V00 arg0 [+0] | |
| [000014] ----------- \--* MUL long | |
| [000011] ----------- +--* CAST long <- int | |
| [000010] ----------- | \--* LCL_VAR int V01 arg1 | |
| [000013] ----------- \--* CAST long <- int | |
| [000012] ----------- \--* CNS_INT int 4 | |
| ------------ BB06 [0005] [???..???) -> BB04(1) (always), preds={BB02} succs={BB04} | |
| ***** BB06 [0005] | |
| STMT00006 ( ??? ... ??? ) | |
| [000027] --CXG------ * CALL help int CORINFO_HELP_COUNTPROFILE32 | |
| [000026] H---------- arg0 \--* CNS_INT(h) long 0x7ff7f15423c8 bbc | |
| ------------------------------------------------------------------------------------------------------------------- | |
| *************** In fgDebugCheckBBlist | |
| [deferred prior check failed -- skipping this check] | |
| *************** Starting PHASE Optimize mask conversions | |
| Skipping. Optimizations Disabled | |
| *************** Finishing PHASE Optimize mask conversions [no changes] | |
| *************** Starting PHASE Early liveness | |
| *************** Finishing PHASE Early liveness [no changes] | |
| *************** Starting PHASE Forward Substitution | |
| *************** Finishing PHASE Forward Substitution [no changes] | |
| *************** Starting PHASE Physical promotion | |
| *************** Finishing PHASE Physical promotion [no changes] | |
| *************** Starting PHASE Identify candidates for implicit byref copy omission | |
| *************** Finishing PHASE Identify candidates for implicit byref copy omission [no changes] | |
| *************** Starting PHASE Morph - ByRefs | |
| Changing the lvType for struct parameter V00 to TYP_BYREF. | |
| *************** Finishing PHASE Morph - ByRefs | |
| Trees after Morph - ByRefs | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BB01 [0000] 1 1 [000..004)-> BB03(0.5),BB02(0.5) ( cond ) i | |
| BB02 [0001] 1 BB01 1 [004..008)-> BB06(0.5),BB05(0.5) ( cond ) i | |
| BB05 [0004] 1 BB02 0.50 [???..???)-> BB03(1) (always) i internal | |
| BB03 [0002] 2 BB01,BB05 1 [008..013)-> BB04(1) (always) i | |
| BB04 [0003] 2 BB03,BB06 1 [013..022) (return) i | |
| BB06 [0005] 1 BB02 0.50 [???..???)-> BB04(1) (always) i internal | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| ------------ BB01 [0000] [000..004) -> BB03(0.5),BB02(0.5) (cond), preds={} succs={BB02,BB03} | |
| ***** BB01 [0000] | |
| STMT00000 ( 0x000[E-] ... 0x002 ) | |
| [000003] ----------- * JTRUE void | |
| [000002] ----------- \--* GT int | |
| [000000] ----------- +--* LCL_VAR int V01 arg1 | |
| [000001] ----------- \--* CNS_INT int 1 | |
| ------------ BB02 [0001] [004..008) -> BB06(0.5),BB05(0.5) (cond), preds={BB01} succs={BB05,BB06} | |
| ***** BB02 [0001] | |
| STMT00003 ( 0x004[E-] ... 0x006 ) | |
| [000021] ----------- * JTRUE void | |
| [000020] ----------- \--* GE int | |
| [000018] ----------- +--* LCL_VAR int V01 arg1 | |
| [000019] ----------- \--* CNS_INT int 0 | |
| ------------ BB05 [0004] [???..???) -> BB03(1) (always), preds={BB02} succs={BB03} | |
| ***** BB05 [0004] | |
| STMT00004 ( ??? ... ??? ) | |
| [000023] --CXG------ * CALL help int CORINFO_HELP_COUNTPROFILE32 | |
| [000022] H---------- arg0 \--* CNS_INT(h) long 0x7ff7f15423c0 bbc | |
| ------------ BB03 [0002] [008..013) -> BB04(1) (always), preds={BB01,BB05} succs={BB04} | |
| ***** BB03 [0002] | |
| STMT00001 ( 0x008[E-] ... 0x00E ) | |
| [000006] --C-G------ * CALL void Program.EntryPoint:ThrowOutOfRangeException[int](System.String,int) | |
| [000004] ----------- arg0 +--* CNS_STR ref <string constant> | |
| [000005] ----------- arg1 \--* LCL_VAR int V01 arg1 | |
| ------------ BB04 [0003] [013..022) (return), preds={BB03,BB06} succs={} | |
| ***** BB04 [0003] | |
| STMT00005 ( ??? ... ??? ) | |
| [000025] --CXG------ * CALL help int CORINFO_HELP_COUNTPROFILE32 | |
| [000024] H---------- arg0 \--* CNS_INT(h) long 0x7ff7f15423c4 bbc | |
| ***** BB04 [0003] | |
| STMT00002 ( 0x013[E-] ... 0x021 ) | |
| [000017] ---XG------ * RETURN float | |
| [000016] ---XG------ \--* IND float | |
| [000015] ----------- \--* ADD long | |
| [000009] ---------U- +--* CAST long <- ulong <- byref | |
| [000008] ----------- | \--* LCL_ADDR byref V00 arg0 [+0] | |
| [000014] ----------- \--* MUL long | |
| [000011] ----------- +--* CAST long <- int | |
| [000010] ----------- | \--* LCL_VAR int V01 arg1 | |
| [000013] ----------- \--* CAST long <- int | |
| [000012] ----------- \--* CNS_INT int 4 | |
| ------------ BB06 [0005] [???..???) -> BB04(1) (always), preds={BB02} succs={BB04} | |
| ***** BB06 [0005] | |
| STMT00006 ( ??? ... ??? ) | |
| [000027] --CXG------ * CALL help int CORINFO_HELP_COUNTPROFILE32 | |
| [000026] H---------- arg0 \--* CNS_INT(h) long 0x7ff7f15423c8 bbc | |
| ------------------------------------------------------------------------------------------------------------------- | |
| *************** In fgDebugCheckBBlist | |
| [deferred prior check failed -- skipping this check] | |
| *************** Starting PHASE Morph - Global | |
| compEnregLocals() is false, setting doNotEnreg flag for all locals. | |
| Local V00 should not be enregistered because: opts.compFlags & CLFLG_REGVAR is not set | |
| Local V01 should not be enregistered because: opts.compFlags & CLFLG_REGVAR is not set | |
| Local V02 should not be enregistered because: opts.compFlags & CLFLG_REGVAR is not set | |
| Morphing BB01 | |
| fgMorphTree BB01, STMT00000 (before) | |
| [000003] ----------- * JTRUE void | |
| [000002] ----------- \--* GT int | |
| [000000] ----------- +--* LCL_VAR int V01 arg1 | |
| [000001] ----------- \--* CNS_INT int 1 | |
| Morphing BB02 | |
| fgMorphTree BB02, STMT00003 (before) | |
| [000021] ----------- * JTRUE void | |
| [000020] ----------- \--* GE int | |
| [000018] ----------- +--* LCL_VAR int V01 arg1 | |
| [000019] ----------- \--* CNS_INT int 0 | |
| Morphing BB05 | |
| fgMorphTree BB05, STMT00004 (before) | |
| [000023] --CXG------ * CALL help int CORINFO_HELP_COUNTPROFILE32 | |
| [000022] H---------- arg0 \--* CNS_INT(h) long 0x7ff7f15423c0 bbc | |
| Adding final args and determining ABI info for [000023]: | |
| Argument 0 ABI info: [00..08) reg rcx | |
| Args for call [000023] CALL after AddFinalArgsAndDetermineABIInfo: | |
| CallArg[[000022].CNS_INT long (By value), 1 segments: <[00..08) reg rcx>] | |
| Morphing args for 23.CALL: | |
| Sorting the arguments: | |
| Deferred argument: | |
| [000022] H----+----- * CNS_INT(h) long 0x7ff7f15423c0 bbc | |
| Moved to late list | |
| Register placement order: rcx | |
| Args for [000023].CALL after fgMorphArgs: | |
| CallArg[[000022].CNS_INT long (By value), 1 segments: <[00..08) reg rcx>, processed] | |
| OutgoingArgsStackSize is 32 | |
| Morphing BB03 | |
| fgMorphTree BB03, STMT00001 (before) | |
| [000006] --C-G------ * CALL void Program.EntryPoint:ThrowOutOfRangeException[int](System.String,int) | |
| [000004] ----------- arg0 +--* CNS_STR ref <string constant> | |
| [000005] ----------- arg1 \--* LCL_VAR int V01 arg1 | |
| Adding final args and determining ABI info for [000006]: | |
| Argument 0 ABI info: [00..08) reg rcx | |
| Argument 1 ABI info: [00..04) reg rdx | |
| Args for call [000006] CALL after AddFinalArgsAndDetermineABIInfo: | |
| CallArg[[000004].CNS_STR ref (By value), 1 segments: <[00..08) reg rcx>] | |
| CallArg[[000005].LCL_VAR int (By value), 1 segments: <[00..04) reg rdx>] | |
| Morphing args for 6.CALL: | |
| Sorting the arguments: | |
| Deferred argument: | |
| [000005] -----+----- * LCL_VAR int V01 arg1 | |
| Moved to late list | |
| Deferred argument: | |
| [000028] H----+----- * CNS_INT(h) ref 'You tried to access this vector at index: {0}' | |
| Moved to late list | |
| Register placement order: rdx rcx | |
| Args for [000006].CALL after fgMorphArgs: | |
| CallArg[[000028].CNS_INT ref (By value), 1 segments: <[00..08) reg rcx>, processed] | |
| CallArg[[000005].LCL_VAR int (By value), 1 segments: <[00..04) reg rdx>, processed] | |
| OutgoingArgsStackSize is 32 | |
| fgMorphTree BB03, STMT00001 (after) | |
| [000006] --CXG+----- * CALL void Program.EntryPoint:ThrowOutOfRangeException[int](System.String,int) | |
| [000005] -----+----- arg1 rdx +--* LCL_VAR int V01 arg1 | |
| [000028] H----+----- arg0 rcx \--* CNS_INT(h) ref 'You tried to access this vector at index: {0}' | |
| Morphing BB04 | |
| fgMorphTree BB04, STMT00005 (before) | |
| [000025] --CXG------ * CALL help int CORINFO_HELP_COUNTPROFILE32 | |
| [000024] H---------- arg0 \--* CNS_INT(h) long 0x7ff7f15423c4 bbc | |
| Adding final args and determining ABI info for [000025]: | |
| Argument 0 ABI info: [00..08) reg rcx | |
| Args for call [000025] CALL after AddFinalArgsAndDetermineABIInfo: | |
| CallArg[[000024].CNS_INT long (By value), 1 segments: <[00..08) reg rcx>] | |
| Morphing args for 25.CALL: | |
| Sorting the arguments: | |
| Deferred argument: | |
| [000024] H----+----- * CNS_INT(h) long 0x7ff7f15423c4 bbc | |
| Moved to late list | |
| Register placement order: rcx | |
| Args for [000025].CALL after fgMorphArgs: | |
| CallArg[[000024].CNS_INT long (By value), 1 segments: <[00..08) reg rcx>, processed] | |
| OutgoingArgsStackSize is 32 | |
| fgMorphTree BB04, STMT00002 (before) | |
| [000017] ---XG------ * RETURN float | |
| [000016] ---XG------ \--* IND float | |
| [000015] ----------- \--* ADD long | |
| [000009] ---------U- +--* CAST long <- ulong <- byref | |
| [000008] ----------- | \--* LCL_ADDR byref V00 arg0 [+0] | |
| [000014] ----------- \--* MUL long | |
| [000011] ----------- +--* CAST long <- int | |
| [000010] ----------- | \--* LCL_VAR int V01 arg1 | |
| [000013] ----------- \--* CAST long <- int | |
| [000012] ----------- \--* CNS_INT int 4 | |
| lvaGrabTemp returning 3 (V03 tmp1) called for Cast away GC. | |
| Rewriting an implicit by-ref parameter reference: | |
| [000008] ----------- * LCL_ADDR byref V00 arg0 [+0] | |
| Transformed into: | |
| [000008] ----------- * LCL_VAR byref V00 arg0 | |
| Folding long operator with constant nodes into a constant: | |
| [000013] ----------- * CAST long <- int | |
| [000012] -----+----- \--* CNS_INT int 4 | |
| Bashed to long constant: | |
| [000013] ----------- * CNS_INT long 4 | |
| fgMorphTree BB04, STMT00002 (after) | |
| [000017] -A-XG+----- * RETURN float | |
| [000016] -A-XG+----- \--* IND float | |
| [000015] -A---+----- \--* ADD long | |
| [000032] -A---+----- +--* COMMA long | |
| [000029] DA---+----- | +--* STORE_LCL_VAR long V03 tmp1 | |
| [000008] -----+----- | | \--* LCL_VAR byref V00 arg0 | |
| [000030] -----+----- | \--* LCL_VAR long V03 tmp1 | |
| [000014] -----+----- \--* LSH long | |
| [000011] -----+----- +--* CAST long <- int | |
| [000010] -----+----- | \--* LCL_VAR int V01 arg1 | |
| [000013] -----+----- \--* CNS_INT long 2 | |
| Morphing BB06 | |
| fgMorphTree BB06, STMT00006 (before) | |
| [000027] --CXG------ * CALL help int CORINFO_HELP_COUNTPROFILE32 | |
| [000026] H---------- arg0 \--* CNS_INT(h) long 0x7ff7f15423c8 bbc | |
| Adding final args and determining ABI info for [000027]: | |
| Argument 0 ABI info: [00..08) reg rcx | |
| Args for call [000027] CALL after AddFinalArgsAndDetermineABIInfo: | |
| CallArg[[000026].CNS_INT long (By value), 1 segments: <[00..08) reg rcx>] | |
| Morphing args for 27.CALL: | |
| Sorting the arguments: | |
| Deferred argument: | |
| [000026] H----+----- * CNS_INT(h) long 0x7ff7f15423c8 bbc | |
| Moved to late list | |
| Register placement order: rcx | |
| Args for [000027].CALL after fgMorphArgs: | |
| CallArg[[000026].CNS_INT long (By value), 1 segments: <[00..08) reg rcx>, processed] | |
| OutgoingArgsStackSize is 32 | |
| *************** Finishing PHASE Morph - Global | |
| Trees after Morph - Global | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BB01 [0000] 1 1 [000..004)-> BB03(0.5),BB02(0.5) ( cond ) i | |
| BB02 [0001] 1 BB01 1 [004..008)-> BB06(0.5),BB05(0.5) ( cond ) i | |
| BB05 [0004] 1 BB02 0.50 [???..???)-> BB03(1) (always) i internal hascall | |
| BB03 [0002] 2 BB01,BB05 1 [008..013)-> BB04(1) (always) i hascall gcsafe | |
| BB04 [0003] 2 BB03,BB06 1 [013..022) (return) i hascall | |
| BB06 [0005] 1 BB02 0.50 [???..???)-> BB04(1) (always) i internal hascall | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| ------------ BB01 [0000] [000..004) -> BB03(0.5),BB02(0.5) (cond), preds={} succs={BB02,BB03} | |
| ***** BB01 [0000] | |
| STMT00000 ( 0x000[E-] ... 0x002 ) | |
| [000003] -----+----- * JTRUE void | |
| [000002] J----+-N--- \--* GT int | |
| [000000] -----+----- +--* LCL_VAR int V01 arg1 | |
| [000001] -----+----- \--* CNS_INT int 1 | |
| ------------ BB02 [0001] [004..008) -> BB06(0.5),BB05(0.5) (cond), preds={BB01} succs={BB05,BB06} | |
| ***** BB02 [0001] | |
| STMT00003 ( 0x004[E-] ... 0x006 ) | |
| [000021] -----+----- * JTRUE void | |
| [000020] J----+-N--- \--* GE int | |
| [000018] -----+----- +--* LCL_VAR int V01 arg1 | |
| [000019] -----+----- \--* CNS_INT int 0 | |
| ------------ BB05 [0004] [???..???) -> BB03(1) (always), preds={BB02} succs={BB03} | |
| ***** BB05 [0004] | |
| STMT00004 ( ??? ... ??? ) | |
| [000023] --CXG+----- * CALL help int CORINFO_HELP_COUNTPROFILE32 | |
| [000022] H----+----- arg0 rcx \--* CNS_INT(h) long 0x7ff7f15423c0 bbc | |
| ------------ BB03 [0002] [008..013) -> BB04(1) (always), preds={BB01,BB05} succs={BB04} | |
| ***** BB03 [0002] | |
| STMT00001 ( 0x008[E-] ... 0x00E ) | |
| [000006] --CXG+----- * CALL void Program.EntryPoint:ThrowOutOfRangeException[int](System.String,int) | |
| [000005] -----+----- arg1 rdx +--* LCL_VAR int V01 arg1 | |
| [000028] H----+----- arg0 rcx \--* CNS_INT(h) ref 'You tried to access this vector at index: {0}' | |
| ------------ BB04 [0003] [013..022) (return), preds={BB03,BB06} succs={} | |
| ***** BB04 [0003] | |
| STMT00005 ( ??? ... ??? ) | |
| [000025] --CXG+----- * CALL help int CORINFO_HELP_COUNTPROFILE32 | |
| [000024] H----+----- arg0 rcx \--* CNS_INT(h) long 0x7ff7f15423c4 bbc | |
| ***** BB04 [0003] | |
| STMT00002 ( 0x013[E-] ... 0x021 ) | |
| [000017] -A-XG+----- * RETURN float | |
| [000016] -A-XG+----- \--* IND float | |
| [000015] -A---+----- \--* ADD long | |
| [000032] -A---+----- +--* COMMA long | |
| [000029] DA---+----- | +--* STORE_LCL_VAR long V03 tmp1 | |
| [000008] -----+----- | | \--* LCL_VAR byref V00 arg0 | |
| [000030] -----+----- | \--* LCL_VAR long V03 tmp1 | |
| [000014] -----+----- \--* LSH long | |
| [000011] -----+----- +--* CAST long <- int | |
| [000010] -----+----- | \--* LCL_VAR int V01 arg1 | |
| [000013] -----+----- \--* CNS_INT long 2 | |
| ------------ BB06 [0005] [???..???) -> BB04(1) (always), preds={BB02} succs={BB04} | |
| ***** BB06 [0005] | |
| STMT00006 ( ??? ... ??? ) | |
| [000027] --CXG+----- * CALL help int CORINFO_HELP_COUNTPROFILE32 | |
| [000026] H----+----- arg0 rcx \--* CNS_INT(h) long 0x7ff7f15423c8 bbc | |
| ------------------------------------------------------------------------------------------------------------------- | |
| *************** In fgDebugCheckBBlist | |
| [deferred prior check failed -- skipping this check] | |
| *************** Starting PHASE Post-Morph | |
| *************** In fgMarkDemotedImplicitByRefArgs() | |
| Clearing annotation for V00 | |
| *************** Finishing PHASE Post-Morph | |
| Trees after Post-Morph | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BB01 [0000] 1 1 [000..004)-> BB03(0.5),BB02(0.5) ( cond ) i | |
| BB02 [0001] 1 BB01 1 [004..008)-> BB06(0.5),BB05(0.5) ( cond ) i | |
| BB05 [0004] 1 BB02 0.50 [???..???)-> BB03(1) (always) i internal hascall | |
| BB03 [0002] 2 BB01,BB05 1 [008..013)-> BB04(1) (always) i hascall gcsafe | |
| BB04 [0003] 2 BB03,BB06 1 [013..022) (return) i hascall | |
| BB06 [0005] 1 BB02 0.50 [???..???)-> BB04(1) (always) i internal hascall | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| ------------ BB01 [0000] [000..004) -> BB03(0.5),BB02(0.5) (cond), preds={} succs={BB02,BB03} | |
| ***** BB01 [0000] | |
| STMT00000 ( 0x000[E-] ... 0x002 ) | |
| [000003] -----+----- * JTRUE void | |
| [000002] J----+-N--- \--* GT int | |
| [000000] -----+----- +--* LCL_VAR int V01 arg1 | |
| [000001] -----+----- \--* CNS_INT int 1 | |
| ------------ BB02 [0001] [004..008) -> BB06(0.5),BB05(0.5) (cond), preds={BB01} succs={BB05,BB06} | |
| ***** BB02 [0001] | |
| STMT00003 ( 0x004[E-] ... 0x006 ) | |
| [000021] -----+----- * JTRUE void | |
| [000020] J----+-N--- \--* GE int | |
| [000018] -----+----- +--* LCL_VAR int V01 arg1 | |
| [000019] -----+----- \--* CNS_INT int 0 | |
| ------------ BB05 [0004] [???..???) -> BB03(1) (always), preds={BB02} succs={BB03} | |
| ***** BB05 [0004] | |
| STMT00004 ( ??? ... ??? ) | |
| [000023] --CXG+----- * CALL help int CORINFO_HELP_COUNTPROFILE32 | |
| [000022] H----+----- arg0 rcx \--* CNS_INT(h) long 0x7ff7f15423c0 bbc | |
| ------------ BB03 [0002] [008..013) -> BB04(1) (always), preds={BB01,BB05} succs={BB04} | |
| ***** BB03 [0002] | |
| STMT00001 ( 0x008[E-] ... 0x00E ) | |
| [000006] --CXG+----- * CALL void Program.EntryPoint:ThrowOutOfRangeException[int](System.String,int) | |
| [000005] -----+----- arg1 rdx +--* LCL_VAR int V01 arg1 | |
| [000028] H----+----- arg0 rcx \--* CNS_INT(h) ref 'You tried to access this vector at index: {0}' | |
| ------------ BB04 [0003] [013..022) (return), preds={BB03,BB06} succs={} | |
| ***** BB04 [0003] | |
| STMT00005 ( ??? ... ??? ) | |
| [000025] --CXG+----- * CALL help int CORINFO_HELP_COUNTPROFILE32 | |
| [000024] H----+----- arg0 rcx \--* CNS_INT(h) long 0x7ff7f15423c4 bbc | |
| ***** BB04 [0003] | |
| STMT00002 ( 0x013[E-] ... 0x021 ) | |
| [000017] -A-XG+----- * RETURN float | |
| [000016] -A-XG+----- \--* IND float | |
| [000015] -A---+----- \--* ADD long | |
| [000032] -A---+----- +--* COMMA long | |
| [000029] DA---+----- | +--* STORE_LCL_VAR long V03 tmp1 | |
| [000008] -----+----- | | \--* LCL_VAR byref V00 arg0 | |
| [000030] -----+----- | \--* LCL_VAR long V03 tmp1 | |
| [000014] -----+----- \--* LSH long | |
| [000011] -----+----- +--* CAST long <- int | |
| [000010] -----+----- | \--* LCL_VAR int V01 arg1 | |
| [000013] -----+----- \--* CNS_INT long 2 | |
| ------------ BB06 [0005] [???..???) -> BB04(1) (always), preds={BB02} succs={BB04} | |
| ***** BB06 [0005] | |
| STMT00006 ( ??? ... ??? ) | |
| [000027] --CXG+----- * CALL help int CORINFO_HELP_COUNTPROFILE32 | |
| [000026] H----+----- arg0 rcx \--* CNS_INT(h) long 0x7ff7f15423c8 bbc | |
| ------------------------------------------------------------------------------------------------------------------- | |
| *************** In fgDebugCheckBBlist | |
| [deferred prior check failed -- skipping this check] | |
| *************** Starting PHASE GS Cookie | |
| No GS security needed | |
| *************** Finishing PHASE GS Cookie [no changes] | |
| *************** Starting PHASE Morph array ops | |
| No multi-dimensional array references in the function | |
| *************** Finishing PHASE Morph array ops [no changes] | |
| *************** Starting PHASE Mark local vars | |
| *************** In lvaMarkLocalVars() | |
| *** lvaComputeRefCounts *** | |
| *************** Finishing PHASE Mark local vars [no changes] | |
| *************** Starting PHASE Find oper order | |
| *************** In fgFindOperOrder() | |
| *************** Finishing PHASE Find oper order | |
| Trees after Find oper order | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BB01 [0000] 1 1 [000..004)-> BB03(0.5),BB02(0.5) ( cond ) i | |
| BB02 [0001] 1 BB01 1 [004..008)-> BB06(0.5),BB05(0.5) ( cond ) i | |
| BB05 [0004] 1 BB02 0.50 [???..???)-> BB03(1) (always) i internal hascall | |
| BB03 [0002] 2 BB01,BB05 1 [008..013)-> BB04(1) (always) i hascall gcsafe | |
| BB04 [0003] 2 BB03,BB06 1 [013..022) (return) i hascall | |
| BB06 [0005] 1 BB02 0.50 [???..???)-> BB04(1) (always) i internal hascall | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| ------------ BB01 [0000] [000..004) -> BB03(0.5),BB02(0.5) (cond), preds={} succs={BB02,BB03} | |
| ***** BB01 [0000] | |
| STMT00000 ( 0x000[E-] ... 0x002 ) | |
| [000003] -----+----- * JTRUE void | |
| [000002] J----+-N--- \--* GT int | |
| [000000] -----+----- +--* LCL_VAR int V01 arg1 | |
| [000001] -----+----- \--* CNS_INT int 1 | |
| ------------ BB02 [0001] [004..008) -> BB06(0.5),BB05(0.5) (cond), preds={BB01} succs={BB05,BB06} | |
| ***** BB02 [0001] | |
| STMT00003 ( 0x004[E-] ... 0x006 ) | |
| [000021] -----+----- * JTRUE void | |
| [000020] J----+-N--- \--* GE int | |
| [000018] -----+----- +--* LCL_VAR int V01 arg1 | |
| [000019] -----+----- \--* CNS_INT int 0 | |
| ------------ BB05 [0004] [???..???) -> BB03(1) (always), preds={BB02} succs={BB03} | |
| ***** BB05 [0004] | |
| STMT00004 ( ??? ... ??? ) | |
| [000023] --CXG+----- * CALL help int CORINFO_HELP_COUNTPROFILE32 | |
| [000022] H----+----- arg0 rcx \--* CNS_INT(h) long 0x7ff7f15423c0 bbc | |
| ------------ BB03 [0002] [008..013) -> BB04(1) (always), preds={BB01,BB05} succs={BB04} | |
| ***** BB03 [0002] | |
| STMT00001 ( 0x008[E-] ... 0x00E ) | |
| [000006] --CXG+----- * CALL void Program.EntryPoint:ThrowOutOfRangeException[int](System.String,int) | |
| [000005] -----+----- arg1 rdx +--* LCL_VAR int V01 arg1 | |
| [000028] H----+----- arg0 rcx \--* CNS_INT(h) ref 'You tried to access this vector at index: {0}' | |
| ------------ BB04 [0003] [013..022) (return), preds={BB03,BB06} succs={} | |
| ***** BB04 [0003] | |
| STMT00005 ( ??? ... ??? ) | |
| [000025] --CXG+----- * CALL help int CORINFO_HELP_COUNTPROFILE32 | |
| [000024] H----+----- arg0 rcx \--* CNS_INT(h) long 0x7ff7f15423c4 bbc | |
| ***** BB04 [0003] | |
| STMT00002 ( 0x013[E-] ... 0x021 ) | |
| [000017] -A-XG+----- * RETURN float | |
| [000016] -A-XG+----- \--* IND float | |
| [000015] -A---+----- \--* ADD long | |
| [000032] -A---+----- +--* COMMA long | |
| [000029] DA---+----- | +--* STORE_LCL_VAR long V03 tmp1 | |
| [000008] -----+----- | | \--* LCL_VAR byref V00 arg0 | |
| [000030] -----+----- | \--* LCL_VAR long V03 tmp1 | |
| [000014] -----+----- \--* LSH long | |
| [000011] -----+----- +--* CAST long <- int | |
| [000010] -----+----- | \--* LCL_VAR int V01 arg1 | |
| [000013] -----+----- \--* CNS_INT long 2 | |
| ------------ BB06 [0005] [???..???) -> BB04(1) (always), preds={BB02} succs={BB04} | |
| ***** BB06 [0005] | |
| STMT00006 ( ??? ... ??? ) | |
| [000027] --CXG+----- * CALL help int CORINFO_HELP_COUNTPROFILE32 | |
| [000026] H----+----- arg0 rcx \--* CNS_INT(h) long 0x7ff7f15423c8 bbc | |
| ------------------------------------------------------------------------------------------------------------------- | |
| *************** In fgDebugCheckBBlist | |
| [deferred prior check failed -- skipping this check] | |
| *************** Starting PHASE Set block order | |
| *************** In fgSetBlockOrder() | |
| The biggest BB has 11 tree nodes | |
| *************** Finishing PHASE Set block order | |
| Trees after Set block order | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BB01 [0000] 1 1 [000..004)-> BB03(0.5),BB02(0.5) ( cond ) i | |
| BB02 [0001] 1 BB01 1 [004..008)-> BB06(0.5),BB05(0.5) ( cond ) i | |
| BB05 [0004] 1 BB02 0.50 [???..???)-> BB03(1) (always) i internal hascall | |
| BB03 [0002] 2 BB01,BB05 1 [008..013)-> BB04(1) (always) i hascall gcsafe | |
| BB04 [0003] 2 BB03,BB06 1 [013..022) (return) i hascall | |
| BB06 [0005] 1 BB02 0.50 [???..???)-> BB04(1) (always) i internal hascall | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| ------------ BB01 [0000] [000..004) -> BB03(0.5),BB02(0.5) (cond), preds={} succs={BB02,BB03} | |
| ***** BB01 [0000] | |
| STMT00000 ( 0x000[E-] ... 0x002 ) | |
| N004 (???,???) [000003] -----+----- * JTRUE void | |
| N003 (???,???) [000002] J----+-N--- \--* GT int | |
| N001 (???,???) [000000] -----+----- +--* LCL_VAR int V01 arg1 | |
| N002 (???,???) [000001] -----+----- \--* CNS_INT int 1 | |
| ------------ BB02 [0001] [004..008) -> BB06(0.5),BB05(0.5) (cond), preds={BB01} succs={BB05,BB06} | |
| ***** BB02 [0001] | |
| STMT00003 ( 0x004[E-] ... 0x006 ) | |
| N004 (???,???) [000021] -----+----- * JTRUE void | |
| N003 (???,???) [000020] J----+-N--- \--* GE int | |
| N001 (???,???) [000018] -----+----- +--* LCL_VAR int V01 arg1 | |
| N002 (???,???) [000019] -----+----- \--* CNS_INT int 0 | |
| ------------ BB05 [0004] [???..???) -> BB03(1) (always), preds={BB02} succs={BB03} | |
| ***** BB05 [0004] | |
| STMT00004 ( ??? ... ??? ) | |
| N002 (???,???) [000023] --CXG+----- * CALL help int CORINFO_HELP_COUNTPROFILE32 | |
| N001 (???,???) [000022] H----+----- arg0 rcx \--* CNS_INT(h) long 0x7ff7f15423c0 bbc | |
| ------------ BB03 [0002] [008..013) -> BB04(1) (always), preds={BB01,BB05} succs={BB04} | |
| ***** BB03 [0002] | |
| STMT00001 ( 0x008[E-] ... 0x00E ) | |
| N003 (???,???) [000006] --CXG+----- * CALL void Program.EntryPoint:ThrowOutOfRangeException[int](System.String,int) | |
| N001 (???,???) [000005] -----+----- arg1 rdx +--* LCL_VAR int V01 arg1 | |
| N002 (???,???) [000028] H----+----- arg0 rcx \--* CNS_INT(h) ref 'You tried to access this vector at index: {0}' | |
| ------------ BB04 [0003] [013..022) (return), preds={BB03,BB06} succs={} | |
| ***** BB04 [0003] | |
| STMT00005 ( ??? ... ??? ) | |
| N002 (???,???) [000025] --CXG+----- * CALL help int CORINFO_HELP_COUNTPROFILE32 | |
| N001 (???,???) [000024] H----+----- arg0 rcx \--* CNS_INT(h) long 0x7ff7f15423c4 bbc | |
| ***** BB04 [0003] | |
| STMT00002 ( 0x013[E-] ... 0x021 ) | |
| N011 (???,???) [000017] -A-XG+----- * RETURN float | |
| N010 (???,???) [000016] -A-XG+----- \--* IND float | |
| N009 (???,???) [000015] -A---+----- \--* ADD long | |
| N004 (???,???) [000032] -A---+----- +--* COMMA long | |
| N002 (???,???) [000029] DA---+----- | +--* STORE_LCL_VAR long V03 tmp1 | |
| N001 (???,???) [000008] -----+----- | | \--* LCL_VAR byref V00 arg0 | |
| N003 (???,???) [000030] -----+----- | \--* LCL_VAR long V03 tmp1 | |
| N008 (???,???) [000014] -----+----- \--* LSH long | |
| N006 (???,???) [000011] -----+----- +--* CAST long <- int | |
| N005 (???,???) [000010] -----+----- | \--* LCL_VAR int V01 arg1 | |
| N007 (???,???) [000013] -----+----- \--* CNS_INT long 2 | |
| ------------ BB06 [0005] [???..???) -> BB04(1) (always), preds={BB02} succs={BB04} | |
| ***** BB06 [0005] | |
| STMT00006 ( ??? ... ??? ) | |
| N002 (???,???) [000027] --CXG+----- * CALL help int CORINFO_HELP_COUNTPROFILE32 | |
| N001 (???,???) [000026] H----+----- arg0 rcx \--* CNS_INT(h) long 0x7ff7f15423c8 bbc | |
| ------------------------------------------------------------------------------------------------------------------- | |
| *************** In fgDebugCheckBBlist | |
| [deferred prior check failed -- skipping this check] | |
| *************** Starting PHASE Stress gtSplitTree | |
| *************** Finishing PHASE Stress gtSplitTree [no changes] | |
| *************** Starting PHASE Remove empty finally 3 | |
| No EH in this method, nothing to remove. | |
| *************** Finishing PHASE Remove empty finally 3 [no changes] | |
| *************** Starting PHASE Remove empty try 3 | |
| *************** In fgRemoveEmptyTry() | |
| No EH in this method, nothing to remove. | |
| *************** Finishing PHASE Remove empty try 3 [no changes] | |
| *************** Starting PHASE Remove empty try-catch-fault 3 | |
| *************** In fgRemoveEmptyTryCatchOrTryFault() | |
| No EH in this method, nothing to remove. | |
| *************** Finishing PHASE Remove empty try-catch-fault 3 [no changes] | |
| *************** Starting PHASE Create EH funclets | |
| *************** Finishing PHASE Create EH funclets [no changes] | |
| *************** Starting PHASE Expand casts | |
| *************** Finishing PHASE Expand casts [no changes] | |
| *************** Starting PHASE Expand runtime lookups | |
| *************** Finishing PHASE Expand runtime lookups [no changes] | |
| *************** Starting PHASE Expand static init | |
| Nothing to expand. | |
| *************** Finishing PHASE Expand static init [no changes] | |
| *************** Starting PHASE Expand TLS access | |
| Nothing to expand. | |
| *************** Finishing PHASE Expand TLS access [no changes] | |
| *************** Starting PHASE Expand stack array allocation | |
| *************** Finishing PHASE Expand stack array allocation [no changes] | |
| *************** Starting PHASE Insert GC Polls | |
| *************** Finishing PHASE Insert GC Polls [no changes] | |
| *************** Starting PHASE Create throw helper blocks | |
| *************** Finishing PHASE Create throw helper blocks [no changes] | |
| *************** Starting PHASE Rationalize IR | |
| *************** Finishing PHASE Rationalize IR | |
| Trees after Rationalize IR | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BB01 [0000] 1 1 [000..004)-> BB03(0.5),BB02(0.5) ( cond ) i LIR | |
| BB02 [0001] 1 BB01 1 [004..008)-> BB06(0.5),BB05(0.5) ( cond ) i LIR | |
| BB05 [0004] 1 BB02 0.50 [???..???)-> BB03(1) (always) i LIR internal hascall | |
| BB03 [0002] 2 BB01,BB05 1 [008..013)-> BB04(1) (always) i LIR hascall gcsafe | |
| BB04 [0003] 2 BB03,BB06 1 [013..022) (return) i LIR hascall | |
| BB06 [0005] 1 BB02 0.50 [???..???)-> BB04(1) (always) i LIR internal hascall | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| ------------ BB01 [0000] [000..004) -> BB03(0.5),BB02(0.5) (cond), preds={} succs={BB02,BB03} | |
| [000033] ----------- IL_OFFSET void INLRT @ 0x000[E-] | |
| N001 (???,???) [000000] -----+----- t0 = LCL_VAR int V01 arg1 | |
| N002 (???,???) [000001] -----+----- t1 = CNS_INT int 1 | |
| /--* t0 int | |
| +--* t1 int | |
| N003 (???,???) [000002] J----+-N--- t2 = * GT int | |
| /--* t2 int | |
| N004 (???,???) [000003] -----+----- * JTRUE void | |
| ------------ BB02 [0001] [004..008) -> BB06(0.5),BB05(0.5) (cond), preds={BB01} succs={BB05,BB06} | |
| [000034] ----------- IL_OFFSET void INLRT @ 0x004[E-] | |
| N001 (???,???) [000018] -----+----- t18 = LCL_VAR int V01 arg1 | |
| N002 (???,???) [000019] -----+----- t19 = CNS_INT int 0 | |
| /--* t18 int | |
| +--* t19 int | |
| N003 (???,???) [000020] J----+-N--- t20 = * GE int | |
| /--* t20 int | |
| N004 (???,???) [000021] -----+----- * JTRUE void | |
| ------------ BB05 [0004] [???..???) -> BB03(1) (always), preds={BB02} succs={BB03} | |
| N001 (???,???) [000022] H----+----- t22 = CNS_INT(h) long 0x7ff7f15423c0 bbc | |
| /--* t22 long arg0 rcx | |
| N002 (???,???) [000023] --CXG+----- u23 = * CALL help int CORINFO_HELP_COUNTPROFILE32 | |
| ------------ BB03 [0002] [008..013) -> BB04(1) (always), preds={BB01,BB05} succs={BB04} | |
| [000035] ----------- IL_OFFSET void INLRT @ 0x008[E-] | |
| N001 (???,???) [000005] -----+----- t5 = LCL_VAR int V01 arg1 | |
| N002 (???,???) [000028] H----+----- t28 = CNS_INT(h) ref 'You tried to access this vector at index: {0}' | |
| /--* t5 int arg1 rdx | |
| +--* t28 ref arg0 rcx | |
| N003 (???,???) [000006] --CXG+----- * CALL void Program.EntryPoint:ThrowOutOfRangeException[int](System.String,int) | |
| ------------ BB04 [0003] [013..022) (return), preds={BB03,BB06} succs={} | |
| N001 (???,???) [000024] H----+----- t24 = CNS_INT(h) long 0x7ff7f15423c4 bbc | |
| /--* t24 long arg0 rcx | |
| N002 (???,???) [000025] --CXG+----- u25 = * CALL help int CORINFO_HELP_COUNTPROFILE32 | |
| [000036] ----------- IL_OFFSET void INLRT @ 0x013[E-] | |
| N001 (???,???) [000008] -----+----- t8 = LCL_VAR byref V00 arg0 | |
| /--* t8 byref | |
| N002 (???,???) [000029] DA---+----- * STORE_LCL_VAR long V03 tmp1 | |
| N003 (???,???) [000030] -----+----- t30 = LCL_VAR long V03 tmp1 | |
| N005 (???,???) [000010] -----+----- t10 = LCL_VAR int V01 arg1 | |
| /--* t10 int | |
| N006 (???,???) [000011] -----+----- t11 = * CAST long <- int | |
| N007 (???,???) [000013] -----+----- t13 = CNS_INT long 2 | |
| /--* t11 long | |
| +--* t13 long | |
| N008 (???,???) [000014] -----+----- t14 = * LSH long | |
| /--* t30 long | |
| +--* t14 long | |
| N009 (???,???) [000015] -A---+----- t15 = * ADD long | |
| /--* t15 long | |
| N010 (???,???) [000016] -A-XG+----- t16 = * IND float | |
| /--* t16 float | |
| N011 (???,???) [000017] -A-XG+----- * RETURN float | |
| ------------ BB06 [0005] [???..???) -> BB04(1) (always), preds={BB02} succs={BB04} | |
| N001 (???,???) [000026] H----+----- t26 = CNS_INT(h) long 0x7ff7f15423c8 bbc | |
| /--* t26 long arg0 rcx | |
| N002 (???,???) [000027] --CXG+----- u27 = * CALL help int CORINFO_HELP_COUNTPROFILE32 | |
| ------------------------------------------------------------------------------------------------------------------- | |
| *************** In fgDebugCheckBBlist | |
| [deferred prior check failed -- skipping this check] | |
| *************** Starting PHASE Lowering nodeinfo | |
| compEnregLocals() is false, setting doNotEnreg flag for all locals. | |
| Local V00 should not be enregistered because: opts.compFlags & CLFLG_REGVAR is not set | |
| Local V01 should not be enregistered because: opts.compFlags & CLFLG_REGVAR is not set | |
| Local V02 should not be enregistered because: opts.compFlags & CLFLG_REGVAR is not set | |
| Local V03 should not be enregistered because: opts.compFlags & CLFLG_REGVAR is not set | |
| Lowering JTRUE: | |
| N001 (???,???) [000000] -c---+----- t0 = LCL_VAR int V01 arg1 | |
| N002 (???,???) [000001] -c---+----- t1 = CNS_INT int 1 | |
| /--* t0 int | |
| +--* t1 int | |
| N003 (???,???) [000002] J----+-N--- t2 = * GT int | |
| /--* t2 int | |
| N004 (???,???) [000003] -----+----- * JTRUE void | |
| Lowering condition: | |
| N001 (???,???) [000000] -c---+----- t0 = LCL_VAR int V01 arg1 | |
| N002 (???,???) [000001] -c---+----- t1 = CNS_INT int 1 | |
| /--* t0 int | |
| +--* t1 int | |
| N003 (???,???) [000002] J----+-N--- t2 = * GT int | |
| Lowering JTRUE Result: | |
| N001 (???,???) [000000] -c---+----- t0 = LCL_VAR int V01 arg1 | |
| N002 (???,???) [000001] -c---+----- t1 = CNS_INT int 1 | |
| /--* t0 int | |
| +--* t1 int | |
| N003 (???,???) [000002] -----+-N--- * CMP void | |
| N004 (???,???) [000003] -----+----- JCC void cond=SGT | |
| Lowering JTRUE: | |
| N001 (???,???) [000018] -c---+----- t18 = LCL_VAR int V01 arg1 | |
| N002 (???,???) [000019] -c---+----- t19 = CNS_INT int 0 | |
| /--* t18 int | |
| +--* t19 int | |
| N003 (???,???) [000020] J----+-N--- t20 = * GE int | |
| /--* t20 int | |
| N004 (???,???) [000021] -----+----- * JTRUE void | |
| Lowering condition: | |
| N001 (???,???) [000018] -c---+----- t18 = LCL_VAR int V01 arg1 | |
| N002 (???,???) [000019] -c---+----- t19 = CNS_INT int 0 | |
| /--* t18 int | |
| +--* t19 int | |
| N003 (???,???) [000020] J----+-N--- t20 = * GE int | |
| Lowering JTRUE Result: | |
| N001 (???,???) [000018] -c---+----- t18 = LCL_VAR int V01 arg1 | |
| N002 (???,???) [000019] -c---+----- t19 = CNS_INT int 0 | |
| /--* t18 int | |
| +--* t19 int | |
| N003 (???,???) [000020] -----+-N--- * CMP void | |
| N004 (???,???) [000021] -----+----- JCC void cond=SGE | |
| lowering call (before): | |
| N001 (???,???) [000022] H----+----- t22 = CNS_INT(h) long 0x7ff7f15423c0 bbc | |
| /--* t22 long arg0 rcx | |
| N002 (???,???) [000023] --CXG+----- u23 = * CALL help int CORINFO_HELP_COUNTPROFILE32 | |
| Args: | |
| ====== | |
| Late args: | |
| ====== | |
| Lowering arg: | |
| N001 (???,???) [000022] H----+----- t22 = CNS_INT(h) long 0x7ff7f15423c0 bbc | |
| Passed in [00..08) reg rcx | |
| N001 (???,???) [000022] H----+----- t22 = CNS_INT(h) long 0x7ff7f15423c0 bbc | |
| /--* t22 long | |
| [000037] ----------- t37 = * PUTARG_REG long REG rcx | |
| Bumping outgoing arg space size from 0 to 32 for [000023] | |
| lowering call (after): | |
| N001 (???,???) [000022] H----+----- t22 = CNS_INT(h) long 0x7ff7f15423c0 bbc | |
| /--* t22 long | |
| [000037] ----------- t37 = * PUTARG_REG long REG rcx | |
| /--* t37 long arg0 rcx | |
| N002 (???,???) [000023] --CXG+----- u23 = * CALL help int CORINFO_HELP_COUNTPROFILE32 | |
| lowering call (before): | |
| N001 (???,???) [000005] -----+----- t5 = LCL_VAR int V01 arg1 | |
| N002 (???,???) [000028] H----+----- t28 = CNS_INT(h) ref 'You tried to access this vector at index: {0}' | |
| /--* t5 int arg1 rdx | |
| +--* t28 ref arg0 rcx | |
| N003 (???,???) [000006] --CXG+----- * CALL void Program.EntryPoint:ThrowOutOfRangeException[int](System.String,int) | |
| Args: | |
| ====== | |
| Late args: | |
| ====== | |
| Lowering arg: | |
| N001 (???,???) [000005] -----+----- t5 = LCL_VAR int V01 arg1 | |
| Passed in [00..04) reg rdx | |
| N001 (???,???) [000005] -----+----- t5 = LCL_VAR int V01 arg1 | |
| /--* t5 int | |
| [000038] ----------- t38 = * PUTARG_REG int REG rdx | |
| Lowering arg: | |
| N002 (???,???) [000028] H----+----- t28 = CNS_INT(h) ref 'You tried to access this vector at index: {0}' | |
| Passed in [00..08) reg rcx | |
| N002 (???,???) [000028] H----+----- t28 = CNS_INT(h) ref 'You tried to access this vector at index: {0}' | |
| /--* t28 ref | |
| [000039] ----------- t39 = * PUTARG_REG ref REG rcx | |
| results of lowering call: | |
| N001 (???,???) [000040] H---------- t40 = CNS_INT(h) long 0x7ff7f13342a0 ftn | |
| /--* t40 long | |
| N002 (???,???) [000041] n---G------ t41 = * IND long | |
| lowering call (after): | |
| N001 (???,???) [000005] -----+----- t5 = LCL_VAR int V01 arg1 | |
| /--* t5 int | |
| [000038] ----------- t38 = * PUTARG_REG int REG rdx | |
| N002 (???,???) [000028] H----+----- t28 = CNS_INT(h) ref 'You tried to access this vector at index: {0}' | |
| /--* t28 ref | |
| [000039] ----------- t39 = * PUTARG_REG ref REG rcx | |
| N001 (???,???) [000040] Hc--------- t40 = CNS_INT(h) long 0x7ff7f13342a0 ftn | |
| /--* t40 long | |
| N002 (???,???) [000041] nc--G------ t41 = * IND long REG NA | |
| /--* t38 int arg1 rdx | |
| +--* t39 ref arg0 rcx | |
| +--* t41 long control expr | |
| N003 (???,???) [000006] --CXG+----- * CALL void Program.EntryPoint:ThrowOutOfRangeException[int](System.String,int) | |
| lowering call (before): | |
| N001 (???,???) [000024] H----+----- t24 = CNS_INT(h) long 0x7ff7f15423c4 bbc | |
| /--* t24 long arg0 rcx | |
| N002 (???,???) [000025] --CXG+----- u25 = * CALL help int CORINFO_HELP_COUNTPROFILE32 | |
| Args: | |
| ====== | |
| Late args: | |
| ====== | |
| Lowering arg: | |
| N001 (???,???) [000024] H----+----- t24 = CNS_INT(h) long 0x7ff7f15423c4 bbc | |
| Passed in [00..08) reg rcx | |
| N001 (???,???) [000024] H----+----- t24 = CNS_INT(h) long 0x7ff7f15423c4 bbc | |
| /--* t24 long | |
| [000042] ----------- t42 = * PUTARG_REG long REG rcx | |
| lowering call (after): | |
| N001 (???,???) [000024] H----+----- t24 = CNS_INT(h) long 0x7ff7f15423c4 bbc | |
| /--* t24 long | |
| [000042] ----------- t42 = * PUTARG_REG long REG rcx | |
| /--* t42 long arg0 rcx | |
| N002 (???,???) [000025] --CXG+----- u25 = * CALL help int CORINFO_HELP_COUNTPROFILE32 | |
| lowering store lcl var/field (before): | |
| N001 (???,???) [000008] -----+----- t8 = LCL_VAR byref V00 arg0 | |
| /--* t8 byref | |
| N002 (???,???) [000029] DA---+----- * STORE_LCL_VAR long V03 tmp1 | |
| lowering store lcl var/field (after): | |
| N001 (???,???) [000008] -----+----- t8 = LCL_VAR byref V00 arg0 | |
| /--* t8 byref | |
| N002 (???,???) [000029] DA---+----- * STORE_LCL_VAR long V03 tmp1 | |
| Addressing mode: | |
| Base | |
| N003 (???,???) [000030] -c---+----- * LCL_VAR long V03 tmp1 | |
| + Index * 4 + 0 | |
| N006 (???,???) [000011] -----+----- * CAST long <- int | |
| Removing unused node: | |
| N008 (???,???) [000014] -----+----- * LSH long | |
| Removing unused node: | |
| N007 (???,???) [000013] -c---+----- * CNS_INT long 2 | |
| New addressing mode node: | |
| N009 (???,???) [000015] -----+----- * LEA(b+(i*4)+0) long | |
| lowering return node | |
| N011 (???,???) [000017] -A-XG+----- * RETURN float | |
| ============ | |
| lowering call (before): | |
| N001 (???,???) [000026] H----+----- t26 = CNS_INT(h) long 0x7ff7f15423c8 bbc | |
| /--* t26 long arg0 rcx | |
| N002 (???,???) [000027] --CXG+----- u27 = * CALL help int CORINFO_HELP_COUNTPROFILE32 | |
| Args: | |
| ====== | |
| Late args: | |
| ====== | |
| Lowering arg: | |
| N001 (???,???) [000026] H----+----- t26 = CNS_INT(h) long 0x7ff7f15423c8 bbc | |
| Passed in [00..08) reg rcx | |
| N001 (???,???) [000026] H----+----- t26 = CNS_INT(h) long 0x7ff7f15423c8 bbc | |
| /--* t26 long | |
| [000043] ----------- t43 = * PUTARG_REG long REG rcx | |
| lowering call (after): | |
| N001 (???,???) [000026] H----+----- t26 = CNS_INT(h) long 0x7ff7f15423c8 bbc | |
| /--* t26 long | |
| [000043] ----------- t43 = * PUTARG_REG long REG rcx | |
| /--* t43 long arg0 rcx | |
| N002 (???,???) [000027] --CXG+----- u27 = * CALL help int CORINFO_HELP_COUNTPROFILE32 | |
| Lower has completed modifying nodes. | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BB01 [0000] 1 1 [000..004)-> BB03(0.5),BB02(0.5) ( cond ) i LIR | |
| BB02 [0001] 1 BB01 1 [004..008)-> BB06(0.5),BB05(0.5) ( cond ) i LIR | |
| BB05 [0004] 1 BB02 0.50 [???..???)-> BB03(1) (always) i LIR internal hascall | |
| BB03 [0002] 2 BB01,BB05 1 [008..013)-> BB04(1) (always) i LIR hascall gcsafe | |
| BB04 [0003] 2 BB03,BB06 1 [013..022) (return) i LIR hascall | |
| BB06 [0005] 1 BB02 0.50 [???..???)-> BB04(1) (always) i LIR internal hascall | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| ------------ BB01 [0000] [000..004) -> BB03(0.5),BB02(0.5) (cond), preds={} succs={BB02,BB03} | |
| [000033] ----------- IL_OFFSET void INLRT @ 0x000[E-] | |
| N001 (???,???) [000000] -c---+----- t0 = LCL_VAR int V01 arg1 | |
| N002 (???,???) [000001] -c---+----- t1 = CNS_INT int 1 | |
| /--* t0 int | |
| +--* t1 int | |
| N003 (???,???) [000002] -----+-N--- * CMP void | |
| N004 (???,???) [000003] -----+----- JCC void cond=SGT | |
| ------------ BB02 [0001] [004..008) -> BB06(0.5),BB05(0.5) (cond), preds={BB01} succs={BB05,BB06} | |
| [000034] ----------- IL_OFFSET void INLRT @ 0x004[E-] | |
| N001 (???,???) [000018] -c---+----- t18 = LCL_VAR int V01 arg1 | |
| N002 (???,???) [000019] -c---+----- t19 = CNS_INT int 0 | |
| /--* t18 int | |
| +--* t19 int | |
| N003 (???,???) [000020] -----+-N--- * CMP void | |
| N004 (???,???) [000021] -----+----- JCC void cond=SGE | |
| ------------ BB05 [0004] [???..???) -> BB03(1) (always), preds={BB02} succs={BB03} | |
| N001 (???,???) [000022] H----+----- t22 = CNS_INT(h) long 0x7ff7f15423c0 bbc | |
| /--* t22 long | |
| [000037] ----------- t37 = * PUTARG_REG long REG rcx | |
| /--* t37 long arg0 rcx | |
| N002 (???,???) [000023] --CXG+----- u23 = * CALL help int CORINFO_HELP_COUNTPROFILE32 | |
| ------------ BB03 [0002] [008..013) -> BB04(1) (always), preds={BB01,BB05} succs={BB04} | |
| [000035] ----------- IL_OFFSET void INLRT @ 0x008[E-] | |
| N001 (???,???) [000005] -----+----- t5 = LCL_VAR int V01 arg1 | |
| /--* t5 int | |
| [000038] ----------- t38 = * PUTARG_REG int REG rdx | |
| N002 (???,???) [000028] H----+----- t28 = CNS_INT(h) ref 'You tried to access this vector at index: {0}' | |
| /--* t28 ref | |
| [000039] ----------- t39 = * PUTARG_REG ref REG rcx | |
| N001 (???,???) [000040] Hc--------- t40 = CNS_INT(h) long 0x7ff7f13342a0 ftn | |
| /--* t40 long | |
| N002 (???,???) [000041] nc--G------ t41 = * IND long REG NA | |
| /--* t38 int arg1 rdx | |
| +--* t39 ref arg0 rcx | |
| +--* t41 long control expr | |
| N003 (???,???) [000006] --CXG+----- * CALL void Program.EntryPoint:ThrowOutOfRangeException[int](System.String,int) | |
| ------------ BB04 [0003] [013..022) (return), preds={BB03,BB06} succs={} | |
| N001 (???,???) [000024] H----+----- t24 = CNS_INT(h) long 0x7ff7f15423c4 bbc | |
| /--* t24 long | |
| [000042] ----------- t42 = * PUTARG_REG long REG rcx | |
| /--* t42 long arg0 rcx | |
| N002 (???,???) [000025] --CXG+----- u25 = * CALL help int CORINFO_HELP_COUNTPROFILE32 | |
| [000036] ----------- IL_OFFSET void INLRT @ 0x013[E-] | |
| N001 (???,???) [000008] -----+----- t8 = LCL_VAR byref V00 arg0 | |
| /--* t8 byref | |
| N002 (???,???) [000029] DA---+----- * STORE_LCL_VAR long V03 tmp1 | |
| N003 (???,???) [000030] -----+----- t30 = LCL_VAR long V03 tmp1 | |
| N005 (???,???) [000010] -c---+----- t10 = LCL_VAR int V01 arg1 | |
| /--* t10 int | |
| N006 (???,???) [000011] -----+----- t11 = * CAST long <- int | |
| /--* t30 long | |
| +--* t11 long | |
| N009 (???,???) [000015] -c---+----- t15 = * LEA(b+(i*4)+0) long | |
| /--* t15 long | |
| N010 (???,???) [000016] -A-XG+----- t16 = * IND float | |
| /--* t16 float | |
| N011 (???,???) [000017] -A-XG+----- * RETURN float | |
| ------------ BB06 [0005] [???..???) -> BB04(1) (always), preds={BB02} succs={BB04} | |
| N001 (???,???) [000026] H----+----- t26 = CNS_INT(h) long 0x7ff7f15423c8 bbc | |
| /--* t26 long | |
| [000043] ----------- t43 = * PUTARG_REG long REG rcx | |
| /--* t43 long arg0 rcx | |
| N002 (???,???) [000027] --CXG+----- u27 = * CALL help int CORINFO_HELP_COUNTPROFILE32 | |
| ------------------------------------------------------------------------------------------------------------------- | |
| *** lvaComputeRefCounts *** | |
| *************** Finishing PHASE Lowering nodeinfo | |
| Trees after Lowering nodeinfo | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BB01 [0000] 1 1 [000..004)-> BB03(0.5),BB02(0.5) ( cond ) i LIR | |
| BB02 [0001] 1 BB01 1 [004..008)-> BB06(0.5),BB05(0.5) ( cond ) i LIR | |
| BB05 [0004] 1 BB02 0.50 [???..???)-> BB03(1) (always) i LIR internal hascall | |
| BB03 [0002] 2 BB01,BB05 1 [008..013)-> BB04(1) (always) i LIR hascall gcsafe | |
| BB04 [0003] 2 BB03,BB06 1 [013..022) (return) i LIR hascall | |
| BB06 [0005] 1 BB02 0.50 [???..???)-> BB04(1) (always) i LIR internal hascall | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| ------------ BB01 [0000] [000..004) -> BB03(0.5),BB02(0.5) (cond), preds={} succs={BB02,BB03} | |
| [000033] ----------- IL_OFFSET void INLRT @ 0x000[E-] | |
| N001 (???,???) [000000] -c---+----- t0 = LCL_VAR int V01 arg1 | |
| N002 (???,???) [000001] -c---+----- t1 = CNS_INT int 1 | |
| /--* t0 int | |
| +--* t1 int | |
| N003 (???,???) [000002] -----+-N--- * CMP void | |
| N004 (???,???) [000003] -----+----- JCC void cond=SGT | |
| ------------ BB02 [0001] [004..008) -> BB06(0.5),BB05(0.5) (cond), preds={BB01} succs={BB05,BB06} | |
| [000034] ----------- IL_OFFSET void INLRT @ 0x004[E-] | |
| N001 (???,???) [000018] -c---+----- t18 = LCL_VAR int V01 arg1 | |
| N002 (???,???) [000019] -c---+----- t19 = CNS_INT int 0 | |
| /--* t18 int | |
| +--* t19 int | |
| N003 (???,???) [000020] -----+-N--- * CMP void | |
| N004 (???,???) [000021] -----+----- JCC void cond=SGE | |
| ------------ BB05 [0004] [???..???) -> BB03(1) (always), preds={BB02} succs={BB03} | |
| N001 (???,???) [000022] H----+----- t22 = CNS_INT(h) long 0x7ff7f15423c0 bbc | |
| /--* t22 long | |
| [000037] ----------- t37 = * PUTARG_REG long REG rcx | |
| /--* t37 long arg0 rcx | |
| N002 (???,???) [000023] --CXG+----- u23 = * CALL help int CORINFO_HELP_COUNTPROFILE32 | |
| ------------ BB03 [0002] [008..013) -> BB04(1) (always), preds={BB01,BB05} succs={BB04} | |
| [000035] ----------- IL_OFFSET void INLRT @ 0x008[E-] | |
| N001 (???,???) [000005] -----+----- t5 = LCL_VAR int V01 arg1 | |
| /--* t5 int | |
| [000038] ----------- t38 = * PUTARG_REG int REG rdx | |
| N002 (???,???) [000028] H----+----- t28 = CNS_INT(h) ref 'You tried to access this vector at index: {0}' | |
| /--* t28 ref | |
| [000039] ----------- t39 = * PUTARG_REG ref REG rcx | |
| N001 (???,???) [000040] Hc--------- t40 = CNS_INT(h) long 0x7ff7f13342a0 ftn | |
| /--* t40 long | |
| N002 (???,???) [000041] nc--G------ t41 = * IND long REG NA | |
| /--* t38 int arg1 rdx | |
| +--* t39 ref arg0 rcx | |
| +--* t41 long control expr | |
| N003 (???,???) [000006] --CXG+----- * CALL void Program.EntryPoint:ThrowOutOfRangeException[int](System.String,int) | |
| ------------ BB04 [0003] [013..022) (return), preds={BB03,BB06} succs={} | |
| N001 (???,???) [000024] H----+----- t24 = CNS_INT(h) long 0x7ff7f15423c4 bbc | |
| /--* t24 long | |
| [000042] ----------- t42 = * PUTARG_REG long REG rcx | |
| /--* t42 long arg0 rcx | |
| N002 (???,???) [000025] --CXG+----- u25 = * CALL help int CORINFO_HELP_COUNTPROFILE32 | |
| [000036] ----------- IL_OFFSET void INLRT @ 0x013[E-] | |
| N001 (???,???) [000008] -----+----- t8 = LCL_VAR byref V00 arg0 | |
| /--* t8 byref | |
| N002 (???,???) [000029] DA---+----- * STORE_LCL_VAR long V03 tmp1 | |
| N003 (???,???) [000030] -----+----- t30 = LCL_VAR long V03 tmp1 | |
| N005 (???,???) [000010] -c---+----- t10 = LCL_VAR int V01 arg1 | |
| /--* t10 int | |
| N006 (???,???) [000011] -----+----- t11 = * CAST long <- int | |
| /--* t30 long | |
| +--* t11 long | |
| N009 (???,???) [000015] -c---+----- t15 = * LEA(b+(i*4)+0) long | |
| /--* t15 long | |
| N010 (???,???) [000016] -A-XG+----- t16 = * IND float | |
| /--* t16 float | |
| N011 (???,???) [000017] -A-XG+----- * RETURN float | |
| ------------ BB06 [0005] [???..???) -> BB04(1) (always), preds={BB02} succs={BB04} | |
| N001 (???,???) [000026] H----+----- t26 = CNS_INT(h) long 0x7ff7f15423c8 bbc | |
| /--* t26 long | |
| [000043] ----------- t43 = * PUTARG_REG long REG rcx | |
| /--* t43 long arg0 rcx | |
| N002 (???,???) [000027] --CXG+----- u27 = * CALL help int CORINFO_HELP_COUNTPROFILE32 | |
| ------------------------------------------------------------------------------------------------------------------- | |
| *************** In fgDebugCheckBBlist | |
| [deferred prior check failed -- skipping this check] | |
| *************** Starting PHASE Calculate stack level slots | |
| *************** Finishing PHASE Calculate stack level slots [no changes] | |
| *************** Starting PHASE Linear scan register alloc | |
| Clearing modified regs. | |
| buildIntervals ======== | |
| ----------------- | |
| LIVENESS: | |
| ----------------- | |
| BB01 | |
| use: {} | |
| def: {} | |
| in: {} | |
| out: {} | |
| BB02 | |
| use: {} | |
| def: {} | |
| in: {} | |
| out: {} | |
| BB05 | |
| use: {} | |
| def: {} | |
| in: {} | |
| out: {} | |
| BB03 | |
| use: {} | |
| def: {} | |
| in: {} | |
| out: {} | |
| BB04 | |
| use: {} | |
| def: {} | |
| in: {} | |
| out: {} | |
| BB06 | |
| use: {} | |
| def: {} | |
| in: {} | |
| out: {} | |
| FP callee save candidate vars: None | |
| floatVarCount = 0; hasLoops = false, singleExit = true | |
| TUPLE STYLE DUMP BEFORE LSRA | |
| Start LSRA Block Sequence: | |
| Current block: BB01 | |
| Current block: BB02 | |
| Current block: BB05 | |
| Current block: BB03 | |
| Current block: BB04 | |
| Current block: BB06 | |
| Final LSRA Block Sequence: | |
| BB01 ( 1 ) critical-out | |
| BB02 ( 1 ) | |
| BB05 ( 0.50) | |
| BB03 ( 1 ) critical-in | |
| BB04 ( 1 ) | |
| BB06 ( 0.50) | |
| BB01 [0000] [000..004) -> BB03(0.5),BB02(0.5) (cond), preds={} succs={BB02,BB03} | |
| ===== | |
| N000. IL_OFFSET INLRT @ 0x000[E-] | |
| N001. V01 MEM | |
| N002. CNS_INT 1 | |
| N003. CMP | |
| N004. JCC cond=SGT | |
| BB02 [0001] [004..008) -> BB06(0.5),BB05(0.5) (cond), preds={BB01} succs={BB05,BB06} | |
| ===== | |
| N000. IL_OFFSET INLRT @ 0x004[E-] | |
| N001. V01 MEM | |
| N002. CNS_INT 0 | |
| N003. CMP | |
| N004. JCC cond=SGE | |
| BB05 [0004] [???..???) -> BB03(1) (always), preds={BB02} succs={BB03} | |
| ===== | |
| N001. t22 = CNS_INT(h) 0x7ff7f15423c0 bbc | |
| N000. t37 = PUTARG_REG; t22 | |
| N002. CALL help; t37 | |
| BB03 [0002] [008..013) -> BB04(1) (always), preds={BB01,BB05} succs={BB04} | |
| ===== | |
| N000. IL_OFFSET INLRT @ 0x008[E-] | |
| N001. t5 = V01 MEM | |
| N000. t38 = PUTARG_REG; t5 | |
| N002. t28 = CNS_INT(h) 'You tried to access this vector at index: {0}' | |
| N000. t39 = PUTARG_REG; t28 | |
| N001. CNS_INT(h) 0x7ff7f13342a0 ftn | |
| N002. IND | |
| N003. CALL ; t38,t39 | |
| BB04 [0003] [013..022) (return), preds={BB03,BB06} succs={} | |
| ===== | |
| N001. t24 = CNS_INT(h) 0x7ff7f15423c4 bbc | |
| N000. t42 = PUTARG_REG; t24 | |
| N002. CALL help; t42 | |
| N000. IL_OFFSET INLRT @ 0x013[E-] | |
| N001. t8 = V00 MEM | |
| N002. V03 MEM; t8 | |
| N003. t30 = V03 MEM | |
| N005. V01 MEM | |
| N006. t11 = CAST | |
| N009. t15 = LEA(b+(i*4)+0); t30,t11 | |
| N010. t16 = IND ; t15 | |
| N011. RETURN ; t16 | |
| BB06 [0005] [???..???) -> BB04(1) (always), preds={BB02} succs={BB04} | |
| ===== | |
| N001. t26 = CNS_INT(h) 0x7ff7f15423c8 bbc | |
| N000. t43 = PUTARG_REG; t26 | |
| N002. CALL help; t43 | |
| buildIntervals second part ======== | |
| Arg V00 is live in reg rcx | |
| Arg V01 is live in reg rdx | |
| NEW BLOCK BB01 | |
| <RefPosition #0 @0 RefTypeBB BB01 regmask=[allMask] minReg=1 wt=100.00> | |
| DefList: { } | |
| N002 (???,???) [000033] ----------- * IL_OFFSET void INLRT @ 0x000[E-] REG NA | |
| DefList: { } | |
| N004 (???,???) [000000] -c---+----- * LCL_VAR int V01 arg1 NA REG NA | |
| Contained | |
| DefList: { } | |
| N006 (???,???) [000001] -c---+----- * CNS_INT int 1 REG NA | |
| Contained | |
| DefList: { } | |
| N008 (???,???) [000002] -----+-N--- * CMP void REG NA | |
| DefList: { } | |
| N010 (???,???) [000003] -----+----- * JCC void cond=SGT REG NA | |
| NEW BLOCK BB02 | |
| <RefPosition #1 @12 RefTypeBB BB02 regmask=[allMask] minReg=1 wt=100.00> | |
| DefList: { } | |
| N014 (???,???) [000034] ----------- * IL_OFFSET void INLRT @ 0x004[E-] REG NA | |
| DefList: { } | |
| N016 (???,???) [000018] -c---+----- * LCL_VAR int V01 arg1 NA REG NA | |
| Contained | |
| DefList: { } | |
| N018 (???,???) [000019] -c---+----- * CNS_INT int 0 REG NA | |
| Contained | |
| DefList: { } | |
| N020 (???,???) [000020] -----+-N--- * CMP void REG NA | |
| DefList: { } | |
| N022 (???,???) [000021] -----+----- * JCC void cond=SGE REG NA | |
| NEW BLOCK BB05 | |
| <RefPosition #2 @24 RefTypeBB BB05 regmask=[allMask] minReg=1 wt=50.00> | |
| DefList: { } | |
| N026 (???,???) [000022] H----+----- * CNS_INT(h) long 0x7ff7f15423c0 bbc REG NA | |
| Interval 0: long RefPositions {} physReg:NA Preferences=[allIntButFP] Aversions=[allMask] | |
| <RefPosition #3 @27 RefTypeDef <Ivl:0> CNS_INT BB05 regmask=[allIntButFP] minReg=1 wt=200.00> | |
| DefList: { N026.t22. CNS_INT } | |
| N028 (???,???) [000037] ----------- * PUTARG_REG long REG rcx | |
| <RefPosition #4 @28 RefTypeFixedReg <Reg:rcx> BB05 regmask=[rcx] minReg=1 wt=50.00> | |
| <RefPosition #5 @28 RefTypeUse <Ivl:0> BB05 regmask=[rcx] minReg=1 last fixed wt=50.00> | |
| Interval 1: long RefPositions {} physReg:NA Preferences=[allIntButFP] Aversions=[allMask] | |
| <RefPosition #6 @29 RefTypeFixedReg <Reg:rcx> BB05 regmask=[rcx] minReg=1 wt=50.00> | |
| <RefPosition #7 @29 RefTypeDef <Ivl:1> PUTARG_REG BB05 regmask=[rcx] minReg=1 fixed wt=200.00> | |
| DefList: { N028.t37. PUTARG_REG } | |
| N030 (???,???) [000023] --CXG+----- * CALL help int CORINFO_HELP_COUNTPROFILE32 REG NA | |
| <RefPosition #8 @30 RefTypeFixedReg <Reg:rcx> BB05 regmask=[rcx] minReg=1 wt=50.00> | |
| <RefPosition #9 @30 RefTypeUse <Ivl:1> BB05 regmask=[rcx] minReg=1 last fixed wt=50.00> | |
| <RefPosition #10 @31 RefTypeKill BB05 regmask=[rax rcx rdx r8-r11] minReg=1> | |
| Interval 2: int RefPositions {} physReg:NA Preferences=[allIntButFP] Aversions=[allMask] | |
| <RefPosition #11 @31 RefTypeFixedReg <Reg:rax> BB05 regmask=[rax] minReg=1 wt=50.00> | |
| <RefPosition #12 @31 RefTypeDef <Ivl:2> CALL BB05 regmask=[rax] minReg=1 fixed wt=200.00> | |
| NEW BLOCK BB03 | |
| <RefPosition #13 @32 RefTypeBB BB03 regmask=[allMask] minReg=1 wt=100.00> | |
| DefList: { } | |
| N034 (???,???) [000035] ----------- * IL_OFFSET void INLRT @ 0x008[E-] REG NA | |
| DefList: { } | |
| N036 (???,???) [000005] -----+----- * LCL_VAR int V01 arg1 NA REG NA | |
| Interval 3: int RefPositions {} physReg:NA Preferences=[allIntButFP] Aversions=[allMask] | |
| <RefPosition #14 @37 RefTypeDef <Ivl:3> LCL_VAR BB03 regmask=[allIntButFP] minReg=1 wt=400.00> | |
| DefList: { N036.t5. LCL_VAR } | |
| N038 (???,???) [000038] ----------- * PUTARG_REG int REG rdx | |
| <RefPosition #15 @38 RefTypeFixedReg <Reg:rdx> BB03 regmask=[rdx] minReg=1 wt=100.00> | |
| <RefPosition #16 @38 RefTypeUse <Ivl:3> BB03 regmask=[rdx] minReg=1 last fixed wt=100.00> | |
| Interval 4: int RefPositions {} physReg:NA Preferences=[allIntButFP] Aversions=[allMask] | |
| <RefPosition #17 @39 RefTypeFixedReg <Reg:rdx> BB03 regmask=[rdx] minReg=1 wt=100.00> | |
| <RefPosition #18 @39 RefTypeDef <Ivl:4> PUTARG_REG BB03 regmask=[rdx] minReg=1 fixed wt=400.00> | |
| DefList: { N038.t38. PUTARG_REG } | |
| N040 (???,???) [000028] H----+----- * CNS_INT(h) ref 'You tried to access this vector at index: {0}' REG NA | |
| Interval 5: ref RefPositions {} physReg:NA Preferences=[allIntButFP] Aversions=[allMask] | |
| <RefPosition #19 @41 RefTypeDef <Ivl:5> CNS_INT BB03 regmask=[allIntButFP] minReg=1 wt=400.00> | |
| DefList: { N038.t38. PUTARG_REG; N040.t28. CNS_INT } | |
| N042 (???,???) [000039] ----------- * PUTARG_REG ref REG rcx | |
| <RefPosition #20 @42 RefTypeFixedReg <Reg:rcx> BB03 regmask=[rcx] minReg=1 wt=100.00> | |
| <RefPosition #21 @42 RefTypeUse <Ivl:5> BB03 regmask=[rcx] minReg=1 last fixed wt=100.00> | |
| Interval 6: ref RefPositions {} physReg:NA Preferences=[allIntButFP] Aversions=[allMask] | |
| <RefPosition #22 @43 RefTypeFixedReg <Reg:rcx> BB03 regmask=[rcx] minReg=1 wt=100.00> | |
| <RefPosition #23 @43 RefTypeDef <Ivl:6> PUTARG_REG BB03 regmask=[rcx] minReg=1 fixed wt=400.00> | |
| DefList: { N038.t38. PUTARG_REG; N042.t39. PUTARG_REG } | |
| N044 (???,???) [000040] Hc--------- * CNS_INT(h) long 0x7ff7f13342a0 ftn REG NA | |
| Contained | |
| DefList: { N038.t38. PUTARG_REG; N042.t39. PUTARG_REG } | |
| N046 (???,???) [000041] nc--G------ * IND long REG NA | |
| Contained | |
| DefList: { N038.t38. PUTARG_REG; N042.t39. PUTARG_REG } | |
| N048 (???,???) [000006] --CXG+----- * CALL void Program.EntryPoint:ThrowOutOfRangeException[int](System.String,int) REG NA | |
| <RefPosition #24 @48 RefTypeFixedReg <Reg:rdx> BB03 regmask=[rdx] minReg=1 wt=100.00> | |
| <RefPosition #25 @48 RefTypeUse <Ivl:4> BB03 regmask=[rdx] minReg=1 last fixed wt=100.00> | |
| <RefPosition #26 @48 RefTypeFixedReg <Reg:rcx> BB03 regmask=[rcx] minReg=1 wt=100.00> | |
| <RefPosition #27 @48 RefTypeUse <Ivl:6> BB03 regmask=[rcx] minReg=1 last fixed wt=100.00> | |
| <RefPosition #28 @49 RefTypeKill BB03 regmask=[rax rcx rdx r8-r11] minReg=1> | |
| NEW BLOCK BB04 | |
| <RefPosition #29 @50 RefTypeBB BB04 regmask=[allMask] minReg=1 wt=100.00> | |
| DefList: { } | |
| N052 (???,???) [000024] H----+----- * CNS_INT(h) long 0x7ff7f15423c4 bbc REG NA | |
| Interval 7: long RefPositions {} physReg:NA Preferences=[allIntButFP] Aversions=[allMask] | |
| <RefPosition #30 @53 RefTypeDef <Ivl:7> CNS_INT BB04 regmask=[allIntButFP] minReg=1 wt=400.00> | |
| DefList: { N052.t24. CNS_INT } | |
| N054 (???,???) [000042] ----------- * PUTARG_REG long REG rcx | |
| <RefPosition #31 @54 RefTypeFixedReg <Reg:rcx> BB04 regmask=[rcx] minReg=1 wt=100.00> | |
| <RefPosition #32 @54 RefTypeUse <Ivl:7> BB04 regmask=[rcx] minReg=1 last fixed wt=100.00> | |
| Interval 8: long RefPositions {} physReg:NA Preferences=[allIntButFP] Aversions=[allMask] | |
| <RefPosition #33 @55 RefTypeFixedReg <Reg:rcx> BB04 regmask=[rcx] minReg=1 wt=100.00> | |
| <RefPosition #34 @55 RefTypeDef <Ivl:8> PUTARG_REG BB04 regmask=[rcx] minReg=1 fixed wt=400.00> | |
| DefList: { N054.t42. PUTARG_REG } | |
| N056 (???,???) [000025] --CXG+----- * CALL help int CORINFO_HELP_COUNTPROFILE32 REG NA | |
| <RefPosition #35 @56 RefTypeFixedReg <Reg:rcx> BB04 regmask=[rcx] minReg=1 wt=100.00> | |
| <RefPosition #36 @56 RefTypeUse <Ivl:8> BB04 regmask=[rcx] minReg=1 last fixed wt=100.00> | |
| <RefPosition #37 @57 RefTypeKill BB04 regmask=[rax rcx rdx r8-r11] minReg=1> | |
| Interval 9: int RefPositions {} physReg:NA Preferences=[allIntButFP] Aversions=[allMask] | |
| <RefPosition #38 @57 RefTypeFixedReg <Reg:rax> BB04 regmask=[rax] minReg=1 wt=100.00> | |
| <RefPosition #39 @57 RefTypeDef <Ivl:9> CALL BB04 regmask=[rax] minReg=1 fixed wt=400.00> | |
| DefList: { } | |
| N058 (???,???) [000036] ----------- * IL_OFFSET void INLRT @ 0x013[E-] REG NA | |
| DefList: { } | |
| N060 (???,???) [000008] -----+----- * LCL_VAR byref V00 arg0 NA REG NA | |
| Interval 10: byref RefPositions {} physReg:NA Preferences=[allIntButFP] Aversions=[allMask] | |
| <RefPosition #40 @61 RefTypeDef <Ivl:10> LCL_VAR BB04 regmask=[allIntButFP] minReg=1 wt=400.00> | |
| DefList: { N060.t8. LCL_VAR } | |
| N062 (???,???) [000029] DA---+----- * STORE_LCL_VAR long V03 tmp1 NA REG NA | |
| <RefPosition #41 @62 RefTypeUse <Ivl:10> BB04 regmask=[allIntButFP] minReg=1 last wt=100.00> | |
| DefList: { } | |
| N064 (???,???) [000030] -----+----- * LCL_VAR long V03 tmp1 NA REG NA | |
| Interval 11: long RefPositions {} physReg:NA Preferences=[allIntButFP] Aversions=[allMask] | |
| <RefPosition #42 @65 RefTypeDef <Ivl:11> LCL_VAR BB04 regmask=[allIntButFP] minReg=1 wt=400.00> | |
| DefList: { N064.t30. LCL_VAR } | |
| N066 (???,???) [000010] -c---+----- * LCL_VAR int V01 arg1 NA REG NA | |
| Contained | |
| DefList: { N064.t30. LCL_VAR } | |
| N068 (???,???) [000011] -----+----- * CAST long <- int REG NA | |
| Interval 12: long RefPositions {} physReg:NA Preferences=[allIntButFP] Aversions=[allMask] | |
| <RefPosition #43 @69 RefTypeDef <Ivl:12> CAST BB04 regmask=[allIntButFP] minReg=1 wt=400.00> | |
| DefList: { N064.t30. LCL_VAR; N068.t11. CAST } | |
| N070 (???,???) [000015] -c---+----- * LEA(b+(i*4)+0) long REG NA | |
| Contained | |
| DefList: { N064.t30. LCL_VAR; N068.t11. CAST } | |
| N072 (???,???) [000016] -A-XG+----- * IND float REG NA | |
| <RefPosition #44 @72 RefTypeUse <Ivl:11> BB04 regmask=[allIntButFP] minReg=1 last wt=100.00> | |
| <RefPosition #45 @72 RefTypeUse <Ivl:12> BB04 regmask=[allIntButFP] minReg=1 last wt=100.00> | |
| Interval 13: float RefPositions {} physReg:NA Preferences=[allFloat] Aversions=[allMask] | |
| <RefPosition #46 @73 RefTypeDef <Ivl:13> IND BB04 regmask=[allFloat] minReg=1 wt=400.00> | |
| DefList: { N072.t16. IND } | |
| N074 (???,???) [000017] -A-XG+----- * RETURN float REG NA | |
| <RefPosition #47 @74 RefTypeFixedReg <Reg:mm0> BB04 regmask=[mm0] minReg=1 wt=100.00> | |
| <RefPosition #48 @74 RefTypeUse <Ivl:13> BB04 regmask=[mm0] minReg=1 last fixed wt=100.00> | |
| NEW BLOCK BB06 | |
| <RefPosition #49 @76 RefTypeBB BB06 regmask=[allMask] minReg=1 wt=50.00> | |
| DefList: { } | |
| N078 (???,???) [000026] H----+----- * CNS_INT(h) long 0x7ff7f15423c8 bbc REG NA | |
| Interval 14: long RefPositions {} physReg:NA Preferences=[allIntButFP] Aversions=[allMask] | |
| <RefPosition #50 @79 RefTypeDef <Ivl:14> CNS_INT BB06 regmask=[allIntButFP] minReg=1 wt=200.00> | |
| DefList: { N078.t26. CNS_INT } | |
| N080 (???,???) [000043] ----------- * PUTARG_REG long REG rcx | |
| <RefPosition #51 @80 RefTypeFixedReg <Reg:rcx> BB06 regmask=[rcx] minReg=1 wt=50.00> | |
| <RefPosition #52 @80 RefTypeUse <Ivl:14> BB06 regmask=[rcx] minReg=1 last fixed wt=50.00> | |
| Interval 15: long RefPositions {} physReg:NA Preferences=[allIntButFP] Aversions=[allMask] | |
| <RefPosition #53 @81 RefTypeFixedReg <Reg:rcx> BB06 regmask=[rcx] minReg=1 wt=50.00> | |
| <RefPosition #54 @81 RefTypeDef <Ivl:15> PUTARG_REG BB06 regmask=[rcx] minReg=1 fixed wt=200.00> | |
| DefList: { N080.t43. PUTARG_REG } | |
| N082 (???,???) [000027] --CXG+----- * CALL help int CORINFO_HELP_COUNTPROFILE32 REG NA | |
| <RefPosition #55 @82 RefTypeFixedReg <Reg:rcx> BB06 regmask=[rcx] minReg=1 wt=50.00> | |
| <RefPosition #56 @82 RefTypeUse <Ivl:15> BB06 regmask=[rcx] minReg=1 last fixed wt=50.00> | |
| <RefPosition #57 @83 RefTypeKill BB06 regmask=[rax rcx rdx r8-r11] minReg=1> | |
| Interval 16: int RefPositions {} physReg:NA Preferences=[allIntButFP] Aversions=[allMask] | |
| <RefPosition #58 @83 RefTypeFixedReg <Reg:rax> BB06 regmask=[rax] minReg=1 wt=50.00> | |
| <RefPosition #59 @83 RefTypeDef <Ivl:16> CALL BB06 regmask=[rax] minReg=1 fixed wt=200.00> | |
| <RefPosition #60 @84 RefTypeBB BB06 regmask=[allMask] minReg=1 wt=50.00> | |
| Linear scan intervals BEFORE VALIDATING INTERVALS: | |
| Interval 0: long (constant) RefPositions {#3@27 #5@28} physReg:NA Preferences=[rcx] Aversions=[allMask] | |
| Interval 1: long RefPositions {#7@29 #9@30} physReg:NA Preferences=[rcx] Aversions=[allMask] | |
| Interval 2: int RefPositions {#12@31} physReg:NA Preferences=[rax] Aversions=[allMask] | |
| Interval 3: int RefPositions {#14@37 #16@38} physReg:NA Preferences=[rdx] Aversions=[allMask] | |
| Interval 4: int RefPositions {#18@39 #25@48} physReg:NA Preferences=[rdx] Aversions=[allMask] | |
| Interval 5: ref (constant) RefPositions {#19@41 #21@42} physReg:NA Preferences=[rcx] Aversions=[allMask] | |
| Interval 6: ref RefPositions {#23@43 #27@48} physReg:NA Preferences=[rcx] Aversions=[allMask] | |
| Interval 7: long (constant) RefPositions {#30@53 #32@54} physReg:NA Preferences=[rcx] Aversions=[allMask] | |
| Interval 8: long RefPositions {#34@55 #36@56} physReg:NA Preferences=[rcx] Aversions=[allMask] | |
| Interval 9: int RefPositions {#39@57} physReg:NA Preferences=[rax] Aversions=[allMask] | |
| Interval 10: byref RefPositions {#40@61 #41@62} physReg:NA Preferences=[allIntButFP] Aversions=[allMask] | |
| Interval 11: long RefPositions {#42@65 #44@72} physReg:NA Preferences=[allIntButFP] Aversions=[allMask] | |
| Interval 12: long RefPositions {#43@69 #45@72} physReg:NA Preferences=[allIntButFP] Aversions=[allMask] | |
| Interval 13: float RefPositions {#46@73 #48@74} physReg:NA Preferences=[mm0] Aversions=[allMask] | |
| Interval 14: long (constant) RefPositions {#50@79 #52@80} physReg:NA Preferences=[rcx] Aversions=[allMask] | |
| Interval 15: long RefPositions {#54@81 #56@82} physReg:NA Preferences=[rcx] Aversions=[allMask] | |
| Interval 16: int RefPositions {#59@83} physReg:NA Preferences=[rax] Aversions=[allMask] | |
| ------------ | |
| REFPOSITIONS BEFORE VALIDATING INTERVALS: | |
| ------------ | |
| <RefPosition #0 @0 RefTypeBB BB01 regmask=[allMask] minReg=1 wt=100.00> | |
| <RefPosition #1 @12 RefTypeBB BB02 regmask=[allMask] minReg=1 wt=100.00> | |
| <RefPosition #2 @24 RefTypeBB BB05 regmask=[allMask] minReg=1 wt=50.00> | |
| <RefPosition #3 @27 RefTypeDef <Ivl:0> CNS_INT BB05 regmask=[rcx] minReg=1 wt=200.00> | |
| <RefPosition #4 @28 RefTypeFixedReg <Reg:rcx> BB05 regmask=[rcx] minReg=1 wt=50.00> | |
| <RefPosition #5 @28 RefTypeUse <Ivl:0> BB05 regmask=[rcx] minReg=1 last fixed wt=50.00> | |
| <RefPosition #6 @29 RefTypeFixedReg <Reg:rcx> BB05 regmask=[rcx] minReg=1 wt=50.00> | |
| <RefPosition #7 @29 RefTypeDef <Ivl:1> PUTARG_REG BB05 regmask=[rcx] minReg=1 fixed wt=200.00> | |
| <RefPosition #8 @30 RefTypeFixedReg <Reg:rcx> BB05 regmask=[rcx] minReg=1 wt=50.00> | |
| <RefPosition #9 @30 RefTypeUse <Ivl:1> BB05 regmask=[rcx] minReg=1 last fixed wt=50.00> | |
| <RefPosition #10 @31 RefTypeKill BB05 regmask=[rax rcx rdx r8-r11] minReg=1> | |
| <RefPosition #11 @31 RefTypeFixedReg <Reg:rax> BB05 regmask=[rax] minReg=1 wt=50.00> | |
| <RefPosition #12 @31 RefTypeDef <Ivl:2> CALL BB05 regmask=[rax] minReg=1 last fixed local wt=200.00> | |
| <RefPosition #13 @32 RefTypeBB BB03 regmask=[allMask] minReg=1 wt=100.00> | |
| <RefPosition #14 @37 RefTypeDef <Ivl:3> LCL_VAR BB03 regmask=[rdx] minReg=1 wt=400.00> | |
| <RefPosition #15 @38 RefTypeFixedReg <Reg:rdx> BB03 regmask=[rdx] minReg=1 wt=100.00> | |
| <RefPosition #16 @38 RefTypeUse <Ivl:3> BB03 regmask=[rdx] minReg=1 last fixed wt=100.00> | |
| <RefPosition #17 @39 RefTypeFixedReg <Reg:rdx> BB03 regmask=[rdx] minReg=1 wt=100.00> | |
| <RefPosition #18 @39 RefTypeDef <Ivl:4> PUTARG_REG BB03 regmask=[rdx] minReg=1 fixed wt=400.00> | |
| <RefPosition #19 @41 RefTypeDef <Ivl:5> CNS_INT BB03 regmask=[rcx] minReg=1 wt=400.00> | |
| <RefPosition #20 @42 RefTypeFixedReg <Reg:rcx> BB03 regmask=[rcx] minReg=1 wt=100.00> | |
| <RefPosition #21 @42 RefTypeUse <Ivl:5> BB03 regmask=[rcx] minReg=1 last fixed wt=100.00> | |
| <RefPosition #22 @43 RefTypeFixedReg <Reg:rcx> BB03 regmask=[rcx] minReg=1 wt=100.00> | |
| <RefPosition #23 @43 RefTypeDef <Ivl:6> PUTARG_REG BB03 regmask=[rcx] minReg=1 fixed wt=400.00> | |
| <RefPosition #24 @48 RefTypeFixedReg <Reg:rdx> BB03 regmask=[rdx] minReg=1 wt=100.00> | |
| <RefPosition #25 @48 RefTypeUse <Ivl:4> BB03 regmask=[rdx] minReg=1 last fixed wt=100.00> | |
| <RefPosition #26 @48 RefTypeFixedReg <Reg:rcx> BB03 regmask=[rcx] minReg=1 wt=100.00> | |
| <RefPosition #27 @48 RefTypeUse <Ivl:6> BB03 regmask=[rcx] minReg=1 last fixed wt=100.00> | |
| <RefPosition #28 @49 RefTypeKill BB03 regmask=[rax rcx rdx r8-r11] minReg=1> | |
| <RefPosition #29 @50 RefTypeBB BB04 regmask=[allMask] minReg=1 wt=100.00> | |
| <RefPosition #30 @53 RefTypeDef <Ivl:7> CNS_INT BB04 regmask=[rcx] minReg=1 wt=400.00> | |
| <RefPosition #31 @54 RefTypeFixedReg <Reg:rcx> BB04 regmask=[rcx] minReg=1 wt=100.00> | |
| <RefPosition #32 @54 RefTypeUse <Ivl:7> BB04 regmask=[rcx] minReg=1 last fixed wt=100.00> | |
| <RefPosition #33 @55 RefTypeFixedReg <Reg:rcx> BB04 regmask=[rcx] minReg=1 wt=100.00> | |
| <RefPosition #34 @55 RefTypeDef <Ivl:8> PUTARG_REG BB04 regmask=[rcx] minReg=1 fixed wt=400.00> | |
| <RefPosition #35 @56 RefTypeFixedReg <Reg:rcx> BB04 regmask=[rcx] minReg=1 wt=100.00> | |
| <RefPosition #36 @56 RefTypeUse <Ivl:8> BB04 regmask=[rcx] minReg=1 last fixed wt=100.00> | |
| <RefPosition #37 @57 RefTypeKill BB04 regmask=[rax rcx rdx r8-r11] minReg=1> | |
| <RefPosition #38 @57 RefTypeFixedReg <Reg:rax> BB04 regmask=[rax] minReg=1 wt=100.00> | |
| <RefPosition #39 @57 RefTypeDef <Ivl:9> CALL BB04 regmask=[rax] minReg=1 last fixed local wt=400.00> | |
| <RefPosition #40 @61 RefTypeDef <Ivl:10> LCL_VAR BB04 regmask=[allIntButFP] minReg=1 wt=400.00> | |
| <RefPosition #41 @62 RefTypeUse <Ivl:10> BB04 regmask=[allIntButFP] minReg=1 last wt=100.00> | |
| <RefPosition #42 @65 RefTypeDef <Ivl:11> LCL_VAR BB04 regmask=[allIntButFP] minReg=1 wt=400.00> | |
| <RefPosition #43 @69 RefTypeDef <Ivl:12> CAST BB04 regmask=[allIntButFP] minReg=1 wt=400.00> | |
| <RefPosition #44 @72 RefTypeUse <Ivl:11> BB04 regmask=[allIntButFP] minReg=1 last wt=100.00> | |
| <RefPosition #45 @72 RefTypeUse <Ivl:12> BB04 regmask=[allIntButFP] minReg=1 last wt=100.00> | |
| <RefPosition #46 @73 RefTypeDef <Ivl:13> IND BB04 regmask=[mm0] minReg=1 wt=400.00> | |
| <RefPosition #47 @74 RefTypeFixedReg <Reg:mm0> BB04 regmask=[mm0] minReg=1 wt=100.00> | |
| <RefPosition #48 @74 RefTypeUse <Ivl:13> BB04 regmask=[mm0] minReg=1 last fixed wt=100.00> | |
| <RefPosition #49 @76 RefTypeBB BB06 regmask=[allMask] minReg=1 wt=50.00> | |
| <RefPosition #50 @79 RefTypeDef <Ivl:14> CNS_INT BB06 regmask=[rcx] minReg=1 wt=200.00> | |
| <RefPosition #51 @80 RefTypeFixedReg <Reg:rcx> BB06 regmask=[rcx] minReg=1 wt=50.00> | |
| <RefPosition #52 @80 RefTypeUse <Ivl:14> BB06 regmask=[rcx] minReg=1 last fixed wt=50.00> | |
| <RefPosition #53 @81 RefTypeFixedReg <Reg:rcx> BB06 regmask=[rcx] minReg=1 wt=50.00> | |
| <RefPosition #54 @81 RefTypeDef <Ivl:15> PUTARG_REG BB06 regmask=[rcx] minReg=1 fixed wt=200.00> | |
| <RefPosition #55 @82 RefTypeFixedReg <Reg:rcx> BB06 regmask=[rcx] minReg=1 wt=50.00> | |
| <RefPosition #56 @82 RefTypeUse <Ivl:15> BB06 regmask=[rcx] minReg=1 last fixed wt=50.00> | |
| <RefPosition #57 @83 RefTypeKill BB06 regmask=[rax rcx rdx r8-r11] minReg=1> | |
| <RefPosition #58 @83 RefTypeFixedReg <Reg:rax> BB06 regmask=[rax] minReg=1 wt=50.00> | |
| <RefPosition #59 @83 RefTypeDef <Ivl:16> CALL BB06 regmask=[rax] minReg=1 last fixed local wt=200.00> | |
| <RefPosition #60 @84 RefTypeBB BB06 regmask=[allMask] minReg=1 wt=50.00> | |
| TUPLE STYLE DUMP WITH REF POSITIONS | |
| Incoming Parameters: | |
| BB01 [0000] [000..004) -> BB03(0.5),BB02(0.5) (cond), preds={} succs={BB02,BB03} | |
| ===== | |
| N002. IL_OFFSET INLRT @ 0x000[E-] | |
| N004. V01 MEM | |
| N006. CNS_INT 1 | |
| N008. CMP | |
| N010. JCC cond=SGT | |
| BB02 [0001] [004..008) -> BB06(0.5),BB05(0.5) (cond), preds={BB01} succs={BB05,BB06} | |
| ===== | |
| N014. IL_OFFSET INLRT @ 0x004[E-] | |
| N016. V01 MEM | |
| N018. CNS_INT 0 | |
| N020. CMP | |
| N022. JCC cond=SGE | |
| BB05 [0004] [???..???) -> BB03(1) (always), preds={BB02} succs={BB03} | |
| ===== | |
| N026. CNS_INT(h) 0x7ff7f15423c0 bbc | |
| Def:<I0>(#3) | |
| N028. PUTARG_REG | |
| Use:<I0>(#5) Fixed:rcx(#4) * | |
| Def:<I1>(#7) rcx | |
| N030. CALL help | |
| Use:<I1>(#9) Fixed:rcx(#8) * | |
| Kill: [rax rcx rdx r8-r11] | |
| Def:<I2>(#12) rax LocalDefUse * | |
| BB03 [0002] [008..013) -> BB04(1) (always), preds={BB01,BB05} succs={BB04} | |
| ===== | |
| N034. IL_OFFSET INLRT @ 0x008[E-] | |
| N036. V01 MEM | |
| Def:<I3>(#14) | |
| N038. PUTARG_REG | |
| Use:<I3>(#16) Fixed:rdx(#15) * | |
| Def:<I4>(#18) rdx | |
| N040. CNS_INT(h) 'You tried to access this vector at index: {0}' | |
| Def:<I5>(#19) | |
| N042. PUTARG_REG | |
| Use:<I5>(#21) Fixed:rcx(#20) * | |
| Def:<I6>(#23) rcx | |
| N044. CNS_INT(h) 0x7ff7f13342a0 ftn | |
| N046. IND | |
| N048. CALL | |
| Use:<I4>(#25) Fixed:rdx(#24) * | |
| Use:<I6>(#27) Fixed:rcx(#26) * | |
| Kill: [rax rcx rdx r8-r11] | |
| BB04 [0003] [013..022) (return), preds={BB03,BB06} succs={} | |
| ===== | |
| N052. CNS_INT(h) 0x7ff7f15423c4 bbc | |
| Def:<I7>(#30) | |
| N054. PUTARG_REG | |
| Use:<I7>(#32) Fixed:rcx(#31) * | |
| Def:<I8>(#34) rcx | |
| N056. CALL help | |
| Use:<I8>(#36) Fixed:rcx(#35) * | |
| Kill: [rax rcx rdx r8-r11] | |
| Def:<I9>(#39) rax LocalDefUse * | |
| N058. IL_OFFSET INLRT @ 0x013[E-] | |
| N060. V00 MEM | |
| Def:<I10>(#40) | |
| N062. V03 MEM | |
| Use:<I10>(#41) * | |
| N064. V03 MEM | |
| Def:<I11>(#42) | |
| N066. V01 MEM | |
| N068. CAST | |
| Def:<I12>(#43) | |
| N070. LEA(b+(i*4)+0) | |
| N072. IND | |
| Use:<I11>(#44) * | |
| Use:<I12>(#45) * | |
| Def:<I13>(#46) | |
| N074. RETURN | |
| Use:<I13>(#48) Fixed:mm0(#47) * | |
| BB06 [0005] [???..???) -> BB04(1) (always), preds={BB02} succs={BB04} | |
| ===== | |
| N078. CNS_INT(h) 0x7ff7f15423c8 bbc | |
| Def:<I14>(#50) | |
| N080. PUTARG_REG | |
| Use:<I14>(#52) Fixed:rcx(#51) * | |
| Def:<I15>(#54) rcx | |
| N082. CALL help | |
| Use:<I15>(#56) Fixed:rcx(#55) * | |
| Kill: [rax rcx rdx r8-r11] | |
| Def:<I16>(#59) rax LocalDefUse * | |
| Linear scan intervals after buildIntervals: | |
| Interval 0: long (constant) RefPositions {#3@27 #5@28} physReg:NA Preferences=[rcx] Aversions=[allMask] | |
| Interval 1: long RefPositions {#7@29 #9@30} physReg:NA Preferences=[rcx] Aversions=[allMask] | |
| Interval 2: int RefPositions {#12@31} physReg:NA Preferences=[rax] Aversions=[allMask] | |
| Interval 3: int RefPositions {#14@37 #16@38} physReg:NA Preferences=[rdx] Aversions=[allMask] | |
| Interval 4: int RefPositions {#18@39 #25@48} physReg:NA Preferences=[rdx] Aversions=[allMask] | |
| Interval 5: ref (constant) RefPositions {#19@41 #21@42} physReg:NA Preferences=[rcx] Aversions=[allMask] | |
| Interval 6: ref RefPositions {#23@43 #27@48} physReg:NA Preferences=[rcx] Aversions=[allMask] | |
| Interval 7: long (constant) RefPositions {#30@53 #32@54} physReg:NA Preferences=[rcx] Aversions=[allMask] | |
| Interval 8: long RefPositions {#34@55 #36@56} physReg:NA Preferences=[rcx] Aversions=[allMask] | |
| Interval 9: int RefPositions {#39@57} physReg:NA Preferences=[rax] Aversions=[allMask] | |
| Interval 10: byref RefPositions {#40@61 #41@62} physReg:NA Preferences=[allIntButFP] Aversions=[allMask] | |
| Interval 11: long RefPositions {#42@65 #44@72} physReg:NA Preferences=[allIntButFP] Aversions=[allMask] | |
| Interval 12: long RefPositions {#43@69 #45@72} physReg:NA Preferences=[allIntButFP] Aversions=[allMask] | |
| Interval 13: float RefPositions {#46@73 #48@74} physReg:NA Preferences=[mm0] Aversions=[allMask] | |
| Interval 14: long (constant) RefPositions {#50@79 #52@80} physReg:NA Preferences=[rcx] Aversions=[allMask] | |
| Interval 15: long RefPositions {#54@81 #56@82} physReg:NA Preferences=[rcx] Aversions=[allMask] | |
| Interval 16: int RefPositions {#59@83} physReg:NA Preferences=[rax] Aversions=[allMask] | |
| *************** In LinearScan::allocateRegistersMinimal() | |
| Linear scan intervals before allocateRegistersMinimal: | |
| Interval 0: long (constant) RefPositions {#3@27 #5@28} physReg:NA Preferences=[rcx] Aversions=[allMask] | |
| Interval 1: long RefPositions {#7@29 #9@30} physReg:NA Preferences=[rcx] Aversions=[allMask] | |
| Interval 2: int RefPositions {#12@31} physReg:NA Preferences=[rax] Aversions=[allMask] | |
| Interval 3: int RefPositions {#14@37 #16@38} physReg:NA Preferences=[rdx] Aversions=[allMask] | |
| Interval 4: int RefPositions {#18@39 #25@48} physReg:NA Preferences=[rdx] Aversions=[allMask] | |
| Interval 5: ref (constant) RefPositions {#19@41 #21@42} physReg:NA Preferences=[rcx] Aversions=[allMask] | |
| Interval 6: ref RefPositions {#23@43 #27@48} physReg:NA Preferences=[rcx] Aversions=[allMask] | |
| Interval 7: long (constant) RefPositions {#30@53 #32@54} physReg:NA Preferences=[rcx] Aversions=[allMask] | |
| Interval 8: long RefPositions {#34@55 #36@56} physReg:NA Preferences=[rcx] Aversions=[allMask] | |
| Interval 9: int RefPositions {#39@57} physReg:NA Preferences=[rax] Aversions=[allMask] | |
| Interval 10: byref RefPositions {#40@61 #41@62} physReg:NA Preferences=[allIntButFP] Aversions=[allMask] | |
| Interval 11: long RefPositions {#42@65 #44@72} physReg:NA Preferences=[allIntButFP] Aversions=[allMask] | |
| Interval 12: long RefPositions {#43@69 #45@72} physReg:NA Preferences=[allIntButFP] Aversions=[allMask] | |
| Interval 13: float RefPositions {#46@73 #48@74} physReg:NA Preferences=[mm0] Aversions=[allMask] | |
| Interval 14: long (constant) RefPositions {#50@79 #52@80} physReg:NA Preferences=[rcx] Aversions=[allMask] | |
| Interval 15: long RefPositions {#54@81 #56@82} physReg:NA Preferences=[rcx] Aversions=[allMask] | |
| Interval 16: int RefPositions {#59@83} physReg:NA Preferences=[rax] Aversions=[allMask] | |
| ------------ | |
| REFPOSITIONS BEFORE ALLOCATION: | |
| ------------ | |
| <RefPosition #0 @0 RefTypeBB BB01 regmask=[allMask] minReg=1 wt=100.00> | |
| <RefPosition #1 @12 RefTypeBB BB02 regmask=[allMask] minReg=1 wt=100.00> | |
| <RefPosition #2 @24 RefTypeBB BB05 regmask=[allMask] minReg=1 wt=50.00> | |
| <RefPosition #3 @27 RefTypeDef <Ivl:0> CNS_INT BB05 regmask=[rcx] minReg=1 wt=200.00> | |
| <RefPosition #4 @28 RefTypeFixedReg <Reg:rcx> BB05 regmask=[rcx] minReg=1 wt=50.00> | |
| <RefPosition #5 @28 RefTypeUse <Ivl:0> BB05 regmask=[rcx] minReg=1 last fixed wt=50.00> | |
| <RefPosition #6 @29 RefTypeFixedReg <Reg:rcx> BB05 regmask=[rcx] minReg=1 wt=50.00> | |
| <RefPosition #7 @29 RefTypeDef <Ivl:1> PUTARG_REG BB05 regmask=[rcx] minReg=1 fixed wt=200.00> | |
| <RefPosition #8 @30 RefTypeFixedReg <Reg:rcx> BB05 regmask=[rcx] minReg=1 wt=50.00> | |
| <RefPosition #9 @30 RefTypeUse <Ivl:1> BB05 regmask=[rcx] minReg=1 last fixed wt=50.00> | |
| <RefPosition #10 @31 RefTypeKill BB05 regmask=[rax rcx rdx r8-r11] minReg=1> | |
| <RefPosition #11 @31 RefTypeFixedReg <Reg:rax> BB05 regmask=[rax] minReg=1 wt=50.00> | |
| <RefPosition #12 @31 RefTypeDef <Ivl:2> CALL BB05 regmask=[rax] minReg=1 last fixed local wt=200.00> | |
| <RefPosition #13 @32 RefTypeBB BB03 regmask=[allMask] minReg=1 wt=100.00> | |
| <RefPosition #14 @37 RefTypeDef <Ivl:3> LCL_VAR BB03 regmask=[rdx] minReg=1 wt=400.00> | |
| <RefPosition #15 @38 RefTypeFixedReg <Reg:rdx> BB03 regmask=[rdx] minReg=1 wt=100.00> | |
| <RefPosition #16 @38 RefTypeUse <Ivl:3> BB03 regmask=[rdx] minReg=1 last fixed wt=100.00> | |
| <RefPosition #17 @39 RefTypeFixedReg <Reg:rdx> BB03 regmask=[rdx] minReg=1 wt=100.00> | |
| <RefPosition #18 @39 RefTypeDef <Ivl:4> PUTARG_REG BB03 regmask=[rdx] minReg=1 fixed wt=400.00> | |
| <RefPosition #19 @41 RefTypeDef <Ivl:5> CNS_INT BB03 regmask=[rcx] minReg=1 wt=400.00> | |
| <RefPosition #20 @42 RefTypeFixedReg <Reg:rcx> BB03 regmask=[rcx] minReg=1 wt=100.00> | |
| <RefPosition #21 @42 RefTypeUse <Ivl:5> BB03 regmask=[rcx] minReg=1 last fixed wt=100.00> | |
| <RefPosition #22 @43 RefTypeFixedReg <Reg:rcx> BB03 regmask=[rcx] minReg=1 wt=100.00> | |
| <RefPosition #23 @43 RefTypeDef <Ivl:6> PUTARG_REG BB03 regmask=[rcx] minReg=1 fixed wt=400.00> | |
| <RefPosition #24 @48 RefTypeFixedReg <Reg:rdx> BB03 regmask=[rdx] minReg=1 wt=100.00> | |
| <RefPosition #25 @48 RefTypeUse <Ivl:4> BB03 regmask=[rdx] minReg=1 last fixed wt=100.00> | |
| <RefPosition #26 @48 RefTypeFixedReg <Reg:rcx> BB03 regmask=[rcx] minReg=1 wt=100.00> | |
| <RefPosition #27 @48 RefTypeUse <Ivl:6> BB03 regmask=[rcx] minReg=1 last fixed wt=100.00> | |
| <RefPosition #28 @49 RefTypeKill BB03 regmask=[rax rcx rdx r8-r11] minReg=1> | |
| <RefPosition #29 @50 RefTypeBB BB04 regmask=[allMask] minReg=1 wt=100.00> | |
| <RefPosition #30 @53 RefTypeDef <Ivl:7> CNS_INT BB04 regmask=[rcx] minReg=1 wt=400.00> | |
| <RefPosition #31 @54 RefTypeFixedReg <Reg:rcx> BB04 regmask=[rcx] minReg=1 wt=100.00> | |
| <RefPosition #32 @54 RefTypeUse <Ivl:7> BB04 regmask=[rcx] minReg=1 last fixed wt=100.00> | |
| <RefPosition #33 @55 RefTypeFixedReg <Reg:rcx> BB04 regmask=[rcx] minReg=1 wt=100.00> | |
| <RefPosition #34 @55 RefTypeDef <Ivl:8> PUTARG_REG BB04 regmask=[rcx] minReg=1 fixed wt=400.00> | |
| <RefPosition #35 @56 RefTypeFixedReg <Reg:rcx> BB04 regmask=[rcx] minReg=1 wt=100.00> | |
| <RefPosition #36 @56 RefTypeUse <Ivl:8> BB04 regmask=[rcx] minReg=1 last fixed wt=100.00> | |
| <RefPosition #37 @57 RefTypeKill BB04 regmask=[rax rcx rdx r8-r11] minReg=1> | |
| <RefPosition #38 @57 RefTypeFixedReg <Reg:rax> BB04 regmask=[rax] minReg=1 wt=100.00> | |
| <RefPosition #39 @57 RefTypeDef <Ivl:9> CALL BB04 regmask=[rax] minReg=1 last fixed local wt=400.00> | |
| <RefPosition #40 @61 RefTypeDef <Ivl:10> LCL_VAR BB04 regmask=[allIntButFP] minReg=1 wt=400.00> | |
| <RefPosition #41 @62 RefTypeUse <Ivl:10> BB04 regmask=[allIntButFP] minReg=1 last wt=100.00> | |
| <RefPosition #42 @65 RefTypeDef <Ivl:11> LCL_VAR BB04 regmask=[allIntButFP] minReg=1 wt=400.00> | |
| <RefPosition #43 @69 RefTypeDef <Ivl:12> CAST BB04 regmask=[allIntButFP] minReg=1 wt=400.00> | |
| <RefPosition #44 @72 RefTypeUse <Ivl:11> BB04 regmask=[allIntButFP] minReg=1 last wt=100.00> | |
| <RefPosition #45 @72 RefTypeUse <Ivl:12> BB04 regmask=[allIntButFP] minReg=1 last wt=100.00> | |
| <RefPosition #46 @73 RefTypeDef <Ivl:13> IND BB04 regmask=[mm0] minReg=1 wt=400.00> | |
| <RefPosition #47 @74 RefTypeFixedReg <Reg:mm0> BB04 regmask=[mm0] minReg=1 wt=100.00> | |
| <RefPosition #48 @74 RefTypeUse <Ivl:13> BB04 regmask=[mm0] minReg=1 last fixed wt=100.00> | |
| <RefPosition #49 @76 RefTypeBB BB06 regmask=[allMask] minReg=1 wt=50.00> | |
| <RefPosition #50 @79 RefTypeDef <Ivl:14> CNS_INT BB06 regmask=[rcx] minReg=1 wt=200.00> | |
| <RefPosition #51 @80 RefTypeFixedReg <Reg:rcx> BB06 regmask=[rcx] minReg=1 wt=50.00> | |
| <RefPosition #52 @80 RefTypeUse <Ivl:14> BB06 regmask=[rcx] minReg=1 last fixed wt=50.00> | |
| <RefPosition #53 @81 RefTypeFixedReg <Reg:rcx> BB06 regmask=[rcx] minReg=1 wt=50.00> | |
| <RefPosition #54 @81 RefTypeDef <Ivl:15> PUTARG_REG BB06 regmask=[rcx] minReg=1 fixed wt=200.00> | |
| <RefPosition #55 @82 RefTypeFixedReg <Reg:rcx> BB06 regmask=[rcx] minReg=1 wt=50.00> | |
| <RefPosition #56 @82 RefTypeUse <Ivl:15> BB06 regmask=[rcx] minReg=1 last fixed wt=50.00> | |
| <RefPosition #57 @83 RefTypeKill BB06 regmask=[rax rcx rdx r8-r11] minReg=1> | |
| <RefPosition #58 @83 RefTypeFixedReg <Reg:rax> BB06 regmask=[rax] minReg=1 wt=50.00> | |
| <RefPosition #59 @83 RefTypeDef <Ivl:16> CALL BB06 regmask=[rax] minReg=1 last fixed local wt=200.00> | |
| <RefPosition #60 @84 RefTypeBB BB06 regmask=[allMask] minReg=1 wt=50.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 LocRP# Name Type Action Reg |rax |rcx |rdx |rbx |rbp |rsi |rdi |r8 |r9 |mm0 |mm1 |mm2 |mm6 |mm7 | | |
| ------------------------------------------+----+----+----+----+----+----+----+----+----+----+----+----+----+----+ | |
| | | | | | | | | | | | | | | | | |
| 0.#0 BB1 PredBB0 | | | | | | | | | | | | | | | | |
| ------------------------------------------+----+----+----+----+----+----+----+----+----+----+----+----+----+----+ | |
| TreeID LocRP# Name Type Action Reg |rax |rcx |rdx |rbx |rbp |rsi |rdi |r8 |r9 |mm0 |mm1 |mm2 |mm6 |mm7 | | |
| ------------------------------------------+----+----+----+----+----+----+----+----+----+----+----+----+----+----+ | |
| 12.#1 BB2 PredBB0 | | | | | | | | | | | | | | | | |
| ------------------------------------------+----+----+----+----+----+----+----+----+----+----+----+----+----+----+ | |
| TreeID LocRP# Name Type Action Reg |rax |rcx |rdx |rbx |rbp |rsi |rdi |r8 |r9 |mm0 |mm1 |mm2 |mm6 |mm7 | | |
| ------------------------------------------+----+----+----+----+----+----+----+----+----+----+----+----+----+----+ | |
| 24.#2 BB5 PredBB0 | | | | | | | | | | | | | | | | |
| [000022] 27.#3 C0 Def Alloc rcx | |C0 a| | | | | | | | | | | | | | |
| [000037] 28.#4 rcx Fixd Keep rcx | |C0 a| | | | | | | | | | | | | | |
| 28.#5 C0 Use * Keep rcx | |C0 a| | | | | | | | | | | | | | |
| 29.#6 rcx Fixd Keep rcx | | | | | | | | | | | | | | | | |
| 29.#7 I1 Def Alloc rcx | |I1 a| | | | | | | | | | | | | | |
| [000023] 30.#8 rcx Fixd Keep rcx | |I1 a| | | | | | | | | | | | | | |
| 30.#9 I1 Use * Keep rcx | |I1 a| | | | | | | | | | | | | | |
| 31.#10 Kill None [rax rcx rdx r8-r11] | |
| | | | | | | | | | | | | | | | | |
| 31.#11 rax Fixd Keep rax | | | | | | | | | | | | | | | | |
| 31.#12 I2 Def * Alloc rax |I2 a| | | | | | | | | | | | | | | |
| ------------------------------------------+----+----+----+----+----+----+----+----+----+----+----+----+----+----+ | |
| TreeID LocRP# Name Type Action Reg |rax |rcx |rdx |rbx |rbp |rsi |rdi |r8 |r9 |mm0 |mm1 |mm2 |mm6 |mm7 | | |
| ------------------------------------------+----+----+----+----+----+----+----+----+----+----+----+----+----+----+ | |
| 32.#13 BB3 PredBB0 | | | | | | | | | | | | | | | | |
| [000005] 37.#14 I3 Def Alloc rdx | | |I3 a| | | | | | | | | | | | | |
| [000038] 38.#15 rdx Fixd Keep rdx | | |I3 a| | | | | | | | | | | | | |
| 38.#16 I3 Use * Keep rdx | | |I3 a| | | | | | | | | | | | | |
| 39.#17 rdx Fixd Keep rdx | | | | | | | | | | | | | | | | |
| 39.#18 I4 Def Alloc rdx | | |I4 a| | | | | | | | | | | | | |
| [000028] 41.#19 C5 Def Alloc rcx | |C5 a|I4 a| | | | | | | | | | | | | |
| [000039] 42.#20 rcx Fixd Keep rcx | |C5 a|I4 a| | | | | | | | | | | | | |
| 42.#21 C5 Use * Keep rcx | |C5 a|I4 a| | | | | | | | | | | | | |
| 43.#22 rcx Fixd Keep rcx | | |I4 a| | | | | | | | | | | | | |
| 43.#23 I6 Def Alloc rcx | |I6 a|I4 a| | | | | | | | | | | | | |
| [000006] 48.#24 rdx Fixd Keep rdx | |I6 a|I4 a| | | | | | | | | | | | | |
| 48.#25 I4 Use * Keep rdx | |I6 a|I4 a| | | | | | | | | | | | | |
| 48.#26 rcx Fixd Keep rcx | |I6 a|I4 a| | | | | | | | | | | | | |
| 48.#27 I6 Use * Keep rcx | |I6 a|I4 a| | | | | | | | | | | | | |
| 49.#28 Kill None [rax rcx rdx r8-r11] | |
| | | | | | | | | | | | | | | | | |
| ------------------------------------------+----+----+----+----+----+----+----+----+----+----+----+----+----+----+ | |
| TreeID LocRP# Name Type Action Reg |rax |rcx |rdx |rbx |rbp |rsi |rdi |r8 |r9 |mm0 |mm1 |mm2 |mm6 |mm7 | | |
| ------------------------------------------+----+----+----+----+----+----+----+----+----+----+----+----+----+----+ | |
| 50.#29 BB4 PredBB0 | | | | | | | | | | | | | | | | |
| [000024] 53.#30 C7 Def Alloc rcx | |C7 a| | | | | | | | | | | | | | |
| [000042] 54.#31 rcx Fixd Keep rcx | |C7 a| | | | | | | | | | | | | | |
| 54.#32 C7 Use * Keep rcx | |C7 a| | | | | | | | | | | | | | |
| 55.#33 rcx Fixd Keep rcx | | | | | | | | | | | | | | | | |
| 55.#34 I8 Def Alloc rcx | |I8 a| | | | | | | | | | | | | | |
| [000025] 56.#35 rcx Fixd Keep rcx | |I8 a| | | | | | | | | | | | | | |
| 56.#36 I8 Use * Keep rcx | |I8 a| | | | | | | | | | | | | | |
| 57.#37 Kill None [rax rcx rdx r8-r11] | |
| | | | | | | | | | | | | | | | | |
| 57.#38 rax Fixd Keep rax | | | | | | | | | | | | | | | | |
| 57.#39 I9 Def * Alloc rax |I9 a| | | | | | | | | | | | | | | |
| [000008] 61.#40 I10 Def ORDER(A) rax |I10a| | | | | | | | | | | | | | | |
| [000029] 62.#41 I10 Use * Keep rax |I10a| | | | | | | | | | | | | | | |
| [000030] 65.#42 I11 Def ORDER(A) rax |I11a| | | | | | | | | | | | | | | |
| [000011] 69.#43 I12 Def ORDER(A) rcx |I11a|I12a| | | | | | | | | | | | | | |
| [000016] 72.#44 I11 Use * Keep rax |I11a|I12a| | | | | | | | | | | | | | |
| 72.#45 I12 Use * Keep rcx |I11a|I12a| | | | | | | | | | | | | | |
| 73.#46 I13 Def Alloc mm0 | | | | | | | | | |I13a| | | | | | |
| [000017] 74.#47 mm0 Fixd Keep mm0 | | | | | | | | | |I13a| | | | | | |
| 74.#48 I13 Use * Keep mm0 | | | | | | | | | |I13a| | | | | | |
| ------------------------------------------+----+----+----+----+----+----+----+----+----+----+----+----+----+----+ | |
| TreeID LocRP# Name Type Action Reg |rax |rcx |rdx |rbx |rbp |rsi |rdi |r8 |r9 |mm0 |mm1 |mm2 |mm6 |mm7 | | |
| ------------------------------------------+----+----+----+----+----+----+----+----+----+----+----+----+----+----+ | |
| 76.#49 BB6 PredBB0 | | | | | | | | | | | | | | | | |
| [000026] 79.#50 C14 Def Alloc rcx | |C14a| | | | | | | | | | | | | | |
| [000043] 80.#51 rcx Fixd Keep rcx | |C14a| | | | | | | | | | | | | | |
| 80.#52 C14 Use * Keep rcx | |C14a| | | | | | | | | | | | | | |
| 81.#53 rcx Fixd Keep rcx | | | | | | | | | | | | | | | | |
| 81.#54 I15 Def Alloc rcx | |I15a| | | | | | | | | | | | | | |
| [000027] 82.#55 rcx Fixd Keep rcx | |I15a| | | | | | | | | | | | | | |
| 82.#56 I15 Use * Keep rcx | |I15a| | | | | | | | | | | | | | |
| 83.#57 Kill None [rax rcx rdx r8-r11] | |
| | | | | | | | | | | | | | | | | |
| 83.#58 rax Fixd Keep rax | | | | | | | | | | | | | | | | |
| 83.#59 I16 Def * Alloc rax |I16a| | | | | | | | | | | | | | | |
| 84.#60 END | | | | | | | | | | | | | | | | |
| ------------ | |
| REFPOSITIONS AFTER ALLOCATION: | |
| ------------ | |
| <RefPosition #0 @0 RefTypeBB BB01 regmask=[allMask] minReg=1 wt=100.00> | |
| <RefPosition #1 @12 RefTypeBB BB02 regmask=[allMask] minReg=1 wt=100.00> | |
| <RefPosition #2 @24 RefTypeBB BB05 regmask=[allMask] minReg=1 wt=50.00> | |
| <RefPosition #3 @27 RefTypeDef <Ivl:0> CNS_INT BB05 regmask=[rcx] minReg=1 wt=200.00> | |
| <RefPosition #4 @28 RefTypeFixedReg <Reg:rcx> BB05 regmask=[rcx] minReg=1 wt=50.00> | |
| <RefPosition #5 @28 RefTypeUse <Ivl:0> BB05 regmask=[rcx] minReg=1 last fixed wt=50.00> | |
| <RefPosition #6 @29 RefTypeFixedReg <Reg:rcx> BB05 regmask=[rcx] minReg=1 wt=50.00> | |
| <RefPosition #7 @29 RefTypeDef <Ivl:1> PUTARG_REG BB05 regmask=[rcx] minReg=1 fixed wt=200.00> | |
| <RefPosition #8 @30 RefTypeFixedReg <Reg:rcx> BB05 regmask=[rcx] minReg=1 wt=50.00> | |
| <RefPosition #9 @30 RefTypeUse <Ivl:1> BB05 regmask=[rcx] minReg=1 last fixed wt=50.00> | |
| <RefPosition #10 @31 RefTypeKill BB05 regmask=[rax rcx rdx r8-r11] minReg=1> | |
| <RefPosition #11 @31 RefTypeFixedReg <Reg:rax> BB05 regmask=[rax] minReg=1 wt=50.00> | |
| <RefPosition #12 @31 RefTypeDef <Ivl:2> CALL BB05 regmask=[rax] minReg=1 last fixed local wt=200.00> | |
| <RefPosition #13 @32 RefTypeBB BB03 regmask=[allMask] minReg=1 wt=100.00> | |
| <RefPosition #14 @37 RefTypeDef <Ivl:3> LCL_VAR BB03 regmask=[rdx] minReg=1 wt=400.00> | |
| <RefPosition #15 @38 RefTypeFixedReg <Reg:rdx> BB03 regmask=[rdx] minReg=1 wt=100.00> | |
| <RefPosition #16 @38 RefTypeUse <Ivl:3> BB03 regmask=[rdx] minReg=1 last fixed wt=100.00> | |
| <RefPosition #17 @39 RefTypeFixedReg <Reg:rdx> BB03 regmask=[rdx] minReg=1 wt=100.00> | |
| <RefPosition #18 @39 RefTypeDef <Ivl:4> PUTARG_REG BB03 regmask=[rdx] minReg=1 fixed wt=400.00> | |
| <RefPosition #19 @41 RefTypeDef <Ivl:5> CNS_INT BB03 regmask=[rcx] minReg=1 wt=400.00> | |
| <RefPosition #20 @42 RefTypeFixedReg <Reg:rcx> BB03 regmask=[rcx] minReg=1 wt=100.00> | |
| <RefPosition #21 @42 RefTypeUse <Ivl:5> BB03 regmask=[rcx] minReg=1 last fixed wt=100.00> | |
| <RefPosition #22 @43 RefTypeFixedReg <Reg:rcx> BB03 regmask=[rcx] minReg=1 wt=100.00> | |
| <RefPosition #23 @43 RefTypeDef <Ivl:6> PUTARG_REG BB03 regmask=[rcx] minReg=1 fixed wt=400.00> | |
| <RefPosition #24 @48 RefTypeFixedReg <Reg:rdx> BB03 regmask=[rdx] minReg=1 wt=100.00> | |
| <RefPosition #25 @48 RefTypeUse <Ivl:4> BB03 regmask=[rdx] minReg=1 last fixed wt=100.00> | |
| <RefPosition #26 @48 RefTypeFixedReg <Reg:rcx> BB03 regmask=[rcx] minReg=1 wt=100.00> | |
| <RefPosition #27 @48 RefTypeUse <Ivl:6> BB03 regmask=[rcx] minReg=1 last fixed wt=100.00> | |
| <RefPosition #28 @49 RefTypeKill BB03 regmask=[rax rcx rdx r8-r11] minReg=1> | |
| <RefPosition #29 @50 RefTypeBB BB04 regmask=[allMask] minReg=1 wt=100.00> | |
| <RefPosition #30 @53 RefTypeDef <Ivl:7> CNS_INT BB04 regmask=[rcx] minReg=1 wt=400.00> | |
| <RefPosition #31 @54 RefTypeFixedReg <Reg:rcx> BB04 regmask=[rcx] minReg=1 wt=100.00> | |
| <RefPosition #32 @54 RefTypeUse <Ivl:7> BB04 regmask=[rcx] minReg=1 last fixed wt=100.00> | |
| <RefPosition #33 @55 RefTypeFixedReg <Reg:rcx> BB04 regmask=[rcx] minReg=1 wt=100.00> | |
| <RefPosition #34 @55 RefTypeDef <Ivl:8> PUTARG_REG BB04 regmask=[rcx] minReg=1 fixed wt=400.00> | |
| <RefPosition #35 @56 RefTypeFixedReg <Reg:rcx> BB04 regmask=[rcx] minReg=1 wt=100.00> | |
| <RefPosition #36 @56 RefTypeUse <Ivl:8> BB04 regmask=[rcx] minReg=1 last fixed wt=100.00> | |
| <RefPosition #37 @57 RefTypeKill BB04 regmask=[rax rcx rdx r8-r11] minReg=1> | |
| <RefPosition #38 @57 RefTypeFixedReg <Reg:rax> BB04 regmask=[rax] minReg=1 wt=100.00> | |
| <RefPosition #39 @57 RefTypeDef <Ivl:9> CALL BB04 regmask=[rax] minReg=1 last fixed local wt=400.00> | |
| <RefPosition #40 @61 RefTypeDef <Ivl:10> LCL_VAR BB04 regmask=[rax] minReg=1 wt=400.00> | |
| <RefPosition #41 @62 RefTypeUse <Ivl:10> BB04 regmask=[rax] minReg=1 last wt=100.00> | |
| <RefPosition #42 @65 RefTypeDef <Ivl:11> LCL_VAR BB04 regmask=[rax] minReg=1 wt=400.00> | |
| <RefPosition #43 @69 RefTypeDef <Ivl:12> CAST BB04 regmask=[rcx] minReg=1 wt=400.00> | |
| <RefPosition #44 @72 RefTypeUse <Ivl:11> BB04 regmask=[rax] minReg=1 last wt=100.00> | |
| <RefPosition #45 @72 RefTypeUse <Ivl:12> BB04 regmask=[rcx] minReg=1 last wt=100.00> | |
| <RefPosition #46 @73 RefTypeDef <Ivl:13> IND BB04 regmask=[mm0] minReg=1 wt=400.00> | |
| <RefPosition #47 @74 RefTypeFixedReg <Reg:mm0> BB04 regmask=[mm0] minReg=1 wt=100.00> | |
| <RefPosition #48 @74 RefTypeUse <Ivl:13> BB04 regmask=[mm0] minReg=1 last fixed wt=100.00> | |
| <RefPosition #49 @76 RefTypeBB BB06 regmask=[allMask] minReg=1 wt=50.00> | |
| <RefPosition #50 @79 RefTypeDef <Ivl:14> CNS_INT BB06 regmask=[rcx] minReg=1 wt=200.00> | |
| <RefPosition #51 @80 RefTypeFixedReg <Reg:rcx> BB06 regmask=[rcx] minReg=1 wt=50.00> | |
| <RefPosition #52 @80 RefTypeUse <Ivl:14> BB06 regmask=[rcx] minReg=1 last fixed wt=50.00> | |
| <RefPosition #53 @81 RefTypeFixedReg <Reg:rcx> BB06 regmask=[rcx] minReg=1 wt=50.00> | |
| <RefPosition #54 @81 RefTypeDef <Ivl:15> PUTARG_REG BB06 regmask=[rcx] minReg=1 fixed wt=200.00> | |
| <RefPosition #55 @82 RefTypeFixedReg <Reg:rcx> BB06 regmask=[rcx] minReg=1 wt=50.00> | |
| <RefPosition #56 @82 RefTypeUse <Ivl:15> BB06 regmask=[rcx] minReg=1 last fixed wt=50.00> | |
| <RefPosition #57 @83 RefTypeKill BB06 regmask=[rax rcx rdx r8-r11] minReg=1> | |
| <RefPosition #58 @83 RefTypeFixedReg <Reg:rax> BB06 regmask=[rax] minReg=1 wt=50.00> | |
| <RefPosition #59 @83 RefTypeDef <Ivl:16> CALL BB06 regmask=[rax] minReg=1 last fixed local wt=200.00> | |
| <RefPosition #60 @84 RefTypeBB BB06 regmask=[allMask] minReg=1 wt=50.00> | |
| Active intervals at end of allocation: | |
| Trees after linear scan register allocator (LSRA) | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BB01 [0000] 1 1 [000..004)-> BB03(0.5),BB02(0.5) ( cond ) i LIR | |
| BB02 [0001] 1 BB01 1 [004..008)-> BB06(0.5),BB05(0.5) ( cond ) i LIR | |
| BB05 [0004] 1 BB02 0.50 [???..???)-> BB03(1) (always) i LIR internal hascall | |
| BB03 [0002] 2 BB01,BB05 1 [008..013)-> BB04(1) (always) i LIR hascall gcsafe | |
| BB04 [0003] 2 BB03,BB06 1 [013..022) (return) i LIR hascall | |
| BB06 [0005] 1 BB02 0.50 [???..???)-> BB04(1) (always) i LIR internal hascall | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| ------------ BB01 [0000] [000..004) -> BB03(0.5),BB02(0.5) (cond), preds={} succs={BB02,BB03} | |
| N002 (???,???) [000033] ----------- IL_OFFSET void INLRT @ 0x000[E-] REG NA | |
| N004 (???,???) [000000] -c---+----- t0 = LCL_VAR int V01 arg1 NA REG NA | |
| N006 (???,???) [000001] -c---+----- t1 = CNS_INT int 1 REG NA | |
| /--* t0 int | |
| +--* t1 int | |
| N008 (???,???) [000002] -----+-N--- * CMP void REG NA | |
| N010 (???,???) [000003] -----+----- JCC void cond=SGT REG NA | |
| ------------ BB02 [0001] [004..008) -> BB06(0.5),BB05(0.5) (cond), preds={BB01} succs={BB05,BB06} | |
| N014 (???,???) [000034] ----------- IL_OFFSET void INLRT @ 0x004[E-] REG NA | |
| N016 (???,???) [000018] -c---+----- t18 = LCL_VAR int V01 arg1 NA REG NA | |
| N018 (???,???) [000019] -c---+----- t19 = CNS_INT int 0 REG NA | |
| /--* t18 int | |
| +--* t19 int | |
| N020 (???,???) [000020] -----+-N--- * CMP void REG NA | |
| N022 (???,???) [000021] -----+----- JCC void cond=SGE REG NA | |
| ------------ BB05 [0004] [???..???) -> BB03(1) (always), preds={BB02} succs={BB03} | |
| N026 (???,???) [000022] H----+----- t22 = CNS_INT(h) long 0x7ff7f15423c0 bbc REG rcx | |
| /--* t22 long | |
| N028 (???,???) [000037] ----------- t37 = * PUTARG_REG long REG rcx | |
| /--* t37 long arg0 rcx | |
| N030 (???,???) [000023] --CXG+----- u23 = * CALL help int CORINFO_HELP_COUNTPROFILE32 REG rax | |
| ------------ BB03 [0002] [008..013) -> BB04(1) (always), preds={BB01,BB05} succs={BB04} | |
| N034 (???,???) [000035] ----------- IL_OFFSET void INLRT @ 0x008[E-] REG NA | |
| N036 (???,???) [000005] -----+----- t5 = LCL_VAR int V01 arg1 rdx REG rdx | |
| /--* t5 int | |
| N038 (???,???) [000038] ----------- t38 = * PUTARG_REG int REG rdx | |
| N040 (???,???) [000028] H----+----- t28 = CNS_INT(h) ref 'You tried to access this vector at index: {0}' REG rcx | |
| /--* t28 ref | |
| N042 (???,???) [000039] ----------- t39 = * PUTARG_REG ref REG rcx | |
| N044 (???,???) [000040] Hc--------- t40 = CNS_INT(h) long 0x7ff7f13342a0 ftn REG NA | |
| /--* t40 long | |
| N046 (???,???) [000041] nc--G------ t41 = * IND long REG NA | |
| /--* t38 int arg1 rdx | |
| +--* t39 ref arg0 rcx | |
| +--* t41 long control expr | |
| N048 (???,???) [000006] --CXG+----- * CALL void Program.EntryPoint:ThrowOutOfRangeException[int](System.String,int) REG NA | |
| ------------ BB04 [0003] [013..022) (return), preds={BB03,BB06} succs={} | |
| N052 (???,???) [000024] H----+----- t24 = CNS_INT(h) long 0x7ff7f15423c4 bbc REG rcx | |
| /--* t24 long | |
| N054 (???,???) [000042] ----------- t42 = * PUTARG_REG long REG rcx | |
| /--* t42 long arg0 rcx | |
| N056 (???,???) [000025] --CXG+----- u25 = * CALL help int CORINFO_HELP_COUNTPROFILE32 REG rax | |
| N058 (???,???) [000036] ----------- IL_OFFSET void INLRT @ 0x013[E-] REG NA | |
| N060 (???,???) [000008] -----+----- t8 = LCL_VAR byref V00 arg0 rax REG rax | |
| /--* t8 byref | |
| N062 (???,???) [000029] DA---+----- * STORE_LCL_VAR long V03 tmp1 NA REG NA | |
| N064 (???,???) [000030] -----+----- t30 = LCL_VAR long V03 tmp1 rax REG rax | |
| N066 (???,???) [000010] -c---+----- t10 = LCL_VAR int V01 arg1 NA REG NA | |
| /--* t10 int | |
| N068 (???,???) [000011] -----+----- t11 = * CAST long <- int REG rcx | |
| /--* t30 long | |
| +--* t11 long | |
| N070 (???,???) [000015] -c---+----- t15 = * LEA(b+(i*4)+0) long REG NA | |
| /--* t15 long | |
| N072 (???,???) [000016] -A-XG+----- t16 = * IND float REG mm0 | |
| /--* t16 float | |
| N074 (???,???) [000017] -A-XG+----- * RETURN float REG NA | |
| ------------ BB06 [0005] [???..???) -> BB04(1) (always), preds={BB02} succs={BB04} | |
| N078 (???,???) [000026] H----+----- t26 = CNS_INT(h) long 0x7ff7f15423c8 bbc REG rcx | |
| /--* t26 long | |
| N080 (???,???) [000043] ----------- t43 = * PUTARG_REG long REG rcx | |
| /--* t43 long arg0 rcx | |
| N082 (???,???) [000027] --CXG+----- u27 = * CALL help int CORINFO_HELP_COUNTPROFILE32 REG rax | |
| ------------------------------------------------------------------------------------------------------------------- | |
| Final allocation | |
| ------------------------------------------+----+----+----+----+----+----+----+----+----+----+----+----+----+----+ | |
| TreeID LocRP# Name Type Action Reg |rax |rcx |rdx |rbx |rbp |rsi |rdi |r8 |r9 |mm0 |mm1 |mm2 |mm6 |mm7 | | |
| ------------------------------------------+----+----+----+----+----+----+----+----+----+----+----+----+----+----+ | |
| 0.#0 BB1 PredBB0 | | | | | | | | | | | | | | | | |
| ------------------------------------------+----+----+----+----+----+----+----+----+----+----+----+----+----+----+ | |
| TreeID LocRP# Name Type Action Reg |rax |rcx |rdx |rbx |rbp |rsi |rdi |r8 |r9 |mm0 |mm1 |mm2 |mm6 |mm7 | | |
| ------------------------------------------+----+----+----+----+----+----+----+----+----+----+----+----+----+----+ | |
| 12.#1 BB2 PredBB0 | | | | | | | | | | | | | | | | |
| ------------------------------------------+----+----+----+----+----+----+----+----+----+----+----+----+----+----+ | |
| TreeID LocRP# Name Type Action Reg |rax |rcx |rdx |rbx |rbp |rsi |rdi |r8 |r9 |mm0 |mm1 |mm2 |mm6 |mm7 | | |
| ------------------------------------------+----+----+----+----+----+----+----+----+----+----+----+----+----+----+ | |
| 24.#2 BB5 PredBB0 | | | | | | | | | | | | | | | | |
| [000022] 27.#3 C0 Def Alloc rcx | |C0 a| | | | | | | | | | | | | | |
| [000037] 28.#4 rcx Fixd Keep rcx | |C0 a| | | | | | | | | | | | | | |
| 28.#5 C0 Use * Keep rcx | |C0 i| | | | | | | | | | | | | | |
| 29.#6 rcx Fixd Keep rcx | | | | | | | | | | | | | | | | |
| 29.#7 I1 Def Alloc rcx | |I1 a| | | | | | | | | | | | | | |
| [000023] 30.#8 rcx Fixd Keep rcx | |I1 a| | | | | | | | | | | | | | |
| 30.#9 I1 Use * Keep rcx | |I1 i| | | | | | | | | | | | | | |
| 31.#10 Kill None [rax rcx rdx r8-r11] | |
| | | | | | | | | | | | | | | | | |
| 31.#11 rax Fixd Keep rax | | | | | | | | | | | | | | | | |
| 31.#12 I2 Def * Alloc rax |I2 i| | | | | | | | | | | | | | | |
| ------------------------------------------+----+----+----+----+----+----+----+----+----+----+----+----+----+----+ | |
| TreeID LocRP# Name Type Action Reg |rax |rcx |rdx |rbx |rbp |rsi |rdi |r8 |r9 |mm0 |mm1 |mm2 |mm6 |mm7 | | |
| ------------------------------------------+----+----+----+----+----+----+----+----+----+----+----+----+----+----+ | |
| 32.#13 BB3 PredBB0 | | | | | | | | | | | | | | | | |
| [000005] 37.#14 I3 Def Alloc rdx | | |I3 a| | | | | | | | | | | | | |
| [000038] 38.#15 rdx Fixd Keep rdx | | |I3 a| | | | | | | | | | | | | |
| 38.#16 I3 Use * Keep rdx | | |I3 i| | | | | | | | | | | | | |
| 39.#17 rdx Fixd Keep rdx | | | | | | | | | | | | | | | | |
| 39.#18 I4 Def Alloc rdx | | |I4 a| | | | | | | | | | | | | |
| [000028] 41.#19 C5 Def Alloc rcx | |C5 a|I4 a| | | | | | | | | | | | | |
| [000039] 42.#20 rcx Fixd Keep rcx | |C5 a|I4 a| | | | | | | | | | | | | |
| 42.#21 C5 Use * Keep rcx | |C5 i|I4 a| | | | | | | | | | | | | |
| 43.#22 rcx Fixd Keep rcx | | |I4 a| | | | | | | | | | | | | |
| 43.#23 I6 Def Alloc rcx | |I6 a|I4 a| | | | | | | | | | | | | |
| [000006] 48.#24 rdx Fixd Keep rdx | |I6 a|I4 a| | | | | | | | | | | | | |
| 48.#25 I4 Use * Keep rdx | |I6 a|I4 i| | | | | | | | | | | | | |
| 48.#26 rcx Fixd Keep rcx | |I6 a| | | | | | | | | | | | | | |
| 48.#27 I6 Use * Keep rcx | |I6 i| | | | | | | | | | | | | | |
| 49.#28 Kill None [rax rcx rdx r8-r11] | |
| | | | | | | | | | | | | | | | | |
| ------------------------------------------+----+----+----+----+----+----+----+----+----+----+----+----+----+----+ | |
| TreeID LocRP# Name Type Action Reg |rax |rcx |rdx |rbx |rbp |rsi |rdi |r8 |r9 |mm0 |mm1 |mm2 |mm6 |mm7 | | |
| ------------------------------------------+----+----+----+----+----+----+----+----+----+----+----+----+----+----+ | |
| 50.#29 BB4 PredBB0 | | | | | | | | | | | | | | | | |
| [000024] 53.#30 C7 Def Alloc rcx | |C7 a| | | | | | | | | | | | | | |
| [000042] 54.#31 rcx Fixd Keep rcx | |C7 a| | | | | | | | | | | | | | |
| 54.#32 C7 Use * Keep rcx | |C7 i| | | | | | | | | | | | | | |
| 55.#33 rcx Fixd Keep rcx | | | | | | | | | | | | | | | | |
| 55.#34 I8 Def Alloc rcx | |I8 a| | | | | | | | | | | | | | |
| [000025] 56.#35 rcx Fixd Keep rcx | |I8 a| | | | | | | | | | | | | | |
| 56.#36 I8 Use * Keep rcx | |I8 i| | | | | | | | | | | | | | |
| 57.#37 Kill None [rax rcx rdx r8-r11] | |
| | | | | | | | | | | | | | | | | |
| 57.#38 rax Fixd Keep rax | | | | | | | | | | | | | | | | |
| 57.#39 I9 Def * Alloc rax |I9 i| | | | | | | | | | | | | | | |
| [000008] 61.#40 I10 Def Alloc rax |I10a| | | | | | | | | | | | | | | |
| [000029] 62.#41 I10 Use * Keep rax |I10i| | | | | | | | | | | | | | | |
| [000030] 65.#42 I11 Def Alloc rax |I11a| | | | | | | | | | | | | | | |
| [000011] 69.#43 I12 Def Alloc rcx |I11a|I12a| | | | | | | | | | | | | | |
| [000016] 72.#44 I11 Use * Keep rax |I11i|I12a| | | | | | | | | | | | | | |
| 72.#45 I12 Use * Keep rcx | |I12i| | | | | | | | | | | | | | |
| 73.#46 I13 Def Alloc mm0 | | | | | | | | | |I13a| | | | | | |
| [000017] 74.#47 mm0 Fixd Keep mm0 | | | | | | | | | |I13a| | | | | | |
| 74.#48 I13 Use * Keep mm0 | | | | | | | | | |I13i| | | | | | |
| ------------------------------------------+----+----+----+----+----+----+----+----+----+----+----+----+----+----+ | |
| TreeID LocRP# Name Type Action Reg |rax |rcx |rdx |rbx |rbp |rsi |rdi |r8 |r9 |mm0 |mm1 |mm2 |mm6 |mm7 | | |
| ------------------------------------------+----+----+----+----+----+----+----+----+----+----+----+----+----+----+ | |
| 76.#49 BB6 PredBB0 | | | | | | | | | | | | | | | | |
| [000026] 79.#50 C14 Def Alloc rcx | |C14a| | | | | | | | | | | | | | |
| [000043] 80.#51 rcx Fixd Keep rcx | |C14a| | | | | | | | | | | | | | |
| 80.#52 C14 Use * Keep rcx | |C14i| | | | | | | | | | | | | | |
| 81.#53 rcx Fixd Keep rcx | | | | | | | | | | | | | | | | |
| 81.#54 I15 Def Alloc rcx | |I15a| | | | | | | | | | | | | | |
| [000027] 82.#55 rcx Fixd Keep rcx | |I15a| | | | | | | | | | | | | | |
| 82.#56 I15 Use * Keep rcx | |I15i| | | | | | | | | | | | | | |
| 83.#57 Kill None [rax rcx rdx r8-r11] | |
| | | | | | | | | | | | | | | | | |
| 83.#58 rax Fixd Keep rax | | | | | | | | | | | | | | | | |
| 83.#59 I16 Def * Alloc rax |I16i| | | | | | | | | | | | | | | |
| Recording the maximum number of concurrent spills: | |
| ---------- | |
| LSRA Stats | |
| ---------- | |
| Register selection order: ABCDEFGHIJKLMNOPQ | |
| Total Tracked Vars: 0 | |
| Total Reg Cand Vars: 0 | |
| Total number of Intervals: 16 | |
| Total number of RefPositions: 60 | |
| Total Number of spill temps created: 0 | |
| .......... | |
| BB04 [ 100.00]: REG_ORDER = 3 | |
| .......... | |
| 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 REG_ORDER [#13] : 3 Weighted: 300.000000 | |
| TUPLE STYLE DUMP WITH REGISTER ASSIGNMENTS | |
| Incoming Parameters: | |
| BB01 [0000] [000..004) -> BB03(0.5),BB02(0.5) (cond), preds={} succs={BB02,BB03} | |
| ===== | |
| N002. IL_OFFSET INLRT @ 0x000[E-] | |
| N004. V01 MEM | |
| N006. CNS_INT 1 | |
| N008. CMP | |
| N010. JCC cond=SGT | |
| BB02 [0001] [004..008) -> BB06(0.5),BB05(0.5) (cond), preds={BB01} succs={BB05,BB06} | |
| ===== | |
| N014. IL_OFFSET INLRT @ 0x004[E-] | |
| N016. V01 MEM | |
| N018. CNS_INT 0 | |
| N020. CMP | |
| N022. JCC cond=SGE | |
| BB05 [0004] [???..???) -> BB03(1) (always), preds={BB02} succs={BB03} | |
| ===== | |
| N026. rcx = CNS_INT(h) 0x7ff7f15423c0 bbc | |
| N028. rcx = PUTARG_REG; rcx | |
| * N030. rax = CALL help; rcx | |
| BB03 [0002] [008..013) -> BB04(1) (always), preds={BB01,BB05} succs={BB04} | |
| ===== | |
| N034. IL_OFFSET INLRT @ 0x008[E-] | |
| N036. rdx = V01 MEM | |
| N038. rdx = PUTARG_REG; rdx | |
| N040. rcx = CNS_INT(h) 'You tried to access this vector at index: {0}' | |
| N042. rcx = PUTARG_REG; rcx | |
| N044. CNS_INT(h) 0x7ff7f13342a0 ftn | |
| N046. IND | |
| N048. CALL ; rdx,rcx | |
| BB04 [0003] [013..022) (return), preds={BB03,BB06} succs={} | |
| ===== | |
| N052. rcx = CNS_INT(h) 0x7ff7f15423c4 bbc | |
| N054. rcx = PUTARG_REG; rcx | |
| * N056. rax = CALL help; rcx | |
| N058. IL_OFFSET INLRT @ 0x013[E-] | |
| N060. rax = V00 MEM | |
| N062. V03 MEM; rax | |
| N064. rax = V03 MEM | |
| N066. V01 MEM | |
| N068. rcx = CAST | |
| N070. STK = LEA(b+(i*4)+0); rax,rcx | |
| N072. mm0 = IND ; STK | |
| N074. RETURN ; mm0 | |
| BB06 [0005] [???..???) -> BB04(1) (always), preds={BB02} succs={BB04} | |
| ===== | |
| N078. rcx = CNS_INT(h) 0x7ff7f15423c8 bbc | |
| N080. rcx = PUTARG_REG; rcx | |
| * N082. rax = CALL help; rcx | |
| *************** Finishing PHASE Linear scan register alloc | |
| Trees after Linear scan register alloc | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BB01 [0000] 1 1 [000..004)-> BB03(0.5),BB02(0.5) ( cond ) i LIR | |
| BB02 [0001] 1 BB01 1 [004..008)-> BB06(0.5),BB05(0.5) ( cond ) i LIR | |
| BB05 [0004] 1 BB02 0.50 [???..???)-> BB03(1) (always) i LIR internal hascall | |
| BB03 [0002] 2 BB01,BB05 1 [008..013)-> BB04(1) (always) i LIR hascall gcsafe | |
| BB04 [0003] 2 BB03,BB06 1 [013..022) (return) i LIR hascall | |
| BB06 [0005] 1 BB02 0.50 [???..???)-> BB04(1) (always) i LIR internal hascall | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| ------------ BB01 [0000] [000..004) -> BB03(0.5),BB02(0.5) (cond), preds={} succs={BB02,BB03} | |
| N002 (???,???) [000033] ----------- IL_OFFSET void INLRT @ 0x000[E-] REG NA | |
| N004 (???,???) [000000] -c---+----- t0 = LCL_VAR int V01 arg1 NA REG NA | |
| N006 (???,???) [000001] -c---+----- t1 = CNS_INT int 1 REG NA | |
| /--* t0 int | |
| +--* t1 int | |
| N008 (???,???) [000002] -----+-N--- * CMP void REG NA | |
| N010 (???,???) [000003] -----+----- JCC void cond=SGT REG NA | |
| ------------ BB02 [0001] [004..008) -> BB06(0.5),BB05(0.5) (cond), preds={BB01} succs={BB05,BB06} | |
| N014 (???,???) [000034] ----------- IL_OFFSET void INLRT @ 0x004[E-] REG NA | |
| N016 (???,???) [000018] -c---+----- t18 = LCL_VAR int V01 arg1 NA REG NA | |
| N018 (???,???) [000019] -c---+----- t19 = CNS_INT int 0 REG NA | |
| /--* t18 int | |
| +--* t19 int | |
| N020 (???,???) [000020] -----+-N--- * CMP void REG NA | |
| N022 (???,???) [000021] -----+----- JCC void cond=SGE REG NA | |
| ------------ BB05 [0004] [???..???) -> BB03(1) (always), preds={BB02} succs={BB03} | |
| N026 (???,???) [000022] H----+----- t22 = CNS_INT(h) long 0x7ff7f15423c0 bbc REG rcx | |
| /--* t22 long | |
| N028 (???,???) [000037] ----------- t37 = * PUTARG_REG long REG rcx | |
| /--* t37 long arg0 rcx | |
| N030 (???,???) [000023] --CXG+----- u23 = * CALL help int CORINFO_HELP_COUNTPROFILE32 REG rax | |
| ------------ BB03 [0002] [008..013) -> BB04(1) (always), preds={BB01,BB05} succs={BB04} | |
| N034 (???,???) [000035] ----------- IL_OFFSET void INLRT @ 0x008[E-] REG NA | |
| N036 (???,???) [000005] -----+----- t5 = LCL_VAR int V01 arg1 rdx REG rdx | |
| /--* t5 int | |
| N038 (???,???) [000038] ----------- t38 = * PUTARG_REG int REG rdx | |
| N040 (???,???) [000028] H----+----- t28 = CNS_INT(h) ref 'You tried to access this vector at index: {0}' REG rcx | |
| /--* t28 ref | |
| N042 (???,???) [000039] ----------- t39 = * PUTARG_REG ref REG rcx | |
| N044 (???,???) [000040] Hc--------- t40 = CNS_INT(h) long 0x7ff7f13342a0 ftn REG NA | |
| /--* t40 long | |
| N046 (???,???) [000041] nc--G------ t41 = * IND long REG NA | |
| /--* t38 int arg1 rdx | |
| +--* t39 ref arg0 rcx | |
| +--* t41 long control expr | |
| N048 (???,???) [000006] --CXG+----- * CALL void Program.EntryPoint:ThrowOutOfRangeException[int](System.String,int) REG NA | |
| ------------ BB04 [0003] [013..022) (return), preds={BB03,BB06} succs={} | |
| N052 (???,???) [000024] H----+----- t24 = CNS_INT(h) long 0x7ff7f15423c4 bbc REG rcx | |
| /--* t24 long | |
| N054 (???,???) [000042] ----------- t42 = * PUTARG_REG long REG rcx | |
| /--* t42 long arg0 rcx | |
| N056 (???,???) [000025] --CXG+----- u25 = * CALL help int CORINFO_HELP_COUNTPROFILE32 REG rax | |
| N058 (???,???) [000036] ----------- IL_OFFSET void INLRT @ 0x013[E-] REG NA | |
| N060 (???,???) [000008] -----+----- t8 = LCL_VAR byref V00 arg0 rax REG rax | |
| /--* t8 byref | |
| N062 (???,???) [000029] DA---+----- * STORE_LCL_VAR long V03 tmp1 NA REG NA | |
| N064 (???,???) [000030] -----+----- t30 = LCL_VAR long V03 tmp1 rax REG rax | |
| N066 (???,???) [000010] -c---+----- t10 = LCL_VAR int V01 arg1 NA REG NA | |
| /--* t10 int | |
| N068 (???,???) [000011] -----+----- t11 = * CAST long <- int REG rcx | |
| /--* t30 long | |
| +--* t11 long | |
| N070 (???,???) [000015] -c---+----- t15 = * LEA(b+(i*4)+0) long REG NA | |
| /--* t15 long | |
| N072 (???,???) [000016] -A-XG+----- t16 = * IND float REG mm0 | |
| /--* t16 float | |
| N074 (???,???) [000017] -A-XG+----- * RETURN float REG NA | |
| ------------ BB06 [0005] [???..???) -> BB04(1) (always), preds={BB02} succs={BB04} | |
| N078 (???,???) [000026] H----+----- t26 = CNS_INT(h) long 0x7ff7f15423c8 bbc REG rcx | |
| /--* t26 long | |
| N080 (???,???) [000043] ----------- t43 = * PUTARG_REG long REG rcx | |
| /--* t43 long arg0 rcx | |
| N082 (???,???) [000027] --CXG+----- u27 = * CALL help int CORINFO_HELP_COUNTPROFILE32 REG rax | |
| ------------------------------------------------------------------------------------------------------------------- | |
| *************** In fgDebugCheckBBlist | |
| [deferred prior check failed -- skipping this check] | |
| *************** Starting PHASE Place 'align' instructions | |
| *************** In placeLoopAlignInstructions() | |
| Not aligning loops; ShouldAlignLoops is false | |
| *************** Finishing PHASE Place 'align' instructions [no changes] | |
| *************** In genGenerateCode() | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BB01 [0000] 1 1 [000..004)-> BB03(0.5),BB02(0.5) ( cond ) i LIR | |
| BB02 [0001] 1 BB01 1 [004..008)-> BB06(0.5),BB05(0.5) ( cond ) i LIR | |
| BB05 [0004] 1 BB02 0.50 [???..???)-> BB03(1) (always) i LIR internal hascall | |
| BB03 [0002] 2 BB01,BB05 1 [008..013)-> BB04(1) (always) i LIR hascall gcsafe | |
| BB04 [0003] 2 BB03,BB06 1 [013..022) (return) i LIR hascall | |
| BB06 [0005] 1 BB02 0.50 [???..???)-> BB04(1) (always) i LIR internal hascall | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| *************** Starting PHASE Generate code | |
| *************** In fgDebugCheckBBlist | |
| Finalizing stack frame | |
| Modified regs: [rax rcx rdx r8-r11 mm0] | |
| Callee-saved registers pushed: 0 [] | |
| *************** In lvaAssignFrameOffsets(FINAL_FRAME_LAYOUT) | |
| Set V00 to offset 0 | |
| Set V01 to offset 8 | |
| Assign V03 tmp1, size=8, stkOffs=-0x18 | |
| Assign V02 OutArgs, size=32, stkOffs=-0x38 | |
| --- delta bump 8 for RA | |
| --- delta bump 8 for FP | |
| --- delta bump 0 for FP frame | |
| --- virtual stack offset to actual stack offset delta is 16 | |
| -- V00 was 0, now 16 | |
| -- V01 was 8, now 24 | |
| -- V02 was -56, now -40 | |
| -- V03 was -24, now -8 | |
| ; Final local variable assignments | |
| ; | |
| ; V00 arg0 [V00 ] ( 1, 1 ) byref -> [rbp+0x10] do-not-enreg[] ld-addr-op | |
| ; V01 arg1 [V01 ] ( 1, 1 ) int -> [rbp+0x18] do-not-enreg[] | |
| ; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" <UNNAMED> | |
| ; V03 tmp1 [V03 ] ( 1, 1 ) long -> [rbp-0x08] do-not-enreg[] "Cast away GC" | |
| ; | |
| ; Lcl frame size = 48 | |
| Created: | |
| G_M62292_IG02: ; offs=0x000000, size=0x0000, bbWeight=1, gcrefRegs=0000 {} | |
| Mark labels for codegen | |
| BB01 : first block | |
| BB03 : branch target | |
| BB06 : branch target | |
| BB04 : branch target | |
| *************** After genMarkLabelsForCodegen() | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BB01 [0000] 1 1 [000..004)-> BB03(0.5),BB02(0.5) ( cond ) i LIR label | |
| BB02 [0001] 1 BB01 1 [004..008)-> BB06(0.5),BB05(0.5) ( cond ) i LIR | |
| BB05 [0004] 1 BB02 0.50 [???..???)-> BB03(1) (always) i LIR internal hascall | |
| BB03 [0002] 2 BB01,BB05 1 [008..013)-> BB04(1) (always) i LIR label hascall gcsafe | |
| BB04 [0003] 2 BB03,BB06 1 [013..022) (return) i LIR label hascall | |
| BB06 [0005] 1 BB02 0.50 [???..???)-> BB04(1) (always) i LIR internal label hascall | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| =============== Generating BB01 [0000] [000..004) -> BB03(0.5),BB02(0.5) (cond), preds={} succs={BB02,BB03} flags=0x00000000.00001011: i LIR label | |
| BB01 IN (0)={} | |
| OUT(0)={} | |
| Liveness not changing: 0000000000000000 {} | |
| Live regs: (unchanged) 0000000000000000 {} | |
| GC regs: (unchanged) 0000 {} | |
| Byref regs: (unchanged) 0000 {} | |
| L_M62292_BB01: | |
| Label: G_M62292_IG02, GCvars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {} | |
| Scope info: begin block BB01, IL range [000..004) | |
| Scope info: opening scope, LVnum=0 [000..022) | |
| Debug: New V00 debug range: first | |
| Scope info: opening scope, LVnum=1 [000..022) | |
| Debug: New V01 debug range: first | |
| Added IP mapping: 0x0000 STACK_EMPTY (G_M62292_IG02,ins#0,ofs#0) label | |
| Generating: N002 (???,???) [000033] ----------- IL_OFFSET void INLRT @ 0x000[E-] REG NA | |
| Generating: N004 (???,???) [000000] -c---+----- t0 = LCL_VAR int V01 arg1 NA REG NA | |
| Generating: N006 (???,???) [000001] -c---+----- t1 = CNS_INT int 1 REG NA | |
| /--* t0 int | |
| +--* t1 int | |
| Generating: N008 (???,???) [000002] -----+-N--- * CMP void REG NA | |
| Mapped BB01 to G_M62292_IG02 | |
| IN0001: cmp dword ptr [V01 rbp+0x18], 1 | |
| Generating: N010 (???,???) [000003] -----+----- JCC void cond=SGT REG NA | |
| IN0002: jg L_M62292_BB03 | |
| Variable Live Range History Dump for BB01 | |
| V00 arg0: rbp[16] (1 slot) [(G_M62292_IG02,ins#0,ofs#0), ...] | |
| V01 arg1: rbp[24] (1 slot) [(G_M62292_IG02,ins#0,ofs#0), ...] | |
| =============== Generating BB02 [0001] [004..008) -> BB06(0.5),BB05(0.5) (cond), preds={BB01} succs={BB05,BB06} flags=0x00000000.00000011: i LIR | |
| BB02 IN (0)={} | |
| OUT(0)={} | |
| Liveness not changing: 0000000000000000 {} | |
| Live regs: (unchanged) 0000000000000000 {} | |
| GC regs: (unchanged) 0000 {} | |
| Byref regs: (unchanged) 0000 {} | |
| L_M62292_BB02: | |
| Scope info: begin block BB02, IL range [004..008) | |
| Added IP mapping: 0x0004 STACK_EMPTY (G_M62292_IG02,ins#2,ofs#10) label | |
| Generating: N014 (???,???) [000034] ----------- IL_OFFSET void INLRT @ 0x004[E-] REG NA | |
| Generating: N016 (???,???) [000018] -c---+----- t18 = LCL_VAR int V01 arg1 NA REG NA | |
| Generating: N018 (???,???) [000019] -c---+----- t19 = CNS_INT int 0 REG NA | |
| /--* t18 int | |
| +--* t19 int | |
| Generating: N020 (???,???) [000020] -----+-N--- * CMP void REG NA | |
| Mapped BB02 to G_M62292_IG02 | |
| IN0003: cmp dword ptr [V01 rbp+0x18], 0 | |
| Generating: N022 (???,???) [000021] -----+----- JCC void cond=SGE REG NA | |
| IN0004: jge L_M62292_BB06 | |
| Variable Live Range History Dump for BB02 | |
| V00 arg0: rbp[16] (1 slot) [(G_M62292_IG02,ins#0,ofs#0), ...] | |
| V01 arg1: rbp[24] (1 slot) [(G_M62292_IG02,ins#0,ofs#0), ...] | |
| =============== Generating BB05 [0004] [???..???) -> BB03(1) (always), preds={BB02} succs={BB03} flags=0x00000000.02000031: i LIR internal hascall | |
| BB05 IN (0)={} | |
| OUT(0)={} | |
| Liveness not changing: 0000000000000000 {} | |
| Live regs: (unchanged) 0000000000000000 {} | |
| GC regs: (unchanged) 0000 {} | |
| Byref regs: (unchanged) 0000 {} | |
| L_M62292_BB05: | |
| Adding label due to BB weight difference: BBJ_COND BB02 with weight 100 different from BB05 with weight 50 | |
| Saved: | |
| G_M62292_IG02: ; offs=0x000000, size=0x0014, bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, BB01 [0000], BB02 [0001], byref | |
| Created: | |
| G_M62292_IG03: ; offs=0x000014, size=0x0000, bbWeight=0.50, gcrefRegs=0000 {} | |
| Label: G_M62292_IG03, GCvars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {} | |
| Scope info: begin block BB05, IL range [???..???) | |
| Scope info: ignoring block beginning | |
| Added IP mapping: NO_MAP (G_M62292_IG03,ins#0,ofs#0) label | |
| Generating: N026 (???,???) [000022] H----+----- t22 = CNS_INT(h) long 0x7ff7f15423c0 bbc REG rcx | |
| Mapped BB05 to G_M62292_IG03 | |
| IN0005: mov rcx, 0x7FF7F15423C0 | |
| /--* t22 long | |
| Generating: N028 (???,???) [000037] ----------- t37 = * PUTARG_REG long REG rcx | |
| /--* t37 long arg0 rcx | |
| Generating: N030 (???,???) [000023] --CXG+----- u23 = * CALL help int CORINFO_HELP_COUNTPROFILE32 REG rax | |
| Call: GCvars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {} | |
| IN0006: call CORINFO_HELP_COUNTPROFILE32 | |
| Scope info: ignoring block end | |
| Variable Live Range History Dump for BB05 | |
| V00 arg0: rbp[16] (1 slot) [(G_M62292_IG02,ins#0,ofs#0), ...] | |
| V01 arg1: rbp[24] (1 slot) [(G_M62292_IG02,ins#0,ofs#0), ...] | |
| =============== Generating BB03 [0002] [008..013) -> BB04(1) (always), preds={BB01,BB05} succs={BB04} flags=0x00000000.02011011: i LIR label hascall gcsafe | |
| BB03 IN (0)={} | |
| OUT(0)={} | |
| Liveness not changing: 0000000000000000 {} | |
| Live regs: (unchanged) 0000000000000000 {} | |
| GC regs: (unchanged) 0000 {} | |
| Byref regs: (unchanged) 0000 {} | |
| L_M62292_BB03: | |
| Saved: | |
| G_M62292_IG03: ; offs=0x000014, size=0x000F, bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, BB05 [0004], byref | |
| Created: | |
| G_M62292_IG04: ; offs=0x000023, size=0x0000, bbWeight=1, gcrefRegs=0000 {} | |
| Label: G_M62292_IG04, GCvars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {} | |
| Scope info: begin block BB03, IL range [008..013) | |
| Added IP mapping: 0x0008 STACK_EMPTY (G_M62292_IG04,ins#0,ofs#0) label | |
| Generating: N034 (???,???) [000035] ----------- IL_OFFSET void INLRT @ 0x008[E-] REG NA | |
| Generating: N036 (???,???) [000005] -----+----- t5 = LCL_VAR int V01 arg1 rdx REG rdx | |
| Mapped BB03 to G_M62292_IG04 | |
| IN0007: mov edx, dword ptr [V01 rbp+0x18] | |
| /--* t5 int | |
| Generating: N038 (???,???) [000038] ----------- t38 = * PUTARG_REG int REG rdx | |
| Generating: N040 (???,???) [000028] H----+----- t28 = CNS_INT(h) ref 'You tried to access this vector at index: {0}' REG rcx | |
| IN0008: mov rcx, 0x230618FF1E8 ; 'You tried to access this vector at index: {0}' | |
| GC regs: 0000 {} => 0002 {rcx} | |
| /--* t28 ref | |
| Generating: N042 (???,???) [000039] ----------- t39 = * PUTARG_REG ref REG rcx | |
| GC regs: 0002 {rcx} => 0000 {} | |
| GC regs: 0000 {} => 0002 {rcx} | |
| Generating: N044 (???,???) [000040] Hc--------- t40 = CNS_INT(h) long 0x7ff7f13342a0 ftn REG NA | |
| /--* t40 long | |
| Generating: N046 (???,???) [000041] nc--G------ t41 = * IND long REG NA | |
| /--* t38 int arg1 rdx | |
| +--* t39 ref arg0 rcx | |
| +--* t41 long control expr | |
| Generating: N048 (???,???) [000006] --CXG+----- * CALL void Program.EntryPoint:ThrowOutOfRangeException[int](System.String,int) REG NA | |
| GC regs: 0002 {rcx} => 0000 {} | |
| Call: GCvars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {} | |
| IN0009: call [Program.EntryPoint:ThrowOutOfRangeException[int](System.String,int)] | |
| Variable Live Range History Dump for BB03 | |
| V00 arg0: rbp[16] (1 slot) [(G_M62292_IG02,ins#0,ofs#0), ...] | |
| V01 arg1: rbp[24] (1 slot) [(G_M62292_IG02,ins#0,ofs#0), ...] | |
| =============== Generating BB04 [0003] [013..022) (return), preds={BB03,BB06} succs={} flags=0x00000000.02001011: i LIR label hascall | |
| BB04 IN (0)={} | |
| OUT(0)={} | |
| Liveness not changing: 0000000000000000 {} | |
| Live regs: (unchanged) 0000000000000000 {} | |
| GC regs: (unchanged) 0000 {} | |
| Byref regs: (unchanged) 0000 {} | |
| L_M62292_BB04: | |
| Saved: | |
| G_M62292_IG04: ; offs=0x000023, size=0x0013, bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, BB03 [0002], byref | |
| Created: | |
| G_M62292_IG05: ; offs=0x000036, size=0x0000, bbWeight=1, gcrefRegs=0000 {} | |
| Label: G_M62292_IG05, GCvars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {} | |
| Scope info: begin block BB04, IL range [013..022) | |
| Generating: N052 (???,???) [000024] H----+----- t24 = CNS_INT(h) long 0x7ff7f15423c4 bbc REG rcx | |
| Mapped BB04 to G_M62292_IG05 | |
| IN000a: mov rcx, 0x7FF7F15423C4 | |
| /--* t24 long | |
| Generating: N054 (???,???) [000042] ----------- t42 = * PUTARG_REG long REG rcx | |
| /--* t42 long arg0 rcx | |
| Generating: N056 (???,???) [000025] --CXG+----- u25 = * CALL help int CORINFO_HELP_COUNTPROFILE32 REG rax | |
| Call: GCvars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {} | |
| IN000b: call CORINFO_HELP_COUNTPROFILE32 | |
| Added IP mapping: 0x0013 STACK_EMPTY (G_M62292_IG05,ins#2,ofs#15) label | |
| Generating: N058 (???,???) [000036] ----------- IL_OFFSET void INLRT @ 0x013[E-] REG NA | |
| Generating: N060 (???,???) [000008] -----+----- t8 = LCL_VAR byref V00 arg0 rax REG rax | |
| IN000c: mov rax, bword ptr [V00 rbp+0x10] | |
| Byref regs: 0000 {} => 0001 {rax} | |
| /--* t8 byref | |
| Generating: N062 (???,???) [000029] DA---+----- * STORE_LCL_VAR long V03 tmp1 NA REG NA | |
| Byref regs: 0001 {rax} => 0000 {} | |
| IN000d: mov qword ptr [V03 rbp-0x08], rax | |
| Generating: N064 (???,???) [000030] -----+----- t30 = LCL_VAR long V03 tmp1 rax REG rax | |
| IN000e: mov rax, qword ptr [V03 rbp-0x08] | |
| Generating: N066 (???,???) [000010] -c---+----- t10 = LCL_VAR int V01 arg1 NA REG NA | |
| /--* t10 int | |
| Generating: N068 (???,???) [000011] -----+----- t11 = * CAST long <- int REG rcx | |
| IN000f: movsxd rcx, dword ptr [V01 rbp+0x18] | |
| /--* t30 long | |
| +--* t11 long | |
| Generating: N070 (???,???) [000015] -c---+----- t15 = * LEA(b+(i*4)+0) long REG NA | |
| /--* t15 long | |
| Generating: N072 (???,???) [000016] -A-XG+----- t16 = * IND float REG mm0 | |
| IN0010: vmovss xmm0, dword ptr [rax+4*rcx] | |
| /--* t16 float | |
| Generating: N074 (???,???) [000017] -A-XG+----- * RETURN float REG NA | |
| Added IP mapping: EPILOG (G_M62292_IG05,ins#7,ofs#36) label | |
| Reserving epilog IG for block BB04 | |
| Saved: | |
| G_M62292_IG05: ; offs=0x000036, size=0x0024, bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, BB04 [0003], byref | |
| Created: | |
| G_M62292_IG06: ; offs=0x00005A, size=0x0000, bbWeight=1, gcrefRegs=0000 {} | |
| Created: | |
| G_M62292_IG07: ; offs=0x00015A, size=0x0000, bbWeight=1, gcrefRegs=0000 {}, epilog | |
| *************** After placeholder IG creation | |
| G_M62292_IG01: ; func=00, offs=0x000000, size=0x0000, bbWeight=1, gcrefRegs=0000 {} <-- Prolog IG | |
| G_M62292_IG02: ; offs=0x000000, size=0x0014, bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, BB01 [0000], BB02 [0001], byref | |
| G_M62292_IG03: ; offs=0x000014, size=0x000F, bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, BB05 [0004], byref | |
| G_M62292_IG04: ; offs=0x000023, size=0x0013, bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, BB03 [0002], byref | |
| G_M62292_IG05: ; offs=0x000036, size=0x0024, bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, BB04 [0003], byref | |
| G_M62292_IG06: ; epilog placeholder, next placeholder=<END>, BB04 [0003], epilog, extend <-- First placeholder <-- Last placeholder | |
| ; PrevGCVars=0000000000000000 {}, PrevGCrefRegs=0000 {}, PrevByrefRegs=0000 {} | |
| ; InitGCVars=0000000000000000 {}, InitGCrefRegs=0000 {}, InitByrefRegs=0000 {} | |
| G_M62292_IG07: ; offs=0x00015A, size=0x0000, bbWeight=1, gcrefRegs=0000 {} <-- Current IG | |
| Variable Live Range History Dump for BB04 | |
| V00 arg0: rbp[16] (1 slot) [(G_M62292_IG02,ins#0,ofs#0), ...] | |
| V01 arg1: rbp[24] (1 slot) [(G_M62292_IG02,ins#0,ofs#0), ...] | |
| =============== Generating BB06 [0005] [???..???) -> BB04(1) (always), preds={BB02} succs={BB04} flags=0x00000000.02001031: i LIR internal label hascall | |
| BB06 IN (0)={} | |
| OUT(0)={} | |
| Liveness not changing: 0000000000000000 {} | |
| Live regs: (unchanged) 0000000000000000 {} | |
| GC regs: (unchanged) 0000 {} | |
| Byref regs: (unchanged) 0000 {} | |
| L_M62292_BB06: | |
| Label: G_M62292_IG07, GCvars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {} | |
| Scope info: begin block BB06, IL range [???..???) | |
| Scope info: ignoring block beginning | |
| Added IP mapping: NO_MAP (G_M62292_IG07,ins#0,ofs#0) label | |
| Generating: N078 (???,???) [000026] H----+----- t26 = CNS_INT(h) long 0x7ff7f15423c8 bbc REG rcx | |
| Mapped BB06 to G_M62292_IG07 | |
| IN0011: mov rcx, 0x7FF7F15423C8 | |
| /--* t26 long | |
| Generating: N080 (???,???) [000043] ----------- t43 = * PUTARG_REG long REG rcx | |
| /--* t43 long arg0 rcx | |
| Generating: N082 (???,???) [000027] --CXG+----- u27 = * CALL help int CORINFO_HELP_COUNTPROFILE32 REG rax | |
| Call: GCvars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {} | |
| IN0012: call CORINFO_HELP_COUNTPROFILE32 | |
| Debug: Closing V00 debug range. | |
| Debug: Closing V01 debug range. | |
| Scope info: ignoring block end | |
| IN0013: jmp L_M62292_BB04 | |
| Variable Live Range History Dump for BB06 | |
| V00 arg0: rbp[16] (1 slot) [(G_M62292_IG02,ins#0,ofs#0), (G_M62292_IG07,ins#2,ofs#15)] | |
| V01 arg1: rbp[24] (1 slot) [(G_M62292_IG02,ins#0,ofs#0), (G_M62292_IG07,ins#2,ofs#15)] | |
| Liveness not changing: 0000000000000000 {} | |
| # compCycleEstimate = -572662307, compSizeEstimate = -572662307 Program.EntryPoint:GetTest(Program.EntryPoint+Vector2,int):float | |
| ; Final local variable assignments | |
| ; | |
| ; V00 arg0 [V00 ] ( 1, 1 ) byref -> [rbp+0x10] do-not-enreg[] ld-addr-op | |
| ; V01 arg1 [V01 ] ( 1, 1 ) int -> [rbp+0x18] do-not-enreg[] | |
| ; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" <UNNAMED> | |
| ; V03 tmp1 [V03 ] ( 1, 1 ) long -> [rbp-0x08] do-not-enreg[] "Cast away GC" | |
| ; | |
| ; Lcl frame size = 48 | |
| *************** Before prolog / epilog generation | |
| G_M62292_IG01: ; func=00, offs=0x000000, size=0x0000, bbWeight=1, gcrefRegs=0000 {} <-- Prolog IG | |
| G_M62292_IG02: ; offs=0x000000, size=0x0014, bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, BB01 [0000], BB02 [0001], byref | |
| G_M62292_IG03: ; offs=0x000014, size=0x000F, bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, BB05 [0004], byref | |
| G_M62292_IG04: ; offs=0x000023, size=0x0013, bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, BB03 [0002], byref | |
| G_M62292_IG05: ; offs=0x000036, size=0x0024, bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, BB04 [0003], byref | |
| G_M62292_IG06: ; epilog placeholder, next placeholder=<END>, BB04 [0003], epilog, extend <-- First placeholder <-- Last placeholder | |
| ; PrevGCVars=0000000000000000 {}, PrevGCrefRegs=0000 {}, PrevByrefRegs=0000 {} | |
| ; InitGCVars=0000000000000000 {}, InitGCrefRegs=0000 {}, InitByrefRegs=0000 {} | |
| G_M62292_IG07: ; offs=0x00015A, size=0x0000, bbWeight=0.50, gcrefRegs=0000 {}, BB06 [0005] <-- Current IG | |
| Saved: | |
| G_M62292_IG07: ; offs=0x00015A, size=0x0014, bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, BB06 [0005], gcvars, byref | |
| *************** In genFnProlog() | |
| Added IP mapping to front: PROLOG (G_M62292_IG01,ins#0,ofs#0) label | |
| __prolog: | |
| Debug: New V00 debug range: first | |
| Debug: New V01 debug range: first | |
| IN0014: push rbp | |
| IN0015: sub rsp, 48 | |
| IN0016: lea rbp, [rsp+0x30] | |
| *************** In genHomeRegisterParams() | |
| IN0017: mov bword ptr [V00 rbp+0x10], rcx | |
| IN0018: mov dword ptr [V01 rbp+0x18], edx | |
| *************** In genEnregisterIncomingStackArgs() | |
| Debug: Closing V00 debug range. | |
| Debug: Closing V01 debug range. | |
| Saved: | |
| G_M62292_IG01: ; offs=0x000000, size=0x0011, bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc | |
| *************** In genFnEpilog() | |
| __epilog: | |
| gcVarPtrSetCur=0000000000000000 {}, gcRegGCrefSetCur=0000 {}, gcRegByrefSetCur=0000 {} | |
| IN0019: add rsp, 48 | |
| IN001a: pop rbp | |
| IN001b: ret | |
| Saved: | |
| G_M62292_IG06: ; offs=0x00005A, size=0x0006, bbWeight=1, epilog, nogc, extend | |
| 0 prologs, 1 epilogs, 0 funclet prologs, 0 funclet epilogs | |
| *************** After prolog / epilog generation | |
| G_M62292_IG01: ; func=00, offs=0x000000, size=0x0011, bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG | |
| G_M62292_IG02: ; offs=0x000011, size=0x0014, bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, BB01 [0000], BB02 [0001], byref | |
| G_M62292_IG03: ; offs=0x000025, size=0x000F, bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, BB05 [0004], byref | |
| G_M62292_IG04: ; offs=0x000034, size=0x0013, bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, BB03 [0002], byref | |
| G_M62292_IG05: ; offs=0x000047, size=0x0024, bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, BB04 [0003], byref | |
| G_M62292_IG06: ; offs=0x00006B, size=0x0006, bbWeight=1, epilog, nogc, extend | |
| G_M62292_IG07: ; offs=0x000071, size=0x0014, bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, BB06 [0005], gcvars, byref | |
| *************** In emitRemoveJumpToNextInst() | |
| Emitter Jump List: | |
| IG02 IN0002 jg[6] -> IG04 | |
| IG02 IN0004 jge[6] -> IG07 | |
| IG07 IN0013 jmp[5] -> IG05 ; removal candidate ; after call before epilog | |
| total jump count: 3 | |
| IG07 IN0013 does not jump to the next instruction group, keeping. | |
| emitRemoveJumpToNextInst removed no unconditional jumps | |
| *************** In emitJumpDistBind() | |
| Emitter Jump List: | |
| IG02 IN0002 jg[6] -> IG04 | |
| IG02 IN0004 jge[6] -> IG07 | |
| IG07 IN0013 jmp[5] -> IG05 ; after call before epilog | |
| total jump count: 3 | |
| Binding: IN0002: 000000 jg L_M62292_BB03 | |
| Binding L_M62292_BB03 to G_M62292_IG04 | |
| Estimate of fwd jump [62036DC4/002]: 0015 -> 0034 = 001D | |
| Shrinking jump [62036DC4/002] | |
| Binding: IN0004: 000000 jge L_M62292_BB06 | |
| Binding L_M62292_BB06 to G_M62292_IG07 | |
| Estimate of fwd jump [62036E14/004]: 001B -> 006D = 0050 | |
| Shrinking jump [62036E14/004] | |
| Adjusted offset of BB03 from 0025 to 001D | |
| Adjusted offset of BB04 from 0034 to 002C | |
| Adjusted offset of BB05 from 0047 to 003F | |
| Adjusted offset of BB06 from 006B to 0063 | |
| Adjusted offset of BB07 from 0071 to 0069 | |
| Binding: IN0013: 000000 jmp L_M62292_BB04 | |
| Binding L_M62292_BB04 to G_M62292_IG05 | |
| Estimate of bwd jump [62037CAC/019]: 0078 -> 003F = 003B | |
| Shrinking jump [62037CAC/019] | |
| Total shrinkage = 11, min extra jump size = 4294967295 | |
| *************** Finishing PHASE Generate code | |
| *************** Starting PHASE Emit code | |
| Hot code size = 0x7A bytes | |
| Cold code size = 0x0 bytes | |
| reserveUnwindInfo(isFunclet=false, isColdCode=false, unwindSize=0x8) | |
| *************** In emitEndCodeGen() | |
| Converting emitMaxStackDepth from bytes (0) to elements (0) | |
| *************************************************************************** | |
| Instructions as they come out of the scheduler | |
| G_M62292_IG01: ; offs=0x000000, size=0x0011, bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG | |
| IN0014: 000000 push rbp | |
| IN0015: 000001 sub rsp, 48 | |
| IN0016: 000005 lea rbp, [rsp+0x30] | |
| IN0017: 00000A mov bword ptr [rbp+0x10], rcx | |
| IN0018: 00000E mov dword ptr [rbp+0x18], edx | |
| ;; size=17 bbWeight=1 PerfScore 3.75 | |
| G_M62292_IG02: ; offs=0x000011, size=0x000C, bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, BB01 [0000], BB02 [0001], byref, isz | |
| IN0001: 000011 cmp dword ptr [rbp+0x18], 1 | |
| IN0002: 000015 jg SHORT G_M62292_IG04 | |
| IN0003: 000017 cmp dword ptr [rbp+0x18], 0 | |
| IN0004: 00001B jge SHORT G_M62292_IG07 | |
| ;; size=12 bbWeight=1 PerfScore 6.00 | |
| G_M62292_IG03: ; offs=0x00001D, size=0x000F, bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, BB05 [0004], byref | |
| IN0005: 00001D mov rcx, 0x7FF7F15423C0 | |
| recordRelocation: 00007FF7F08ED678 (rw: 0000023061EA1450) => 00007FF84FFB1810, type 16 (IMAGE_REL_BASED_REL32), delta 0 | |
| ; Call at 0027 [stk=0], GCvars=none, gcrefRegs=0000 {}, byrefRegs=0000 {} | |
| IN0006: 000027 call CORINFO_HELP_COUNTPROFILE32 | |
| ;; size=15 bbWeight=0.50 PerfScore 0.62 | |
| G_M62292_IG04: ; offs=0x00002C, size=0x0013, bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, BB03 [0002], byref | |
| IN0007: 00002C mov edx, dword ptr [rbp+0x18] | |
| IN0008: 00002F mov rcx, 0x230618FF1E8 ; 'You tried to access this vector at index: {0}' | |
| ; gcrRegs +[rcx] | |
| recordRelocation: 00007FF7F08ED68B (rw: 0000023061EA1463) => 00007FF7F13342A0, type 16 (IMAGE_REL_BASED_DISP32), delta 0 | |
| ; Call at 0039 [stk=0], GCvars=none, gcrefRegs=0000 {}, byrefRegs=0000 {} | |
| IN0009: 000039 call [Program.EntryPoint:ThrowOutOfRangeException[int](System.String,int)] | |
| ; gcrRegs -[rcx] | |
| ;; size=19 bbWeight=1 PerfScore 4.25 | |
| G_M62292_IG05: ; offs=0x00003F, size=0x0024, bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, BB04 [0003], byref | |
| IN000a: 00003F mov rcx, 0x7FF7F15423C4 | |
| recordRelocation: 00007FF7F08ED69A (rw: 0000023061EA1472) => 00007FF84FFB1810, type 16 (IMAGE_REL_BASED_REL32), delta 0 | |
| ; Call at 0049 [stk=0], GCvars=none, gcrefRegs=0000 {}, byrefRegs=0000 {} | |
| IN000b: 000049 call CORINFO_HELP_COUNTPROFILE32 | |
| IN000c: 00004E mov rax, bword ptr [rbp+0x10] | |
| ; byrRegs +[rax] | |
| IN000d: 000052 mov qword ptr [rbp-0x08], rax | |
| IN000e: 000056 mov rax, qword ptr [rbp-0x08] | |
| ; byrRegs -[rax] | |
| IN000f: 00005A movsxd rcx, dword ptr [rbp+0x18] | |
| IN0010: 00005E vmovss xmm0, dword ptr [rax+4*rcx] | |
| ;; size=36 bbWeight=1 PerfScore 11.25 | |
| G_M62292_IG06: ; offs=0x000063, size=0x0006, bbWeight=1, epilog, nogc, extend | |
| IN0019: 000063 add rsp, 48 | |
| IN001a: 000067 pop rbp | |
| IN001b: 000068 ret | |
| ;; size=6 bbWeight=1 PerfScore 1.75 | |
| G_M62292_IG07: ; offs=0x000069, size=0x0011, bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, BB06 [0005], gcvars, byref, isz | |
| IN0011: 000069 mov rcx, 0x7FF7F15423C8 | |
| recordRelocation: 00007FF7F08ED6C4 (rw: 0000023061EA149C) => 00007FF84FFB1810, type 16 (IMAGE_REL_BASED_REL32), delta 0 | |
| ; Call at 0073 [stk=0], GCvars=none, gcrefRegs=0000 {}, byrefRegs=0000 {} | |
| IN0012: 000073 call CORINFO_HELP_COUNTPROFILE32 | |
| IN0013: 000078 jmp SHORT G_M62292_IG05 | |
| ;; size=17 bbWeight=0.50 PerfScore 1.62 | |
| Allocated method code size = 122 , actual size = 122, unused size = 0 | |
| ; Total bytes of code 122, prolog size 10, PerfScore 29.25, instruction count 27, allocated bytes for code 122 (MethodHash=2b4c0cab) for method Program.EntryPoint:GetTest(Program.EntryPoint+Vector2,int):float (Instrumented Tier0) | |
| ; ============================================================ | |
| *************** After end code gen, before unwindEmit() | |
| G_M62292_IG01: ; func=00, offs=0x000000, size=0x0011, bbWeight=1, PerfScore 3.75, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG | |
| IN0014: 000000 push rbp | |
| IN0015: 000001 sub rsp, 48 | |
| IN0016: 000005 lea rbp, [rsp+0x30] | |
| IN0017: 00000A mov bword ptr [V00 rbp+0x10], rcx | |
| IN0018: 00000E mov dword ptr [V01 rbp+0x18], edx | |
| G_M62292_IG02: ; offs=0x000011, size=0x000C, bbWeight=1, PerfScore 6.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, BB01 [0000], BB02 [0001], byref, isz | |
| IN0001: 000011 cmp dword ptr [V01 rbp+0x18], 1 | |
| IN0002: 000015 jg SHORT G_M62292_IG04 | |
| IN0003: 000017 cmp dword ptr [V01 rbp+0x18], 0 | |
| IN0004: 00001B jge SHORT G_M62292_IG07 | |
| G_M62292_IG03: ; offs=0x00001D, size=0x000F, bbWeight=0.50, PerfScore 0.62, gcrefRegs=0000 {}, byrefRegs=0000 {}, BB05 [0004], byref | |
| IN0005: 00001D mov rcx, 0x7FF7F15423C0 | |
| IN0006: 000027 call CORINFO_HELP_COUNTPROFILE32 | |
| G_M62292_IG04: ; offs=0x00002C, size=0x0013, bbWeight=1, PerfScore 4.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, BB03 [0002], byref | |
| IN0007: 00002C mov edx, dword ptr [V01 rbp+0x18] | |
| IN0008: 00002F mov rcx, 0x230618FF1E8 ; 'You tried to access this vector at index: {0}' | |
| IN0009: 000039 call [Program.EntryPoint:ThrowOutOfRangeException[int](System.String,int)] | |
| G_M62292_IG05: ; offs=0x00003F, size=0x0024, bbWeight=1, PerfScore 11.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, BB04 [0003], byref | |
| IN000a: 00003F mov rcx, 0x7FF7F15423C4 | |
| IN000b: 000049 call CORINFO_HELP_COUNTPROFILE32 | |
| IN000c: 00004E mov rax, bword ptr [V00 rbp+0x10] | |
| IN000d: 000052 mov qword ptr [V03 rbp-0x08], rax | |
| IN000e: 000056 mov rax, qword ptr [V03 rbp-0x08] | |
| IN000f: 00005A movsxd rcx, dword ptr [V01 rbp+0x18] | |
| IN0010: 00005E vmovss xmm0, dword ptr [rax+4*rcx] | |
| G_M62292_IG06: ; offs=0x000063, size=0x0006, bbWeight=1, PerfScore 1.75, epilog, nogc, extend | |
| IN0019: 000063 add rsp, 48 | |
| IN001a: 000067 pop rbp | |
| IN001b: 000068 ret | |
| G_M62292_IG07: ; offs=0x000069, size=0x0011, bbWeight=0.50, PerfScore 1.62, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, BB06 [0005], gcvars, byref, isz | |
| IN0011: 000069 mov rcx, 0x7FF7F15423C8 | |
| IN0012: 000073 call CORINFO_HELP_COUNTPROFILE32 | |
| IN0013: 000078 jmp SHORT G_M62292_IG05 | |
| *************** Finishing PHASE Emit code | |
| *************** Starting PHASE Emit GC+EH tables | |
| Unwind Info: | |
| >> Start offset : 0x000000 (not in unwind data) | |
| >> End offset : 0x00007a (not in unwind data) | |
| Version : 1 | |
| Flags : 0x00 | |
| SizeOfProlog : 0x05 | |
| CountOfUnwindCodes: 2 | |
| FrameRegister : none (0) | |
| FrameOffset : N/A (no FrameRegister) (Value=0) | |
| UnwindCodes : | |
| CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 5 * 8 + 8 = 48 = 0x30 | |
| CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5) | |
| allocUnwindInfo(pHotCode=0x00007FF7F08ED650, pColdCode=0x0000000000000000, startOffset=0x0, endOffset=0x7a, unwindSize=0x8, pUnwindBlock=0x000002306202F070, funKind=0 (main function)) | |
| *************** In genIPmappingGen() | |
| IP mapping count : 8 | |
| IL offs PROLOG : 0x00000000 ( STACK_EMPTY ) | |
| IL offs 0x0000 : 0x00000011 ( STACK_EMPTY ) | |
| IL offs 0x0004 : 0x00000017 ( STACK_EMPTY ) | |
| IL offs NO_MAP : 0x0000001D ( STACK_EMPTY ) | |
| IL offs 0x0008 : 0x0000002C ( STACK_EMPTY ) | |
| IL offs 0x0013 : 0x0000004E ( STACK_EMPTY ) | |
| IL offs EPILOG : 0x00000063 ( STACK_EMPTY ) | |
| IL offs NO_MAP : 0x00000069 ( STACK_EMPTY ) | |
| *************** In genSetScopeInfo() | |
| VarLocInfo count is 4 | |
| ; Variable debug info: 4 live ranges, 2 vars for method Program.EntryPoint:GetTest(Program.EntryPoint+Vector2,int):float | |
| (V00 arg0) : From 00000000h to 00000011h, in rcx | |
| (V00 arg0) : From 00000011h to 00000078h, in rbp[16] (1 slot) | |
| (V01 arg1) : From 00000000h to 00000011h, in rdx | |
| (V01 arg1) : From 00000011h to 00000078h, in rbp[24] (1 slot) | |
| *************** In gcInfoBlockHdrSave() | |
| Set code length to 122. | |
| Set stack base register to rbp. | |
| Set Outgoing stack arg area size to 32. | |
| Stack slot id for offset 16 (0x10) (frame) (byref, untracked) = 0. | |
| Defining 0 call sites: | |
| *************** Finishing PHASE Emit GC+EH tables | |
| Method code size: 122 | |
| Allocations for Program.EntryPoint:GetTest(Program.EntryPoint+Vector2,int):float (MethodHash=2b4c0cab) | |
| count: 666, size: 65636, max = 7576 | |
| allocateMemory: 131072, nraUsed: 69800 | |
| Alloc'd bytes by kind: | |
| kind | size | pct | |
| ---------------------+------------+-------- | |
| ABI | 0 | 0.00% | |
| AssertionProp | 0 | 0.00% | |
| ASTNode | 7040 | 10.73% | |
| InstDesc | 4696 | 7.15% | |
| ImpStack | 384 | 0.59% | |
| BasicBlock | 2280 | 3.47% | |
| CallArgs | 400 | 0.61% | |
| FlowEdge | 280 | 0.43% | |
| DepthFirstSearch | 72 | 0.11% | |
| Loops | 0 | 0.00% | |
| TreeStatementList | 0 | 0.00% | |
| SiScope | 0 | 0.00% | |
| DominatorMemory | 0 | 0.00% | |
| LSRA | 9624 | 14.66% | |
| LSRA_Interval | 1632 | 2.49% | |
| LSRA_RefPosition | 4880 | 7.43% | |
| Reachability | 0 | 0.00% | |
| SSA | 0 | 0.00% | |
| ValueNumber | 0 | 0.00% | |
| LvaTable | 1584 | 2.41% | |
| UnwindInfo | 0 | 0.00% | |
| hashBv | 128 | 0.20% | |
| bitset | 32 | 0.05% | |
| FixedBitVect | 24 | 0.04% | |
| Generic | 968 | 1.47% | |
| LocalAddressVisitor | 0 | 0.00% | |
| FieldSeqStore | 0 | 0.00% | |
| MemorySsaMap | 0 | 0.00% | |
| MemoryPhiArg | 0 | 0.00% | |
| CSE | 0 | 0.00% | |
| GC | 1444 | 2.20% | |
| CorTailCallInfo | 0 | 0.00% | |
| Inlining | 272 | 0.41% | |
| ArrayStack | 0 | 0.00% | |
| DebugInfo | 464 | 0.71% | |
| DebugOnly | 25166 | 38.34% | |
| Codegen | 2720 | 4.14% | |
| LoopOpt | 0 | 0.00% | |
| LoopClone | 0 | 0.00% | |
| LoopUnroll | 0 | 0.00% | |
| LoopHoist | 0 | 0.00% | |
| LoopIVOpts | 0 | 0.00% | |
| Unknown | 90 | 0.14% | |
| RangeCheck | 0 | 0.00% | |
| CopyProp | 0 | 0.00% | |
| Promotion | 120 | 0.18% | |
| SideEffects | 0 | 0.00% | |
| ObjectAllocator | 0 | 0.00% | |
| VariableLiveRanges | 648 | 0.99% | |
| ClassLayout | 200 | 0.30% | |
| TailMergeThrows | 0 | 0.00% | |
| EarlyProp | 0 | 0.00% | |
| ZeroInit | 0 | 0.00% | |
| Pgo | 488 | 0.74% | |
| MaskConversionOpt | 0 | 0.00% | |
| TryRegionClone | 0 | 0.00% | |
| Async | 0 | 0.00% | |
| RangeCheckCloning | 0 | 0.00% | |
| Final metrics: | |
| ActualCodeBytes : 122 | |
| AllocatedHotCodeBytes : 122 | |
| AllocatedColdCodeBytes : 0 | |
| ReadOnlyDataBytes : 0 | |
| GCInfoBytes : 4 | |
| EHClauseCount : 0 | |
| PhysicallyPromotedFields : 0 | |
| LoopsFoundDuringOpts : 0 | |
| LoopsInverted : 0 | |
| LoopsCloned : 0 | |
| LoopsUnrolled : 0 | |
| LoopAlignmentCandidates : 0 | |
| LoopsAligned : 0 | |
| LoopsIVWidened : 0 | |
| WidenedIVs : 0 | |
| UnusedIVsRemoved : 0 | |
| LoopsMadeDownwardsCounted : 0 | |
| LoopsStrengthReduced : 0 | |
| VarsInSsa : 0 | |
| HoistedExpressions : 0 | |
| RedundantBranchesEliminated : 0 | |
| JumpThreadingsPerformed : 0 | |
| CseCount : 0 | |
| BasicBlocksAtCodegen : 6 | |
| PerfScore : 29.250000 | |
| BytesAllocated : 69800 | |
| ImporterBranchFold : 0 | |
| ImporterSwitchFold : 0 | |
| DevirtualizedCall : 0 | |
| DevirtualizedCallUnboxedEntry : 0 | |
| DevirtualizedCallRemovedBox : 0 | |
| GDV : 0 | |
| ClassGDV : 0 | |
| MethodGDV : 0 | |
| MultiGuessGDV : 0 | |
| ChainedGDV : 0 | |
| EnumeratorGDV : 0 | |
| InlinerBranchFold : 0 | |
| InlineAttempt : 0 | |
| InlineCount : 0 | |
| ProfileConsistentBeforeInline : 0 | |
| ProfileConsistentAfterInline : 0 | |
| ProfileConsistentBeforeMorph : 0 | |
| ProfileConsistentAfterMorph : 0 | |
| ProfileSynthesizedBlendedOrRepaired : 0 | |
| ProfileInconsistentInitially : 0 | |
| ProfileInconsistentResetLeave : 0 | |
| ProfileInconsistentImporterBranchFold : 0 | |
| ProfileInconsistentImporterSwitchFold : 0 | |
| ProfileInconsistentChainedGDV : 0 | |
| ProfileInconsistentScratchBB : 0 | |
| ProfileInconsistentInlinerBranchFold : 0 | |
| ProfileInconsistentInlineeScale : 0 | |
| ProfileInconsistentInlinee : 0 | |
| ProfileInconsistentNoReturnInlinee : 0 | |
| ProfileInconsistentMayThrowInlinee : 0 | |
| NewRefClassHelperCalls : 0 | |
| StackAllocatedRefClasses : 0 | |
| NewBoxedValueClassHelperCalls : 0 | |
| StackAllocatedBoxedValueClasses : 0 | |
| NewArrayHelperCalls : 0 | |
| StackAllocatedArrays : 0 | |
| LocalAssertionCount : 0 | |
| LocalAssertionOverflow : 0 | |
| MorphTrackedLocals : 0 | |
| MorphLocals : 0 | |
| EnumeratorGDVProvisionalNoEscape : 0 | |
| EnumeratorGDVCanCloneToEnsureNoEscape : 0 | |
| ****** DONE compiling Program.EntryPoint:GetTest(Program.EntryPoint+Vector2,int):float | |
| ****** START compiling Program.EntryPoint:GetTest(Program.EntryPoint+Vector2,int):float (MethodHash=2b4c0cab) | |
| Generating code for Windows x64 | |
| OPTIONS: Tier-1 compilation | |
| OPTIONS: compCodeOpt = FAST_CODE | |
| OPTIONS: compDbgCode = false | |
| OPTIONS: compDbgInfo = true | |
| OPTIONS: compDbgEnC = false | |
| OPTIONS: compProcedureSplitting = false | |
| OPTIONS: compProcedureSplittingEH = false | |
| OPTIONS: optimizer should use profile data | |
| IL to import: | |
| IL_0000 03 ldarg.1 | |
| IL_0001 17 ldc.i4.1 | |
| IL_0002 30 04 bgt.s 4 (IL_0008) | |
| IL_0004 03 ldarg.1 | |
| IL_0005 16 ldc.i4.0 | |
| IL_0006 2f 0b bge.s 11 (IL_0013) | |
| IL_0008 72 01 00 00 70 ldstr 0x70000001 | |
| IL_000d 03 ldarg.1 | |
| IL_000e 28 01 00 00 2b call 0x2B000001 | |
| IL_0013 0f 00 ldarga.s 0x0 | |
| IL_0015 7c f8 01 00 04 ldflda 0x40001F8 | |
| IL_001a e0 conv.u | |
| IL_001b 03 ldarg.1 | |
| IL_001c d3 conv.i | |
| IL_001d 1a ldc.i4.4 | |
| IL_001e 5a mul | |
| IL_001f 58 add | |
| IL_0020 4e ldind.r4 | |
| IL_0021 2a ret | |
| 1 return registers for return type float | |
| [00..04) reg mm0 | |
| Parameter V00 ABI info: [00..08) reg rcx (implicit by-ref) | |
| Parameter V01 ABI info: [00..04) reg rdx | |
| lvaGrabTemp returning 2 (V02 tmp0) (a long lifetime temp) called for OutgoingArgSpace. | |
| Local V02 should not be enregistered because: it is address exposed | |
| ; Initial local variable assignments | |
| ; | |
| ; V00 arg0 struct <Program.EntryPoint+Vector2, 12> <Program.EntryPoint+Vector2> | |
| ; V01 arg1 int | |
| ; V02 OutArgs struct <0> do-not-enreg[XS] addr-exposed "OutgoingArgSpace" <Empty> | |
| *************** In compInitDebuggingInfo() for Program.EntryPoint:GetTest(Program.EntryPoint+Vector2,int):float | |
| getVars() returned cVars = 0, extendOthers = true | |
| info.compVarScopesCount = 2 | |
| VarNum LVNum Name Beg End | |
| 0: 00h 00h V00 arg0 000h 022h | |
| 1: 01h 01h V01 arg1 000h 022h | |
| info.compStmtOffsetsCount = 0 | |
| info.compStmtOffsetsImplicit = 0005h ( STACK_EMPTY CALL_SITE ) | |
| *************** In fgFindBasicBlocks() for Program.EntryPoint:GetTest(Program.EntryPoint+Vector2,int):float | |
| Jump targets: | |
| IL_0008 | |
| IL_0013 | |
| New Basic Block BB01 [0000] created. | |
| BB01 [0000] [000..004) | |
| New Basic Block BB02 [0001] created. | |
| BB02 [0001] [004..008) | |
| New Basic Block BB03 [0002] created. | |
| BB03 [0002] [008..013) | |
| New Basic Block BB04 [0003] created. | |
| BB04 [0003] [013..022) | |
| setting likelihood of BB01 -> BB03 to 0.5 | |
| setting likelihood of BB01 -> BB02 to 0.5 | |
| setting likelihood of BB02 -> BB04 to 0.5 | |
| setting likelihood of BB02 -> BB03 to 0.5 | |
| setting likelihood of BB03 -> BB04 to 1 | |
| IL Code Size,Instr 34, 19, Basic Block count 4, Local Variable Num,Ref count 3, 5 for method Program.EntryPoint:GetTest(Program.EntryPoint+Vector2,int):float | |
| OPTIONS: opts.MinOpts() == false | |
| Basic block list for 'Program.EntryPoint:GetTest(Program.EntryPoint+Vector2,int):float' | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BB01 [0000] 1 1 [000..004)-> BB03(0.5),BB02(0.5) ( cond ) | |
| BB02 [0001] 1 BB01 1 [004..008)-> BB04(0.5),BB03(0.5) ( cond ) | |
| BB03 [0002] 2 BB01,BB02 1 [008..013)-> BB04(1) (always) | |
| BB04 [0003] 2 BB02,BB03 1 [013..022) (return) | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| *************** Starting PHASE Pre-import | |
| *************** Finishing PHASE Pre-import | |
| Trees after Pre-import | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BB01 [0000] 1 1 [000..004)-> BB03(0.5),BB02(0.5) ( cond ) | |
| BB02 [0001] 1 BB01 1 [004..008)-> BB04(0.5),BB03(0.5) ( cond ) | |
| BB03 [0002] 2 BB01,BB02 1 [008..013)-> BB04(1) (always) | |
| BB04 [0003] 2 BB02,BB03 1 [013..022) (return) | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| ------------ BB01 [0000] [000..004) -> BB03(0.5),BB02(0.5) (cond), preds={} succs={BB02,BB03} | |
| ------------ BB02 [0001] [004..008) -> BB04(0.5),BB03(0.5) (cond), preds={BB01} succs={BB03,BB04} | |
| ------------ BB03 [0002] [008..013) -> BB04(1) (always), preds={BB01,BB02} succs={BB04} | |
| ------------ BB04 [0003] [013..022) (return), preds={BB02,BB03} succs={} | |
| ------------------------------------------------------------------------------------------------------------------- | |
| *************** In fgDebugCheckBBlist | |
| *************** Starting PHASE Profile incorporation | |
| Have Dynamic PGO: 3 schema records (schema at 00000230620B1EA0, data at 00000230620B1EE8) | |
| Profile summary: 1 runs, 0 block probes, 3 edge probes, 0 class profiles, 0 method profiles, 0 other records | |
| Reconstructing block counts from sparse edge instrumentation | |
| ... adding known edge BB02 -> BB03: weight 0 | |
| ... adding known edge BB04 -> BB01: weight 2 | |
| ... adding known edge BB02 -> BB04: weight 2 | |
| ... unknown edge BB01 -> BB02 | |
| ... unknown edge BB01 -> BB03 | |
| ... unknown edge BB03 -> BB04 | |
| ... pseudo edge BB04 -> BB01 | |
| ... known edge BB02 -> BB04 | |
| ... known edge BB02 -> BB03 | |
| Solver: 4 blocks, 4 unknown; 6 edges, 3 unknown, 0 zero | |
| Pass [1]: 4 unknown blocks, 3 unknown edges | |
| BB04: 1 incoming unknown, 0 outgoing unknown | |
| BB04: all outgoing edge weights known, summing... | |
| BB04 -> BB01 has weight 2 | |
| BB04: all outgoing edge weights known, sum is 2 | |
| BB03 -> BB04: target block weight and all other incoming edge weights known, so weight is 0 | |
| BB03: 1 incoming unknown, 0 outgoing unknown | |
| BB03: all outgoing edge weights known, summing... | |
| BB03 -> BB04 has weight 0 | |
| BB03: all outgoing edge weights known, sum is 0 | |
| BB01 -> BB03: target block weight and all other incoming edge weights known, so weight is 0 | |
| BB02: 1 incoming unknown, 0 outgoing unknown | |
| BB02: all outgoing edge weights known, summing... | |
| BB02 -> BB03 has weight 0 | |
| BB02 -> BB04 has weight 2 | |
| BB02: all outgoing edge weights known, sum is 2 | |
| BB01 -> BB02: target block weight and all other incoming edge weights known, so weight is 2 | |
| BB01: 0 incoming unknown, 0 outgoing unknown | |
| BB01: all incoming edge weights known, summing... | |
| BB04 -> BB01 has weight 2 | |
| BB01: all incoming edge weights known, sum is 2 | |
| Solver: converged in 1 passes | |
| Normalizing successor likelihoods with factor 1/2 | |
| Setting likelihood of BB01 -> BB03 to 0 (pgo) | |
| setting likelihood of BB01 -> BB03 from 0.5 to 0 | |
| Setting likelihood of BB01 -> BB02 to 1 (pgo) | |
| setting likelihood of BB01 -> BB02 from 0.5 to 1 | |
| Normalizing successor likelihoods with factor 1/2 | |
| Setting likelihood of BB02 -> BB03 to 0 (pgo) | |
| setting likelihood of BB02 -> BB03 from 0.5 to 0 | |
| Setting likelihood of BB02 -> BB04 to 1 (pgo) | |
| setting likelihood of BB02 -> BB04 from 0.5 to 1 | |
| BB03 has zero weight , setting outgoing likelihoods heuristically | |
| Setting likelihood of BB03 -> BB04 to 1 (heur) | |
| setting likelihood of BB03 -> BB04 from 1 to 1 | |
| Repairing profile... | |
| Identifying loops in DFS tree with following reverse post order: | |
| RPO -> BB [pre, post] | |
| 00 -> BB01[0, 3] | |
| 01 -> BB02[1, 2] | |
| 02 -> BB03[2, 1] | |
| 03 -> BB04[3, 0] | |
| Flow graph has no cycles; skipping identification of natural loops | |
| Repairing inconsistent or missing edge likelihoods | |
| setting likelihood of BB03 -> BB04 from 1 to 1 | |
| Synthesis: entry BB01 has input weight 2 | |
| Synthesis: exception weight 1e-05 | |
| Computing block weights | |
| Synthesis solver: flow graph has 0 improper loop headers | |
| converged at iteration 0 rel residual 2e+12 eigenvalue 0 | |
| fgCalledCount is 2 | |
| Checking Profile Weights (flags:0x24) | |
| Profile is self-consistent (4 profiled blocks, 0 unprofiled) | |
| *************** Finishing PHASE Profile incorporation | |
| Trees after Profile incorporation | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BBnum BBid ref try hnd preds weight IBC [IL range] [jump] [EH region] [flags] | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BB01 [0000] 1 1 2 [000..004)-> BB03(0),BB02(1) ( cond ) IBC | |
| BB02 [0001] 1 BB01 1 2 [004..008)-> BB04(1),BB03(0) ( cond ) IBC | |
| BB03 [0002] 2 BB01,BB02 0 0 [008..013)-> BB04(1) (always) IBC rare | |
| BB04 [0003] 2 BB02,BB03 1 2 [013..022) (return) IBC | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| ------------ BB01 [0000] [000..004) -> BB03(0),BB02(1) (cond), preds={} succs={BB02,BB03} | |
| ------------ BB02 [0001] [004..008) -> BB04(1),BB03(0) (cond), preds={BB01} succs={BB03,BB04} | |
| ------------ BB03 [0002] [008..013) -> BB04(1) (always), preds={BB01,BB02} succs={BB04} | |
| ------------ BB04 [0003] [013..022) (return), preds={BB02,BB03} succs={} | |
| ------------------------------------------------------------------------------------------------------------------- | |
| *************** In fgDebugCheckBBlist | |
| Checking Profile Weights (flags:0x1c) | |
| Profile is self-consistent (4 profiled blocks, 0 unprofiled) | |
| *************** Starting PHASE Canonicalize entry | |
| *************** Finishing PHASE Canonicalize entry [no changes] | |
| *************** Starting PHASE Importation | |
| impImportBlockPending for BB01 | |
| Importing BB01 (PC=000) of 'Program.EntryPoint:GetTest(Program.EntryPoint+Vector2,int):float' | |
| [ 0] 0 (0x000) ldarg.1 | |
| [ 1] 1 (0x001) ldc.i4.1 1 | |
| [ 2] 2 (0x002) bgt.s | |
| STMT00000 ( 0x000[E-] ... ??? ) | |
| [000003] ----------- * JTRUE void | |
| [000002] ----------- \--* GT int | |
| [000000] ----------- +--* LCL_VAR int V01 arg1 | |
| [000001] ----------- \--* CNS_INT int 1 | |
| impImportBlockPending for BB02 | |
| impImportBlockPending for BB03 | |
| Importing BB03 (PC=008) of 'Program.EntryPoint:GetTest(Program.EntryPoint+Vector2,int):float' | |
| [ 0] 8 (0x008) ldstr 70000001 | |
| [ 1] 13 (0x00d) ldarg.1 | |
| [ 2] 14 (0x00e) call 2B000001 | |
| In Compiler::impImportCall: opcode is call, kind=0, callRetType is void, structSize is 0 | |
| CheckCanInline: fetching method info for inline candidate ThrowOutOfRangeException -- context 00007FF7F132C8B8 | |
| Method context: Program.EntryPoint:ThrowOutOfRangeException[int](System.String,int) | |
| Callee and root has trusted profile | |
| INLINER: during 'impMarkInlineCandidate' result 'CheckCanInline Success' reason 'CheckCanInline Success' for 'Program.EntryPoint:GetTest(Program.EntryPoint+Vector2,int):float' calling 'Program.EntryPoint:ThrowOutOfRangeException[int](System.String,int)' | |
| INLINER: during 'impMarkInlineCandidate' result 'CheckCanInline Success' reason 'CheckCanInline Success' | |
| STMT00001 ( 0x008[E-] ... ??? ) | |
| [000006] I-C-G------ * CALL void Program.EntryPoint:ThrowOutOfRangeException[int](System.String,int) (exactContextHandle=0x00007FF7F132C8B8) | |
| [000004] ----------- arg0 +--* CNS_STR ref <string constant> | |
| [000005] ----------- arg1 \--* LCL_VAR int V01 arg1 | |
| impImportBlockPending for BB04 | |
| Importing BB04 (PC=019) of 'Program.EntryPoint:GetTest(Program.EntryPoint+Vector2,int):float' | |
| [ 0] 19 (0x013) ldarga.s 0 | |
| [ 1] 21 (0x015) ldflda 040001F8 | |
| [ 1] 26 (0x01a) conv.u | |
| [ 1] 27 (0x01b) ldarg.1 | |
| [ 2] 28 (0x01c) conv.i | |
| [ 2] 29 (0x01d) ldc.i4.4 4 | |
| [ 3] 30 (0x01e) mul | |
| Folding long operator with constant nodes into a constant: | |
| [000013] ----------- * CAST long <- int | |
| [000012] ----------- \--* CNS_INT int 4 | |
| Bashed to long constant: | |
| [000013] ----------- * CNS_INT long 4 | |
| [ 2] 31 (0x01f) add | |
| [ 1] 32 (0x020) ldind.r4 | |
| [ 1] 33 (0x021) ret | |
| STMT00002 ( 0x013[E-] ... ??? ) | |
| [000017] ---XG------ * RETURN float | |
| [000016] ---XG------ \--* IND float | |
| [000015] ----------- \--* ADD long | |
| [000009] ---------U- +--* CAST long <- ulong <- byref | |
| [000008] ----------- | \--* FIELD_ADDR byref Program.EntryPoint+Vector2:X | |
| [000007] ----------- | \--* LCL_ADDR byref V00 arg0 [+0] | |
| [000014] ----------- \--* MUL long | |
| [000011] ----------- +--* CAST long <- int | |
| [000010] ----------- | \--* LCL_VAR int V01 arg1 | |
| [000013] ----------- \--* CNS_INT long 4 | |
| Importing BB02 (PC=004) of 'Program.EntryPoint:GetTest(Program.EntryPoint+Vector2,int):float' | |
| [ 0] 4 (0x004) ldarg.1 | |
| [ 1] 5 (0x005) ldc.i4.0 0 | |
| [ 2] 6 (0x006) bge.s | |
| STMT00003 ( 0x004[E-] ... ??? ) | |
| [000021] ----------- * JTRUE void | |
| [000020] ----------- \--* GE int | |
| [000018] ----------- +--* LCL_VAR int V01 arg1 | |
| [000019] ----------- \--* CNS_INT int 0 | |
| impImportBlockPending for BB03 | |
| impImportBlockPending for BB04 | |
| *************** Finishing PHASE Importation | |
| Trees after Importation | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BBnum BBid ref try hnd preds weight IBC [IL range] [jump] [EH region] [flags] | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BB01 [0000] 1 1 2 [000..004)-> BB03(0),BB02(1) ( cond ) i IBC | |
| BB02 [0001] 1 BB01 1 2 [004..008)-> BB04(1),BB03(0) ( cond ) i IBC | |
| BB03 [0002] 2 BB01,BB02 0 0 [008..013)-> BB04(1) (always) i IBC rare | |
| BB04 [0003] 2 BB02,BB03 1 2 [013..022) (return) i IBC | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| ------------ BB01 [0000] [000..004) -> BB03(0),BB02(1) (cond), preds={} succs={BB02,BB03} | |
| ***** BB01 [0000] | |
| STMT00000 ( 0x000[E-] ... 0x002 ) | |
| [000003] ----------- * JTRUE void | |
| [000002] ----------- \--* GT int | |
| [000000] ----------- +--* LCL_VAR int V01 arg1 | |
| [000001] ----------- \--* CNS_INT int 1 | |
| ------------ BB02 [0001] [004..008) -> BB04(1),BB03(0) (cond), preds={BB01} succs={BB03,BB04} | |
| ***** BB02 [0001] | |
| STMT00003 ( 0x004[E-] ... 0x006 ) | |
| [000021] ----------- * JTRUE void | |
| [000020] ----------- \--* GE int | |
| [000018] ----------- +--* LCL_VAR int V01 arg1 | |
| [000019] ----------- \--* CNS_INT int 0 | |
| ------------ BB03 [0002] [008..013) -> BB04(1) (always), preds={BB01,BB02} succs={BB04} | |
| ***** BB03 [0002] | |
| STMT00001 ( 0x008[E-] ... 0x00E ) | |
| [000006] I-C-G------ * CALL void Program.EntryPoint:ThrowOutOfRangeException[int](System.String,int) (exactContextHandle=0x00007FF7F132C8B8) | |
| [000004] ----------- arg0 +--* CNS_STR ref <string constant> | |
| [000005] ----------- arg1 \--* LCL_VAR int V01 arg1 | |
| ------------ BB04 [0003] [013..022) (return), preds={BB02,BB03} succs={} | |
| ***** BB04 [0003] | |
| STMT00002 ( 0x013[E-] ... 0x021 ) | |
| [000017] ---XG------ * RETURN float | |
| [000016] ---XG------ \--* IND float | |
| [000015] ----------- \--* ADD long | |
| [000009] ---------U- +--* CAST long <- ulong <- byref | |
| [000008] ----------- | \--* FIELD_ADDR byref Program.EntryPoint+Vector2:X | |
| [000007] ----------- | \--* LCL_ADDR byref V00 arg0 [+0] | |
| [000014] ----------- \--* MUL long | |
| [000011] ----------- +--* CAST long <- int | |
| [000010] ----------- | \--* LCL_VAR int V01 arg1 | |
| [000013] ----------- \--* CNS_INT long 4 | |
| ------------------------------------------------------------------------------------------------------------------- | |
| *************** In fgDebugCheckBBlist | |
| Checking Profile Weights (flags:0x1c) | |
| Profile is self-consistent (4 profiled blocks, 0 unprofiled) | |
| *************** 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 Save contexts around async calls | |
| No async calls where execution context capture/restore is necessary | |
| *************** Finishing PHASE Save contexts around async calls [no changes] | |
| *************** Starting PHASE Morph - Init | |
| *************** Finishing PHASE Morph - Init [no changes] | |
| *************** Starting PHASE Morph - Inlining | |
| INLINER: pgo source is Dynamic PGO; pgo data is consistent; trusted; sufficient | |
| Expanding INLINE_CANDIDATE in statement STMT00001 in BB03: | |
| STMT00001 ( 0x008[E-] ... 0x00E ) | |
| [000006] I-C-G------ * CALL void Program.EntryPoint:ThrowOutOfRangeException[int](System.String,int) (exactContextHandle=0x00007FF7F132C8B8) | |
| [000004] ----------- arg0 +--* CNS_STR ref <string constant> | |
| [000005] ----------- arg1 \--* LCL_VAR int V01 arg1 | |
| IL argument #0: is a constant or invariant | |
| [000004] ----------- * CNS_STR ref <string constant> | |
| IL argument #1: is a local var | |
| [000005] ----------- * LCL_VAR int V01 arg1 | |
| INLINER: inlineInfo.tokenLookupContextHandle for Program.EntryPoint:ThrowOutOfRangeException[int](System.String,int) set to 0x00007FF7F132C8B8: | |
| Invoking compiler for the inlinee method Program.EntryPoint:ThrowOutOfRangeException[int](System.String,int) : | |
| IL to import: | |
| IL_0000 02 ldarg.0 | |
| IL_0001 03 ldarg.1 | |
| IL_0002 8c 5e 00 00 1b box 0x1B00005E | |
| IL_0007 28 21 00 00 0a call 0xA000021 | |
| IL_000c 73 22 00 00 0a newobj 0xA000022 | |
| IL_0011 7a throw | |
| INLINER impTokenLookupContextHandle for Program.EntryPoint:ThrowOutOfRangeException[int](System.String,int) is 0x00007FF7F132C8B8. | |
| 0 return registers for return type void | |
| *************** In compInitDebuggingInfo() for Program.EntryPoint:ThrowOutOfRangeException[int](System.String,int) | |
| info.compStmtOffsetsCount = 0 | |
| info.compStmtOffsetsImplicit = 0005h ( STACK_EMPTY CALL_SITE ) | |
| *************** In fgFindBasicBlocks() for Program.EntryPoint:ThrowOutOfRangeException[int](System.String,int) | |
| Callee and root has trusted profile | |
| weight= 10 : state 3 [ ldarg.0 ] | |
| weight= 16 : state 4 [ ldarg.1 ] | |
| weight=247 : state 117 [ box ] | |
| weight= 79 : state 40 [ call ] | |
| weight=227 : state 103 [ newobj ] | |
| weight=210 : state 108 [ throw ] | |
| Inline candidate is generic and caller is not. Multiplier increased to 2. | |
| Callsite passes a constant. Multiplier increased to 5. | |
| Inline candidate callsite is rare. Multiplier limited to 1.3. | |
| Callsite has profile data: 0. Multiplier limited to 0.39. | |
| calleeNativeSizeEstimate=789 | |
| callsiteNativeSizeEstimate=115 | |
| benefit multiplier=0.39 | |
| threshold=44 | |
| Native estimate for function size exceeds threshold for inlining 78.9 > 4.4 (multiplier = 0.39) | |
| Inline expansion aborted, inline not profitable | |
| INLINER: during 'fgInline' result 'failed this call site' reason 'unprofitable inline' for 'Program.EntryPoint:GetTest(Program.EntryPoint+Vector2,int):float' calling 'Program.EntryPoint:ThrowOutOfRangeException[int](System.String,int)' | |
| INLINER: during 'fgInline' result 'failed this call site' reason 'unprofitable inline' | |
| **************** Inline Tree | |
| Inlines into 06000001 [via ExtendedDefaultPolicy] Program.EntryPoint:GetTest(Program.EntryPoint+Vector2,int):float: | |
| [INL00 IL=-572662307 TR=000006 06000003] [FAILED: call site: unprofitable inline] Program.EntryPoint:ThrowOutOfRangeException[int](System.String,int) | |
| [INL00 IL=0014 TR=000006 06000003] [FAILED: call site: unprofitable inline] Program.EntryPoint:ThrowOutOfRangeException[int](System.String,int) | |
| Budget: initialTime=162, finalTime=162, initialBudget=3240, currentBudget=3240 | |
| Budget: initialSize=906, finalSize=906 | |
| *************** Finishing PHASE Morph - Inlining | |
| Trees after Morph - Inlining | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BBnum BBid ref try hnd preds weight IBC [IL range] [jump] [EH region] [flags] | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BB01 [0000] 1 1 2 [000..004)-> BB03(0),BB02(1) ( cond ) i IBC | |
| BB02 [0001] 1 BB01 1 2 [004..008)-> BB04(1),BB03(0) ( cond ) i IBC | |
| BB03 [0002] 2 BB01,BB02 0 0 [008..013)-> BB04(1) (always) i IBC rare | |
| BB04 [0003] 2 BB02,BB03 1 2 [013..022) (return) i IBC | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| ------------ BB01 [0000] [000..004) -> BB03(0),BB02(1) (cond), preds={} succs={BB02,BB03} | |
| ***** BB01 [0000] | |
| STMT00000 ( 0x000[E-] ... 0x002 ) | |
| [000003] ----------- * JTRUE void | |
| [000002] ----------- \--* GT int | |
| [000000] ----------- +--* LCL_VAR int V01 arg1 | |
| [000001] ----------- \--* CNS_INT int 1 | |
| ------------ BB02 [0001] [004..008) -> BB04(1),BB03(0) (cond), preds={BB01} succs={BB03,BB04} | |
| ***** BB02 [0001] | |
| STMT00003 ( 0x004[E-] ... 0x006 ) | |
| [000021] ----------- * JTRUE void | |
| [000020] ----------- \--* GE int | |
| [000018] ----------- +--* LCL_VAR int V01 arg1 | |
| [000019] ----------- \--* CNS_INT int 0 | |
| ------------ BB03 [0002] [008..013) -> BB04(1) (always), preds={BB01,BB02} succs={BB04} | |
| ***** BB03 [0002] | |
| STMT00001 ( 0x008[E-] ... 0x00E ) | |
| [000006] --C-G------ * CALL void Program.EntryPoint:ThrowOutOfRangeException[int](System.String,int) | |
| [000004] ----------- arg0 +--* CNS_STR ref <string constant> | |
| [000005] ----------- arg1 \--* LCL_VAR int V01 arg1 | |
| ------------ BB04 [0003] [013..022) (return), preds={BB02,BB03} succs={} | |
| ***** BB04 [0003] | |
| STMT00002 ( 0x013[E-] ... 0x021 ) | |
| [000017] ---XG------ * RETURN float | |
| [000016] ---XG------ \--* IND float | |
| [000015] ----------- \--* ADD long | |
| [000009] ---------U- +--* CAST long <- ulong <- byref | |
| [000008] ----------- | \--* FIELD_ADDR byref Program.EntryPoint+Vector2:X | |
| [000007] ----------- | \--* LCL_ADDR byref V00 arg0 [+0] | |
| [000014] ----------- \--* MUL long | |
| [000011] ----------- +--* CAST long <- int | |
| [000010] ----------- | \--* LCL_VAR int V01 arg1 | |
| [000013] ----------- \--* CNS_INT long 4 | |
| ------------------------------------------------------------------------------------------------------------------- | |
| *************** In fgDebugCheckBBlist | |
| Checking Profile Weights (flags:0x1c) | |
| Profile is self-consistent (4 profiled blocks, 0 unprofiled) | |
| *************** Starting PHASE Resolve GDV Checks | |
| *************** Finishing PHASE Resolve GDV Checks [no changes] | |
| *************** Starting PHASE DFS blocks and remove dead code 1 | |
| *************** Finishing PHASE DFS blocks and remove dead code 1 [no changes] | |
| *************** Starting PHASE Allocate Objects | |
| no newobjs or newarr 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 IBC [IL range] [jump] [EH region] [flags] | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BB01 [0000] 1 1 2 [000..004)-> BB03(0),BB02(1) ( cond ) i IBC | |
| BB02 [0001] 1 BB01 1 2 [004..008)-> BB04(1),BB03(0) ( cond ) i IBC | |
| BB03 [0002] 2 BB01,BB02 0 0 [008..013)-> BB04(1) (always) i IBC rare | |
| BB04 [0003] 2 BB02,BB03 1 2 [013..022) (return) i IBC | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| *************** 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 try/catch/fault | |
| *************** In fgRemoveEmptyTryCatchOrTryFault() | |
| No EH in this method, nothing to remove. | |
| *************** Finishing PHASE Remove empty try/catch/fault [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 Head and tail merge | |
| *************** Finishing PHASE Head and tail merge | |
| Trees after Head and tail merge | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BBnum BBid ref try hnd preds weight IBC [IL range] [jump] [EH region] [flags] | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BB01 [0000] 1 1 2 [000..004)-> BB03(0),BB02(1) ( cond ) i IBC | |
| BB02 [0001] 1 BB01 1 2 [004..008)-> BB04(1),BB03(0) ( cond ) i IBC | |
| BB03 [0002] 2 BB01,BB02 0 0 [008..013)-> BB04(1) (always) i IBC rare | |
| BB04 [0003] 2 BB02,BB03 1 2 [013..022) (return) i IBC | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| ------------ BB01 [0000] [000..004) -> BB03(0),BB02(1) (cond), preds={} succs={BB02,BB03} | |
| ***** BB01 [0000] | |
| STMT00000 ( 0x000[E-] ... 0x002 ) | |
| [000003] ----------- * JTRUE void | |
| [000002] ----------- \--* GT int | |
| [000000] ----------- +--* LCL_VAR int V01 arg1 | |
| [000001] ----------- \--* CNS_INT int 1 | |
| ------------ BB02 [0001] [004..008) -> BB04(1),BB03(0) (cond), preds={BB01} succs={BB03,BB04} | |
| ***** BB02 [0001] | |
| STMT00003 ( 0x004[E-] ... 0x006 ) | |
| [000021] ----------- * JTRUE void | |
| [000020] ----------- \--* GE int | |
| [000018] ----------- +--* LCL_VAR int V01 arg1 | |
| [000019] ----------- \--* CNS_INT int 0 | |
| ------------ BB03 [0002] [008..013) -> BB04(1) (always), preds={BB01,BB02} succs={BB04} | |
| ***** BB03 [0002] | |
| STMT00001 ( 0x008[E-] ... 0x00E ) | |
| [000006] --C-G------ * CALL void Program.EntryPoint:ThrowOutOfRangeException[int](System.String,int) | |
| [000004] ----------- arg0 +--* CNS_STR ref <string constant> | |
| [000005] ----------- arg1 \--* LCL_VAR int V01 arg1 | |
| ------------ BB04 [0003] [013..022) (return), preds={BB02,BB03} succs={} | |
| ***** BB04 [0003] | |
| STMT00002 ( 0x013[E-] ... 0x021 ) | |
| [000017] ---XG------ * RETURN float | |
| [000016] ---XG------ \--* IND float | |
| [000015] ----------- \--* ADD long | |
| [000009] ---------U- +--* CAST long <- ulong <- byref | |
| [000008] ----------- | \--* FIELD_ADDR byref Program.EntryPoint+Vector2:X | |
| [000007] ----------- | \--* LCL_ADDR byref V00 arg0 [+0] | |
| [000014] ----------- \--* MUL long | |
| [000011] ----------- +--* CAST long <- int | |
| [000010] ----------- | \--* LCL_VAR int V01 arg1 | |
| [000013] ----------- \--* CNS_INT long 4 | |
| ------------------------------------------------------------------------------------------------------------------- | |
| *************** In fgDebugCheckBBlist | |
| Checking Profile Weights (flags:0x1c) | |
| Profile is self-consistent (4 profiled blocks, 0 unprofiled) | |
| *************** 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 arg0 struct <Program.EntryPoint+Vector2, 12> ld-addr-op <Program.EntryPoint+Vector2> | |
| ; V01 arg1 int | |
| ; V02 OutArgs struct <0> do-not-enreg[XS] addr-exposed "OutgoingArgSpace" <Empty> | |
| Promoting struct local V00 (Program.EntryPoint+Vector2): | |
| lvaGrabTemp returning 3 (V03 tmp1) (a long lifetime temp) called for field V00.X (fldOffset=0x0). | |
| lvaGrabTemp returning 4 (V04 tmp2) (a long lifetime temp) called for field V00.Y (fldOffset=0x4). | |
| lvaGrabTemp returning 5 (V05 tmp3) (a long lifetime temp) called for field V00.Z (fldOffset=0x8). | |
| struct promotion of V02 is disabled because it has already been marked DNER | |
| lvaTable after fgPromoteStructs | |
| ; Initial local variable assignments | |
| ; | |
| ; V00 arg0 struct <Program.EntryPoint+Vector2, 12> ld-addr-op <Program.EntryPoint+Vector2> | |
| ; V01 arg1 int | |
| ; V02 OutArgs struct <0> do-not-enreg[XS] addr-exposed "OutgoingArgSpace" <Empty> | |
| ; V03 tmp1 float "field V00.X (fldOffset=0x0)" P-INDEP | |
| ; V04 tmp2 float "field V00.Y (fldOffset=0x4)" P-INDEP | |
| ; V05 tmp3 float "field V00.Z (fldOffset=0x8)" P-INDEP | |
| *************** Finishing PHASE Morph - Promote Structs | |
| Trees after Morph - Promote Structs | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BBnum BBid ref try hnd preds weight IBC [IL range] [jump] [EH region] [flags] | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BB01 [0000] 1 1 2 [000..004)-> BB03(0),BB02(1) ( cond ) i IBC | |
| BB02 [0001] 1 BB01 1 2 [004..008)-> BB04(1),BB03(0) ( cond ) i IBC | |
| BB03 [0002] 2 BB01,BB02 0 0 [008..013)-> BB04(1) (always) i IBC rare | |
| BB04 [0003] 2 BB02,BB03 1 2 [013..022) (return) i IBC | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| ------------ BB01 [0000] [000..004) -> BB03(0),BB02(1) (cond), preds={} succs={BB02,BB03} | |
| ***** BB01 [0000] | |
| STMT00000 ( 0x000[E-] ... 0x002 ) | |
| [000003] ----------- * JTRUE void | |
| [000002] ----------- \--* GT int | |
| [000000] ----------- +--* LCL_VAR int V01 arg1 | |
| [000001] ----------- \--* CNS_INT int 1 | |
| ------------ BB02 [0001] [004..008) -> BB04(1),BB03(0) (cond), preds={BB01} succs={BB03,BB04} | |
| ***** BB02 [0001] | |
| STMT00003 ( 0x004[E-] ... 0x006 ) | |
| [000021] ----------- * JTRUE void | |
| [000020] ----------- \--* GE int | |
| [000018] ----------- +--* LCL_VAR int V01 arg1 | |
| [000019] ----------- \--* CNS_INT int 0 | |
| ------------ BB03 [0002] [008..013) -> BB04(1) (always), preds={BB01,BB02} succs={BB04} | |
| ***** BB03 [0002] | |
| STMT00001 ( 0x008[E-] ... 0x00E ) | |
| [000006] --C-G------ * CALL void Program.EntryPoint:ThrowOutOfRangeException[int](System.String,int) | |
| [000004] ----------- arg0 +--* CNS_STR ref <string constant> | |
| [000005] ----------- arg1 \--* LCL_VAR int V01 arg1 | |
| ------------ BB04 [0003] [013..022) (return), preds={BB02,BB03} succs={} | |
| ***** BB04 [0003] | |
| STMT00002 ( 0x013[E-] ... 0x021 ) | |
| [000017] ---XG------ * RETURN float | |
| [000016] ---XG------ \--* IND float | |
| [000015] ----------- \--* ADD long | |
| [000009] ---------U- +--* CAST long <- ulong <- byref | |
| [000008] ----------- | \--* FIELD_ADDR byref Program.EntryPoint+Vector2:X | |
| [000007] ----------- | \--* LCL_ADDR byref V00 arg0 [+0] | |
| | * float field V00.X (fldOffset=0x0) -> V03 tmp1 | |
| | * float field V00.Y (fldOffset=0x4) -> V04 tmp2 | |
| | * float field V00.Z (fldOffset=0x8) -> V05 tmp3 | |
| [000014] ----------- \--* MUL long | |
| [000011] ----------- +--* CAST long <- int | |
| [000010] ----------- | \--* LCL_VAR int V01 arg1 | |
| [000013] ----------- \--* CNS_INT long 4 | |
| ------------------------------------------------------------------------------------------------------------------- | |
| *************** In fgDebugCheckBBlist | |
| Checking Profile Weights (flags:0x1c) | |
| Profile is self-consistent (4 profiled blocks, 0 unprofiled) | |
| *************** Starting PHASE DFS blocks and remove dead code 2 | |
| *************** Finishing PHASE DFS blocks and remove dead code 2 [no changes] | |
| *************** Starting PHASE Morph - Structs/AddrExp | |
| Identifying loops in DFS tree with following reverse post order: | |
| RPO -> BB [pre, post] | |
| 00 -> BB01[0, 3] | |
| 01 -> BB02[1, 2] | |
| 02 -> BB03[2, 1] | |
| 03 -> BB04[3, 0] | |
| Flow graph has no cycles; skipping identification of natural loops | |
| LocalAddressVisitor visiting statement: | |
| STMT00000 ( 0x000[E-] ... 0x002 ) | |
| [000003] ----------- * JTRUE void | |
| [000002] ----------- \--* GT int | |
| [000000] ----------- +--* LCL_VAR int V01 arg1 | |
| [000001] ----------- \--* CNS_INT int 1 | |
| LocalAddressVisitor visiting statement: | |
| STMT00003 ( 0x004[E-] ... 0x006 ) | |
| [000021] ----------- * JTRUE void | |
| [000020] ----------- \--* GE int | |
| [000018] ----------- +--* LCL_VAR int V01 arg1 | |
| [000019] ----------- \--* CNS_INT int 0 | |
| LocalAddressVisitor visiting statement: | |
| STMT00001 ( 0x008[E-] ... 0x00E ) | |
| [000006] --C-G------ * CALL void Program.EntryPoint:ThrowOutOfRangeException[int](System.String,int) | |
| [000004] ----------- arg0 +--* CNS_STR ref <string constant> | |
| [000005] ----------- arg1 \--* LCL_VAR int V01 arg1 | |
| LocalAddressVisitor visiting statement: | |
| STMT00002 ( 0x013[E-] ... 0x021 ) | |
| [000017] ---XG------ * RETURN float | |
| [000016] ---XG------ \--* IND float | |
| [000015] ----------- \--* ADD long | |
| [000009] ---------U- +--* CAST long <- ulong <- byref | |
| [000008] ----------- | \--* FIELD_ADDR byref Program.EntryPoint+Vector2:X | |
| [000007] ----------- | \--* LCL_ADDR byref V00 arg0 [+0] | |
| | * float field V00.X (fldOffset=0x0) -> V03 tmp1 | |
| | * float field V00.Y (fldOffset=0x4) -> V04 tmp2 | |
| | * float field V00.Z (fldOffset=0x8) -> V05 tmp3 | |
| [000014] ----------- \--* MUL long | |
| [000011] ----------- +--* CAST long <- int | |
| [000010] ----------- | \--* LCL_VAR int V01 arg1 | |
| [000013] ----------- \--* CNS_INT long 4 | |
| Replacing the field in promoted struct with local var V03 | |
| On exposed: V00 | |
| LocalAddressVisitor modified statement: | |
| STMT00002 ( 0x013[E-] ... 0x021 ) | |
| [000017] ---XG------ * RETURN float | |
| [000016] ---XG------ \--* IND float | |
| [000015] ----------- \--* ADD long | |
| [000009] ---------U- +--* CAST long <- ulong <- byref | |
| [000008] ----------- | \--* LCL_ADDR byref V03 tmp1 [+0] | |
| [000014] ----------- \--* MUL long | |
| [000011] ----------- +--* CAST long <- int | |
| [000010] ----------- | \--* LCL_VAR int V01 arg1 | |
| [000013] ----------- \--* CNS_INT long 4 | |
| Local V03 should not be enregistered because: it is address exposed | |
| Local V04 should not be enregistered because: it is address exposed | |
| Local V05 should not be enregistered because: it is address exposed | |
| Local V00 should not be enregistered because: it is address exposed | |
| *************** Finishing PHASE Morph - Structs/AddrExp | |
| Trees after Morph - Structs/AddrExp | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BBnum BBid ref try hnd preds weight IBC [IL range] [jump] [EH region] [flags] | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BB01 [0000] 1 1 2 [000..004)-> BB03(0),BB02(1) ( cond ) i IBC | |
| BB02 [0001] 1 BB01 1 2 [004..008)-> BB04(1),BB03(0) ( cond ) i IBC | |
| BB03 [0002] 2 BB01,BB02 0 0 [008..013)-> BB04(1) (always) i IBC rare | |
| BB04 [0003] 2 BB02,BB03 1 2 [013..022) (return) i IBC | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| ------------ BB01 [0000] [000..004) -> BB03(0),BB02(1) (cond), preds={} succs={BB02,BB03} | |
| ***** BB01 [0000] | |
| STMT00000 ( 0x000[E-] ... 0x002 ) | |
| [000003] ----------- * JTRUE void | |
| [000002] ----------- \--* GT int | |
| [000000] ----------- +--* LCL_VAR int V01 arg1 | |
| [000001] ----------- \--* CNS_INT int 1 | |
| ------------ BB02 [0001] [004..008) -> BB04(1),BB03(0) (cond), preds={BB01} succs={BB03,BB04} | |
| ***** BB02 [0001] | |
| STMT00003 ( 0x004[E-] ... 0x006 ) | |
| [000021] ----------- * JTRUE void | |
| [000020] ----------- \--* GE int | |
| [000018] ----------- +--* LCL_VAR int V01 arg1 | |
| [000019] ----------- \--* CNS_INT int 0 | |
| ------------ BB03 [0002] [008..013) -> BB04(1) (always), preds={BB01,BB02} succs={BB04} | |
| ***** BB03 [0002] | |
| STMT00001 ( 0x008[E-] ... 0x00E ) | |
| [000006] --C-G------ * CALL void Program.EntryPoint:ThrowOutOfRangeException[int](System.String,int) | |
| [000004] ----------- arg0 +--* CNS_STR ref <string constant> | |
| [000005] ----------- arg1 \--* LCL_VAR int V01 arg1 | |
| ------------ BB04 [0003] [013..022) (return), preds={BB02,BB03} succs={} | |
| ***** BB04 [0003] | |
| STMT00002 ( 0x013[E-] ... 0x021 ) | |
| [000017] ---XG------ * RETURN float | |
| [000016] ---XG------ \--* IND float | |
| [000015] ----------- \--* ADD long | |
| [000009] ---------U- +--* CAST long <- ulong <- byref | |
| [000008] ----------- | \--* LCL_ADDR byref V03 tmp1 [+0] | |
| [000014] ----------- \--* MUL long | |
| [000011] ----------- +--* CAST long <- int | |
| [000010] ----------- | \--* LCL_VAR int V01 arg1 | |
| [000013] ----------- \--* CNS_INT long 4 | |
| ------------------------------------------------------------------------------------------------------------------- | |
| *************** In fgDebugCheckBBlist | |
| Checking Profile Weights (flags:0x1c) | |
| Profile is self-consistent (4 profiled blocks, 0 unprofiled) | |
| *************** Starting PHASE Optimize mask conversions | |
| Skipping. There are no converts of locals | |
| *************** Finishing PHASE Optimize mask conversions [no changes] | |
| *************** Starting PHASE Early liveness | |
| Local V02 should not be enregistered because: struct size does not match reg size | |
| Local V03 should not be enregistered because: field of a dependently promoted struct | |
| Local V04 should not be enregistered because: field of a dependently promoted struct | |
| Local V05 should not be enregistered because: field of a dependently promoted struct | |
| Tracked variable (1 out of 6) table: | |
| V01 arg1 [ int]: refCnt = 4, refCntWtd = 0 | |
| *************** In fgPerBlockLocalVarLiveness() | |
| BB01 USE(1)={V01} | |
| DEF(0)={ } | |
| BB02 USE(1)={V01} | |
| DEF(0)={ } | |
| BB03 USE(1)={V01} | |
| DEF(0)={ } | |
| BB04 USE(1)={V01} + ByrefExposed | |
| DEF(0)={ } | |
| ** Memory liveness computed, GcHeap states and ByrefExposed states match | |
| *************** In fgInterBlockLocalVarLiveness() | |
| BB liveness after fgLiveVarAnalysis(): | |
| BB01 IN (1)={V01} + ByrefExposed | |
| OUT(1)={V01} + ByrefExposed | |
| BB02 IN (1)={V01} + ByrefExposed | |
| OUT(1)={V01} + ByrefExposed | |
| BB03 IN (1)={V01} + ByrefExposed | |
| OUT(1)={V01} + ByrefExposed | |
| BB04 IN (1)={V01} + ByrefExposed | |
| OUT(0)={ } | |
| *************** Finishing PHASE Early liveness | |
| Trees after Early liveness | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BBnum BBid ref try hnd preds weight IBC [IL range] [jump] [EH region] [flags] | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BB01 [0000] 1 1 2 [000..004)-> BB03(0),BB02(1) ( cond ) i IBC | |
| BB02 [0001] 1 BB01 1 2 [004..008)-> BB04(1),BB03(0) ( cond ) i IBC | |
| BB03 [0002] 2 BB01,BB02 0 0 [008..013)-> BB04(1) (always) i IBC rare | |
| BB04 [0003] 2 BB02,BB03 1 2 [013..022) (return) i IBC | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| ------------ BB01 [0000] [000..004) -> BB03(0),BB02(1) (cond), preds={} succs={BB02,BB03} | |
| ***** BB01 [0000] | |
| STMT00000 ( 0x000[E-] ... 0x002 ) | |
| [000003] ----------- * JTRUE void | |
| [000002] ----------- \--* GT int | |
| [000000] ----------- +--* LCL_VAR int V01 arg1 | |
| [000001] ----------- \--* CNS_INT int 1 | |
| ------------ BB02 [0001] [004..008) -> BB04(1),BB03(0) (cond), preds={BB01} succs={BB03,BB04} | |
| ***** BB02 [0001] | |
| STMT00003 ( 0x004[E-] ... 0x006 ) | |
| [000021] ----------- * JTRUE void | |
| [000020] ----------- \--* GE int | |
| [000018] ----------- +--* LCL_VAR int V01 arg1 | |
| [000019] ----------- \--* CNS_INT int 0 | |
| ------------ BB03 [0002] [008..013) -> BB04(1) (always), preds={BB01,BB02} succs={BB04} | |
| ***** BB03 [0002] | |
| STMT00001 ( 0x008[E-] ... 0x00E ) | |
| [000006] --C-G------ * CALL void Program.EntryPoint:ThrowOutOfRangeException[int](System.String,int) | |
| [000004] ----------- arg0 +--* CNS_STR ref <string constant> | |
| [000005] ----------- arg1 \--* LCL_VAR int V01 arg1 | |
| ------------ BB04 [0003] [013..022) (return), preds={BB02,BB03} succs={} | |
| ***** BB04 [0003] | |
| STMT00002 ( 0x013[E-] ... 0x021 ) | |
| [000017] ---XG------ * RETURN float | |
| [000016] ---XG------ \--* IND float | |
| [000015] ----------- \--* ADD long | |
| [000009] ---------U- +--* CAST long <- ulong <- byref | |
| [000008] ----------- | \--* LCL_ADDR byref V03 tmp1 [+0] | |
| [000014] ----------- \--* MUL long | |
| [000011] ----------- +--* CAST long <- int | |
| [000010] ----------- | \--* LCL_VAR int V01 arg1 (last use) | |
| [000013] ----------- \--* CNS_INT long 4 | |
| ------------------------------------------------------------------------------------------------------------------- | |
| *************** In fgDebugCheckBBlist | |
| Checking Profile Weights (flags:0x1c) | |
| Profile is self-consistent (4 profiled blocks, 0 unprofiled) | |
| *************** Starting PHASE Forward Substitution | |
| ===> BB01 | |
| ===> BB02 | |
| ===> BB03 | |
| ===> BB04 | |
| *************** Finishing PHASE Forward Substitution [no changes] | |
| *************** Starting PHASE Physical promotion | |
| *************** Finishing PHASE Physical promotion [no changes] | |
| *************** Starting PHASE Identify candidates for implicit byref copy omission | |
| *************** Finishing PHASE Identify candidates for implicit byref copy omission [no changes] | |
| *************** Starting PHASE Morph - ByRefs | |
| lvaGrabTemp returning 6 (V06 tmp4) (a long lifetime temp) called for Promoted implicit byref. | |
| Undoing promotion of implicit by-ref V00: dependent; total: 1 non-call: 1 fields: 3 | |
| Changing the lvType for struct parameter V00 to TYP_BYREF. | |
| *************** Finishing PHASE Morph - ByRefs | |
| Trees after Morph - ByRefs | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BBnum BBid ref try hnd preds weight IBC [IL range] [jump] [EH region] [flags] | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BB01 [0000] 1 1 2 [000..004)-> BB03(0),BB02(1) ( cond ) i IBC | |
| BB02 [0001] 1 BB01 1 2 [004..008)-> BB04(1),BB03(0) ( cond ) i IBC | |
| BB03 [0002] 2 BB01,BB02 0 0 [008..013)-> BB04(1) (always) i IBC rare | |
| BB04 [0003] 2 BB02,BB03 1 2 [013..022) (return) i IBC | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| ------------ BB01 [0000] [000..004) -> BB03(0),BB02(1) (cond), preds={} succs={BB02,BB03} | |
| ***** BB01 [0000] | |
| STMT00000 ( 0x000[E-] ... 0x002 ) | |
| [000003] ----------- * JTRUE void | |
| [000002] ----------- \--* GT int | |
| [000000] ----------- +--* LCL_VAR int V01 arg1 | |
| [000001] ----------- \--* CNS_INT int 1 | |
| ------------ BB02 [0001] [004..008) -> BB04(1),BB03(0) (cond), preds={BB01} succs={BB03,BB04} | |
| ***** BB02 [0001] | |
| STMT00003 ( 0x004[E-] ... 0x006 ) | |
| [000021] ----------- * JTRUE void | |
| [000020] ----------- \--* GE int | |
| [000018] ----------- +--* LCL_VAR int V01 arg1 | |
| [000019] ----------- \--* CNS_INT int 0 | |
| ------------ BB03 [0002] [008..013) -> BB04(1) (always), preds={BB01,BB02} succs={BB04} | |
| ***** BB03 [0002] | |
| STMT00001 ( 0x008[E-] ... 0x00E ) | |
| [000006] --C-G------ * CALL void Program.EntryPoint:ThrowOutOfRangeException[int](System.String,int) | |
| [000004] ----------- arg0 +--* CNS_STR ref <string constant> | |
| [000005] ----------- arg1 \--* LCL_VAR int V01 arg1 | |
| ------------ BB04 [0003] [013..022) (return), preds={BB02,BB03} succs={} | |
| ***** BB04 [0003] | |
| STMT00002 ( 0x013[E-] ... 0x021 ) | |
| [000017] ---XG------ * RETURN float | |
| [000016] ---XG------ \--* IND float | |
| [000015] ----------- \--* ADD long | |
| [000009] ---------U- +--* CAST long <- ulong <- byref | |
| [000008] ----------- | \--* LCL_ADDR byref V03 tmp1 [+0] | |
| [000014] ----------- \--* MUL long | |
| [000011] ----------- +--* CAST long <- int | |
| [000010] ----------- | \--* LCL_VAR int V01 arg1 (last use) | |
| [000013] ----------- \--* CNS_INT long 4 | |
| ------------------------------------------------------------------------------------------------------------------- | |
| *************** In fgDebugCheckBBlist | |
| Checking Profile Weights (flags:0x1c) | |
| Profile is self-consistent (4 profiled blocks, 0 unprofiled) | |
| *************** Starting PHASE Morph - Global | |
| Cross-block table size 64 (for 1 tracked locals) | |
| Morphing BB01 | |
| BB01 ineligible for cross-block | |
| Assertions in: #NA | |
| fgMorphTree BB01, STMT00000 (before) | |
| [000003] ----------- * JTRUE void | |
| [000002] ----------- \--* GT int | |
| [000000] ----------- +--* LCL_VAR int V01 arg1 | |
| [000001] ----------- \--* CNS_INT int 1 | |
| Morphing BB02 | |
| Using `if false` assertions from pred BB01 | |
| Assertions in: #NA | |
| fgMorphTree BB02, STMT00003 (before) | |
| [000021] ----------- * JTRUE void | |
| [000020] ----------- \--* GE int | |
| [000018] ----------- +--* LCL_VAR int V01 arg1 | |
| [000019] ----------- \--* CNS_INT int 0 | |
| Morphing BB03 | |
| Using `if true` assertions from pred BB01 | |
| Using `if false` assertions from pred BB02 | |
| Assertions in: #NA | |
| fgMorphTree BB03, STMT00001 (before) | |
| [000006] --C-G------ * CALL void Program.EntryPoint:ThrowOutOfRangeException[int](System.String,int) | |
| [000004] ----------- arg0 +--* CNS_STR ref <string constant> | |
| [000005] ----------- arg1 \--* LCL_VAR int V01 arg1 | |
| Adding final args and determining ABI info for [000006]: | |
| Argument 0 ABI info: [00..08) reg rcx | |
| Argument 1 ABI info: [00..04) reg rdx | |
| Args for call [000006] CALL after AddFinalArgsAndDetermineABIInfo: | |
| CallArg[[000004].CNS_STR ref (By value), 1 segments: <[00..08) reg rcx>] | |
| CallArg[[000005].LCL_VAR int (By value), 1 segments: <[00..04) reg rdx>] | |
| Morphing args for 6.CALL: | |
| Adding final args and determining ABI info for [000024]: | |
| Argument 0 ABI info: [00..04) reg rcx | |
| Argument 1 ABI info: [00..08) reg rdx | |
| Args for call [000024] CALL after AddFinalArgsAndDetermineABIInfo: | |
| CallArg[[000023].CNS_INT int (By value), 1 segments: <[00..04) reg rcx>] | |
| CallArg[[000022].CNS_INT long (By value), 1 segments: <[00..08) reg rdx>] | |
| Morphing args for 24.CALL: | |
| Sorting the arguments: | |
| Deferred argument: | |
| [000023] -----+----- * CNS_INT int 1 | |
| Moved to late list | |
| Deferred argument: | |
| [000022] H----+----- * CNS_INT(h) long 0x7ff7f1188938 scope | |
| Moved to late list | |
| Register placement order: rcx rdx | |
| Args for [000024].CALL after fgMorphArgs: | |
| CallArg[[000023].CNS_INT int (By value), 1 segments: <[00..04) reg rcx>, processed] | |
| CallArg[[000022].CNS_INT long (By value), 1 segments: <[00..08) reg rdx>, processed] | |
| OutgoingArgsStackSize is 32 | |
| Sorting the arguments: | |
| Argument with 'side effect'... | |
| [000024] --C-G+----- * CALL help ref CORINFO_HELP_STRCNS | |
| [000023] -----+----- arg0 rcx +--* CNS_INT int 1 | |
| [000022] H----+----- arg1 rdx \--* CNS_INT(h) long 0x7ff7f1188938 scope | |
| lvaGrabTemp returning 7 (V07 tmp5) called for argument with side effect. | |
| Evaluate to a temp: | |
| [000025] DAC-G+----- * STORE_LCL_VAR ref V07 tmp5 | |
| [000024] --C-G+----- \--* CALL help ref CORINFO_HELP_STRCNS | |
| [000023] -----+----- arg0 rcx +--* CNS_INT int 1 | |
| [000022] H----+----- arg1 rdx \--* CNS_INT(h) long 0x7ff7f1188938 scope | |
| Deferred argument: | |
| [000005] -----+----- * LCL_VAR int V01 arg1 | |
| Moved to late list | |
| Register placement order: rcx rdx | |
| Args for [000006].CALL after fgMorphArgs: | |
| CallArg[[000026].LCL_VAR ref (By value), 1 segments: <[00..08) reg rcx>, processed] | |
| CallArg[[000005].LCL_VAR int (By value), 1 segments: <[00..04) reg rdx>, processed] | |
| OutgoingArgsStackSize is 32 | |
| fgMorphTree BB03, STMT00001 (after) | |
| [000006] -ACXG+----- * CALL void Program.EntryPoint:ThrowOutOfRangeException[int](System.String,int) | |
| [000025] DAC-G+----- arg0 setup +--* STORE_LCL_VAR ref V07 tmp5 | |
| [000024] --C-G+----- | \--* CALL help ref CORINFO_HELP_STRCNS | |
| [000023] -----+----- arg0 rcx | +--* CNS_INT int 1 | |
| [000022] H----+----- arg1 rdx | \--* CNS_INT(h) long 0x7ff7f1188938 scope | |
| [000026] -----+----- arg0 rcx +--* LCL_VAR ref V07 tmp5 | |
| [000005] -----+----- arg1 rdx \--* LCL_VAR int V01 arg1 | |
| Removing trees after no-return call [000006] | |
| New final statement: | |
| STMT00001 ( 0x008[E-] ... 0x00E ) | |
| [000006] -ACXG+----- * CALL void Program.EntryPoint:ThrowOutOfRangeException[int](System.String,int) | |
| [000025] DAC-G+----- arg0 setup +--* STORE_LCL_VAR ref V07 tmp5 | |
| [000024] --C-G+----- | \--* CALL help ref CORINFO_HELP_STRCNS | |
| [000023] -----+----- arg0 rcx | +--* CNS_INT int 1 | |
| [000022] H----+----- arg1 rdx | \--* CNS_INT(h) long 0x7ff7f1188938 scope | |
| [000026] -----+----- arg0 rcx +--* LCL_VAR ref V07 tmp5 | |
| [000005] -----+----- arg1 rdx \--* LCL_VAR int V01 arg1 | |
| Converting BB03 to BBJ_THROW | |
| Morphing BB04 | |
| Using `if true` assertions from pred BB02 | |
| Assertions in: #NA | |
| fgMorphTree BB04, STMT00002 (before) | |
| [000017] ---XG------ * RETURN float | |
| [000016] ---XG------ \--* IND float | |
| [000015] ----------- \--* ADD long | |
| [000009] ---------U- +--* CAST long <- ulong <- byref | |
| [000008] ----------- | \--* LCL_ADDR byref V03 tmp1 [+0] | |
| [000014] ----------- \--* MUL long | |
| [000011] ----------- +--* CAST long <- int | |
| [000010] ----------- | \--* LCL_VAR int V01 arg1 (last use) | |
| [000013] ----------- \--* CNS_INT long 4 | |
| lvaGrabTemp returning 8 (V08 tmp6) called for Cast away GC. | |
| Rewriting an implicit by-ref parameter reference: | |
| [000008] ----------- * LCL_ADDR byref V03 tmp1 [+0] | |
| Transformed into: | |
| [000008] ----------- * LCL_VAR byref V00 arg0 | |
| fgMorphTree BB04, STMT00002 (after) | |
| [000017] -A-XG+----- * RETURN float | |
| [000016] -A-XG+----- \--* IND float | |
| [000015] -A---+----- \--* ADD long | |
| [000030] -A---+----- +--* COMMA long | |
| [000027] DA---+----- | +--* STORE_LCL_VAR long V08 tmp6 | |
| [000008] -----+----- | | \--* LCL_VAR byref V00 arg0 | |
| [000028] -----+----- | \--* LCL_VAR long V08 tmp6 | |
| [000014] -----+----- \--* LSH long | |
| [000011] -----+----- +--* CAST long <- int | |
| [000010] -----+----- | \--* LCL_VAR int V01 arg1 (last use) | |
| [000013] -----+----- \--* CNS_INT long 2 | |
| morph assertion stats: 64 table size, 0 assertions, 0 dropped | |
| *************** Finishing PHASE Morph - Global | |
| Trees after Morph - Global | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BBnum BBid ref try hnd preds weight IBC [IL range] [jump] [EH region] [flags] | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BB01 [0000] 1 1 2 [000..004)-> BB03(0),BB02(1) ( cond ) i IBC | |
| BB02 [0001] 1 BB01 1 2 [004..008)-> BB04(1),BB03(0) ( cond ) i IBC | |
| BB03 [0002] 2 BB01,BB02 0 0 [008..013) (throw ) i IBC rare hascall gcsafe | |
| BB04 [0003] 1 BB02 1 2 [013..022) (return) i IBC | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| ------------ BB01 [0000] [000..004) -> BB03(0),BB02(1) (cond), preds={} succs={BB02,BB03} | |
| ***** BB01 [0000] | |
| STMT00000 ( 0x000[E-] ... 0x002 ) | |
| [000003] -----+----- * JTRUE void | |
| [000002] J----+-N--- \--* GT int | |
| [000000] -----+----- +--* LCL_VAR int V01 arg1 | |
| [000001] -----+----- \--* CNS_INT int 1 | |
| ------------ BB02 [0001] [004..008) -> BB04(1),BB03(0) (cond), preds={BB01} succs={BB03,BB04} | |
| ***** BB02 [0001] | |
| STMT00003 ( 0x004[E-] ... 0x006 ) | |
| [000021] -----+----- * JTRUE void | |
| [000020] J----+-N--- \--* GE int | |
| [000018] -----+----- +--* LCL_VAR int V01 arg1 | |
| [000019] -----+----- \--* CNS_INT int 0 | |
| ------------ BB03 [0002] [008..013) (throw), preds={BB01,BB02} succs={} | |
| ***** BB03 [0002] | |
| STMT00001 ( 0x008[E-] ... 0x00E ) | |
| [000006] -ACXG+----- * CALL void Program.EntryPoint:ThrowOutOfRangeException[int](System.String,int) | |
| [000025] DAC-G+----- arg0 setup +--* STORE_LCL_VAR ref V07 tmp5 | |
| [000024] --C-G+----- | \--* CALL help ref CORINFO_HELP_STRCNS | |
| [000023] -----+----- arg0 rcx | +--* CNS_INT int 1 | |
| [000022] H----+----- arg1 rdx | \--* CNS_INT(h) long 0x7ff7f1188938 scope | |
| [000026] -----+----- arg0 rcx +--* LCL_VAR ref V07 tmp5 | |
| [000005] -----+----- arg1 rdx \--* LCL_VAR int V01 arg1 | |
| ------------ BB04 [0003] [013..022) (return), preds={BB02} succs={} | |
| ***** BB04 [0003] | |
| STMT00002 ( 0x013[E-] ... 0x021 ) | |
| [000017] -A-XG+----- * RETURN float | |
| [000016] -A-XG+----- \--* IND float | |
| [000015] -A---+----- \--* ADD long | |
| [000030] -A---+----- +--* COMMA long | |
| [000027] DA---+----- | +--* STORE_LCL_VAR long V08 tmp6 | |
| [000008] -----+----- | | \--* LCL_VAR byref V00 arg0 | |
| [000028] -----+----- | \--* LCL_VAR long V08 tmp6 | |
| [000014] -----+----- \--* LSH long | |
| [000011] -----+----- +--* CAST long <- int | |
| [000010] -----+----- | \--* LCL_VAR int V01 arg1 (last use) | |
| [000013] -----+----- \--* CNS_INT long 2 | |
| ------------------------------------------------------------------------------------------------------------------- | |
| *************** In fgDebugCheckBBlist | |
| Checking Profile Weights (flags:0x1c) | |
| Profile is self-consistent (4 profiled blocks, 0 unprofiled) | |
| *************** Starting PHASE Post-Morph | |
| *************** In fgMarkDemotedImplicitByRefArgs() | |
| Clearing annotation for V00 | |
| Fixing pointer for field V03 from V00 to V06 | |
| Fixing pointer for field V04 from V00 to V06 | |
| Fixing pointer for field V05 from V00 to V06 | |
| *************** Finishing PHASE Post-Morph | |
| Trees after Post-Morph | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BBnum BBid ref try hnd preds weight IBC [IL range] [jump] [EH region] [flags] | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BB01 [0000] 1 1 2 [000..004)-> BB03(0),BB02(1) ( cond ) i IBC | |
| BB02 [0001] 1 BB01 1 2 [004..008)-> BB04(1),BB03(0) ( cond ) i IBC | |
| BB03 [0002] 2 BB01,BB02 0 0 [008..013) (throw ) i IBC rare hascall gcsafe | |
| BB04 [0003] 1 BB02 1 2 [013..022) (return) i IBC | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| ------------ BB01 [0000] [000..004) -> BB03(0),BB02(1) (cond), preds={} succs={BB02,BB03} | |
| ***** BB01 [0000] | |
| STMT00000 ( 0x000[E-] ... 0x002 ) | |
| [000003] -----+----- * JTRUE void | |
| [000002] J----+-N--- \--* GT int | |
| [000000] -----+----- +--* LCL_VAR int V01 arg1 | |
| [000001] -----+----- \--* CNS_INT int 1 | |
| ------------ BB02 [0001] [004..008) -> BB04(1),BB03(0) (cond), preds={BB01} succs={BB03,BB04} | |
| ***** BB02 [0001] | |
| STMT00003 ( 0x004[E-] ... 0x006 ) | |
| [000021] -----+----- * JTRUE void | |
| [000020] J----+-N--- \--* GE int | |
| [000018] -----+----- +--* LCL_VAR int V01 arg1 | |
| [000019] -----+----- \--* CNS_INT int 0 | |
| ------------ BB03 [0002] [008..013) (throw), preds={BB01,BB02} succs={} | |
| ***** BB03 [0002] | |
| STMT00001 ( 0x008[E-] ... 0x00E ) | |
| [000006] -ACXG+----- * CALL void Program.EntryPoint:ThrowOutOfRangeException[int](System.String,int) | |
| [000025] DAC-G+----- arg0 setup +--* STORE_LCL_VAR ref V07 tmp5 | |
| [000024] --C-G+----- | \--* CALL help ref CORINFO_HELP_STRCNS | |
| [000023] -----+----- arg0 rcx | +--* CNS_INT int 1 | |
| [000022] H----+----- arg1 rdx | \--* CNS_INT(h) long 0x7ff7f1188938 scope | |
| [000026] -----+----- arg0 rcx +--* LCL_VAR ref V07 tmp5 | |
| [000005] -----+----- arg1 rdx \--* LCL_VAR int V01 arg1 | |
| ------------ BB04 [0003] [013..022) (return), preds={BB02} succs={} | |
| ***** BB04 [0003] | |
| STMT00002 ( 0x013[E-] ... 0x021 ) | |
| [000017] -A-XG+----- * RETURN float | |
| [000016] -A-XG+----- \--* IND float | |
| [000015] -A---+----- \--* ADD long | |
| [000030] -A---+----- +--* COMMA long | |
| [000027] DA---+----- | +--* STORE_LCL_VAR long V08 tmp6 | |
| [000008] -----+----- | | \--* LCL_VAR byref V00 arg0 | |
| [000028] -----+----- | \--* LCL_VAR long V08 tmp6 | |
| [000014] -----+----- \--* LSH long | |
| [000011] -----+----- +--* CAST long <- int | |
| [000010] -----+----- | \--* LCL_VAR int V01 arg1 | |
| [000013] -----+----- \--* CNS_INT long 2 | |
| ------------------------------------------------------------------------------------------------------------------- | |
| *************** In fgDebugCheckBBlist | |
| Checking Profile Weights (flags:0x1c) | |
| Profile is self-consistent (4 profiled blocks, 0 unprofiled) | |
| *************** Starting PHASE GS Cookie | |
| No GS security needed | |
| *************** Finishing PHASE GS Cookie [no changes] | |
| *************** Starting PHASE Compute block weights | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BBnum BBid ref try hnd preds weight IBC [IL range] [jump] [EH region] [flags] | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BB01 [0000] 1 1 2 [000..004)-> BB03(0),BB02(1) ( cond ) i IBC | |
| BB02 [0001] 1 BB01 1 2 [004..008)-> BB04(1),BB03(0) ( cond ) i IBC | |
| BB03 [0002] 2 BB01,BB02 0 0 [008..013) (throw ) i IBC rare hascall gcsafe | |
| BB04 [0003] 1 BB02 1 2 [013..022) (return) i IBC | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| *************** Finishing PHASE Compute block weights [no changes] | |
| *************** Starting PHASE Remove empty finally 2 | |
| No EH in this method, nothing to remove. | |
| *************** Finishing PHASE Remove empty finally 2 [no changes] | |
| *************** Starting PHASE Remove empty try 2 | |
| *************** In fgRemoveEmptyTry() | |
| No EH in this method, nothing to remove. | |
| *************** Finishing PHASE Remove empty try 2 [no changes] | |
| *************** Starting PHASE Remove empty try-catch-fault 2 | |
| *************** In fgRemoveEmptyTryCatchOrTryFault() | |
| No EH in this method, nothing to remove. | |
| *************** Finishing PHASE Remove empty try-catch-fault 2 [no changes] | |
| *************** Starting PHASE Optimize control flow | |
| *************** In fgUpdateFlowGraph() | |
| Before updating the flow graph: | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BBnum BBid ref try hnd preds weight IBC [IL range] [jump] [EH region] [flags] | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BB01 [0000] 1 1 2 [000..004)-> BB03(0),BB02(1) ( cond ) i IBC | |
| BB02 [0001] 1 BB01 1 2 [004..008)-> BB04(1),BB03(0) ( cond ) i IBC | |
| BB03 [0002] 2 BB01,BB02 0 0 [008..013) (throw ) i IBC rare hascall gcsafe | |
| BB04 [0003] 1 BB02 1 2 [013..022) (return) i IBC | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| *************** In fgDebugCheckBBlist | |
| *************** Finishing PHASE Optimize control flow [no changes] | |
| *************** Starting PHASE Post-morph head and tail merge | |
| *************** Finishing PHASE Post-morph head and tail merge | |
| Trees after Post-morph head and tail merge | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BBnum BBid ref try hnd preds weight IBC [IL range] [jump] [EH region] [flags] | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BB01 [0000] 1 1 2 [000..004)-> BB03(0),BB02(1) ( cond ) i IBC | |
| BB02 [0001] 1 BB01 1 2 [004..008)-> BB04(1),BB03(0) ( cond ) i IBC | |
| BB03 [0002] 2 BB01,BB02 0 0 [008..013) (throw ) i IBC rare hascall gcsafe | |
| BB04 [0003] 1 BB02 1 2 [013..022) (return) i IBC | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| ------------ BB01 [0000] [000..004) -> BB03(0),BB02(1) (cond), preds={} succs={BB02,BB03} | |
| ***** BB01 [0000] | |
| STMT00000 ( 0x000[E-] ... 0x002 ) | |
| [000003] -----+----- * JTRUE void | |
| [000002] J----+-N--- \--* GT int | |
| [000000] -----+----- +--* LCL_VAR int V01 arg1 | |
| [000001] -----+----- \--* CNS_INT int 1 | |
| ------------ BB02 [0001] [004..008) -> BB04(1),BB03(0) (cond), preds={BB01} succs={BB03,BB04} | |
| ***** BB02 [0001] | |
| STMT00003 ( 0x004[E-] ... 0x006 ) | |
| [000021] -----+----- * JTRUE void | |
| [000020] J----+-N--- \--* GE int | |
| [000018] -----+----- +--* LCL_VAR int V01 arg1 | |
| [000019] -----+----- \--* CNS_INT int 0 | |
| ------------ BB03 [0002] [008..013) (throw), preds={BB01,BB02} succs={} | |
| ***** BB03 [0002] | |
| STMT00001 ( 0x008[E-] ... 0x00E ) | |
| [000006] -ACXG+----- * CALL void Program.EntryPoint:ThrowOutOfRangeException[int](System.String,int) | |
| [000025] DAC-G+----- arg0 setup +--* STORE_LCL_VAR ref V07 tmp5 | |
| [000024] --C-G+----- | \--* CALL help ref CORINFO_HELP_STRCNS | |
| [000023] -----+----- arg0 rcx | +--* CNS_INT int 1 | |
| [000022] H----+----- arg1 rdx | \--* CNS_INT(h) long 0x7ff7f1188938 scope | |
| [000026] -----+----- arg0 rcx +--* LCL_VAR ref V07 tmp5 | |
| [000005] -----+----- arg1 rdx \--* LCL_VAR int V01 arg1 | |
| ------------ BB04 [0003] [013..022) (return), preds={BB02} succs={} | |
| ***** BB04 [0003] | |
| STMT00002 ( 0x013[E-] ... 0x021 ) | |
| [000017] -A-XG+----- * RETURN float | |
| [000016] -A-XG+----- \--* IND float | |
| [000015] -A---+----- \--* ADD long | |
| [000030] -A---+----- +--* COMMA long | |
| [000027] DA---+----- | +--* STORE_LCL_VAR long V08 tmp6 | |
| [000008] -----+----- | | \--* LCL_VAR byref V00 arg0 | |
| [000028] -----+----- | \--* LCL_VAR long V08 tmp6 | |
| [000014] -----+----- \--* LSH long | |
| [000011] -----+----- +--* CAST long <- int | |
| [000010] -----+----- | \--* LCL_VAR int V01 arg1 | |
| [000013] -----+----- \--* CNS_INT long 2 | |
| ------------------------------------------------------------------------------------------------------------------- | |
| *************** In fgDebugCheckBBlist | |
| Checking Profile Weights (flags:0x1c) | |
| Profile is self-consistent (4 profiled blocks, 0 unprofiled) | |
| *************** Starting PHASE DFS blocks and remove dead code 3 | |
| *************** Finishing PHASE DFS blocks and remove dead code 3 [no changes] | |
| *************** Starting PHASE Adjust throw edge likelihoods | |
| BB03 will throw. | |
| *************** Finishing PHASE Adjust throw edge likelihoods | |
| Trees after Adjust throw edge likelihoods | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BBnum BBid ref try hnd preds weight IBC [IL range] [jump] [EH region] [flags] | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BB01 [0000] 1 1 2 [000..004)-> BB03(0),BB02(1) ( cond ) i IBC | |
| BB02 [0001] 1 BB01 1 2 [004..008)-> BB04(1),BB03(0) ( cond ) i IBC | |
| BB03 [0002] 2 BB01,BB02 0 0 [008..013) (throw ) i IBC rare hascall gcsafe | |
| BB04 [0003] 1 BB02 1 2 [013..022) (return) i IBC | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| ------------ BB01 [0000] [000..004) -> BB03(0),BB02(1) (cond), preds={} succs={BB02,BB03} | |
| ***** BB01 [0000] | |
| STMT00000 ( 0x000[E-] ... 0x002 ) | |
| [000003] -----+----- * JTRUE void | |
| [000002] J----+-N--- \--* GT int | |
| [000000] -----+----- +--* LCL_VAR int V01 arg1 | |
| [000001] -----+----- \--* CNS_INT int 1 | |
| ------------ BB02 [0001] [004..008) -> BB04(1),BB03(0) (cond), preds={BB01} succs={BB03,BB04} | |
| ***** BB02 [0001] | |
| STMT00003 ( 0x004[E-] ... 0x006 ) | |
| [000021] -----+----- * JTRUE void | |
| [000020] J----+-N--- \--* GE int | |
| [000018] -----+----- +--* LCL_VAR int V01 arg1 | |
| [000019] -----+----- \--* CNS_INT int 0 | |
| ------------ BB03 [0002] [008..013) (throw), preds={BB01,BB02} succs={} | |
| ***** BB03 [0002] | |
| STMT00001 ( 0x008[E-] ... 0x00E ) | |
| [000006] -ACXG+----- * CALL void Program.EntryPoint:ThrowOutOfRangeException[int](System.String,int) | |
| [000025] DAC-G+----- arg0 setup +--* STORE_LCL_VAR ref V07 tmp5 | |
| [000024] --C-G+----- | \--* CALL help ref CORINFO_HELP_STRCNS | |
| [000023] -----+----- arg0 rcx | +--* CNS_INT int 1 | |
| [000022] H----+----- arg1 rdx | \--* CNS_INT(h) long 0x7ff7f1188938 scope | |
| [000026] -----+----- arg0 rcx +--* LCL_VAR ref V07 tmp5 | |
| [000005] -----+----- arg1 rdx \--* LCL_VAR int V01 arg1 | |
| ------------ BB04 [0003] [013..022) (return), preds={BB02} succs={} | |
| ***** BB04 [0003] | |
| STMT00002 ( 0x013[E-] ... 0x021 ) | |
| [000017] -A-XG+----- * RETURN float | |
| [000016] -A-XG+----- \--* IND float | |
| [000015] -A---+----- \--* ADD long | |
| [000030] -A---+----- +--* COMMA long | |
| [000027] DA---+----- | +--* STORE_LCL_VAR long V08 tmp6 | |
| [000008] -----+----- | | \--* LCL_VAR byref V00 arg0 | |
| [000028] -----+----- | \--* LCL_VAR long V08 tmp6 | |
| [000014] -----+----- \--* LSH long | |
| [000011] -----+----- +--* CAST long <- int | |
| [000010] -----+----- | \--* LCL_VAR int V01 arg1 | |
| [000013] -----+----- \--* CNS_INT long 2 | |
| ------------------------------------------------------------------------------------------------------------------- | |
| *************** In fgDebugCheckBBlist | |
| Checking Profile Weights (flags:0x1c) | |
| Profile is self-consistent (4 profiled blocks, 0 unprofiled) | |
| *************** Starting PHASE Find loops | |
| *************** In optFindLoopsPhase() | |
| Identifying loops in DFS tree with following reverse post order: | |
| RPO -> BB [pre, post] | |
| 00 -> BB01[0, 3] | |
| 01 -> BB02[1, 2] | |
| 02 -> BB04[3, 1] | |
| 03 -> BB03[2, 0] | |
| Flow graph has no cycles; skipping identification of natural loops | |
| *************** Finishing PHASE Find loops | |
| Trees after Find loops | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BBnum BBid ref try hnd preds weight IBC [IL range] [jump] [EH region] [flags] | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BB01 [0000] 1 1 2 [000..004)-> BB03(0),BB02(1) ( cond ) i IBC | |
| BB02 [0001] 1 BB01 1 2 [004..008)-> BB04(1),BB03(0) ( cond ) i IBC | |
| BB03 [0002] 2 BB01,BB02 0 0 [008..013) (throw ) i IBC rare hascall gcsafe | |
| BB04 [0003] 1 BB02 1 2 [013..022) (return) i IBC | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| ------------ BB01 [0000] [000..004) -> BB03(0),BB02(1) (cond), preds={} succs={BB02,BB03} | |
| ***** BB01 [0000] | |
| STMT00000 ( 0x000[E-] ... 0x002 ) | |
| [000003] -----+----- * JTRUE void | |
| [000002] J----+-N--- \--* GT int | |
| [000000] -----+----- +--* LCL_VAR int V01 arg1 | |
| [000001] -----+----- \--* CNS_INT int 1 | |
| ------------ BB02 [0001] [004..008) -> BB04(1),BB03(0) (cond), preds={BB01} succs={BB03,BB04} | |
| ***** BB02 [0001] | |
| STMT00003 ( 0x004[E-] ... 0x006 ) | |
| [000021] -----+----- * JTRUE void | |
| [000020] J----+-N--- \--* GE int | |
| [000018] -----+----- +--* LCL_VAR int V01 arg1 | |
| [000019] -----+----- \--* CNS_INT int 0 | |
| ------------ BB03 [0002] [008..013) (throw), preds={BB01,BB02} succs={} | |
| ***** BB03 [0002] | |
| STMT00001 ( 0x008[E-] ... 0x00E ) | |
| [000006] -ACXG+----- * CALL void Program.EntryPoint:ThrowOutOfRangeException[int](System.String,int) | |
| [000025] DAC-G+----- arg0 setup +--* STORE_LCL_VAR ref V07 tmp5 | |
| [000024] --C-G+----- | \--* CALL help ref CORINFO_HELP_STRCNS | |
| [000023] -----+----- arg0 rcx | +--* CNS_INT int 1 | |
| [000022] H----+----- arg1 rdx | \--* CNS_INT(h) long 0x7ff7f1188938 scope | |
| [000026] -----+----- arg0 rcx +--* LCL_VAR ref V07 tmp5 | |
| [000005] -----+----- arg1 rdx \--* LCL_VAR int V01 arg1 | |
| ------------ BB04 [0003] [013..022) (return), preds={BB02} succs={} | |
| ***** BB04 [0003] | |
| STMT00002 ( 0x013[E-] ... 0x021 ) | |
| [000017] -A-XG+----- * RETURN float | |
| [000016] -A-XG+----- \--* IND float | |
| [000015] -A---+----- \--* ADD long | |
| [000030] -A---+----- +--* COMMA long | |
| [000027] DA---+----- | +--* STORE_LCL_VAR long V08 tmp6 | |
| [000008] -----+----- | | \--* LCL_VAR byref V00 arg0 | |
| [000028] -----+----- | \--* LCL_VAR long V08 tmp6 | |
| [000014] -----+----- \--* LSH long | |
| [000011] -----+----- +--* CAST long <- int | |
| [000010] -----+----- | \--* LCL_VAR int V01 arg1 | |
| [000013] -----+----- \--* CNS_INT long 2 | |
| ------------------------------------------------------------------------------------------------------------------- | |
| *************** In fgDebugCheckBBlist | |
| Checking Profile Weights (flags:0x1c) | |
| Profile is self-consistent (4 profiled blocks, 0 unprofiled) | |
| *************** Starting PHASE Repair profile post-morph | |
| Profile is already consistent. | |
| *************** Finishing PHASE Repair profile post-morph [no changes] | |
| *************** Starting PHASE Invert loops | |
| *************** Finishing PHASE Invert loops [no changes] | |
| *************** Starting PHASE Set block weights | |
| *************** Finishing PHASE Set block weights [no changes] | |
| *************** 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 Compute dominators | |
| After computing the dominance tree: | |
| BB01 : BB02 BB03 | |
| BB02 : BB04 | |
| *************** Finishing PHASE Compute dominators [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-] ... 0x002 ) | |
| [000003] -----+----- * JTRUE void | |
| [000002] J----+-N--- \--* GT int | |
| [000000] -----+----- +--* LCL_VAR int V01 arg1 | |
| [000001] -----+----- \--* CNS_INT int 1 | |
| New refCnts for V01: refCnt = 1, refCntWtd = 1 | |
| *** marking local variables in block BB02 (weight=1) | |
| STMT00003 ( 0x004[E-] ... 0x006 ) | |
| [000021] -----+----- * JTRUE void | |
| [000020] J----+-N--- \--* GE int | |
| [000018] -----+----- +--* LCL_VAR int V01 arg1 | |
| [000019] -----+----- \--* CNS_INT int 0 | |
| New refCnts for V01: refCnt = 2, refCntWtd = 2 | |
| *** marking local variables in block BB03 (weight=0) | |
| STMT00001 ( 0x008[E-] ... 0x00E ) | |
| [000006] -ACXG+----- * CALL void Program.EntryPoint:ThrowOutOfRangeException[int](System.String,int) | |
| [000025] DAC-G+----- arg0 setup +--* STORE_LCL_VAR ref V07 tmp5 | |
| [000024] --C-G+----- | \--* CALL help ref CORINFO_HELP_STRCNS | |
| [000023] -----+----- arg0 rcx | +--* CNS_INT int 1 | |
| [000022] H----+----- arg1 rdx | \--* CNS_INT(h) long 0x7ff7f1188938 scope | |
| [000026] -----+----- arg0 rcx +--* LCL_VAR ref V07 tmp5 | |
| [000005] -----+----- arg1 rdx \--* LCL_VAR int V01 arg1 | |
| New refCnts for V07: refCnt = 1, refCntWtd = 0 | |
| Marking EH Var V07 as a register candidate. | |
| New refCnts for V07: refCnt = 2, refCntWtd = 0 | |
| New refCnts for V01: refCnt = 3, refCntWtd = 2 | |
| *** marking local variables in block BB04 (weight=1) | |
| STMT00002 ( 0x013[E-] ... 0x021 ) | |
| [000017] -A-XG+----- * RETURN float | |
| [000016] -A-XG+----- \--* IND float | |
| [000015] -A---+----- \--* ADD long | |
| [000030] -A---+----- +--* COMMA long | |
| [000027] DA---+----- | +--* STORE_LCL_VAR long V08 tmp6 | |
| [000008] -----+----- | | \--* LCL_VAR byref V00 arg0 | |
| [000028] -----+----- | \--* LCL_VAR long V08 tmp6 | |
| [000014] -----+----- \--* LSH long | |
| [000011] -----+----- +--* CAST long <- int | |
| [000010] -----+----- | \--* LCL_VAR int V01 arg1 | |
| [000013] -----+----- \--* CNS_INT long 2 | |
| New refCnts for V08: refCnt = 1, refCntWtd = 2 | |
| V08 needs explicit zero init. Disqualified as a single-def register candidate. | |
| New refCnts for V00: refCnt = 1, refCntWtd = 2 | |
| New refCnts for V08: refCnt = 2, refCntWtd = 4 | |
| New refCnts for V01: refCnt = 4, refCntWtd = 3 | |
| *** lvaComputeRefCounts -- implicit counts *** | |
| New refCnts for V00: refCnt = 2, refCntWtd = 4 | |
| New refCnts for V00: refCnt = 3, refCntWtd = 6 | |
| New refCnts for V01: refCnt = 5, refCntWtd = 4 | |
| New refCnts for V01: refCnt = 6, refCntWtd = 5 | |
| *************** Finishing PHASE Mark local vars [no changes] | |
| *************** Starting PHASE Find oper order | |
| *************** In fgFindOperOrder() | |
| *************** Finishing PHASE Find oper order | |
| Trees after Find oper order | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BBnum BBid ref try hnd preds weight IBC [IL range] [jump] [EH region] [flags] | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BB01 [0000] 1 1 2 [000..004)-> BB03(0),BB02(1) ( cond ) i IBC | |
| BB02 [0001] 1 BB01 1 2 [004..008)-> BB04(1),BB03(0) ( cond ) i IBC | |
| BB03 [0002] 2 BB01,BB02 0 0 [008..013) (throw ) i IBC rare hascall gcsafe | |
| BB04 [0003] 1 BB02 1 2 [013..022) (return) i IBC | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| ------------ BB01 [0000] [000..004) -> BB03(0),BB02(1) (cond), preds={} succs={BB02,BB03} | |
| ***** BB01 [0000] | |
| STMT00000 ( 0x000[E-] ... 0x002 ) | |
| ( 5, 5) [000003] -----+----- * JTRUE void | |
| ( 3, 3) [000002] J----+-N--- \--* GT int | |
| ( 1, 1) [000000] -----+----- +--* LCL_VAR int V01 arg1 | |
| ( 1, 1) [000001] -----+----- \--* CNS_INT int 1 | |
| ------------ BB02 [0001] [004..008) -> BB04(1),BB03(0) (cond), preds={BB01} succs={BB03,BB04} | |
| ***** BB02 [0001] | |
| STMT00003 ( 0x004[E-] ... 0x006 ) | |
| ( 5, 5) [000021] -----+----- * JTRUE void | |
| ( 3, 3) [000020] J----+-N--- \--* GE int | |
| ( 1, 1) [000018] -----+----- +--* LCL_VAR int V01 arg1 | |
| ( 1, 1) [000019] -----+----- \--* CNS_INT int 0 | |
| ------------ BB03 [0002] [008..013) (throw), preds={BB01,BB02} succs={} | |
| ***** BB03 [0002] | |
| STMT00001 ( 0x008[E-] ... 0x00E ) | |
| ( 43, 31) [000006] -ACXG+----- * CALL void Program.EntryPoint:ThrowOutOfRangeException[int](System.String,int) | |
| ( 22, 21) [000025] DAC-G+----- arg0 setup +--* STORE_LCL_VAR ref V07 tmp5 | |
| ( 18, 18) [000024] --C-G+----- | \--* CALL help ref CORINFO_HELP_STRCNS | |
| ( 1, 1) [000023] -----+----- arg0 rcx | +--* CNS_INT int 1 | |
| ( 3, 10) [000022] H----+----- arg1 rdx | \--* CNS_INT(h) long 0x7ff7f1188938 scope | |
| ( 3, 2) [000026] -----+----- arg0 rcx +--* LCL_VAR ref V07 tmp5 | |
| ( 1, 1) [000005] -----+----- arg1 rdx \--* LCL_VAR int V01 arg1 | |
| ------------ BB04 [0003] [013..022) (return), preds={BB02} succs={} | |
| ***** BB04 [0003] | |
| STMT00002 ( 0x013[E-] ... 0x021 ) | |
| ( 7, 7) [000017] -A-XG+----- * RETURN float | |
| ( 6, 6) [000016] -A-XG+----- \--* IND float | |
| ( 5, 8) [000015] -A---+-N--- \--* ADD long | |
| ( 2, 4) [000030] -A---+----- +--* COMMA long | |
| ( 1, 3) [000027] DA---+----- | +--* STORE_LCL_VAR long V08 tmp6 | |
| ( 1, 1) [000008] -----+----- | | \--* LCL_VAR byref V00 arg0 | |
| ( 1, 1) [000028] -----+----- | \--* LCL_VAR long V08 tmp6 | |
| ( 3, 4) [000014] -----+-N--- \--* LSH long | |
| ( 2, 3) [000011] -----+----- +--* CAST long <- int | |
| ( 1, 1) [000010] -----+----- | \--* LCL_VAR int V01 arg1 | |
| ( 1, 1) [000013] -----+----- \--* CNS_INT long 2 | |
| ------------------------------------------------------------------------------------------------------------------- | |
| *************** In fgDebugCheckBBlist | |
| Checking Profile Weights (flags:0x1c) | |
| Profile is self-consistent (4 profiled blocks, 0 unprofiled) | |
| *************** Starting PHASE Set block order | |
| *************** In fgSetBlockOrder() | |
| The biggest BB has 11 tree nodes | |
| *************** Finishing PHASE Set block order | |
| Trees after Set block order | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BBnum BBid ref try hnd preds weight IBC [IL range] [jump] [EH region] [flags] | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BB01 [0000] 1 1 2 [000..004)-> BB03(0),BB02(1) ( cond ) i IBC | |
| BB02 [0001] 1 BB01 1 2 [004..008)-> BB04(1),BB03(0) ( cond ) i IBC | |
| BB03 [0002] 2 BB01,BB02 0 0 [008..013) (throw ) i IBC rare hascall gcsafe | |
| BB04 [0003] 1 BB02 1 2 [013..022) (return) i IBC | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| ------------ BB01 [0000] [000..004) -> BB03(0),BB02(1) (cond), preds={} succs={BB02,BB03} | |
| ***** BB01 [0000] | |
| STMT00000 ( 0x000[E-] ... 0x002 ) | |
| N004 ( 5, 5) [000003] -----+----- * JTRUE void | |
| N003 ( 3, 3) [000002] J----+-N--- \--* GT int | |
| N001 ( 1, 1) [000000] -----+----- +--* LCL_VAR int V01 arg1 | |
| N002 ( 1, 1) [000001] -----+----- \--* CNS_INT int 1 | |
| ------------ BB02 [0001] [004..008) -> BB04(1),BB03(0) (cond), preds={BB01} succs={BB03,BB04} | |
| ***** BB02 [0001] | |
| STMT00003 ( 0x004[E-] ... 0x006 ) | |
| N004 ( 5, 5) [000021] -----+----- * JTRUE void | |
| N003 ( 3, 3) [000020] J----+-N--- \--* GE int | |
| N001 ( 1, 1) [000018] -----+----- +--* LCL_VAR int V01 arg1 | |
| N002 ( 1, 1) [000019] -----+----- \--* CNS_INT int 0 | |
| ------------ BB03 [0002] [008..013) (throw), preds={BB01,BB02} succs={} | |
| ***** BB03 [0002] | |
| STMT00001 ( 0x008[E-] ... 0x00E ) | |
| N007 ( 43, 31) [000006] -ACXG+----- * CALL void Program.EntryPoint:ThrowOutOfRangeException[int](System.String,int) | |
| N004 ( 22, 21) [000025] DAC-G+----- arg0 setup +--* STORE_LCL_VAR ref V07 tmp5 | |
| N003 ( 18, 18) [000024] --C-G+----- | \--* CALL help ref CORINFO_HELP_STRCNS | |
| N001 ( 1, 1) [000023] -----+----- arg0 rcx | +--* CNS_INT int 1 | |
| N002 ( 3, 10) [000022] H----+----- arg1 rdx | \--* CNS_INT(h) long 0x7ff7f1188938 scope | |
| N005 ( 3, 2) [000026] -----+----- arg0 rcx +--* LCL_VAR ref V07 tmp5 | |
| N006 ( 1, 1) [000005] -----+----- arg1 rdx \--* LCL_VAR int V01 arg1 | |
| ------------ BB04 [0003] [013..022) (return), preds={BB02} succs={} | |
| ***** BB04 [0003] | |
| STMT00002 ( 0x013[E-] ... 0x021 ) | |
| N011 ( 7, 7) [000017] -A-XG+----- * RETURN float | |
| N010 ( 6, 6) [000016] -A-XG+----- \--* IND float | |
| N009 ( 5, 8) [000015] -A---+-N--- \--* ADD long | |
| N004 ( 2, 4) [000030] -A---+----- +--* COMMA long | |
| N002 ( 1, 3) [000027] DA---+----- | +--* STORE_LCL_VAR long V08 tmp6 | |
| N001 ( 1, 1) [000008] -----+----- | | \--* LCL_VAR byref V00 arg0 | |
| N003 ( 1, 1) [000028] -----+----- | \--* LCL_VAR long V08 tmp6 | |
| N008 ( 3, 4) [000014] -----+-N--- \--* LSH long | |
| N006 ( 2, 3) [000011] -----+----- +--* CAST long <- int | |
| N005 ( 1, 1) [000010] -----+----- | \--* LCL_VAR int V01 arg1 | |
| N007 ( 1, 1) [000013] -----+----- \--* CNS_INT long 2 | |
| ------------------------------------------------------------------------------------------------------------------- | |
| *************** In fgDebugCheckBBlist | |
| Checking Profile Weights (flags:0x1c) | |
| Profile is self-consistent (4 profiled blocks, 0 unprofiled) | |
| *************** Starting PHASE Build SSA representation | |
| *************** In SsaBuilder::Build() | |
| *************** In fgLocalVarLiveness() | |
| In fgLocalVarLivenessInit | |
| Local V02 should not be enregistered because: struct size does not match reg size | |
| Local V03 should not be enregistered because: field of a dependently promoted struct | |
| Local V04 should not be enregistered because: field of a dependently promoted struct | |
| Local V05 should not be enregistered because: field of a dependently promoted struct | |
| Tracked variable (4 out of 9) table: | |
| V00 arg0 [ byref]: refCnt = 3, refCntWtd = 6 | |
| V01 arg1 [ int]: refCnt = 6, refCntWtd = 5 | |
| V08 tmp6 [ long]: refCnt = 2, refCntWtd = 4 | |
| V07 tmp5 [ ref]: refCnt = 2, refCntWtd = 0 | |
| *************** In fgPerBlockLocalVarLiveness() | |
| BB01 USE(1)={V01} | |
| DEF(0)={ } | |
| BB02 USE(1)={V01} | |
| DEF(0)={ } | |
| BB03 USE(1)={V01 } + ByrefExposed + GcHeap | |
| DEF(1)={ V07} + ByrefExposed* + GcHeap* | |
| BB04 USE(2)={V00 V01 } + ByrefExposed + GcHeap | |
| DEF(1)={ V08} | |
| ** Memory liveness computed, GcHeap states and ByrefExposed states match | |
| *************** In fgInterBlockLocalVarLiveness() | |
| BB liveness after fgLiveVarAnalysis(): | |
| BB01 IN (2)={V00 V01} + ByrefExposed + GcHeap | |
| OUT(2)={V00 V01} + ByrefExposed + GcHeap | |
| BB02 IN (2)={V00 V01} + ByrefExposed + GcHeap | |
| OUT(2)={V00 V01} + ByrefExposed + GcHeap | |
| BB03 IN (1)={V01} + ByrefExposed + GcHeap | |
| OUT(0)={ } | |
| BB04 IN (2)={V00 V01} + ByrefExposed + GcHeap | |
| OUT(0)={ } | |
| *************** In optRemoveRedundantZeroInits() | |
| Analyzing BB01 | |
| *************** In SsaBuilder::InsertPhiFunctions() | |
| Inserting phi functions: | |
| *************** In SsaBuilder::RenameVariables() | |
| V00.1: defined in BB00 1 uses (global) | |
| V01.1: defined in BB00 4 uses (global) | |
| V07.1: defined in BB00 0 uses (local) | |
| V07.2: defined in BB03 1 uses (local) | |
| V08.1: defined in BB04 1 uses (local) | |
| *************** Finishing PHASE Build SSA representation | |
| Trees after Build SSA representation | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BBnum BBid ref try hnd preds weight IBC [IL range] [jump] [EH region] [flags] | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BB01 [0000] 1 1 2 [000..004)-> BB03(0),BB02(1) ( cond ) i IBC | |
| BB02 [0001] 1 BB01 1 2 [004..008)-> BB04(1),BB03(0) ( cond ) i IBC | |
| BB03 [0002] 2 BB01,BB02 0 0 [008..013) (throw ) i IBC rare hascall gcsafe | |
| BB04 [0003] 1 BB02 1 2 [013..022) (return) i IBC | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| ------------ BB01 [0000] [000..004) -> BB03(0),BB02(1) (cond), preds={} succs={BB02,BB03} | |
| SSA MEM: ByrefExposed, GcHeap = m:1 | |
| ***** BB01 [0000] | |
| STMT00000 ( 0x000[E-] ... 0x002 ) | |
| N004 ( 5, 5) [000003] -----+----- * JTRUE void | |
| N003 ( 3, 3) [000002] J----+-N--- \--* GT int | |
| N001 ( 1, 1) [000000] -----+----- +--* LCL_VAR int V01 arg1 u:1 | |
| N002 ( 1, 1) [000001] -----+----- \--* CNS_INT int 1 | |
| SSA MEM: ByrefExposed, GcHeap = m:1 | |
| ------------ BB02 [0001] [004..008) -> BB04(1),BB03(0) (cond), preds={BB01} succs={BB03,BB04} | |
| SSA MEM: ByrefExposed, GcHeap = m:1 | |
| ***** BB02 [0001] | |
| STMT00003 ( 0x004[E-] ... 0x006 ) | |
| N004 ( 5, 5) [000021] -----+----- * JTRUE void | |
| N003 ( 3, 3) [000020] J----+-N--- \--* GE int | |
| N001 ( 1, 1) [000018] -----+----- +--* LCL_VAR int V01 arg1 u:1 | |
| N002 ( 1, 1) [000019] -----+----- \--* CNS_INT int 0 | |
| SSA MEM: ByrefExposed, GcHeap = m:1 | |
| ------------ BB03 [0002] [008..013) (throw), preds={BB01,BB02} succs={} | |
| SSA MEM: ByrefExposed, GcHeap = m:1 | |
| ***** BB03 [0002] | |
| STMT00001 ( 0x008[E-] ... 0x00E ) | |
| N007 ( 43, 31) [000006] -ACXG+----- * CALL void Program.EntryPoint:ThrowOutOfRangeException[int](System.String,int) | |
| N004 ( 22, 21) [000025] DAC-G+----- arg0 setup +--* STORE_LCL_VAR ref V07 tmp5 d:2 | |
| N003 ( 18, 18) [000024] --C-G+----- | \--* CALL help ref CORINFO_HELP_STRCNS | |
| N001 ( 1, 1) [000023] -----+----- arg0 rcx | +--* CNS_INT int 1 | |
| N002 ( 3, 10) [000022] H----+----- arg1 rdx | \--* CNS_INT(h) long 0x7ff7f1188938 scope | |
| N005 ( 3, 2) [000026] -----+----- arg0 rcx +--* LCL_VAR ref V07 tmp5 u:2 (last use) | |
| N006 ( 1, 1) [000005] -----+----- arg1 rdx \--* LCL_VAR int V01 arg1 u:1 (last use) | |
| SSA MEM: ByrefExposed, GcHeap = m:2 | |
| ------------ BB04 [0003] [013..022) (return), preds={BB02} succs={} | |
| SSA MEM: ByrefExposed, GcHeap = m:1 | |
| ***** BB04 [0003] | |
| STMT00002 ( 0x013[E-] ... 0x021 ) | |
| N011 ( 7, 7) [000017] -A-XG+----- * RETURN float | |
| N010 ( 6, 6) [000016] -A-XG+----- \--* IND float | |
| N009 ( 5, 8) [000015] -A---+-N--- \--* ADD long | |
| N004 ( 2, 4) [000030] -A---+----- +--* COMMA long | |
| N002 ( 1, 3) [000027] DA---+----- | +--* STORE_LCL_VAR long V08 tmp6 d:1 | |
| N001 ( 1, 1) [000008] -----+----- | | \--* LCL_VAR byref V00 arg0 u:1 (last use) | |
| N003 ( 1, 1) [000028] -----+----- | \--* LCL_VAR long V08 tmp6 u:1 (last use) | |
| N008 ( 3, 4) [000014] -----+-N--- \--* LSH long | |
| N006 ( 2, 3) [000011] -----+----- +--* CAST long <- int | |
| N005 ( 1, 1) [000010] -----+----- | \--* LCL_VAR int V01 arg1 u:1 (last use) | |
| N007 ( 1, 1) [000013] -----+----- \--* CNS_INT long 2 | |
| SSA MEM: ByrefExposed, GcHeap = m:1 | |
| ------------------------------------------------------------------------------------------------------------------- | |
| *************** In fgDebugCheckBBlist | |
| [info] HasGlobalUse overestimated for V00.1 | |
| SSA checks completed successfully | |
| Checking Profile Weights (flags:0x1c) | |
| Profile is self-consistent (4 profiled blocks, 0 unprofiled) | |
| *************** 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: $100 | |
| Visiting BB01 | |
| The SSA definition for ByrefExposed (#1) at start of BB01 is $100 {InitVal($42)} | |
| The SSA definition for GcHeap (#1) at start of BB01 is $100 {InitVal($42)} | |
| ***** BB01, STMT00000(before) | |
| N004 ( 5, 5) [000003] -----+----- * JTRUE void | |
| N003 ( 3, 3) [000002] J----+-N--- \--* GT int | |
| N001 ( 1, 1) [000000] -----+----- +--* LCL_VAR int V01 arg1 u:1 | |
| N002 ( 1, 1) [000001] -----+----- \--* CNS_INT int 1 | |
| N001 [000000] LCL_VAR V01 arg1 u:1 => $c0 {InitVal($41)} | |
| N002 [000001] CNS_INT 1 => $41 {IntCns 1} | |
| N003 [000002] GT => $140 {GT($c0, $41)} | |
| N004 [000003] JTRUE => $VN.Void | |
| ***** BB01, STMT00000(after) | |
| N004 ( 5, 5) [000003] -----+----- * JTRUE void $VN.Void | |
| N003 ( 3, 3) [000002] J----+-N--- \--* GT int $140 | |
| N001 ( 1, 1) [000000] -----+----- +--* LCL_VAR int V01 arg1 u:1 $c0 | |
| N002 ( 1, 1) [000001] -----+----- \--* CNS_INT int 1 $41 | |
| Visiting BB02 | |
| Reachable through pred BB01 | |
| The SSA definition for ByrefExposed (#1) at start of BB02 is $100 {InitVal($42)} | |
| The SSA definition for GcHeap (#1) at start of BB02 is $100 {InitVal($42)} | |
| ***** BB02, STMT00003(before) | |
| N004 ( 5, 5) [000021] -----+----- * JTRUE void | |
| N003 ( 3, 3) [000020] J----+-N--- \--* GE int | |
| N001 ( 1, 1) [000018] -----+----- +--* LCL_VAR int V01 arg1 u:1 | |
| N002 ( 1, 1) [000019] -----+----- \--* CNS_INT int 0 | |
| N001 [000018] LCL_VAR V01 arg1 u:1 => $c0 {InitVal($41)} | |
| N002 [000019] CNS_INT 0 => $40 {IntCns 0} | |
| N003 [000020] GE => $141 {GE($c0, $40)} | |
| N004 [000021] JTRUE => $VN.Void | |
| ***** BB02, STMT00003(after) | |
| N004 ( 5, 5) [000021] -----+----- * JTRUE void $VN.Void | |
| N003 ( 3, 3) [000020] J----+-N--- \--* GE int $141 | |
| N001 ( 1, 1) [000018] -----+----- +--* LCL_VAR int V01 arg1 u:1 $c0 | |
| N002 ( 1, 1) [000019] -----+----- \--* CNS_INT int 0 $40 | |
| Visiting BB04 | |
| Reachable through pred BB02 | |
| The SSA definition for ByrefExposed (#1) at start of BB04 is $100 {InitVal($42)} | |
| The SSA definition for GcHeap (#1) at start of BB04 is $100 {InitVal($42)} | |
| ***** BB04, STMT00002(before) | |
| N011 ( 7, 7) [000017] -A-XG+----- * RETURN float | |
| N010 ( 6, 6) [000016] -A-XG+----- \--* IND float | |
| N009 ( 5, 8) [000015] -A---+-N--- \--* ADD long | |
| N004 ( 2, 4) [000030] -A---+----- +--* COMMA long | |
| N002 ( 1, 3) [000027] DA---+----- | +--* STORE_LCL_VAR long V08 tmp6 d:1 | |
| N001 ( 1, 1) [000008] -----+----- | | \--* LCL_VAR byref V00 arg0 u:1 (last use) | |
| N003 ( 1, 1) [000028] -----+----- | \--* LCL_VAR long V08 tmp6 u:1 (last use) | |
| N008 ( 3, 4) [000014] -----+-N--- \--* LSH long | |
| N006 ( 2, 3) [000011] -----+----- +--* CAST long <- int | |
| N005 ( 1, 1) [000010] -----+----- | \--* LCL_VAR int V01 arg1 u:1 (last use) | |
| N007 ( 1, 1) [000013] -----+----- \--* CNS_INT long 2 | |
| N001 [000008] LCL_VAR V00 arg0 u:1 (last use) => $80 {InitVal($40)} | |
| Tree [000027] assigned VN to local var V08/1: $180 {$80, long <- byref} | |
| N002 [000027] STORE_LCL_VAR V08 tmp6 d:1 => $VN.Void | |
| N003 [000028] LCL_VAR V08 tmp6 u:1 (last use) => $180 {$80, long <- byref} | |
| N004 [000030] COMMA => $180 {$80, long <- byref} | |
| N005 [000010] LCL_VAR V01 arg1 u:1 (last use) => $c0 {InitVal($41)} | |
| N006 [000011] CAST => $181 {$c0, long <- int} | |
| N007 [000013] CNS_INT 2 => $1c0 {LngCns 2} | |
| N008 [000014] LSH => $182 {LSH($181, $1c0)} | |
| N009 [000015] ADD => $183 {ADD($180, $182)} | |
| N010 [000016] IND => <l:$301 {norm=$200 {ByrefExposedLoad($44, $183, $100)}, exc=$2c0 {NullPtrExc($183)}}, c:$300 {norm=$240 {MemOpaque:NotInLoop}, exc=$2c0 {NullPtrExc($183)}}> | |
| N011 [000017] RETURN => $2c1 {norm=$VN.Void, exc=$2c0 {NullPtrExc($183)}} | |
| ***** BB04, STMT00002(after) | |
| N011 ( 7, 7) [000017] -A-XG+----- * RETURN float $2c1 | |
| N010 ( 6, 6) [000016] -A-XG+----- \--* IND float <l:$301, c:$300> | |
| N009 ( 5, 8) [000015] -A---+-N--- \--* ADD long $183 | |
| N004 ( 2, 4) [000030] -A---+----- +--* COMMA long $180 | |
| N002 ( 1, 3) [000027] DA---+----- | +--* STORE_LCL_VAR long V08 tmp6 d:1 $VN.Void | |
| N001 ( 1, 1) [000008] -----+----- | | \--* LCL_VAR byref V00 arg0 u:1 (last use) $80 | |
| N003 ( 1, 1) [000028] -----+----- | \--* LCL_VAR long V08 tmp6 u:1 (last use) $180 | |
| N008 ( 3, 4) [000014] -----+-N--- \--* LSH long $182 | |
| N006 ( 2, 3) [000011] -----+----- +--* CAST long <- int $181 | |
| N005 ( 1, 1) [000010] -----+----- | \--* LCL_VAR int V01 arg1 u:1 (last use) $c0 | |
| N007 ( 1, 1) [000013] -----+----- \--* CNS_INT long 2 $1c0 | |
| Visiting BB03 | |
| Reachable through pred BB01 | |
| The SSA definition for ByrefExposed (#1) at start of BB03 is $100 {InitVal($42)} | |
| The SSA definition for GcHeap (#1) at start of BB03 is $100 {InitVal($42)} | |
| ***** BB03, STMT00001(before) | |
| N007 ( 43, 31) [000006] -ACXG+----- * CALL void Program.EntryPoint:ThrowOutOfRangeException[int](System.String,int) | |
| N004 ( 22, 21) [000025] DAC-G+----- arg0 setup +--* STORE_LCL_VAR ref V07 tmp5 d:2 | |
| N003 ( 18, 18) [000024] --C-G+----- | \--* CALL help ref CORINFO_HELP_STRCNS | |
| N001 ( 1, 1) [000023] -----+----- arg0 rcx | +--* CNS_INT int 1 | |
| N002 ( 3, 10) [000022] H----+----- arg1 rdx | \--* CNS_INT(h) long 0x7ff7f1188938 scope | |
| N005 ( 3, 2) [000026] -----+----- arg0 rcx +--* LCL_VAR ref V07 tmp5 u:2 (last use) | |
| N006 ( 1, 1) [000005] -----+----- arg1 rdx \--* LCL_VAR int V01 arg1 u:1 (last use) | |
| N001 [000023] CNS_INT 1 => $41 {IntCns 1} | |
| N002 [000022] CNS_INT(h) 0x7ff7f1188938 scope => $340 {Hnd const: 0x00007FF7F1188938 GTF_ICON_SCOPE_HDL} | |
| N003 [000024] CALL help => $2c2 {LazyStrCns($41, $340)} | |
| Tree [000025] assigned VN to local var V07/2: $2c2 {LazyStrCns($41, $340)} | |
| N004 [000025] STORE_LCL_VAR V07 tmp5 d:2 => $VN.Void | |
| N005 [000026] LCL_VAR V07 tmp5 u:2 (last use) => $2c2 {LazyStrCns($41, $340)} | |
| N006 [000005] LCL_VAR V01 arg1 u:1 (last use) => $c0 {InitVal($41)} | |
| fgCurMemoryVN[GcHeap] assigned for CALL at [000006] to VN: $101. | |
| N007 [000006] CALL => $VN.Void | |
| ***** BB03, STMT00001(after) | |
| N007 ( 43, 31) [000006] -ACXG+----- * CALL void Program.EntryPoint:ThrowOutOfRangeException[int](System.String,int) $VN.Void | |
| N004 ( 22, 21) [000025] DAC-G+----- arg0 setup +--* STORE_LCL_VAR ref V07 tmp5 d:2 $VN.Void | |
| N003 ( 18, 18) [000024] --C-G+----- | \--* CALL help ref CORINFO_HELP_STRCNS $2c2 | |
| N001 ( 1, 1) [000023] -----+----- arg0 rcx | +--* CNS_INT int 1 $41 | |
| N002 ( 3, 10) [000022] H----+----- arg1 rdx | \--* CNS_INT(h) long 0x7ff7f1188938 scope $340 | |
| N005 ( 3, 2) [000026] -----+----- arg0 rcx +--* LCL_VAR ref V07 tmp5 u:2 (last use) $2c2 | |
| N006 ( 1, 1) [000005] -----+----- arg1 rdx \--* LCL_VAR int V01 arg1 u:1 (last use) $c0 | |
| *************** Finishing PHASE Do value numbering | |
| Trees after Do value numbering | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BBnum BBid ref try hnd preds weight IBC [IL range] [jump] [EH region] [flags] | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BB01 [0000] 1 1 2 [000..004)-> BB03(0),BB02(1) ( cond ) i IBC | |
| BB02 [0001] 1 BB01 1 2 [004..008)-> BB04(1),BB03(0) ( cond ) i IBC | |
| BB03 [0002] 2 BB01,BB02 0 0 [008..013) (throw ) i IBC rare hascall gcsafe | |
| BB04 [0003] 1 BB02 1 2 [013..022) (return) i IBC | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| ------------ BB01 [0000] [000..004) -> BB03(0),BB02(1) (cond), preds={} succs={BB02,BB03} | |
| SSA MEM: ByrefExposed, GcHeap = m:1 | |
| ***** BB01 [0000] | |
| STMT00000 ( 0x000[E-] ... 0x002 ) | |
| N004 ( 5, 5) [000003] -----+----- * JTRUE void $VN.Void | |
| N003 ( 3, 3) [000002] J----+-N--- \--* GT int $140 | |
| N001 ( 1, 1) [000000] -----+----- +--* LCL_VAR int V01 arg1 u:1 $c0 | |
| N002 ( 1, 1) [000001] -----+----- \--* CNS_INT int 1 $41 | |
| SSA MEM: ByrefExposed, GcHeap = m:1 | |
| ------------ BB02 [0001] [004..008) -> BB04(1),BB03(0) (cond), preds={BB01} succs={BB03,BB04} | |
| SSA MEM: ByrefExposed, GcHeap = m:1 | |
| ***** BB02 [0001] | |
| STMT00003 ( 0x004[E-] ... 0x006 ) | |
| N004 ( 5, 5) [000021] -----+----- * JTRUE void $VN.Void | |
| N003 ( 3, 3) [000020] J----+-N--- \--* GE int $141 | |
| N001 ( 1, 1) [000018] -----+----- +--* LCL_VAR int V01 arg1 u:1 $c0 | |
| N002 ( 1, 1) [000019] -----+----- \--* CNS_INT int 0 $40 | |
| SSA MEM: ByrefExposed, GcHeap = m:1 | |
| ------------ BB03 [0002] [008..013) (throw), preds={BB01,BB02} succs={} | |
| SSA MEM: ByrefExposed, GcHeap = m:1 | |
| ***** BB03 [0002] | |
| STMT00001 ( 0x008[E-] ... 0x00E ) | |
| N007 ( 43, 31) [000006] -ACXG+----- * CALL void Program.EntryPoint:ThrowOutOfRangeException[int](System.String,int) $VN.Void | |
| N004 ( 22, 21) [000025] DAC-G+----- arg0 setup +--* STORE_LCL_VAR ref V07 tmp5 d:2 $VN.Void | |
| N003 ( 18, 18) [000024] --C-G+----- | \--* CALL help ref CORINFO_HELP_STRCNS $2c2 | |
| N001 ( 1, 1) [000023] -----+----- arg0 rcx | +--* CNS_INT int 1 $41 | |
| N002 ( 3, 10) [000022] H----+----- arg1 rdx | \--* CNS_INT(h) long 0x7ff7f1188938 scope $340 | |
| N005 ( 3, 2) [000026] -----+----- arg0 rcx +--* LCL_VAR ref V07 tmp5 u:2 (last use) $2c2 | |
| N006 ( 1, 1) [000005] -----+----- arg1 rdx \--* LCL_VAR int V01 arg1 u:1 (last use) $c0 | |
| SSA MEM: ByrefExposed, GcHeap = m:2 | |
| ------------ BB04 [0003] [013..022) (return), preds={BB02} succs={} | |
| SSA MEM: ByrefExposed, GcHeap = m:1 | |
| ***** BB04 [0003] | |
| STMT00002 ( 0x013[E-] ... 0x021 ) | |
| N011 ( 7, 7) [000017] -A-XG+----- * RETURN float $2c1 | |
| N010 ( 6, 6) [000016] -A-XG+----- \--* IND float <l:$301, c:$300> | |
| N009 ( 5, 8) [000015] -A---+-N--- \--* ADD long $183 | |
| N004 ( 2, 4) [000030] -A---+----- +--* COMMA long $180 | |
| N002 ( 1, 3) [000027] DA---+----- | +--* STORE_LCL_VAR long V08 tmp6 d:1 $VN.Void | |
| N001 ( 1, 1) [000008] -----+----- | | \--* LCL_VAR byref V00 arg0 u:1 (last use) $80 | |
| N003 ( 1, 1) [000028] -----+----- | \--* LCL_VAR long V08 tmp6 u:1 (last use) $180 | |
| N008 ( 3, 4) [000014] -----+-N--- \--* LSH long $182 | |
| N006 ( 2, 3) [000011] -----+----- +--* CAST long <- int $181 | |
| N005 ( 1, 1) [000010] -----+----- | \--* LCL_VAR int V01 arg1 u:1 (last use) $c0 | |
| N007 ( 1, 1) [000013] -----+----- \--* CNS_INT long 2 $1c0 | |
| SSA MEM: ByrefExposed, GcHeap = m:1 | |
| ------------------------------------------------------------------------------------------------------------------- | |
| *************** In fgDebugCheckBBlist | |
| [info] HasGlobalUse overestimated for V00.1 | |
| SSA checks completed successfully | |
| Checking Profile Weights (flags:0x1c) | |
| Profile is self-consistent (4 profiled blocks, 0 unprofiled) | |
| *************** 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 BB02 | |
| curSsaName stack: { [000000]:V01/1 } | |
| Copy Assertion for BB04 | |
| curSsaName stack: { [000000]:V01/1 } | |
| Live vars after [000008]: {V00 V01} -{V00} => {V01} | |
| orig [000008] copy [000000] VNs proved equivalent | |
| Live vars after [000027]: {V01} +{V08} => {V01 V08} | |
| Live vars after [000028]: {V01 V08} -{V08} => {V01} | |
| orig [000028] copy [000008] VNs proved equivalent | |
| orig [000028] copy [000000] VNs proved equivalent | |
| Live vars after [000010]: {V01} -{V01} => {} | |
| orig [000010] copy [000008] VNs proved equivalent | |
| orig [000010] copy [000027] VNs proved equivalent | |
| Copy Assertion for BB03 | |
| curSsaName stack: { [000008]:V00/1 [000000]:V01/1 } | |
| Live vars after [000025]: {V01} +{V07} => {V01 V07} | |
| Live vars after [000026]: {V01 V07} -{V07} => {V01} | |
| orig [000026] copy [000008] VNs proved equivalent | |
| orig [000026] copy [000000] VNs proved equivalent | |
| Live vars after [000005]: {V01} -{V01} => {} | |
| orig [000005] copy [000008] VNs proved equivalent | |
| orig [000005] copy [000025] VNs proved equivalent | |
| *************** Finishing PHASE VN based copy prop [no changes] | |
| *************** Starting PHASE Redundant branch opts | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BBnum BBid ref try hnd preds weight IBC [IL range] [jump] [EH region] [flags] | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BB01 [0000] 1 1 2 [000..004)-> BB03(0),BB02(1) ( cond ) i IBC | |
| BB02 [0001] 1 BB01 1 2 [004..008)-> BB04(1),BB03(0) ( cond ) i IBC | |
| BB03 [0002] 2 BB01,BB02 0 0 [008..013) (throw ) i IBC rare hascall gcsafe | |
| BB04 [0003] 1 BB02 1 2 [013..022) (return) i IBC | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| --- Trying RBO in BB02 --- | |
| Relop [000020] BB02 value unknown, trying inference | |
| Dominator BB01 of BB02 can infer value of dominated relop | |
| N003 ( 3, 3) [000002] J----+-N--- * GT int $140 | |
| N001 ( 1, 1) [000000] -----+----- +--* LCL_VAR int V01 arg1 u:1 $c0 | |
| N002 ( 1, 1) [000001] -----+----- \--* CNS_INT int 1 $41 | |
| Redundant compare; current relop: | |
| N003 ( 3, 3) [000020] J----+-N--- * GE int $141 | |
| N001 ( 1, 1) [000018] -----+----- +--* LCL_VAR int V01 arg1 u:1 $c0 | |
| N002 ( 1, 1) [000019] -----+----- \--* CNS_INT int 0 $40 | |
| inference failed -- will keep looking higher | |
| No usable PhiDef VNs | |
| --- Trying RBO in BB01 --- | |
| *************** Finishing PHASE Redundant branch opts [no changes] | |
| *************** Starting PHASE Optimize Valnum CSEs | |
| CONST CSE is disabled | |
| Standard CSE Heuristic | |
| Standard CSE Heuristic | |
| *************** Finishing PHASE Optimize Valnum CSEs | |
| Trees after Optimize Valnum CSEs | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BBnum BBid ref try hnd preds weight IBC [IL range] [jump] [EH region] [flags] | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BB01 [0000] 1 1 2 [000..004)-> BB03(0),BB02(1) ( cond ) i IBC | |
| BB02 [0001] 1 BB01 1 2 [004..008)-> BB04(1),BB03(0) ( cond ) i IBC | |
| BB03 [0002] 2 BB01,BB02 0 0 [008..013) (throw ) i IBC rare hascall gcsafe | |
| BB04 [0003] 1 BB02 1 2 [013..022) (return) i IBC | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| ------------ BB01 [0000] [000..004) -> BB03(0),BB02(1) (cond), preds={} succs={BB02,BB03} | |
| ***** BB01 [0000] | |
| STMT00000 ( 0x000[E-] ... 0x002 ) | |
| N004 ( 5, 5) [000003] -----+----- * JTRUE void $VN.Void | |
| N003 ( 3, 3) [000002] J----+-N--- \--* GT int $140 | |
| N001 ( 1, 1) [000000] -----+----- +--* LCL_VAR int V01 arg1 u:1 $c0 | |
| N002 ( 1, 1) [000001] -----+----- \--* CNS_INT int 1 $41 | |
| ------------ BB02 [0001] [004..008) -> BB04(1),BB03(0) (cond), preds={BB01} succs={BB03,BB04} | |
| ***** BB02 [0001] | |
| STMT00003 ( 0x004[E-] ... 0x006 ) | |
| N004 ( 5, 5) [000021] -----+----- * JTRUE void $VN.Void | |
| N003 ( 3, 3) [000020] J----+-N--- \--* GE int $141 | |
| N001 ( 1, 1) [000018] -----+----- +--* LCL_VAR int V01 arg1 u:1 $c0 | |
| N002 ( 1, 1) [000019] -----+----- \--* CNS_INT int 0 $40 | |
| ------------ BB03 [0002] [008..013) (throw), preds={BB01,BB02} succs={} | |
| ***** BB03 [0002] | |
| STMT00001 ( 0x008[E-] ... 0x00E ) | |
| N007 ( 43, 31) [000006] -ACXG+----- * CALL void Program.EntryPoint:ThrowOutOfRangeException[int](System.String,int) $VN.Void | |
| N004 ( 22, 21) [000025] DAC-G+----- arg0 setup +--* STORE_LCL_VAR ref V07 tmp5 d:2 $VN.Void | |
| N003 ( 18, 18) [000024] --C-G+----- | \--* CALL help ref CORINFO_HELP_STRCNS $2c2 | |
| N001 ( 1, 1) [000023] -----+----- arg0 rcx | +--* CNS_INT int 1 $41 | |
| N002 ( 3, 10) [000022] H----+----- arg1 rdx | \--* CNS_INT(h) long 0x7ff7f1188938 scope $340 | |
| N005 ( 3, 2) [000026] -----+----- arg0 rcx +--* LCL_VAR ref V07 tmp5 u:2 (last use) $2c2 | |
| N006 ( 1, 1) [000005] -----+----- arg1 rdx \--* LCL_VAR int V01 arg1 u:1 (last use) $c0 | |
| ------------ BB04 [0003] [013..022) (return), preds={BB02} succs={} | |
| ***** BB04 [0003] | |
| STMT00002 ( 0x013[E-] ... 0x021 ) | |
| N011 ( 7, 7) [000017] -A-XG+----- * RETURN float $2c1 | |
| N010 ( 6, 6) [000016] -A-XG+----- \--* IND float <l:$301, c:$300> | |
| N009 ( 5, 8) [000015] -A---+-N--- \--* ADD long $183 | |
| N004 ( 2, 4) [000030] -A---+----- +--* COMMA long $180 | |
| N002 ( 1, 3) [000027] DA---+----- | +--* STORE_LCL_VAR long V08 tmp6 d:1 $VN.Void | |
| N001 ( 1, 1) [000008] -----+----- | | \--* LCL_VAR byref V00 arg0 u:1 (last use) $80 | |
| N003 ( 1, 1) [000028] -----+----- | \--* LCL_VAR long V08 tmp6 u:1 (last use) $180 | |
| N008 ( 3, 4) [000014] -----+-N--- \--* LSH long $182 | |
| N006 ( 2, 3) [000011] -----+----- +--* CAST long <- int $181 | |
| N005 ( 1, 1) [000010] -----+----- | \--* LCL_VAR int V01 arg1 u:1 (last use) $c0 | |
| N007 ( 1, 1) [000013] -----+----- \--* CNS_INT long 2 $1c0 | |
| ------------------------------------------------------------------------------------------------------------------- | |
| *************** In fgDebugCheckBBlist | |
| Checking Profile Weights (flags:0x1c) | |
| Profile is self-consistent (4 profiled blocks, 0 unprofiled) | |
| *************** Starting PHASE Assertion prop | |
| GenTreeNode creates assertion: | |
| N004 ( 5, 5) [000003] -----+----- * JTRUE void $VN.Void | |
| In BB01 New Global Constant Assertion: ($140,$40) Const_Loop_Bnd {GT($c0, $41)} is not {IntCns 0}, index = #01 | |
| GenTreeNode creates assertion: | |
| N004 ( 5, 5) [000003] -----+----- * JTRUE void $VN.Void | |
| In BB01 New Global Constant Assertion: ($140,$40) Const_Loop_Bnd {GT($c0, $41)} is {IntCns 0}, index = #02 | |
| GenTreeNode creates assertion: | |
| N004 ( 5, 5) [000021] -----+----- * JTRUE void $VN.Void | |
| In BB02 New Global Constant Assertion: ($141,$40) Const_Loop_Bnd {GE($c0, $40)} is not {IntCns 0}, index = #03 | |
| GenTreeNode creates assertion: | |
| N004 ( 5, 5) [000021] -----+----- * JTRUE void $VN.Void | |
| In BB02 New Global Constant Assertion: ($141,$40) Const_Loop_Bnd {GE($c0, $40)} is {IntCns 0}, index = #04 | |
| BB01 valueGen = #02 => BB03 valueGen = #01 | |
| BB02 valueGen = #04 => BB04 valueGen = #03 | |
| BB03 valueGen = #NA | |
| BB04 valueGen = #NA | |
| BB01: | |
| in = #NA | |
| out = #02 | |
| BB03 = #01 | |
| BB02: | |
| in = #02 | |
| out = #02 #04 | |
| BB04 = #02 #03 | |
| BB03: | |
| in = #NA | |
| out = #NA | |
| BB04: | |
| in = #02 #03 | |
| out = #02 #03 | |
| Propagating #NA for BB01, stmt STMT00000, tree [000000], tree -> #NA | |
| Propagating #NA for BB01, stmt STMT00000, tree [000001], tree -> #NA | |
| Propagating #NA for BB01, stmt STMT00000, tree [000002], tree -> #NA | |
| Propagating #NA for BB01, stmt STMT00000, tree [000003], tree -> #01 | |
| Propagating #02 for BB02, stmt STMT00003, tree [000018], tree -> #NA | |
| Propagating #02 for BB02, stmt STMT00003, tree [000019], tree -> #NA | |
| Propagating #02 for BB02, stmt STMT00003, tree [000020], tree -> #NA | |
| Constant Assertion: ($140,$40) Const_Loop_Bnd {GT($c0, $41)} is {IntCns 0}, index = #02 | |
| Tightening pRange: [<Unknown, Unknown>] with assertedRange: [<Unknown, 1>] into [<Unknown, 1>] | |
| Propagating #02 for BB02, stmt STMT00003, tree [000021], tree -> #03 | |
| Propagating #NA for BB03, stmt STMT00001, tree [000023], tree -> #NA | |
| Propagating #NA for BB03, stmt STMT00001, tree [000022], tree -> #NA | |
| Propagating #NA for BB03, stmt STMT00001, tree [000024], tree -> #NA | |
| Propagating #NA for BB03, stmt STMT00001, tree [000025], tree -> #NA | |
| Propagating #NA for BB03, stmt STMT00001, tree [000026], tree -> #NA | |
| Propagating #NA for BB03, stmt STMT00001, tree [000005], tree -> #NA | |
| Propagating #NA for BB03, stmt STMT00001, tree [000006], tree -> #NA | |
| Propagating #02 #03 for BB04, stmt STMT00002, tree [000008], tree -> #NA | |
| Propagating #02 #03 for BB04, stmt STMT00002, tree [000027], tree -> #NA | |
| Propagating #02 #03 for BB04, stmt STMT00002, tree [000028], tree -> #NA | |
| Propagating #02 #03 for BB04, stmt STMT00002, tree [000030], tree -> #NA | |
| Propagating #02 #03 for BB04, stmt STMT00002, tree [000010], tree -> #NA | |
| Propagating #02 #03 for BB04, stmt STMT00002, tree [000011], tree -> #NA | |
| Constant Assertion: ($140,$40) Const_Loop_Bnd {GT($c0, $41)} is {IntCns 0}, index = #02 | |
| Tightening pRange: [<Unknown, Unknown>] with assertedRange: [<Unknown, 1>] into [<Unknown, 1>] | |
| Constant Assertion: ($141,$40) Const_Loop_Bnd {GE($c0, $40)} is not {IntCns 0}, index = #03 | |
| Tightening pRange: [<Unknown, 1>] with assertedRange: [<0, 1>] into [<0, 1>] | |
| Propagating #02 #03 for BB04, stmt STMT00002, tree [000013], tree -> #NA | |
| Propagating #02 #03 for BB04, stmt STMT00002, tree [000014], tree -> #NA | |
| Propagating #02 #03 for BB04, stmt STMT00002, tree [000015], tree -> #NA | |
| Propagating #02 #03 for BB04, stmt STMT00002, tree [000016], tree -> #NA | |
| Propagating #02 #03 for BB04, stmt STMT00002, tree [000017], tree -> #NA | |
| *************** Finishing PHASE Assertion prop [no changes] | |
| *************** Starting PHASE Optimize index checks | |
| *************** Finishing PHASE Optimize index checks [no changes] | |
| *************** Starting PHASE Optimize Induction Variables | |
| *************** In optInductionVariables() | |
| Skipping since this method has no natural loops | |
| *************** Finishing PHASE Optimize Induction Variables [no changes] | |
| *************** Starting PHASE VN-based dead store removal | |
| Considering [000025] for removal... | |
| -- no; last def not in the same block | |
| *************** Finishing PHASE VN-based dead store removal [no changes] | |
| *************** Starting PHASE Clone blocks with range checks | |
| Current method has no bounds checks | |
| *************** Finishing PHASE Clone blocks with range checks [no changes] | |
| *************** Starting PHASE VN based intrinsic expansion | |
| *************** Finishing PHASE VN based intrinsic expansion [no changes] | |
| Removing PHI functions | |
| *************** Starting PHASE Stress gtSplitTree | |
| *************** Finishing PHASE Stress gtSplitTree [no changes] | |
| *************** Starting PHASE Remove empty finally 3 | |
| No EH in this method, nothing to remove. | |
| *************** Finishing PHASE Remove empty finally 3 [no changes] | |
| *************** Starting PHASE Remove empty try 3 | |
| *************** In fgRemoveEmptyTry() | |
| No EH in this method, nothing to remove. | |
| *************** Finishing PHASE Remove empty try 3 [no changes] | |
| *************** Starting PHASE Remove empty try-catch-fault 3 | |
| *************** In fgRemoveEmptyTryCatchOrTryFault() | |
| No EH in this method, nothing to remove. | |
| *************** Finishing PHASE Remove empty try-catch-fault 3 [no changes] | |
| *************** Starting PHASE Create EH funclets | |
| *************** Finishing PHASE Create EH funclets [no changes] | |
| *************** Starting PHASE Expand casts | |
| *************** Finishing PHASE Expand casts [no changes] | |
| *************** Starting PHASE Expand runtime lookups | |
| *************** Finishing PHASE Expand runtime lookups [no changes] | |
| *************** Starting PHASE Expand static init | |
| Nothing to expand. | |
| *************** Finishing PHASE Expand static init [no changes] | |
| *************** Starting PHASE Expand TLS access | |
| Nothing to expand. | |
| *************** Finishing PHASE Expand TLS access [no changes] | |
| *************** Starting PHASE Expand stack array allocation | |
| *************** Finishing PHASE Expand stack array allocation [no changes] | |
| *************** Starting PHASE Insert GC Polls | |
| *************** Finishing PHASE Insert GC Polls [no changes] | |
| *************** Starting PHASE Create throw helper blocks | |
| *************** Finishing PHASE Create throw helper blocks [no changes] | |
| *************** Starting PHASE Optimize bools | |
| *************** In optOptimizeBools() | |
| setting likelihood of BB01 -> BB04 to 1 | |
| setting likelihood of BB01 -> BB03 from 0 to 0 | |
| fgRemoveBlock BB02, unreachable=true | |
| Removing unreachable BB02 | |
| removing useless STMT00003 ( 0x004[E-] ... 0x006 ) | |
| N004 ( 5, 5) [000021] -----+----- * JTRUE void $VN.Void | |
| N003 ( 3, 3) [000020] J----+-N--- \--* GE int $141 | |
| N001 ( 1, 1) [000018] -----+----- +--* LCL_VAR int V01 arg1 u:1 $c0 | |
| N002 ( 1, 1) [000019] -----+----- \--* CNS_INT int 0 $40 | |
| from BB02 | |
| BB02 becomes empty | |
| optimized 1 BBJ_COND cases in 2 passes | |
| *************** Finishing PHASE Optimize bools | |
| Trees after Optimize bools | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BBnum BBid ref try hnd preds weight IBC [IL range] [jump] [EH region] [flags] | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BB01 [0000] 1 1 2 [000..004)-> BB04(1),BB03(0) ( cond ) i IBC | |
| BB03 [0002] 1 BB01 0 0 [008..013) (throw ) i IBC rare hascall gcsafe | |
| BB04 [0003] 1 BB01 1 2 [013..022) (return) i IBC | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| ------------ BB01 [0000] [000..004) -> BB04(1),BB03(0) (cond), preds={} succs={BB03,BB04} | |
| ***** BB01 [0000] | |
| STMT00000 ( 0x000[E-] ... 0x002 ) | |
| N004 ( 5, 5) [000003] -----+----- * JTRUE void $VN.Void | |
| N003 ( 3, 3) [000002] J----+-N-U- \--* LE int | |
| N001 ( 1, 1) [000000] -----+----- +--* LCL_VAR int V01 arg1 u:1 $c0 | |
| N002 ( 1, 1) [000001] -----+----- \--* CNS_INT int 1 | |
| ------------ BB03 [0002] [008..013) (throw), preds={BB01} succs={} | |
| ***** BB03 [0002] | |
| STMT00001 ( 0x008[E-] ... 0x00E ) | |
| N007 ( 43, 31) [000006] -ACXG+----- * CALL void Program.EntryPoint:ThrowOutOfRangeException[int](System.String,int) $VN.Void | |
| N004 ( 22, 21) [000025] DAC-G+----- arg0 setup +--* STORE_LCL_VAR ref V07 tmp5 d:2 $VN.Void | |
| N003 ( 18, 18) [000024] --C-G+----- | \--* CALL help ref CORINFO_HELP_STRCNS $2c2 | |
| N001 ( 1, 1) [000023] -----+----- arg0 rcx | +--* CNS_INT int 1 $41 | |
| N002 ( 3, 10) [000022] H----+----- arg1 rdx | \--* CNS_INT(h) long 0x7ff7f1188938 scope $340 | |
| N005 ( 3, 2) [000026] -----+----- arg0 rcx +--* LCL_VAR ref V07 tmp5 u:2 (last use) $2c2 | |
| N006 ( 1, 1) [000005] -----+----- arg1 rdx \--* LCL_VAR int V01 arg1 u:1 (last use) $c0 | |
| ------------ BB04 [0003] [013..022) (return), preds={BB01} succs={} | |
| ***** BB04 [0003] | |
| STMT00002 ( 0x013[E-] ... 0x021 ) | |
| N011 ( 7, 7) [000017] -A-XG+----- * RETURN float $2c1 | |
| N010 ( 6, 6) [000016] -A-XG+----- \--* IND float <l:$301, c:$300> | |
| N009 ( 5, 8) [000015] -A---+-N--- \--* ADD long $183 | |
| N004 ( 2, 4) [000030] -A---+----- +--* COMMA long $180 | |
| N002 ( 1, 3) [000027] DA---+----- | +--* STORE_LCL_VAR long V08 tmp6 d:1 $VN.Void | |
| N001 ( 1, 1) [000008] -----+----- | | \--* LCL_VAR byref V00 arg0 u:1 (last use) $80 | |
| N003 ( 1, 1) [000028] -----+----- | \--* LCL_VAR long V08 tmp6 u:1 (last use) $180 | |
| N008 ( 3, 4) [000014] -----+-N--- \--* LSH long $182 | |
| N006 ( 2, 3) [000011] -----+---U- +--* CAST long <- uint $181 | |
| N005 ( 1, 1) [000010] -----+----- | \--* LCL_VAR int V01 arg1 u:1 (last use) $c0 | |
| N007 ( 1, 1) [000013] -----+----- \--* CNS_INT long 2 $1c0 | |
| ------------------------------------------------------------------------------------------------------------------- | |
| *************** In fgDebugCheckBBlist | |
| Checking Profile Weights (flags:0x1c) | |
| Profile is self-consistent (3 profiled blocks, 0 unprofiled) | |
| *************** Starting PHASE If conversion | |
| *************** Finishing PHASE If conversion [no changes] | |
| *************** Starting PHASE Recognize Switch | |
| *************** Finishing PHASE Recognize Switch [no changes] | |
| *************** Starting PHASE Optimize pre-layout | |
| *************** In fgUpdateFlowGraph() | |
| Before updating the flow graph: | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BBnum BBid ref try hnd preds weight IBC [IL range] [jump] [EH region] [flags] | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BB01 [0000] 1 1 2 [000..004)-> BB04(1),BB03(0) ( cond ) i IBC | |
| BB03 [0002] 1 BB01 0 0 [008..013) (throw ) i IBC rare hascall gcsafe | |
| BB04 [0003] 1 BB01 1 2 [013..022) (return) i IBC | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| *************** In fgDebugCheckBBlist | |
| *************** Finishing PHASE Optimize pre-layout [no changes] | |
| *************** Starting PHASE Repair profile pre-layout | |
| Profile is already consistent. | |
| *************** Finishing PHASE Repair profile pre-layout [no changes] | |
| *************** Starting PHASE Rationalize IR | |
| *************** Finishing PHASE Rationalize IR | |
| Trees after Rationalize IR | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BBnum BBid ref try hnd preds weight IBC [IL range] [jump] [EH region] [flags] | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BB01 [0000] 1 1 2 [000..004)-> BB04(1),BB03(0) ( cond ) i LIR IBC | |
| BB03 [0002] 1 BB01 0 0 [008..013) (throw ) i LIR IBC rare hascall gcsafe | |
| BB04 [0003] 1 BB01 1 2 [013..022) (return) i LIR IBC | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| ------------ BB01 [0000] [000..004) -> BB04(1),BB03(0) (cond), preds={} succs={BB03,BB04} | |
| [000031] ----------- IL_OFFSET void INLRT @ 0x000[E-] | |
| N001 ( 1, 1) [000000] -----+----- t0 = LCL_VAR int V01 arg1 u:1 $c0 | |
| N002 ( 1, 1) [000001] -----+----- t1 = CNS_INT int 1 | |
| /--* t0 int | |
| +--* t1 int | |
| N003 ( 3, 3) [000002] J----+-N-U- t2 = * LE int | |
| /--* t2 int | |
| N004 ( 5, 5) [000003] -----+----- * JTRUE void $VN.Void | |
| ------------ BB03 [0002] [008..013) (throw), preds={BB01} succs={} | |
| [000032] ----------- IL_OFFSET void INLRT @ 0x008[E-] | |
| N001 ( 1, 1) [000023] -----+----- t23 = CNS_INT int 1 $41 | |
| N002 ( 3, 10) [000022] H----+----- t22 = CNS_INT(h) long 0x7ff7f1188938 scope $340 | |
| /--* t23 int arg0 rcx | |
| +--* t22 long arg1 rdx | |
| N003 ( 18, 18) [000024] --C-G+----- t24 = * CALL help ref CORINFO_HELP_STRCNS $2c2 | |
| /--* t24 ref | |
| N004 ( 22, 21) [000025] DAC-G+----- * STORE_LCL_VAR ref V07 tmp5 d:2 $VN.Void | |
| N005 ( 3, 2) [000026] -----+----- t26 = LCL_VAR ref V07 tmp5 u:2 (last use) $2c2 | |
| N006 ( 1, 1) [000005] -----+----- t5 = LCL_VAR int V01 arg1 u:1 (last use) $c0 | |
| /--* t26 ref arg0 rcx | |
| +--* t5 int arg1 rdx | |
| N007 ( 43, 31) [000006] -ACXG+----- * CALL void Program.EntryPoint:ThrowOutOfRangeException[int](System.String,int) $VN.Void | |
| ------------ BB04 [0003] [013..022) (return), preds={BB01} succs={} | |
| [000033] ----------- IL_OFFSET void INLRT @ 0x013[E-] | |
| N001 ( 1, 1) [000008] -----+----- t8 = LCL_VAR byref V00 arg0 u:1 (last use) $80 | |
| /--* t8 byref | |
| N002 ( 1, 3) [000027] DA---+----- * STORE_LCL_VAR long V08 tmp6 d:1 $VN.Void | |
| N003 ( 1, 1) [000028] -----+----- t28 = LCL_VAR long V08 tmp6 u:1 (last use) $180 | |
| N005 ( 1, 1) [000010] -----+----- t10 = LCL_VAR int V01 arg1 u:1 (last use) $c0 | |
| /--* t10 int | |
| N006 ( 2, 3) [000011] -----+---U- t11 = * CAST long <- uint $181 | |
| N007 ( 1, 1) [000013] -----+----- t13 = CNS_INT long 2 $1c0 | |
| /--* t11 long | |
| +--* t13 long | |
| N008 ( 3, 4) [000014] -----+-N--- t14 = * LSH long $182 | |
| /--* t28 long | |
| +--* t14 long | |
| N009 ( 5, 8) [000015] -A---+-N--- t15 = * ADD long $183 | |
| /--* t15 long | |
| N010 ( 6, 6) [000016] -A-XG+----- t16 = * IND float <l:$301, c:$300> | |
| /--* t16 float | |
| N011 ( 7, 7) [000017] -A-XG+----- * RETURN float $2c1 | |
| ------------------------------------------------------------------------------------------------------------------- | |
| *************** In fgDebugCheckBBlist | |
| Checking Profile Weights (flags:0x1c) | |
| Profile is self-consistent (3 profiled blocks, 0 unprofiled) | |
| *************** Starting PHASE Lowering nodeinfo | |
| 0 parameter register to local mappings | |
| Lowering JTRUE: | |
| N001 ( 1, 1) [000000] -----+----- t0 = LCL_VAR int V01 arg1 u:1 $c0 | |
| N002 ( 1, 1) [000001] -c---+----- t1 = CNS_INT int 1 | |
| /--* t0 int | |
| +--* t1 int | |
| N003 ( 3, 3) [000002] J----+-N-U- t2 = * LE int | |
| /--* t2 int | |
| N004 ( 5, 5) [000003] -----+----- * JTRUE void $VN.Void | |
| Lowering condition: | |
| N001 ( 1, 1) [000000] -----+----- t0 = LCL_VAR int V01 arg1 u:1 $c0 | |
| N002 ( 1, 1) [000001] -c---+----- t1 = CNS_INT int 1 | |
| /--* t0 int | |
| +--* t1 int | |
| N003 ( 3, 3) [000002] J----+-N-U- t2 = * LE int | |
| Lowering JTRUE Result: | |
| N001 ( 1, 1) [000000] -----+----- t0 = LCL_VAR int V01 arg1 u:1 $c0 | |
| N002 ( 1, 1) [000001] -c---+----- t1 = CNS_INT int 1 | |
| /--* t0 int | |
| +--* t1 int | |
| N003 ( 3, 3) [000002] -----+-N-U- * CMP void | |
| N004 ( 5, 5) [000003] -----+----- JCC void cond=ULE | |
| lowering call (before): | |
| N001 ( 1, 1) [000023] -----+----- t23 = CNS_INT int 1 $41 | |
| N002 ( 3, 10) [000022] H----+----- t22 = CNS_INT(h) long 0x7ff7f1188938 scope $340 | |
| /--* t23 int arg0 rcx | |
| +--* t22 long arg1 rdx | |
| N003 ( 18, 18) [000024] --C-G+----- t24 = * CALL help ref CORINFO_HELP_STRCNS $2c2 | |
| Args: | |
| ====== | |
| Late args: | |
| ====== | |
| Lowering arg: | |
| N001 ( 1, 1) [000023] -----+----- t23 = CNS_INT int 1 $41 | |
| Passed in [00..04) reg rcx | |
| N001 ( 1, 1) [000023] -----+----- t23 = CNS_INT int 1 $41 | |
| /--* t23 int | |
| [000034] ----------- t34 = * PUTARG_REG int REG rcx | |
| Lowering arg: | |
| N002 ( 3, 10) [000022] H----+----- t22 = CNS_INT(h) long 0x7ff7f1188938 scope $340 | |
| Passed in [00..08) reg rdx | |
| N002 ( 3, 10) [000022] H----+----- t22 = CNS_INT(h) long 0x7ff7f1188938 scope $340 | |
| /--* t22 long | |
| [000035] ----------- t35 = * PUTARG_REG long REG rdx | |
| results of lowering call: | |
| N001 ( 3, 10) [000036] H---------- t36 = CNS_INT(h) long 0x7ff7f0e0d9c8 ftn | |
| /--* t36 long | |
| N002 ( 5, 12) [000037] n---G------ t37 = * IND long | |
| Bumping outgoing arg space size from 0 to 32 for [000024] | |
| lowering call (after): | |
| N001 ( 1, 1) [000023] -----+----- t23 = CNS_INT int 1 $41 | |
| /--* t23 int | |
| [000034] ----------- t34 = * PUTARG_REG int REG rcx | |
| N002 ( 3, 10) [000022] H----+----- t22 = CNS_INT(h) long 0x7ff7f1188938 scope $340 | |
| /--* t22 long | |
| [000035] ----------- t35 = * PUTARG_REG long REG rdx | |
| N001 ( 3, 10) [000036] Hc--------- t36 = CNS_INT(h) long 0x7ff7f0e0d9c8 ftn | |
| /--* t36 long | |
| N002 ( 5, 12) [000037] nc--G------ t37 = * IND long REG NA | |
| /--* t34 int arg0 rcx | |
| +--* t35 long arg1 rdx | |
| +--* t37 long control expr | |
| N003 ( 18, 18) [000024] --C-G+----- t24 = * CALL help ref CORINFO_HELP_STRCNS $2c2 | |
| lowering store lcl var/field (before): | |
| N001 ( 1, 1) [000023] -----+----- t23 = CNS_INT int 1 $41 | |
| /--* t23 int | |
| [000034] ----------- t34 = * PUTARG_REG int REG rcx | |
| N002 ( 3, 10) [000022] H----+----- t22 = CNS_INT(h) long 0x7ff7f1188938 scope $340 | |
| /--* t22 long | |
| [000035] ----------- t35 = * PUTARG_REG long REG rdx | |
| N001 ( 3, 10) [000036] Hc--------- t36 = CNS_INT(h) long 0x7ff7f0e0d9c8 ftn | |
| /--* t36 long | |
| N002 ( 5, 12) [000037] nc--G------ t37 = * IND long REG NA | |
| /--* t34 int arg0 rcx | |
| +--* t35 long arg1 rdx | |
| +--* t37 long control expr | |
| N003 ( 18, 18) [000024] --C-G+----- t24 = * CALL help ref CORINFO_HELP_STRCNS $2c2 | |
| /--* t24 ref | |
| N004 ( 22, 21) [000025] DAC-G+----- * STORE_LCL_VAR ref V07 tmp5 d:2 $VN.Void | |
| lowering store lcl var/field (after): | |
| N001 ( 1, 1) [000023] -----+----- t23 = CNS_INT int 1 $41 | |
| /--* t23 int | |
| [000034] ----------- t34 = * PUTARG_REG int REG rcx | |
| N002 ( 3, 10) [000022] H----+----- t22 = CNS_INT(h) long 0x7ff7f1188938 scope $340 | |
| /--* t22 long | |
| [000035] ----------- t35 = * PUTARG_REG long REG rdx | |
| N001 ( 3, 10) [000036] Hc--------- t36 = CNS_INT(h) long 0x7ff7f0e0d9c8 ftn | |
| /--* t36 long | |
| N002 ( 5, 12) [000037] nc--G------ t37 = * IND long REG NA | |
| /--* t34 int arg0 rcx | |
| +--* t35 long arg1 rdx | |
| +--* t37 long control expr | |
| N003 ( 18, 18) [000024] --C-G+----- t24 = * CALL help ref CORINFO_HELP_STRCNS $2c2 | |
| /--* t24 ref | |
| N004 ( 22, 21) [000025] DAC-G+----- * STORE_LCL_VAR ref V07 tmp5 d:2 $VN.Void | |
| lowering call (before): | |
| N005 ( 3, 2) [000026] -----+----- t26 = LCL_VAR ref V07 tmp5 u:2 (last use) $2c2 | |
| N006 ( 1, 1) [000005] -----+----- t5 = LCL_VAR int V01 arg1 u:1 (last use) $c0 | |
| /--* t26 ref arg0 rcx | |
| +--* t5 int arg1 rdx | |
| N007 ( 43, 31) [000006] -ACXG+----- * CALL void Program.EntryPoint:ThrowOutOfRangeException[int](System.String,int) $VN.Void | |
| Args: | |
| ====== | |
| Late args: | |
| ====== | |
| Lowering arg: | |
| N005 ( 3, 2) [000026] -----+----- t26 = LCL_VAR ref V07 tmp5 u:2 (last use) $2c2 | |
| Passed in [00..08) reg rcx | |
| N005 ( 3, 2) [000026] -----+----- t26 = LCL_VAR ref V07 tmp5 u:2 (last use) $2c2 | |
| /--* t26 ref | |
| [000038] ----------- t38 = * PUTARG_REG ref REG rcx | |
| Lowering arg: | |
| N006 ( 1, 1) [000005] -----+----- t5 = LCL_VAR int V01 arg1 u:1 (last use) $c0 | |
| Passed in [00..04) reg rdx | |
| N006 ( 1, 1) [000005] -----+----- t5 = LCL_VAR int V01 arg1 u:1 (last use) $c0 | |
| /--* t5 int | |
| [000039] ----------- t39 = * PUTARG_REG int REG rdx | |
| results of lowering call: | |
| N001 ( 3, 10) [000040] H---------- t40 = CNS_INT(h) long 0x7ff7f13342a0 ftn | |
| /--* t40 long | |
| N002 ( 5, 12) [000041] n---G------ t41 = * IND long | |
| lowering call (after): | |
| N005 ( 3, 2) [000026] -----+----- t26 = LCL_VAR ref V07 tmp5 u:2 (last use) $2c2 | |
| /--* t26 ref | |
| [000038] ----------- t38 = * PUTARG_REG ref REG rcx | |
| N006 ( 1, 1) [000005] -----+----- t5 = LCL_VAR int V01 arg1 u:1 (last use) $c0 | |
| /--* t5 int | |
| [000039] ----------- t39 = * PUTARG_REG int REG rdx | |
| N001 ( 3, 10) [000040] Hc--------- t40 = CNS_INT(h) long 0x7ff7f13342a0 ftn | |
| /--* t40 long | |
| N002 ( 5, 12) [000041] nc--G------ t41 = * IND long REG NA | |
| /--* t38 ref arg0 rcx | |
| +--* t39 int arg1 rdx | |
| +--* t41 long control expr | |
| N007 ( 43, 31) [000006] -ACXG+----- * CALL void Program.EntryPoint:ThrowOutOfRangeException[int](System.String,int) $VN.Void | |
| lowering store lcl var/field (before): | |
| N001 ( 1, 1) [000008] -----+----- t8 = LCL_VAR byref V00 arg0 u:1 (last use) $80 | |
| /--* t8 byref | |
| N002 ( 1, 3) [000027] DA---+----- * STORE_LCL_VAR long V08 tmp6 d:1 $VN.Void | |
| lowering store lcl var/field (after): | |
| N001 ( 1, 1) [000008] -----+----- t8 = LCL_VAR byref V00 arg0 u:1 (last use) $80 | |
| /--* t8 byref | |
| N002 ( 1, 3) [000027] DA---+----- * STORE_LCL_VAR long V08 tmp6 d:1 $VN.Void | |
| Addressing mode: | |
| Base | |
| N003 ( 1, 1) [000028] -----+----- * LCL_VAR long V08 tmp6 u:1 (last use) $180 | |
| + Index * 4 + 0 | |
| N006 ( 2, 3) [000011] -----+---U- * CAST long <- uint $181 | |
| Removing unused node: | |
| N008 ( 3, 4) [000014] -----+-N--- * LSH long $182 | |
| Removing unused node: | |
| N007 ( 1, 1) [000013] -c---+----- * CNS_INT long 2 $1c0 | |
| New addressing mode node: | |
| N009 ( 5, 8) [000015] -----+----- * LEA(b+(i*4)+0) long | |
| lowering return node | |
| N011 ( 7, 7) [000017] -A-XG+----- * RETURN float $2c1 | |
| ============ | |
| Lower has completed modifying nodes. | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BBnum BBid ref try hnd preds weight IBC [IL range] [jump] [EH region] [flags] | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BB01 [0000] 1 1 2 [000..004)-> BB04(1),BB03(0) ( cond ) i LIR IBC | |
| BB03 [0002] 1 BB01 0 0 [008..013) (throw ) i LIR IBC rare hascall gcsafe | |
| BB04 [0003] 1 BB01 1 2 [013..022) (return) i LIR IBC | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| ------------ BB01 [0000] [000..004) -> BB04(1),BB03(0) (cond), preds={} succs={BB03,BB04} | |
| [000031] ----------- IL_OFFSET void INLRT @ 0x000[E-] | |
| N001 ( 1, 1) [000000] -----+----- t0 = LCL_VAR int V01 arg1 u:1 $c0 | |
| N002 ( 1, 1) [000001] -c---+----- t1 = CNS_INT int 1 | |
| /--* t0 int | |
| +--* t1 int | |
| N003 ( 3, 3) [000002] -----+-N-U- * CMP void | |
| N004 ( 5, 5) [000003] -----+----- JCC void cond=ULE | |
| ------------ BB03 [0002] [008..013) (throw), preds={BB01} succs={} | |
| [000032] ----------- IL_OFFSET void INLRT @ 0x008[E-] | |
| N001 ( 1, 1) [000023] -----+----- t23 = CNS_INT int 1 $41 | |
| /--* t23 int | |
| [000034] ----------- t34 = * PUTARG_REG int REG rcx | |
| N002 ( 3, 10) [000022] H----+----- t22 = CNS_INT(h) long 0x7ff7f1188938 scope $340 | |
| /--* t22 long | |
| [000035] ----------- t35 = * PUTARG_REG long REG rdx | |
| N001 ( 3, 10) [000036] Hc--------- t36 = CNS_INT(h) long 0x7ff7f0e0d9c8 ftn | |
| /--* t36 long | |
| N002 ( 5, 12) [000037] nc--G------ t37 = * IND long REG NA | |
| /--* t34 int arg0 rcx | |
| +--* t35 long arg1 rdx | |
| +--* t37 long control expr | |
| N003 ( 18, 18) [000024] --C-G+----- t24 = * CALL help ref CORINFO_HELP_STRCNS $2c2 | |
| /--* t24 ref | |
| N004 ( 22, 21) [000025] DAC-G+----- * STORE_LCL_VAR ref V07 tmp5 d:2 $VN.Void | |
| N005 ( 3, 2) [000026] -----+----- t26 = LCL_VAR ref V07 tmp5 u:2 (last use) $2c2 | |
| /--* t26 ref | |
| [000038] ----------- t38 = * PUTARG_REG ref REG rcx | |
| N006 ( 1, 1) [000005] -----+----- t5 = LCL_VAR int V01 arg1 u:1 (last use) $c0 | |
| /--* t5 int | |
| [000039] ----------- t39 = * PUTARG_REG int REG rdx | |
| N001 ( 3, 10) [000040] Hc--------- t40 = CNS_INT(h) long 0x7ff7f13342a0 ftn | |
| /--* t40 long | |
| N002 ( 5, 12) [000041] nc--G------ t41 = * IND long REG NA | |
| /--* t38 ref arg0 rcx | |
| +--* t39 int arg1 rdx | |
| +--* t41 long control expr | |
| N007 ( 43, 31) [000006] -ACXG+----- * CALL void Program.EntryPoint:ThrowOutOfRangeException[int](System.String,int) $VN.Void | |
| ------------ BB04 [0003] [013..022) (return), preds={BB01} succs={} | |
| [000033] ----------- IL_OFFSET void INLRT @ 0x013[E-] | |
| N001 ( 1, 1) [000008] -----+----- t8 = LCL_VAR byref V00 arg0 u:1 (last use) $80 | |
| /--* t8 byref | |
| N002 ( 1, 3) [000027] DA---+----- * STORE_LCL_VAR long V08 tmp6 d:1 $VN.Void | |
| N003 ( 1, 1) [000028] -----+----- t28 = LCL_VAR long V08 tmp6 u:1 (last use) $180 | |
| N005 ( 1, 1) [000010] -----+----- t10 = LCL_VAR int V01 arg1 u:1 (last use) $c0 | |
| /--* t10 int | |
| N006 ( 2, 3) [000011] -----+---U- t11 = * CAST long <- uint $181 | |
| /--* t28 long | |
| +--* t11 long | |
| N009 ( 5, 8) [000015] -c---+----- t15 = * LEA(b+(i*4)+0) long | |
| /--* t15 long | |
| N010 ( 6, 6) [000016] -A-XG+----- t16 = * IND float <l:$301, c:$300> | |
| /--* t16 float | |
| N011 ( 7, 7) [000017] -A-XG+----- * RETURN float $2c1 | |
| ------------------------------------------------------------------------------------------------------------------- | |
| *** lvaComputeRefCounts *** | |
| *** lvaComputeRefCounts -- explicit counts *** | |
| New refCnts for V01: refCnt = 1, refCntWtd = 1 | |
| New refCnts for V07: refCnt = 1, refCntWtd = 0 | |
| New refCnts for V07: refCnt = 2, refCntWtd = 0 | |
| New refCnts for V01: refCnt = 2, refCntWtd = 1 | |
| New refCnts for V00: refCnt = 1, refCntWtd = 2 | |
| New refCnts for V08: refCnt = 1, refCntWtd = 2 | |
| New refCnts for V08: refCnt = 2, refCntWtd = 4 | |
| New refCnts for V01: refCnt = 3, refCntWtd = 2 | |
| *** lvaComputeRefCounts -- implicit counts *** | |
| New refCnts for V00: refCnt = 2, refCntWtd = 4 | |
| New refCnts for V00: refCnt = 3, refCntWtd = 6 | |
| New refCnts for V01: refCnt = 4, refCntWtd = 3 | |
| New refCnts for V01: refCnt = 5, refCntWtd = 4 | |
| *************** In fgLocalVarLiveness() | |
| ; Initial local variable assignments | |
| ; | |
| ; V00 arg0 byref ld-addr-op single-def | |
| ; V01 arg1 int single-def | |
| ; V02 OutArgs struct <0> do-not-enreg[XS] addr-exposed "OutgoingArgSpace" <Empty> | |
| ; V03 tmp1 float do-not-enreg[] "field V00.X (fldOffset=0x0)" P-DEP | |
| ; V04 tmp2 float do-not-enreg[] "field V00.Y (fldOffset=0x4)" P-DEP | |
| ; V05 tmp3 float do-not-enreg[] "field V00.Z (fldOffset=0x8)" P-DEP | |
| ; V06 tmp4 struct <Program.EntryPoint+Vector2, 12> do-not-enreg[S] "Promoted implicit byref" <Program.EntryPoint+Vector2> | |
| ; V07 tmp5 ref single-def "argument with side effect" | |
| ; V08 tmp6 long "Cast away GC" | |
| In fgLocalVarLivenessInit | |
| Local V02 should not be enregistered because: struct size does not match reg size | |
| Local V03 should not be enregistered because: field of a dependently promoted struct | |
| Local V04 should not be enregistered because: field of a dependently promoted struct | |
| Local V05 should not be enregistered because: field of a dependently promoted struct | |
| Tracked variable (4 out of 9) table: | |
| V00 arg0 [ byref]: refCnt = 3, refCntWtd = 6 | |
| V01 arg1 [ int]: refCnt = 5, refCntWtd = 4 | |
| V08 tmp6 [ long]: refCnt = 2, refCntWtd = 4 | |
| V07 tmp5 [ ref]: refCnt = 2, refCntWtd = 0 | |
| *************** In fgPerBlockLocalVarLiveness() | |
| BB01 USE(1)={V01} | |
| DEF(0)={ } | |
| BB03 USE(1)={V01 } + ByrefExposed + GcHeap | |
| DEF(1)={ V07} + ByrefExposed* + GcHeap* | |
| BB04 USE(2)={V00 V01 } + ByrefExposed + GcHeap | |
| DEF(1)={ V08} | |
| ** Memory liveness computed, GcHeap states and ByrefExposed states match | |
| *************** In fgInterBlockLocalVarLiveness() | |
| BB liveness after fgLiveVarAnalysis(): | |
| BB01 IN (2)={V00 V01} + ByrefExposed + GcHeap | |
| OUT(2)={V00 V01} + ByrefExposed + GcHeap | |
| BB03 IN (1)={V01} + ByrefExposed + GcHeap | |
| OUT(0)={ } | |
| BB04 IN (2)={V00 V01} + ByrefExposed + GcHeap | |
| OUT(0)={ } | |
| *************** In fgUpdateFlowGraph() | |
| Before updating the flow graph: | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BBnum BBid ref try hnd preds weight IBC [IL range] [jump] [EH region] [flags] | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BB01 [0000] 1 1 2 [000..004)-> BB04(1),BB03(0) ( cond ) i LIR IBC | |
| BB03 [0002] 1 BB01 0 0 [008..013) (throw ) i LIR IBC rare hascall gcsafe | |
| BB04 [0003] 1 BB01 1 2 [013..022) (return) i LIR IBC | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| *************** In fgDebugCheckBBlist | |
| *** lvaComputeRefCounts *** | |
| *** lvaComputeRefCounts -- explicit counts *** | |
| New refCnts for V01: refCnt = 1, refCntWtd = 1 | |
| New refCnts for V07: refCnt = 1, refCntWtd = 0 | |
| New refCnts for V07: refCnt = 2, refCntWtd = 0 | |
| New refCnts for V01: refCnt = 2, refCntWtd = 1 | |
| New refCnts for V00: refCnt = 1, refCntWtd = 2 | |
| New refCnts for V08: refCnt = 1, refCntWtd = 2 | |
| New refCnts for V08: refCnt = 2, refCntWtd = 4 | |
| New refCnts for V01: refCnt = 3, refCntWtd = 2 | |
| *** lvaComputeRefCounts -- implicit counts *** | |
| New refCnts for V00: refCnt = 2, refCntWtd = 4 | |
| New refCnts for V00: refCnt = 3, refCntWtd = 6 | |
| New refCnts for V01: refCnt = 4, refCntWtd = 3 | |
| New refCnts for V01: refCnt = 5, refCntWtd = 4 | |
| *************** Finishing PHASE Lowering nodeinfo | |
| Trees after Lowering nodeinfo | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BBnum BBid ref try hnd preds weight IBC [IL range] [jump] [EH region] [flags] | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BB01 [0000] 1 1 2 [000..004)-> BB04(1),BB03(0) ( cond ) i LIR IBC | |
| BB03 [0002] 1 BB01 0 0 [008..013) (throw ) i LIR IBC rare hascall gcsafe | |
| BB04 [0003] 1 BB01 1 2 [013..022) (return) i LIR IBC | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| ------------ BB01 [0000] [000..004) -> BB04(1),BB03(0) (cond), preds={} succs={BB03,BB04} | |
| [000031] ----------- IL_OFFSET void INLRT @ 0x000[E-] | |
| N001 ( 1, 1) [000000] -----+----- t0 = LCL_VAR int V01 arg1 u:1 $c0 | |
| N002 ( 1, 1) [000001] -c---+----- t1 = CNS_INT int 1 | |
| /--* t0 int | |
| +--* t1 int | |
| N003 ( 3, 3) [000002] -----+-N-U- * CMP void | |
| N004 ( 5, 5) [000003] -----+----- JCC void cond=ULE | |
| ------------ BB03 [0002] [008..013) (throw), preds={BB01} succs={} | |
| [000032] ----------- IL_OFFSET void INLRT @ 0x008[E-] | |
| N001 ( 1, 1) [000023] -----+----- t23 = CNS_INT int 1 $41 | |
| /--* t23 int | |
| [000034] ----------- t34 = * PUTARG_REG int REG rcx | |
| N002 ( 3, 10) [000022] H----+----- t22 = CNS_INT(h) long 0x7ff7f1188938 scope $340 | |
| /--* t22 long | |
| [000035] ----------- t35 = * PUTARG_REG long REG rdx | |
| N001 ( 3, 10) [000036] Hc--------- t36 = CNS_INT(h) long 0x7ff7f0e0d9c8 ftn | |
| /--* t36 long | |
| N002 ( 5, 12) [000037] nc--G------ t37 = * IND long REG NA | |
| /--* t34 int arg0 rcx | |
| +--* t35 long arg1 rdx | |
| +--* t37 long control expr | |
| N003 ( 18, 18) [000024] --C-G+----- t24 = * CALL help ref CORINFO_HELP_STRCNS $2c2 | |
| /--* t24 ref | |
| N004 ( 22, 21) [000025] DAC-G+----- * STORE_LCL_VAR ref V07 tmp5 d:2 $VN.Void | |
| N005 ( 3, 2) [000026] -----+----- t26 = LCL_VAR ref V07 tmp5 u:2 (last use) $2c2 | |
| /--* t26 ref | |
| [000038] ----------- t38 = * PUTARG_REG ref REG rcx | |
| N006 ( 1, 1) [000005] -----+----- t5 = LCL_VAR int V01 arg1 u:1 (last use) $c0 | |
| /--* t5 int | |
| [000039] ----------- t39 = * PUTARG_REG int REG rdx | |
| N001 ( 3, 10) [000040] Hc--------- t40 = CNS_INT(h) long 0x7ff7f13342a0 ftn | |
| /--* t40 long | |
| N002 ( 5, 12) [000041] nc--G------ t41 = * IND long REG NA | |
| /--* t38 ref arg0 rcx | |
| +--* t39 int arg1 rdx | |
| +--* t41 long control expr | |
| N007 ( 43, 31) [000006] -ACXG+----- * CALL void Program.EntryPoint:ThrowOutOfRangeException[int](System.String,int) $VN.Void | |
| ------------ BB04 [0003] [013..022) (return), preds={BB01} succs={} | |
| [000033] ----------- IL_OFFSET void INLRT @ 0x013[E-] | |
| N001 ( 1, 1) [000008] -----+----- t8 = LCL_VAR byref V00 arg0 u:1 (last use) $80 | |
| /--* t8 byref | |
| N002 ( 1, 3) [000027] DA---+----- * STORE_LCL_VAR long V08 tmp6 d:1 $VN.Void | |
| N003 ( 1, 1) [000028] -----+----- t28 = LCL_VAR long V08 tmp6 u:1 (last use) $180 | |
| N005 ( 1, 1) [000010] -----+----- t10 = LCL_VAR int V01 arg1 u:1 (last use) $c0 | |
| /--* t10 int | |
| N006 ( 2, 3) [000011] -----+---U- t11 = * CAST long <- uint $181 | |
| /--* t28 long | |
| +--* t11 long | |
| N009 ( 5, 8) [000015] -c---+----- t15 = * LEA(b+(i*4)+0) long | |
| /--* t15 long | |
| N010 ( 6, 6) [000016] -A-XG+----- t16 = * IND float <l:$301, c:$300> | |
| /--* t16 float | |
| N011 ( 7, 7) [000017] -A-XG+----- * RETURN float $2c1 | |
| ------------------------------------------------------------------------------------------------------------------- | |
| *************** In fgDebugCheckBBlist | |
| Checking Profile Weights (flags:0x1c) | |
| Profile is self-consistent (3 profiled blocks, 0 unprofiled) | |
| *************** 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: {V01} | |
| def: {} | |
| in: {V00 V01} | |
| out: {V00 V01} | |
| BB03 | |
| use: {V01} | |
| def: {V07} | |
| in: {V01} | |
| out: {} | |
| BB04 | |
| use: {V00 V01} | |
| def: {V08} | |
| in: {V00 V01} | |
| out: {} | |
| Interval 0: byref RefPositions {} physReg:NA Preferences=[allInt] Aversions=[allMask] | |
| Interval 0: (V00) byref RefPositions {} physReg:NA Preferences=[allInt] Aversions=[allMask] | |
| Interval 1: int RefPositions {} physReg:NA Preferences=[allInt] Aversions=[allMask] | |
| Interval 1: (V01) int RefPositions {} physReg:NA Preferences=[allInt] Aversions=[allMask] | |
| Interval 2: ref RefPositions {} physReg:NA Preferences=[allInt] Aversions=[allMask] | |
| Interval 2: (V07) ref RefPositions {} physReg:NA Preferences=[allInt] Aversions=[allMask] | |
| Interval 3: long RefPositions {} physReg:NA Preferences=[allInt] Aversions=[allMask] | |
| Interval 3: (V08) long RefPositions {} physReg:NA Preferences=[allInt] Aversions=[allMask] | |
| FP callee save candidate vars: None | |
| floatVarCount = 0; hasLoops = false, singleExit = true | |
| TUPLE STYLE DUMP BEFORE LSRA | |
| Identifying loops in DFS tree with following reverse post order: | |
| RPO -> BB [pre, post] | |
| 00 -> BB01[0, 2] | |
| 01 -> BB04[2, 1] | |
| 02 -> BB03[1, 0] | |
| Flow graph has no cycles; skipping identification of natural loops | |
| Start LSRA Block Sequence: | |
| Current block: BB01 | |
| Current block: BB04 | |
| Current block: BB03 | |
| Final LSRA Block Sequence: | |
| BB01 ( 1 ) | |
| BB04 ( 1 ) | |
| BB03 ( 0 ) | |
| BB01 [0000] [000..004) -> BB04(1),BB03(0) (cond), preds={} succs={BB03,BB04} | |
| ===== | |
| N000. IL_OFFSET INLRT @ 0x000[E-] | |
| N001. V01(t0) | |
| N002. CNS_INT 1 | |
| N003. CMP ; t0 | |
| N004. JCC cond=ULE | |
| BB04 [0003] [013..022) (return), preds={BB01} succs={} | |
| ===== | |
| N000. IL_OFFSET INLRT @ 0x013[E-] | |
| N001. V00(t8*) | |
| N002. V08(t27); t8* | |
| N003. V08(t28*) | |
| N005. V01(t10*) | |
| N006. t11 = CAST ; t10* | |
| N009. t15 = LEA(b+(i*4)+0); t28*,t11 | |
| N010. t16 = IND ; t15 | |
| N011. RETURN ; t16 | |
| BB03 [0002] [008..013) (throw), preds={BB01} succs={} | |
| ===== | |
| N000. IL_OFFSET INLRT @ 0x008[E-] | |
| N001. t23 = CNS_INT 1 | |
| N000. t34 = PUTARG_REG; t23 | |
| N002. t22 = CNS_INT(h) 0x7ff7f1188938 scope | |
| N000. t35 = PUTARG_REG; t22 | |
| N001. CNS_INT(h) 0x7ff7f0e0d9c8 ftn | |
| N002. IND | |
| N003. t24 = CALL help; t34,t35 | |
| N004. V07(t25); t24 | |
| N005. V07(t26*) | |
| N000. t38 = PUTARG_REG; t26* | |
| N006. V01(t5*) | |
| N000. t39 = PUTARG_REG; t5* | |
| N001. CNS_INT(h) 0x7ff7f13342a0 ftn | |
| N002. IND | |
| N007. CALL ; t38,t39 | |
| buildIntervals second part ======== | |
| Arg V00 is live in reg rcx | |
| Arg V01 is live in reg rdx | |
| <RefPosition #0 @0 RefTypeParamDef <Ivl:0 V00> BB00 regmask=[rcx] minReg=1 fixed wt=100.00> | |
| <RefPosition #1 @0 RefTypeParamDef <Ivl:1 V01> BB00 regmask=[rdx] minReg=1 fixed wt=100.00> | |
| NEW BLOCK BB01 | |
| <RefPosition #2 @1 RefTypeBB BB01 regmask=[allMask] minReg=1 wt=100.00> | |
| DefList: { } | |
| N003 (???,???) [000031] ----------- * IL_OFFSET void INLRT @ 0x000[E-] REG NA | |
| DefList: { } | |
| N005 ( 1, 1) [000000] -----+----- * LCL_VAR int V01 arg1 u:1 NA REG NA $c0 | |
| DefList: { } | |
| N007 ( 1, 1) [000001] -c---+----- * CNS_INT int 1 REG NA | |
| Contained | |
| DefList: { } | |
| N009 ( 3, 3) [000002] -----+-N-U- * CMP void REG NA | |
| <RefPosition #3 @9 RefTypeUse <Ivl:1 V01> LCL_VAR BB01 regmask=[allInt] minReg=1 last wt=400.00> | |
| DefList: { } | |
| N011 ( 5, 5) [000003] -----+----- * JCC void cond=ULE REG NA | |
| CHECKING LAST USES for BB01, liveout={V00 V01} | |
| ============================== | |
| use: {V01} | |
| def: {} | |
| NEW BLOCK BB04 | |
| Setting BB01 as the predecessor for determining incoming variable registers of BB04 | |
| <RefPosition #4 @13 RefTypeBB BB04 regmask=[allMask] minReg=1 wt=100.00> | |
| DefList: { } | |
| N015 (???,???) [000033] ----------- * IL_OFFSET void INLRT @ 0x013[E-] REG NA | |
| DefList: { } | |
| N017 ( 1, 1) [000008] -----+----- * LCL_VAR byref V00 arg0 u:1 NA (last use) REG NA $80 | |
| DefList: { } | |
| N019 ( 1, 3) [000027] DA---+----- * STORE_LCL_VAR long V08 tmp6 d:1 NA REG NA $VN.Void | |
| <RefPosition #5 @19 RefTypeUse <Ivl:0 V00> LCL_VAR BB04 regmask=[allInt] minReg=1 last wt=600.00> | |
| Assigning related <V08/L3> to <V00/L0> | |
| <RefPosition #6 @20 RefTypeDef <Ivl:3 V08> STORE_LCL_VAR BB04 regmask=[allInt] minReg=1 last wt=400.00> | |
| DefList: { } | |
| N021 ( 1, 1) [000028] -----+----- * LCL_VAR long V08 tmp6 u:1 NA (last use) REG NA $180 | |
| DefList: { } | |
| N023 ( 1, 1) [000010] -----+----- * LCL_VAR int V01 arg1 u:1 NA (last use) REG NA $c0 | |
| DefList: { } | |
| N025 ( 2, 3) [000011] -----+---U- * CAST long <- uint REG NA $181 | |
| <RefPosition #7 @25 RefTypeUse <Ivl:1 V01> LCL_VAR BB04 regmask=[allInt] minReg=1 last wt=400.00> | |
| Interval 4: long RefPositions {} physReg:NA Preferences=[allInt] Aversions=[allMask] | |
| <RefPosition #8 @26 RefTypeDef <Ivl:4> CAST BB04 regmask=[allInt] minReg=1 wt=400.00> | |
| DefList: { N025.t11. CAST } | |
| N027 ( 5, 8) [000015] -c---+----- * LEA(b+(i*4)+0) long REG NA | |
| Contained | |
| DefList: { N025.t11. CAST } | |
| N029 ( 6, 6) [000016] -A-XG+----- * IND float REG NA <l:$301, c:$300> | |
| <RefPosition #9 @29 RefTypeUse <Ivl:3 V08> LCL_VAR BB04 regmask=[allInt] minReg=1 last wt=400.00> | |
| <RefPosition #10 @29 RefTypeUse <Ivl:4> BB04 regmask=[allInt] minReg=1 last wt=100.00> | |
| Interval 5: float RefPositions {} physReg:NA Preferences=[allFloat] Aversions=[allMask] | |
| <RefPosition #11 @30 RefTypeDef <Ivl:5> IND BB04 regmask=[allFloat] minReg=1 wt=400.00> | |
| DefList: { N029.t16. IND } | |
| N031 ( 7, 7) [000017] -A-XG+----- * RETURN float REG NA $2c1 | |
| <RefPosition #12 @31 RefTypeFixedReg <Reg:mm0> BB04 regmask=[mm0] minReg=1 wt=100.00> | |
| <RefPosition #13 @31 RefTypeUse <Ivl:5> BB04 regmask=[mm0] minReg=1 last fixed wt=100.00> | |
| CHECKING LAST USES for BB04, liveout={} | |
| ============================== | |
| use: {V00 V01} | |
| def: {V08} | |
| NEW BLOCK BB03 | |
| Setting BB01 as the predecessor for determining incoming variable registers of BB03 | |
| <RefPosition #14 @33 RefTypeBB BB03 regmask=[allMask] minReg=1 wt=0.00> | |
| firstColdLoc = 35 | |
| DefList: { } | |
| N035 (???,???) [000032] ----------- * IL_OFFSET void INLRT @ 0x008[E-] REG NA | |
| DefList: { } | |
| N037 ( 1, 1) [000023] -----+----- * CNS_INT int 1 REG NA $41 | |
| Interval 6: int RefPositions {} physReg:NA Preferences=[allInt] Aversions=[allMask] | |
| <RefPosition #15 @38 RefTypeDef <Ivl:6> CNS_INT BB03 regmask=[allInt] minReg=1 wt=0.00> | |
| DefList: { N037.t23. CNS_INT } | |
| N039 (???,???) [000034] ----------- * PUTARG_REG int REG rcx | |
| <RefPosition #16 @39 RefTypeFixedReg <Reg:rcx> BB03 regmask=[rcx] minReg=1 wt=0.00> | |
| <RefPosition #17 @39 RefTypeUse <Ivl:6> BB03 regmask=[rcx] minReg=1 last fixed wt=0.00> | |
| Interval 7: int RefPositions {} physReg:NA Preferences=[allInt] Aversions=[allMask] | |
| <RefPosition #18 @40 RefTypeFixedReg <Reg:rcx> BB03 regmask=[rcx] minReg=1 wt=0.00> | |
| <RefPosition #19 @40 RefTypeDef <Ivl:7> PUTARG_REG BB03 regmask=[rcx] minReg=1 fixed wt=0.00> | |
| DefList: { N039.t34. PUTARG_REG } | |
| N041 ( 3, 10) [000022] H----+----- * CNS_INT(h) long 0x7ff7f1188938 scope REG NA $340 | |
| Interval 8: long RefPositions {} physReg:NA Preferences=[allInt] Aversions=[allMask] | |
| <RefPosition #20 @42 RefTypeDef <Ivl:8> CNS_INT BB03 regmask=[allInt] minReg=1 wt=0.00> | |
| DefList: { N039.t34. PUTARG_REG; N041.t22. CNS_INT } | |
| N043 (???,???) [000035] ----------- * PUTARG_REG long REG rdx | |
| <RefPosition #21 @43 RefTypeFixedReg <Reg:rdx> BB03 regmask=[rdx] minReg=1 wt=0.00> | |
| <RefPosition #22 @43 RefTypeUse <Ivl:8> BB03 regmask=[rdx] minReg=1 last fixed wt=0.00> | |
| Interval 9: long RefPositions {} physReg:NA Preferences=[allInt] Aversions=[allMask] | |
| <RefPosition #23 @44 RefTypeFixedReg <Reg:rdx> BB03 regmask=[rdx] minReg=1 wt=0.00> | |
| <RefPosition #24 @44 RefTypeDef <Ivl:9> PUTARG_REG BB03 regmask=[rdx] minReg=1 fixed wt=0.00> | |
| DefList: { N039.t34. PUTARG_REG; N043.t35. PUTARG_REG } | |
| N045 ( 3, 10) [000036] Hc--------- * CNS_INT(h) long 0x7ff7f0e0d9c8 ftn REG NA | |
| Contained | |
| DefList: { N039.t34. PUTARG_REG; N043.t35. PUTARG_REG } | |
| N047 ( 5, 12) [000037] nc--G------ * IND long REG NA | |
| Contained | |
| DefList: { N039.t34. PUTARG_REG; N043.t35. PUTARG_REG } | |
| N049 ( 18, 18) [000024] --C-G+----- * CALL help ref CORINFO_HELP_STRCNS REG NA $2c2 | |
| <RefPosition #25 @49 RefTypeFixedReg <Reg:rcx> BB03 regmask=[rcx] minReg=1 wt=0.00> | |
| <RefPosition #26 @49 RefTypeUse <Ivl:7> BB03 regmask=[rcx] minReg=1 last fixed wt=0.00> | |
| <RefPosition #27 @49 RefTypeFixedReg <Reg:rdx> BB03 regmask=[rdx] minReg=1 wt=0.00> | |
| <RefPosition #28 @49 RefTypeUse <Ivl:9> BB03 regmask=[rdx] minReg=1 last fixed wt=0.00> | |
| <RefPosition #29 @50 RefTypeKill BB03 regmask=[rax rcx rdx r8-r11 mm0-mm5] minReg=1> | |
| Interval 10: ref RefPositions {} physReg:NA Preferences=[allInt] Aversions=[allMask] | |
| <RefPosition #30 @50 RefTypeFixedReg <Reg:rax> BB03 regmask=[rax] minReg=1 wt=0.00> | |
| <RefPosition #31 @50 RefTypeDef <Ivl:10> CALL BB03 regmask=[rax] minReg=1 fixed wt=0.00> | |
| DefList: { N049.t24. CALL } | |
| N051 ( 22, 21) [000025] DAC-G+----- * STORE_LCL_VAR ref V07 tmp5 d:2 NA REG NA $VN.Void | |
| <RefPosition #32 @51 RefTypeUse <Ivl:10> BB03 regmask=[allInt] minReg=1 last wt=0.00> | |
| Assigning related <V07/L2> to <I10> | |
| <RefPosition #33 @52 RefTypeDef <Ivl:2 V07> STORE_LCL_VAR BB03 regmask=[allInt] minReg=1 last wt=0.00> | |
| DefList: { } | |
| N053 ( 3, 2) [000026] -----+----- * LCL_VAR ref V07 tmp5 u:2 NA (last use) REG NA $2c2 | |
| DefList: { } | |
| N055 (???,???) [000038] ----------- * PUTARG_REG ref REG rcx | |
| <RefPosition #34 @55 RefTypeFixedReg <Reg:rcx> BB03 regmask=[rcx] minReg=1 wt=0.00> | |
| <RefPosition #35 @55 RefTypeUse <Ivl:2 V07> LCL_VAR BB03 regmask=[rcx] minReg=1 last fixed wt=0.00> | |
| Interval 11: ref RefPositions {} physReg:NA Preferences=[allInt] Aversions=[allMask] | |
| <RefPosition #36 @56 RefTypeFixedReg <Reg:rcx> BB03 regmask=[rcx] minReg=1 wt=0.00> | |
| <RefPosition #37 @56 RefTypeDef <Ivl:11> PUTARG_REG BB03 regmask=[rcx] minReg=1 fixed wt=0.00> | |
| DefList: { N055.t38. PUTARG_REG } | |
| N057 ( 1, 1) [000005] -----+----- * LCL_VAR int V01 arg1 u:1 NA (last use) REG NA $c0 | |
| DefList: { N055.t38. PUTARG_REG } | |
| N059 (???,???) [000039] ----------- * PUTARG_REG int REG rdx | |
| Last use of V01 between PUTARG and CALL. Removing occupied arg regs from preferences: [rcx] | |
| <RefPosition #38 @59 RefTypeFixedReg <Reg:rdx> BB03 regmask=[rdx] minReg=1 wt=0.00> | |
| <RefPosition #39 @59 RefTypeUse <Ivl:1 V01> LCL_VAR BB03 regmask=[rdx] minReg=1 last fixed wt=400.00> | |
| Interval 12: int RefPositions {} physReg:NA Preferences=[allInt] Aversions=[allMask] | |
| <RefPosition #40 @60 RefTypeFixedReg <Reg:rdx> BB03 regmask=[rdx] minReg=1 wt=0.00> | |
| <RefPosition #41 @60 RefTypeDef <Ivl:12> PUTARG_REG BB03 regmask=[rdx] minReg=1 fixed wt=0.00> | |
| DefList: { N055.t38. PUTARG_REG; N059.t39. PUTARG_REG } | |
| N061 ( 3, 10) [000040] Hc--------- * CNS_INT(h) long 0x7ff7f13342a0 ftn REG NA | |
| Contained | |
| DefList: { N055.t38. PUTARG_REG; N059.t39. PUTARG_REG } | |
| N063 ( 5, 12) [000041] nc--G------ * IND long REG NA | |
| Contained | |
| DefList: { N055.t38. PUTARG_REG; N059.t39. PUTARG_REG } | |
| N065 ( 43, 31) [000006] -ACXG+----- * CALL void Program.EntryPoint:ThrowOutOfRangeException[int](System.String,int) REG NA $VN.Void | |
| <RefPosition #42 @65 RefTypeFixedReg <Reg:rcx> BB03 regmask=[rcx] minReg=1 wt=0.00> | |
| <RefPosition #43 @65 RefTypeUse <Ivl:11> BB03 regmask=[rcx] minReg=1 last fixed wt=0.00> | |
| <RefPosition #44 @65 RefTypeFixedReg <Reg:rdx> BB03 regmask=[rdx] minReg=1 wt=0.00> | |
| <RefPosition #45 @65 RefTypeUse <Ivl:12> BB03 regmask=[rdx] minReg=1 last fixed wt=0.00> | |
| <RefPosition #46 @66 RefTypeKill BB03 regmask=[rax rcx rdx r8-r11 mm0-mm5] minReg=1> | |
| CHECKING LAST USES for BB03, liveout={} | |
| ============================== | |
| use: {V01} | |
| def: {V07} | |
| Linear scan intervals BEFORE VALIDATING INTERVALS: | |
| Interval 0: (V00) byref RefPositions {#0@0 #5@19} physReg:rcx Preferences=[rcx] Aversions=[allMask] RelatedInterval <V08/L3> | |
| Interval 1: (V01) int RefPositions {#1@0 #3@9 #7@25 #39@59} physReg:rdx Preferences=[rbx rbp rsi rdi r12-r15] Aversions=[rax rcx rdx r8-r11 mm0-mm5] | |
| Interval 2: (V07) ref RefPositions {#33@52 #35@55} physReg:NA Preferences=[rcx] Aversions=[allMask] | |
| Interval 3: (V08) long RefPositions {#6@20 #9@29} physReg:NA Preferences=[allInt] Aversions=[allMask] | |
| Interval 4: long RefPositions {#8@26 #10@29} physReg:NA Preferences=[allInt] Aversions=[allMask] | |
| Interval 5: float RefPositions {#11@30 #13@31} physReg:NA Preferences=[mm0] Aversions=[allMask] | |
| Interval 6: int (constant) RefPositions {#15@38 #17@39} physReg:NA Preferences=[rcx] Aversions=[allMask] | |
| Interval 7: int RefPositions {#19@40 #26@49} physReg:NA Preferences=[rcx] Aversions=[allMask] | |
| Interval 8: long (constant) RefPositions {#20@42 #22@43} physReg:NA Preferences=[rdx] Aversions=[allMask] | |
| Interval 9: long RefPositions {#24@44 #28@49} physReg:NA Preferences=[rdx] Aversions=[allMask] | |
| Interval 10: ref RefPositions {#31@50 #32@51} physReg:NA Preferences=[rax] Aversions=[allMask] RelatedInterval <V07/L2> | |
| Interval 11: ref RefPositions {#37@56 #43@65} physReg:NA Preferences=[rcx] Aversions=[allMask] | |
| Interval 12: int RefPositions {#41@60 #45@65} physReg:NA Preferences=[rdx] Aversions=[allMask] | |
| ------------ | |
| REFPOSITIONS BEFORE VALIDATING INTERVALS: | |
| ------------ | |
| <RefPosition #0 @0 RefTypeParamDef <Ivl:0 V00> BB00 regmask=[rcx] minReg=1 fixed regOptional wt=100.00> | |
| <RefPosition #1 @0 RefTypeParamDef <Ivl:1 V01> BB00 regmask=[rdx] minReg=1 fixed regOptional wt=100.00> | |
| <RefPosition #2 @1 RefTypeBB BB01 regmask=[allMask] minReg=1 wt=100.00> | |
| <RefPosition #3 @9 RefTypeUse <Ivl:1 V01> LCL_VAR BB01 regmask=[allInt] minReg=1 regOptional wt=400.00> | |
| <RefPosition #4 @13 RefTypeBB BB04 regmask=[allMask] minReg=1 wt=100.00> | |
| <RefPosition #5 @19 RefTypeUse <Ivl:0 V00> LCL_VAR BB04 regmask=[allInt] minReg=1 last wt=600.00> | |
| <RefPosition #6 @20 RefTypeDef <Ivl:3 V08> STORE_LCL_VAR BB04 regmask=[allInt] minReg=1 wt=400.00> | |
| <RefPosition #7 @25 RefTypeUse <Ivl:1 V01> LCL_VAR BB04 regmask=[allInt] minReg=1 last regOptional wt=400.00> | |
| <RefPosition #8 @26 RefTypeDef <Ivl:4> CAST BB04 regmask=[allInt] minReg=1 wt=400.00> | |
| <RefPosition #9 @29 RefTypeUse <Ivl:3 V08> LCL_VAR BB04 regmask=[allInt] minReg=1 last wt=400.00> | |
| <RefPosition #10 @29 RefTypeUse <Ivl:4> BB04 regmask=[allInt] minReg=1 last wt=100.00> | |
| <RefPosition #11 @30 RefTypeDef <Ivl:5> IND BB04 regmask=[mm0] minReg=1 wt=400.00> | |
| <RefPosition #12 @31 RefTypeFixedReg <Reg:mm0> BB04 regmask=[mm0] minReg=1 wt=100.00> | |
| <RefPosition #13 @31 RefTypeUse <Ivl:5> BB04 regmask=[mm0] minReg=1 last fixed wt=100.00> | |
| <RefPosition #14 @33 RefTypeBB BB03 regmask=[allMask] minReg=1 wt=0.00> | |
| <RefPosition #15 @38 RefTypeDef <Ivl:6> CNS_INT BB03 regmask=[rcx] minReg=1 wt=0.00> | |
| <RefPosition #16 @39 RefTypeFixedReg <Reg:rcx> BB03 regmask=[rcx] minReg=1 wt=0.00> | |
| <RefPosition #17 @39 RefTypeUse <Ivl:6> BB03 regmask=[rcx] minReg=1 last fixed wt=0.00> | |
| <RefPosition #18 @40 RefTypeFixedReg <Reg:rcx> BB03 regmask=[rcx] minReg=1 wt=0.00> | |
| <RefPosition #19 @40 RefTypeDef <Ivl:7> PUTARG_REG BB03 regmask=[rcx] minReg=1 fixed wt=0.00> | |
| <RefPosition #20 @42 RefTypeDef <Ivl:8> CNS_INT BB03 regmask=[rdx] minReg=1 wt=0.00> | |
| <RefPosition #21 @43 RefTypeFixedReg <Reg:rdx> BB03 regmask=[rdx] minReg=1 wt=0.00> | |
| <RefPosition #22 @43 RefTypeUse <Ivl:8> BB03 regmask=[rdx] minReg=1 last fixed wt=0.00> | |
| <RefPosition #23 @44 RefTypeFixedReg <Reg:rdx> BB03 regmask=[rdx] minReg=1 wt=0.00> | |
| <RefPosition #24 @44 RefTypeDef <Ivl:9> PUTARG_REG BB03 regmask=[rdx] minReg=1 fixed wt=0.00> | |
| <RefPosition #25 @49 RefTypeFixedReg <Reg:rcx> BB03 regmask=[rcx] minReg=1 wt=0.00> | |
| <RefPosition #26 @49 RefTypeUse <Ivl:7> BB03 regmask=[rcx] minReg=1 last fixed wt=0.00> | |
| <RefPosition #27 @49 RefTypeFixedReg <Reg:rdx> BB03 regmask=[rdx] minReg=1 wt=0.00> | |
| <RefPosition #28 @49 RefTypeUse <Ivl:9> BB03 regmask=[rdx] minReg=1 last fixed wt=0.00> | |
| <RefPosition #29 @50 RefTypeKill BB03 regmask=[rax rcx rdx r8-r11 mm0-mm5] minReg=1> | |
| <RefPosition #30 @50 RefTypeFixedReg <Reg:rax> BB03 regmask=[rax] minReg=1 wt=0.00> | |
| <RefPosition #31 @50 RefTypeDef <Ivl:10> CALL BB03 regmask=[rax] minReg=1 fixed wt=0.00> | |
| <RefPosition #32 @51 RefTypeUse <Ivl:10> BB03 regmask=[allInt] minReg=1 last wt=0.00> | |
| <RefPosition #33 @52 RefTypeDef <Ivl:2 V07> STORE_LCL_VAR BB03 regmask=[allInt] minReg=1 wt=0.00> | |
| <RefPosition #34 @55 RefTypeFixedReg <Reg:rcx> BB03 regmask=[rcx] minReg=1 wt=0.00> | |
| <RefPosition #35 @55 RefTypeUse <Ivl:2 V07> LCL_VAR BB03 regmask=[rcx] minReg=1 last fixed wt=0.00> | |
| <RefPosition #36 @56 RefTypeFixedReg <Reg:rcx> BB03 regmask=[rcx] minReg=1 wt=0.00> | |
| <RefPosition #37 @56 RefTypeDef <Ivl:11> PUTARG_REG BB03 regmask=[rcx] minReg=1 fixed wt=0.00> | |
| <RefPosition #38 @59 RefTypeFixedReg <Reg:rdx> BB03 regmask=[rdx] minReg=1 wt=0.00> | |
| <RefPosition #39 @59 RefTypeUse <Ivl:1 V01> LCL_VAR BB03 regmask=[rdx] minReg=1 last fixed wt=400.00> | |
| <RefPosition #40 @60 RefTypeFixedReg <Reg:rdx> BB03 regmask=[rdx] minReg=1 wt=0.00> | |
| <RefPosition #41 @60 RefTypeDef <Ivl:12> PUTARG_REG BB03 regmask=[rdx] minReg=1 fixed wt=0.00> | |
| <RefPosition #42 @65 RefTypeFixedReg <Reg:rcx> BB03 regmask=[rcx] minReg=1 wt=0.00> | |
| <RefPosition #43 @65 RefTypeUse <Ivl:11> BB03 regmask=[rcx] minReg=1 last fixed wt=0.00> | |
| <RefPosition #44 @65 RefTypeFixedReg <Reg:rdx> BB03 regmask=[rdx] minReg=1 wt=0.00> | |
| <RefPosition #45 @65 RefTypeUse <Ivl:12> BB03 regmask=[rdx] minReg=1 last fixed wt=0.00> | |
| <RefPosition #46 @66 RefTypeKill BB03 regmask=[rax rcx rdx r8-r11 mm0-mm5] minReg=1> | |
| ------------ | |
| REFPOSITIONS DURING VALIDATE INTERVALS (RefPositions per interval) | |
| ------------ | |
| ----------------- | |
| <RefPosition #0 @0 RefTypeParamDef <Ivl:0 V00> BB00 regmask=[rcx] minReg=1 fixed regOptional wt=100.00> | |
| <RefPosition #5 @19 RefTypeUse <Ivl:0 V00> LCL_VAR BB04 regmask=[allInt] minReg=1 last wt=600.00> | |
| ----------------- | |
| <RefPosition #1 @0 RefTypeParamDef <Ivl:1 V01> BB00 regmask=[rdx] minReg=1 fixed regOptional wt=100.00> | |
| <RefPosition #3 @9 RefTypeUse <Ivl:1 V01> LCL_VAR BB01 regmask=[allInt] minReg=1 regOptional wt=400.00> | |
| <RefPosition #7 @25 RefTypeUse <Ivl:1 V01> LCL_VAR BB04 regmask=[allInt] minReg=1 last regOptional wt=400.00> | |
| <RefPosition #39 @59 RefTypeUse <Ivl:1 V01> LCL_VAR BB03 regmask=[rdx] minReg=1 last fixed wt=400.00> | |
| ----------------- | |
| <RefPosition #6 @20 RefTypeDef <Ivl:3 V08> STORE_LCL_VAR BB04 regmask=[allInt] minReg=1 wt=400.00> | |
| <RefPosition #9 @29 RefTypeUse <Ivl:3 V08> LCL_VAR BB04 regmask=[allInt] minReg=1 last wt=400.00> | |
| ----------------- | |
| <RefPosition #33 @52 RefTypeDef <Ivl:2 V07> STORE_LCL_VAR BB03 regmask=[allInt] minReg=1 wt=0.00> | |
| <RefPosition #35 @55 RefTypeUse <Ivl:2 V07> LCL_VAR BB03 regmask=[rcx] minReg=1 last fixed wt=0.00> | |
| TUPLE STYLE DUMP WITH REF POSITIONS | |
| Incoming Parameters: V00 V01 | |
| BB01 [0000] [000..004) -> BB04(1),BB03(0) (cond), preds={} succs={BB03,BB04} | |
| ===== | |
| N003. IL_OFFSET INLRT @ 0x000[E-] | |
| N005. V01(L1) | |
| N007. CNS_INT 1 | |
| N009. CMP | |
| Use:<V01/L1>(#3) | |
| N011. JCC cond=ULE | |
| BB04 [0003] [013..022) (return), preds={BB01} succs={} | |
| ===== | |
| N015. IL_OFFSET INLRT @ 0x013[E-] | |
| N017. V00(L0) | |
| N019. V08(L3) | |
| Use:<V00/L0>(#5) * | |
| Def:<V08/L3>(#6) | |
| N021. V08(L3) | |
| N023. V01(L1) | |
| N025. CAST | |
| Use:<V01/L1>(#7) * | |
| Def:<I4>(#8) | |
| N027. LEA(b+(i*4)+0) | |
| N029. IND | |
| Use:<V08/L3>(#9) * | |
| Use:<I4>(#10) * | |
| Def:<I5>(#11) | |
| N031. RETURN | |
| Use:<I5>(#13) Fixed:mm0(#12) * | |
| BB03 [0002] [008..013) (throw), preds={BB01} succs={} | |
| ===== | |
| N035. IL_OFFSET INLRT @ 0x008[E-] | |
| N037. CNS_INT 1 | |
| Def:<I6>(#15) | |
| N039. PUTARG_REG | |
| Use:<I6>(#17) Fixed:rcx(#16) * | |
| Def:<I7>(#19) rcx | |
| N041. CNS_INT(h) 0x7ff7f1188938 scope | |
| Def:<I8>(#20) | |
| N043. PUTARG_REG | |
| Use:<I8>(#22) Fixed:rdx(#21) * | |
| Def:<I9>(#24) rdx | |
| N045. CNS_INT(h) 0x7ff7f0e0d9c8 ftn | |
| N047. IND | |
| N049. CALL help | |
| Use:<I7>(#26) Fixed:rcx(#25) * | |
| Use:<I9>(#28) Fixed:rdx(#27) * | |
| Kill: [rax rcx rdx r8-r11 mm0-mm5] | |
| Def:<I10>(#31) rax Pref:<V07/L2> | |
| N051. V07(L2) | |
| Use:<I10>(#32) * | |
| Def:<V07/L2>(#33) | |
| N053. V07(L2) | |
| N055. PUTARG_REG | |
| Use:<V07/L2>(#35) Fixed:rcx(#34) * | |
| Def:<I11>(#37) rcx | |
| N057. V01(L1) | |
| N059. PUTARG_REG | |
| Use:<V01/L1>(#39) Fixed:rdx(#38) * | |
| Def:<I12>(#41) rdx | |
| N061. CNS_INT(h) 0x7ff7f13342a0 ftn | |
| N063. IND | |
| N065. CALL | |
| Use:<I11>(#43) Fixed:rcx(#42) * | |
| Use:<I12>(#45) Fixed:rdx(#44) * | |
| Kill: [rax rcx rdx r8-r11 mm0-mm5] | |
| Linear scan intervals after buildIntervals: | |
| Interval 0: (V00) byref RefPositions {#0@0 #5@19} physReg:rcx Preferences=[rcx] Aversions=[allMask] RelatedInterval <V08/L3> | |
| Interval 1: (V01) int RefPositions {#1@0 #3@9 #7@25 #39@59} physReg:rdx Preferences=[rbx rbp rsi rdi r12-r15] Aversions=[rax rcx rdx r8-r11 mm0-mm5] | |
| Interval 2: (V07) ref RefPositions {#33@52 #35@55} physReg:NA Preferences=[rcx] Aversions=[allMask] | |
| Interval 3: (V08) long RefPositions {#6@20 #9@29} physReg:NA Preferences=[allInt] Aversions=[allMask] | |
| Interval 4: long RefPositions {#8@26 #10@29} physReg:NA Preferences=[allInt] Aversions=[allMask] | |
| Interval 5: float RefPositions {#11@30 #13@31} physReg:NA Preferences=[mm0] Aversions=[allMask] | |
| Interval 6: int (constant) RefPositions {#15@38 #17@39} physReg:NA Preferences=[rcx] Aversions=[allMask] | |
| Interval 7: int RefPositions {#19@40 #26@49} physReg:NA Preferences=[rcx] Aversions=[allMask] | |
| Interval 8: long (constant) RefPositions {#20@42 #22@43} physReg:NA Preferences=[rdx] Aversions=[allMask] | |
| Interval 9: long RefPositions {#24@44 #28@49} physReg:NA Preferences=[rdx] Aversions=[allMask] | |
| Interval 10: ref RefPositions {#31@50 #32@51} physReg:NA Preferences=[rax] Aversions=[allMask] RelatedInterval <V07/L2> | |
| Interval 11: ref RefPositions {#37@56 #43@65} physReg:NA Preferences=[rcx] Aversions=[allMask] | |
| Interval 12: int RefPositions {#41@60 #45@65} physReg:NA Preferences=[rdx] Aversions=[allMask] | |
| *************** In LinearScan::allocateRegisters() | |
| Linear scan intervals before allocateRegisters: | |
| Interval 0: (V00) byref RefPositions {#0@0 #5@19} physReg:rcx Preferences=[rcx] Aversions=[allMask] RelatedInterval <V08/L3> | |
| Interval 1: (V01) int RefPositions {#1@0 #3@9 #7@25 #39@59} physReg:rdx Preferences=[rbx rbp rsi rdi r12-r15] Aversions=[rax rcx rdx r8-r11 mm0-mm5] | |
| Interval 2: (V07) ref RefPositions {#33@52 #35@55} physReg:NA Preferences=[rcx] Aversions=[allMask] | |
| Interval 3: (V08) long RefPositions {#6@20 #9@29} physReg:NA Preferences=[allInt] Aversions=[allMask] | |
| Interval 4: long RefPositions {#8@26 #10@29} physReg:NA Preferences=[allInt] Aversions=[allMask] | |
| Interval 5: float RefPositions {#11@30 #13@31} physReg:NA Preferences=[mm0] Aversions=[allMask] | |
| Interval 6: int (constant) RefPositions {#15@38 #17@39} physReg:NA Preferences=[rcx] Aversions=[allMask] | |
| Interval 7: int RefPositions {#19@40 #26@49} physReg:NA Preferences=[rcx] Aversions=[allMask] | |
| Interval 8: long (constant) RefPositions {#20@42 #22@43} physReg:NA Preferences=[rdx] Aversions=[allMask] | |
| Interval 9: long RefPositions {#24@44 #28@49} physReg:NA Preferences=[rdx] Aversions=[allMask] | |
| Interval 10: ref RefPositions {#31@50 #32@51} physReg:NA Preferences=[rax] Aversions=[allMask] RelatedInterval <V07/L2> | |
| Interval 11: ref RefPositions {#37@56 #43@65} physReg:NA Preferences=[rcx] Aversions=[allMask] | |
| Interval 12: int RefPositions {#41@60 #45@65} physReg:NA Preferences=[rdx] Aversions=[allMask] | |
| ------------ | |
| REFPOSITIONS BEFORE ALLOCATION: | |
| ------------ | |
| <RefPosition #0 @0 RefTypeParamDef <Ivl:0 V00> BB00 regmask=[rcx] minReg=1 fixed regOptional wt=100.00> | |
| <RefPosition #1 @0 RefTypeParamDef <Ivl:1 V01> BB00 regmask=[rdx] minReg=1 fixed regOptional wt=100.00> | |
| <RefPosition #2 @1 RefTypeBB BB01 regmask=[allMask] minReg=1 wt=100.00> | |
| <RefPosition #3 @9 RefTypeUse <Ivl:1 V01> LCL_VAR BB01 regmask=[allInt] minReg=1 regOptional wt=400.00> | |
| <RefPosition #4 @13 RefTypeBB BB04 regmask=[allMask] minReg=1 wt=100.00> | |
| <RefPosition #5 @19 RefTypeUse <Ivl:0 V00> LCL_VAR BB04 regmask=[allInt] minReg=1 last wt=600.00> | |
| <RefPosition #6 @20 RefTypeDef <Ivl:3 V08> STORE_LCL_VAR BB04 regmask=[allInt] minReg=1 wt=400.00> | |
| <RefPosition #7 @25 RefTypeUse <Ivl:1 V01> LCL_VAR BB04 regmask=[allInt] minReg=1 last regOptional wt=400.00> | |
| <RefPosition #8 @26 RefTypeDef <Ivl:4> CAST BB04 regmask=[allInt] minReg=1 wt=400.00> | |
| <RefPosition #9 @29 RefTypeUse <Ivl:3 V08> LCL_VAR BB04 regmask=[allInt] minReg=1 last wt=400.00> | |
| <RefPosition #10 @29 RefTypeUse <Ivl:4> BB04 regmask=[allInt] minReg=1 last wt=100.00> | |
| <RefPosition #11 @30 RefTypeDef <Ivl:5> IND BB04 regmask=[mm0] minReg=1 wt=400.00> | |
| <RefPosition #12 @31 RefTypeFixedReg <Reg:mm0> BB04 regmask=[mm0] minReg=1 wt=100.00> | |
| <RefPosition #13 @31 RefTypeUse <Ivl:5> BB04 regmask=[mm0] minReg=1 last fixed wt=100.00> | |
| <RefPosition #14 @33 RefTypeBB BB03 regmask=[allMask] minReg=1 wt=0.00> | |
| <RefPosition #15 @38 RefTypeDef <Ivl:6> CNS_INT BB03 regmask=[rcx] minReg=1 wt=0.00> | |
| <RefPosition #16 @39 RefTypeFixedReg <Reg:rcx> BB03 regmask=[rcx] minReg=1 wt=0.00> | |
| <RefPosition #17 @39 RefTypeUse <Ivl:6> BB03 regmask=[rcx] minReg=1 last fixed wt=0.00> | |
| <RefPosition #18 @40 RefTypeFixedReg <Reg:rcx> BB03 regmask=[rcx] minReg=1 wt=0.00> | |
| <RefPosition #19 @40 RefTypeDef <Ivl:7> PUTARG_REG BB03 regmask=[rcx] minReg=1 fixed wt=0.00> | |
| <RefPosition #20 @42 RefTypeDef <Ivl:8> CNS_INT BB03 regmask=[rdx] minReg=1 wt=0.00> | |
| <RefPosition #21 @43 RefTypeFixedReg <Reg:rdx> BB03 regmask=[rdx] minReg=1 wt=0.00> | |
| <RefPosition #22 @43 RefTypeUse <Ivl:8> BB03 regmask=[rdx] minReg=1 last fixed wt=0.00> | |
| <RefPosition #23 @44 RefTypeFixedReg <Reg:rdx> BB03 regmask=[rdx] minReg=1 wt=0.00> | |
| <RefPosition #24 @44 RefTypeDef <Ivl:9> PUTARG_REG BB03 regmask=[rdx] minReg=1 fixed wt=0.00> | |
| <RefPosition #25 @49 RefTypeFixedReg <Reg:rcx> BB03 regmask=[rcx] minReg=1 wt=0.00> | |
| <RefPosition #26 @49 RefTypeUse <Ivl:7> BB03 regmask=[rcx] minReg=1 last fixed wt=0.00> | |
| <RefPosition #27 @49 RefTypeFixedReg <Reg:rdx> BB03 regmask=[rdx] minReg=1 wt=0.00> | |
| <RefPosition #28 @49 RefTypeUse <Ivl:9> BB03 regmask=[rdx] minReg=1 last fixed wt=0.00> | |
| <RefPosition #29 @50 RefTypeKill BB03 regmask=[rax rcx rdx r8-r11 mm0-mm5] minReg=1> | |
| <RefPosition #30 @50 RefTypeFixedReg <Reg:rax> BB03 regmask=[rax] minReg=1 wt=0.00> | |
| <RefPosition #31 @50 RefTypeDef <Ivl:10> CALL BB03 regmask=[rax] minReg=1 fixed wt=0.00> | |
| <RefPosition #32 @51 RefTypeUse <Ivl:10> BB03 regmask=[allInt] minReg=1 last wt=0.00> | |
| <RefPosition #33 @52 RefTypeDef <Ivl:2 V07> STORE_LCL_VAR BB03 regmask=[allInt] minReg=1 wt=0.00> | |
| <RefPosition #34 @55 RefTypeFixedReg <Reg:rcx> BB03 regmask=[rcx] minReg=1 wt=0.00> | |
| <RefPosition #35 @55 RefTypeUse <Ivl:2 V07> LCL_VAR BB03 regmask=[rcx] minReg=1 last fixed wt=0.00> | |
| <RefPosition #36 @56 RefTypeFixedReg <Reg:rcx> BB03 regmask=[rcx] minReg=1 wt=0.00> | |
| <RefPosition #37 @56 RefTypeDef <Ivl:11> PUTARG_REG BB03 regmask=[rcx] minReg=1 fixed wt=0.00> | |
| <RefPosition #38 @59 RefTypeFixedReg <Reg:rdx> BB03 regmask=[rdx] minReg=1 wt=0.00> | |
| <RefPosition #39 @59 RefTypeUse <Ivl:1 V01> LCL_VAR BB03 regmask=[rdx] minReg=1 last fixed wt=400.00> | |
| <RefPosition #40 @60 RefTypeFixedReg <Reg:rdx> BB03 regmask=[rdx] minReg=1 wt=0.00> | |
| <RefPosition #41 @60 RefTypeDef <Ivl:12> PUTARG_REG BB03 regmask=[rdx] minReg=1 fixed wt=0.00> | |
| <RefPosition #42 @65 RefTypeFixedReg <Reg:rcx> BB03 regmask=[rcx] minReg=1 wt=0.00> | |
| <RefPosition #43 @65 RefTypeUse <Ivl:11> BB03 regmask=[rcx] minReg=1 last fixed wt=0.00> | |
| <RefPosition #44 @65 RefTypeFixedReg <Reg:rdx> BB03 regmask=[rdx] minReg=1 wt=0.00> | |
| <RefPosition #45 @65 RefTypeUse <Ivl:12> BB03 regmask=[rdx] minReg=1 last fixed wt=0.00> | |
| <RefPosition #46 @66 RefTypeKill BB03 regmask=[rax rcx rdx r8-r11 mm0-mm5] minReg=1> | |
| VAR REFPOSITIONS BEFORE ALLOCATION | |
| --- V00 (Interval 0) | |
| <RefPosition #0 @0 RefTypeParamDef <Ivl:0 V00> BB00 regmask=[rcx] minReg=1 fixed regOptional wt=100.00> | |
| <RefPosition #5 @19 RefTypeUse <Ivl:0 V00> LCL_VAR BB04 regmask=[allInt] minReg=1 last wt=600.00> | |
| --- V01 (Interval 1) | |
| <RefPosition #1 @0 RefTypeParamDef <Ivl:1 V01> BB00 regmask=[rdx] minReg=1 fixed regOptional wt=100.00> | |
| <RefPosition #3 @9 RefTypeUse <Ivl:1 V01> LCL_VAR BB01 regmask=[allInt] minReg=1 regOptional wt=400.00> | |
| <RefPosition #7 @25 RefTypeUse <Ivl:1 V01> LCL_VAR BB04 regmask=[allInt] minReg=1 last regOptional wt=400.00> | |
| <RefPosition #39 @59 RefTypeUse <Ivl:1 V01> LCL_VAR BB03 regmask=[rdx] minReg=1 last fixed wt=400.00> | |
| --- V02 | |
| --- V03 | |
| --- V04 | |
| --- V05 | |
| --- V06 | |
| --- V07 (Interval 2) | |
| <RefPosition #33 @52 RefTypeDef <Ivl:2 V07> STORE_LCL_VAR BB03 regmask=[allInt] minReg=1 wt=0.00> | |
| <RefPosition #35 @55 RefTypeUse <Ivl:2 V07> LCL_VAR BB03 regmask=[rcx] minReg=1 last fixed wt=0.00> | |
| --- V08 (Interval 3) | |
| <RefPosition #6 @20 RefTypeDef <Ivl:3 V08> STORE_LCL_VAR BB04 regmask=[allInt] minReg=1 wt=400.00> | |
| <RefPosition #9 @29 RefTypeUse <Ivl:3 V08> LCL_VAR BB04 regmask=[allInt] minReg=1 last wt=400.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 LocRP# Name Type Action Reg |rax |rcx |rdx |rbx |rbp |rsi |rdi |r8 |r9 |mm0 |mm1 |mm2 |mm6 |mm7 | | |
| ------------------------------------------+----+----+----+----+----+----+----+----+----+----+----+----+----+----+ | |
| | |V00a|V01a| | | | | | | | | | | | | |
| 0.#0 V00 Parm Keep rcx | |V00a|V01a| | | | | | | | | | | | | |
| 0.#1 V01 Parm ORDER(A) rbx | |V00a| |V01a| | | | | | | | | | | | |
| 1.#2 BB1 PredBB0 | |V00a| |V01a| | | | | | | | | | | | |
| [000002] 9.#3 V01 Use Keep rbx | |V00a| |V01a| | | | | | | | | | | | |
| ------------------------------------------+----+----+----+----+----+----+----+----+----+----+----+----+----+----+ | |
| TreeID LocRP# Name Type Action Reg |rax |rcx |rdx |rbx |rbp |rsi |rdi |r8 |r9 |mm0 |mm1 |mm2 |mm6 |mm7 | | |
| ------------------------------------------+----+----+----+----+----+----+----+----+----+----+----+----+----+----+ | |
| 13.#4 BB4 PredBB1 | |V00a| |V01a| | | | | | | | | | | | |
| [000027] 19.#5 V00 Use * Keep rcx | |V00a| |V01a| | | | | | | | | | | | |
| 20.#6 V08 Def COVRS(A) rcx | |V08a| |V01a| | | | | | | | | | | | |
| [000011] 25.#7 V01 Use * Keep rbx | |V08a| |V01i| | | | | | | | | | | | |
| 26.#8 I4 Def BSFIT(A) rdx | |V08a|I4 a|V01i| | | | | | | | | | | | |
| [000016] 29.#9 V08 Use * Keep rcx | |V08a|I4 a|V01i| | | | | | | | | | | | |
| 29.#10 I4 Use * Keep rdx | |V08a|I4 a|V01i| | | | | | | | | | | | |
| 30.#11 I5 Def Alloc mm0 | | | |V01i| | | | | |I5 a| | | | | | |
| [000017] 31.#12 mm0 Fixd Keep mm0 | | | |V01i| | | | | |I5 a| | | | | | |
| 31.#13 I5 Use * Keep mm0 | | | |V01i| | | | | |I5 a| | | | | | |
| ------------------------------------------+----+----+----+----+----+----+----+----+----+----+----+----+----+----+ | |
| TreeID LocRP# Name Type Action Reg |rax |rcx |rdx |rbx |rbp |rsi |rdi |r8 |r9 |mm0 |mm1 |mm2 |mm6 |mm7 | | |
| ------------------------------------------+----+----+----+----+----+----+----+----+----+----+----+----+----+----+ | |
| 33.#14 BB3 PredBB1 | | | |V01a| | | | | | | | | | | | |
| [000023] 38.#15 C6 Def Alloc rcx | |C6 a| |V01a| | | | | | | | | | | | |
| [000034] 39.#16 rcx Fixd Keep rcx | |C6 a| |V01a| | | | | | | | | | | | |
| 39.#17 C6 Use * Keep rcx | |C6 a| |V01a| | | | | | | | | | | | |
| 40.#18 rcx Fixd Keep rcx | | | |V01a| | | | | | | | | | | | |
| 40.#19 I7 Def Alloc rcx | |I7 a| |V01a| | | | | | | | | | | | |
| [000022] 42.#20 C8 Def Alloc rdx | |I7 a|C8 a|V01a| | | | | | | | | | | | |
| [000035] 43.#21 rdx Fixd Keep rdx | |I7 a|C8 a|V01a| | | | | | | | | | | | |
| 43.#22 C8 Use * Keep rdx | |I7 a|C8 a|V01a| | | | | | | | | | | | |
| 44.#23 rdx Fixd Keep rdx | |I7 a| |V01a| | | | | | | | | | | | |
| 44.#24 I9 Def Alloc rdx | |I7 a|I9 a|V01a| | | | | | | | | | | | |
| [000024] 49.#25 rcx Fixd Keep rcx | |I7 a|I9 a|V01a| | | | | | | | | | | | |
| 49.#26 I7 Use * Keep rcx | |I7 a|I9 a|V01a| | | | | | | | | | | | |
| 49.#27 rdx Fixd Keep rdx | |I7 a|I9 a|V01a| | | | | | | | | | | | |
| 49.#28 I9 Use * Keep rdx | |I7 a|I9 a|V01a| | | | | | | | | | | | |
| 50.#29 Kill None [rax rcx rdx r8-r11 mm0-mm5] | |
| | | | |V01a| | | | | | | | | | | | |
| 50.#30 rax Fixd Keep rax | | | |V01a| | | | | | | | | | | | |
| 50.#31 I10 Def Alloc rax |I10a| | |V01a| | | | | | | | | | | | |
| [000025] 51.#32 I10 Use * Keep rax |I10a| | |V01a| | | | | | | | | | | | |
| 52.#33 V07 Def BSFIT(A) rcx | |V07a| |V01a| | | | | | | | | | | | |
| [000038] 55.#34 rcx Fixd Keep rcx | |V07a| |V01a| | | | | | | | | | | | |
| 55.#35 V07 Use * Keep rcx | |V07a| |V01a| | | | | | | | | | | | |
| 56.#36 rcx Fixd Keep rcx | | | |V01a| | | | | | | | | | | | |
| 56.#37 I11 Def Alloc rcx | |I11a| |V01a| | | | | | | | | | | | |
| [000039] 59.#38 rdx Fixd Keep rdx | |I11a| |V01a| | | | | | | | | | | | |
| 59.#39 V01 Use * Copy rdx | |I11a|V01a|V01a| | | | | | | | | | | | |
| 60.#40 rdx Fixd Keep rdx | |I11a| | | | | | | | | | | | | | |
| 60.#41 I12 Def Alloc rdx | |I11a|I12a| | | | | | | | | | | | | |
| [000006] 65.#42 rcx Fixd Keep rcx | |I11a|I12a| | | | | | | | | | | | | |
| 65.#43 I11 Use * Keep rcx | |I11a|I12a| | | | | | | | | | | | | |
| 65.#44 rdx Fixd Keep rdx | |I11a|I12a| | | | | | | | | | | | | |
| 65.#45 I12 Use * Keep rdx | |I11a|I12a| | | | | | | | | | | | | |
| 66.#46 Kill None [rax rcx rdx r8-r11 mm0-mm5] | |
| | | | | | | | | | | | | | | | | |
| ------------ | |
| REFPOSITIONS AFTER ALLOCATION: | |
| ------------ | |
| <RefPosition #0 @0 RefTypeParamDef <Ivl:0 V00> BB00 regmask=[rcx] minReg=1 fixed regOptional wt=100.00> | |
| <RefPosition #1 @0 RefTypeParamDef <Ivl:1 V01> BB00 regmask=[rbx] minReg=1 regOptional wt=100.00> | |
| <RefPosition #2 @1 RefTypeBB BB01 regmask=[allMask] minReg=1 wt=100.00> | |
| <RefPosition #3 @9 RefTypeUse <Ivl:1 V01> LCL_VAR BB01 regmask=[rbx] minReg=1 regOptional wt=400.00> | |
| <RefPosition #4 @13 RefTypeBB BB04 regmask=[allMask] minReg=1 wt=100.00> | |
| <RefPosition #5 @19 RefTypeUse <Ivl:0 V00> LCL_VAR BB04 regmask=[rcx] minReg=1 last wt=600.00> | |
| <RefPosition #6 @20 RefTypeDef <Ivl:3 V08> STORE_LCL_VAR BB04 regmask=[rcx] minReg=1 wt=400.00> | |
| <RefPosition #7 @25 RefTypeUse <Ivl:1 V01> LCL_VAR BB04 regmask=[rbx] minReg=1 last regOptional wt=400.00> | |
| <RefPosition #8 @26 RefTypeDef <Ivl:4> CAST BB04 regmask=[rdx] minReg=1 wt=400.00> | |
| <RefPosition #9 @29 RefTypeUse <Ivl:3 V08> LCL_VAR BB04 regmask=[rcx] minReg=1 last wt=400.00> | |
| <RefPosition #10 @29 RefTypeUse <Ivl:4> BB04 regmask=[rdx] minReg=1 last wt=100.00> | |
| <RefPosition #11 @30 RefTypeDef <Ivl:5> IND BB04 regmask=[mm0] minReg=1 wt=400.00> | |
| <RefPosition #12 @31 RefTypeFixedReg <Reg:mm0> BB04 regmask=[mm0] minReg=1 wt=100.00> | |
| <RefPosition #13 @31 RefTypeUse <Ivl:5> BB04 regmask=[mm0] minReg=1 last fixed wt=100.00> | |
| <RefPosition #14 @33 RefTypeBB BB03 regmask=[allMask] minReg=1 wt=0.00> | |
| <RefPosition #15 @38 RefTypeDef <Ivl:6> CNS_INT BB03 regmask=[rcx] minReg=1 wt=0.00> | |
| <RefPosition #16 @39 RefTypeFixedReg <Reg:rcx> BB03 regmask=[rcx] minReg=1 wt=0.00> | |
| <RefPosition #17 @39 RefTypeUse <Ivl:6> BB03 regmask=[rcx] minReg=1 last fixed wt=0.00> | |
| <RefPosition #18 @40 RefTypeFixedReg <Reg:rcx> BB03 regmask=[rcx] minReg=1 wt=0.00> | |
| <RefPosition #19 @40 RefTypeDef <Ivl:7> PUTARG_REG BB03 regmask=[rcx] minReg=1 fixed wt=0.00> | |
| <RefPosition #20 @42 RefTypeDef <Ivl:8> CNS_INT BB03 regmask=[rdx] minReg=1 wt=0.00> | |
| <RefPosition #21 @43 RefTypeFixedReg <Reg:rdx> BB03 regmask=[rdx] minReg=1 wt=0.00> | |
| <RefPosition #22 @43 RefTypeUse <Ivl:8> BB03 regmask=[rdx] minReg=1 last fixed wt=0.00> | |
| <RefPosition #23 @44 RefTypeFixedReg <Reg:rdx> BB03 regmask=[rdx] minReg=1 wt=0.00> | |
| <RefPosition #24 @44 RefTypeDef <Ivl:9> PUTARG_REG BB03 regmask=[rdx] minReg=1 fixed wt=0.00> | |
| <RefPosition #25 @49 RefTypeFixedReg <Reg:rcx> BB03 regmask=[rcx] minReg=1 wt=0.00> | |
| <RefPosition #26 @49 RefTypeUse <Ivl:7> BB03 regmask=[rcx] minReg=1 last fixed wt=0.00> | |
| <RefPosition #27 @49 RefTypeFixedReg <Reg:rdx> BB03 regmask=[rdx] minReg=1 wt=0.00> | |
| <RefPosition #28 @49 RefTypeUse <Ivl:9> BB03 regmask=[rdx] minReg=1 last fixed wt=0.00> | |
| <RefPosition #29 @50 RefTypeKill BB03 regmask=[rax rcx rdx r8-r11 mm0-mm5] minReg=1> | |
| <RefPosition #30 @50 RefTypeFixedReg <Reg:rax> BB03 regmask=[rax] minReg=1 wt=0.00> | |
| <RefPosition #31 @50 RefTypeDef <Ivl:10> CALL BB03 regmask=[rax] minReg=1 fixed wt=0.00> | |
| <RefPosition #32 @51 RefTypeUse <Ivl:10> BB03 regmask=[rax] minReg=1 last wt=0.00> | |
| <RefPosition #33 @52 RefTypeDef <Ivl:2 V07> STORE_LCL_VAR BB03 regmask=[rcx] minReg=1 wt=0.00> | |
| <RefPosition #34 @55 RefTypeFixedReg <Reg:rcx> BB03 regmask=[rcx] minReg=1 wt=0.00> | |
| <RefPosition #35 @55 RefTypeUse <Ivl:2 V07> LCL_VAR BB03 regmask=[rcx] minReg=1 last fixed wt=0.00> | |
| <RefPosition #36 @56 RefTypeFixedReg <Reg:rcx> BB03 regmask=[rcx] minReg=1 wt=0.00> | |
| <RefPosition #37 @56 RefTypeDef <Ivl:11> PUTARG_REG BB03 regmask=[rcx] minReg=1 fixed wt=0.00> | |
| <RefPosition #38 @59 RefTypeFixedReg <Reg:rdx> BB03 regmask=[rdx] minReg=1 wt=0.00> | |
| <RefPosition #39 @59 RefTypeUse <Ivl:1 V01> LCL_VAR BB03 regmask=[rdx] minReg=1 last copy fixed wt=400.00> | |
| <RefPosition #40 @60 RefTypeFixedReg <Reg:rdx> BB03 regmask=[rdx] minReg=1 wt=0.00> | |
| <RefPosition #41 @60 RefTypeDef <Ivl:12> PUTARG_REG BB03 regmask=[rdx] minReg=1 fixed wt=0.00> | |
| <RefPosition #42 @65 RefTypeFixedReg <Reg:rcx> BB03 regmask=[rcx] minReg=1 wt=0.00> | |
| <RefPosition #43 @65 RefTypeUse <Ivl:11> BB03 regmask=[rcx] minReg=1 last fixed wt=0.00> | |
| <RefPosition #44 @65 RefTypeFixedReg <Reg:rdx> BB03 regmask=[rdx] minReg=1 wt=0.00> | |
| <RefPosition #45 @65 RefTypeUse <Ivl:12> BB03 regmask=[rdx] minReg=1 last fixed wt=0.00> | |
| <RefPosition #46 @66 RefTypeKill BB03 regmask=[rax rcx rdx r8-r11 mm0-mm5] minReg=1> | |
| VAR REFPOSITIONS AFTER ALLOCATION | |
| --- V00 (Interval 0) | |
| <RefPosition #0 @0 RefTypeParamDef <Ivl:0 V00> BB00 regmask=[rcx] minReg=1 fixed regOptional wt=100.00> | |
| <RefPosition #5 @19 RefTypeUse <Ivl:0 V00> LCL_VAR BB04 regmask=[rcx] minReg=1 last wt=600.00> | |
| --- V01 (Interval 1) | |
| <RefPosition #1 @0 RefTypeParamDef <Ivl:1 V01> BB00 regmask=[rbx] minReg=1 regOptional wt=100.00> | |
| <RefPosition #3 @9 RefTypeUse <Ivl:1 V01> LCL_VAR BB01 regmask=[rbx] minReg=1 regOptional wt=400.00> | |
| <RefPosition #7 @25 RefTypeUse <Ivl:1 V01> LCL_VAR BB04 regmask=[rbx] minReg=1 last regOptional wt=400.00> | |
| <RefPosition #39 @59 RefTypeUse <Ivl:1 V01> LCL_VAR BB03 regmask=[rdx] minReg=1 last copy fixed wt=400.00> | |
| --- V02 | |
| --- V03 | |
| --- V04 | |
| --- V05 | |
| --- V06 | |
| --- V07 (Interval 2) | |
| <RefPosition #33 @52 RefTypeDef <Ivl:2 V07> STORE_LCL_VAR BB03 regmask=[rcx] minReg=1 wt=0.00> | |
| <RefPosition #35 @55 RefTypeUse <Ivl:2 V07> LCL_VAR BB03 regmask=[rcx] minReg=1 last fixed wt=0.00> | |
| --- V08 (Interval 3) | |
| <RefPosition #6 @20 RefTypeDef <Ivl:3 V08> STORE_LCL_VAR BB04 regmask=[rcx] minReg=1 wt=400.00> | |
| <RefPosition #9 @29 RefTypeUse <Ivl:3 V08> LCL_VAR BB04 regmask=[rcx] minReg=1 last wt=400.00> | |
| Active intervals at end of allocation: | |
| ----------------------- | |
| RESOLVING BB BOUNDARIES | |
| ----------------------- | |
| Resolution Candidates: {V00 V01} | |
| Has No Critical Edges | |
| Prior to Resolution | |
| BB01 | |
| use: {V01} | |
| def: {} | |
| in: {V00 V01} | |
| out: {V00 V01} | |
| Var=Reg beg of BB01: V00=rcx V01=rbx | |
| Var=Reg end of BB01: V00=rcx V01=rbx | |
| BB03 | |
| use: {V01} | |
| def: {V07} | |
| in: {V01} | |
| out: {} | |
| Var=Reg beg of BB03: V01=rbx | |
| Var=Reg end of BB03: none | |
| BB04 | |
| use: {V00 V01} | |
| def: {V08} | |
| in: {V00 V01} | |
| out: {} | |
| Var=Reg beg of BB04: V00=rcx V01=rbx | |
| Var=Reg end of BB04: none | |
| RESOLVING EDGES | |
| Set V00 argument initial register to rcx | |
| Set V01 argument initial register to rbx | |
| Trees after linear scan register allocator (LSRA) | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BBnum BBid ref try hnd preds weight IBC [IL range] [jump] [EH region] [flags] | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BB01 [0000] 1 1 2 [000..004)-> BB04(1),BB03(0) ( cond ) i LIR IBC | |
| BB03 [0002] 1 BB01 0 0 [008..013) (throw ) i LIR IBC rare hascall gcsafe | |
| BB04 [0003] 1 BB01 1 2 [013..022) (return) i LIR IBC | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| ------------ BB01 [0000] [000..004) -> BB04(1),BB03(0) (cond), preds={} succs={BB03,BB04} | |
| N003 (???,???) [000031] ----------- IL_OFFSET void INLRT @ 0x000[E-] REG NA | |
| N005 ( 1, 1) [000000] -----+----- t0 = LCL_VAR int V01 arg1 u:1 rbx REG rbx $c0 | |
| N007 ( 1, 1) [000001] -c---+----- t1 = CNS_INT int 1 REG NA | |
| /--* t0 int | |
| +--* t1 int | |
| N009 ( 3, 3) [000002] -----+-N-U- * CMP void REG NA | |
| N011 ( 5, 5) [000003] -----+----- JCC void cond=ULE REG NA | |
| ------------ BB03 [0002] [008..013) (throw), preds={BB01} succs={} | |
| N035 (???,???) [000032] ----------- IL_OFFSET void INLRT @ 0x008[E-] REG NA | |
| N037 ( 1, 1) [000023] -----+----- t23 = CNS_INT int 1 REG rcx $41 | |
| /--* t23 int | |
| N039 (???,???) [000034] ----------- t34 = * PUTARG_REG int REG rcx | |
| N041 ( 3, 10) [000022] H----+----- t22 = CNS_INT(h) long 0x7ff7f1188938 scope REG rdx $340 | |
| /--* t22 long | |
| N043 (???,???) [000035] ----------- t35 = * PUTARG_REG long REG rdx | |
| N045 ( 3, 10) [000036] Hc--------- t36 = CNS_INT(h) long 0x7ff7f0e0d9c8 ftn REG NA | |
| /--* t36 long | |
| N047 ( 5, 12) [000037] nc--G------ t37 = * IND long REG NA | |
| /--* t34 int arg0 rcx | |
| +--* t35 long arg1 rdx | |
| +--* t37 long control expr | |
| N049 ( 18, 18) [000024] --C-G+----- t24 = * CALL help ref CORINFO_HELP_STRCNS REG rax $2c2 | |
| /--* t24 ref | |
| N051 ( 22, 21) [000025] DAC-G+----- * STORE_LCL_VAR ref V07 tmp5 d:2 rcx REG rcx $VN.Void | |
| N053 ( 3, 2) [000026] -----+----- t26 = LCL_VAR ref V07 tmp5 u:2 rcx (last use) REG rcx $2c2 | |
| /--* t26 ref | |
| N055 (???,???) [000038] ----------- t38 = * PUTARG_REG ref REG rcx | |
| N057 ( 1, 1) [000005] -----+----- t5 = LCL_VAR int V01 arg1 u:1 rbx (last use) REG rbx $c0 | |
| /--* t5 int | |
| N059 (???,???) [000039] ----------- t39 = * PUTARG_REG int REG rdx | |
| N061 ( 3, 10) [000040] Hc--------- t40 = CNS_INT(h) long 0x7ff7f13342a0 ftn REG NA | |
| /--* t40 long | |
| N063 ( 5, 12) [000041] nc--G------ t41 = * IND long REG NA | |
| /--* t38 ref arg0 rcx | |
| +--* t39 int arg1 rdx | |
| +--* t41 long control expr | |
| N065 ( 43, 31) [000006] -ACXG+----- * CALL void Program.EntryPoint:ThrowOutOfRangeException[int](System.String,int) REG NA $VN.Void | |
| ------------ BB04 [0003] [013..022) (return), preds={BB01} succs={} | |
| N015 (???,???) [000033] ----------- IL_OFFSET void INLRT @ 0x013[E-] REG NA | |
| N017 ( 1, 1) [000008] -----+----- t8 = LCL_VAR byref V00 arg0 u:1 rcx (last use) REG rcx $80 | |
| /--* t8 byref | |
| N019 ( 1, 3) [000027] DA---+----- * STORE_LCL_VAR long V08 tmp6 d:1 rcx REG rcx $VN.Void | |
| N021 ( 1, 1) [000028] -----+----- t28 = LCL_VAR long V08 tmp6 u:1 rcx (last use) REG rcx $180 | |
| N023 ( 1, 1) [000010] -----+----- t10 = LCL_VAR int V01 arg1 u:1 rbx (last use) REG rbx $c0 | |
| /--* t10 int | |
| N025 ( 2, 3) [000011] -----+---U- t11 = * CAST long <- uint REG rdx $181 | |
| /--* t28 long | |
| +--* t11 long | |
| N027 ( 5, 8) [000015] -c---+----- t15 = * LEA(b+(i*4)+0) long REG NA | |
| /--* t15 long | |
| N029 ( 6, 6) [000016] -A-XG+----- t16 = * IND float REG mm0 <l:$301, c:$300> | |
| /--* t16 float | |
| N031 ( 7, 7) [000017] -A-XG+----- * RETURN float REG NA $2c1 | |
| ------------------------------------------------------------------------------------------------------------------- | |
| Final allocation | |
| ------------------------------------------+----+----+----+----+----+----+----+----+----+----+----+----+----+----+ | |
| TreeID LocRP# Name Type Action Reg |rax |rcx |rdx |rbx |rbp |rsi |rdi |r8 |r9 |mm0 |mm1 |mm2 |mm6 |mm7 | | |
| ------------------------------------------+----+----+----+----+----+----+----+----+----+----+----+----+----+----+ | |
| 0.#0 V00 Parm Alloc rcx | |V00a| | | | | | | | | | | | | | |
| 0.#1 V01 Parm Alloc rbx | |V00a| |V01a| | | | | | | | | | | | |
| 1.#2 BB1 PredBB0 | |V00a| |V01a| | | | | | | | | | | | |
| [000002] 9.#3 V01 Use Keep rbx | |V00a| |V01a| | | | | | | | | | | | |
| ------------------------------------------+----+----+----+----+----+----+----+----+----+----+----+----+----+----+ | |
| TreeID LocRP# Name Type Action Reg |rax |rcx |rdx |rbx |rbp |rsi |rdi |r8 |r9 |mm0 |mm1 |mm2 |mm6 |mm7 | | |
| ------------------------------------------+----+----+----+----+----+----+----+----+----+----+----+----+----+----+ | |
| 13.#4 BB4 PredBB1 | |V00a| |V01a| | | | | | | | | | | | |
| [000027] 19.#5 V00 Use * Keep rcx | |V00i| |V01a| | | | | | | | | | | | |
| 20.#6 V08 Def Alloc rcx | |V08a| |V01a| | | | | | | | | | | | |
| [000011] 25.#7 V01 Use * Keep rbx | |V08a| |V01i| | | | | | | | | | | | |
| 26.#8 I4 Def Alloc rdx | |V08a|I4 a| | | | | | | | | | | | | |
| [000016] 29.#9 V08 Use * Keep rcx | |V08i|I4 a| | | | | | | | | | | | | |
| 29.#10 I4 Use * Keep rdx | | |I4 i| | | | | | | | | | | | | |
| 30.#11 I5 Def Alloc mm0 | | | | | | | | | |I5 a| | | | | | |
| [000017] 31.#12 mm0 Fixd Keep mm0 | | | | | | | | | |I5 a| | | | | | |
| 31.#13 I5 Use * Keep mm0 | | | | | | | | | |I5 i| | | | | | |
| ------------------------------------------+----+----+----+----+----+----+----+----+----+----+----+----+----+----+ | |
| TreeID LocRP# Name Type Action Reg |rax |rcx |rdx |rbx |rbp |rsi |rdi |r8 |r9 |mm0 |mm1 |mm2 |mm6 |mm7 | | |
| ------------------------------------------+----+----+----+----+----+----+----+----+----+----+----+----+----+----+ | |
| 33.#14 BB3 PredBB1 | | | |V01a| | | | | | | | | | | | |
| [000023] 38.#15 C6 Def Alloc rcx | |C6 a| |V01a| | | | | | | | | | | | |
| [000034] 39.#16 rcx Fixd Keep rcx | |C6 a| |V01a| | | | | | | | | | | | |
| 39.#17 C6 Use * Keep rcx | |C6 i| |V01a| | | | | | | | | | | | |
| 40.#18 rcx Fixd Keep rcx | | | |V01a| | | | | | | | | | | | |
| 40.#19 I7 Def Alloc rcx | |I7 a| |V01a| | | | | | | | | | | | |
| [000022] 42.#20 C8 Def Alloc rdx | |I7 a|C8 a|V01a| | | | | | | | | | | | |
| [000035] 43.#21 rdx Fixd Keep rdx | |I7 a|C8 a|V01a| | | | | | | | | | | | |
| 43.#22 C8 Use * Keep rdx | |I7 a|C8 i|V01a| | | | | | | | | | | | |
| 44.#23 rdx Fixd Keep rdx | |I7 a| |V01a| | | | | | | | | | | | |
| 44.#24 I9 Def Alloc rdx | |I7 a|I9 a|V01a| | | | | | | | | | | | |
| [000024] 49.#25 rcx Fixd Keep rcx | |I7 a|I9 a|V01a| | | | | | | | | | | | |
| 49.#26 I7 Use * Keep rcx | |I7 i|I9 a|V01a| | | | | | | | | | | | |
| 49.#27 rdx Fixd Keep rdx | | |I9 a|V01a| | | | | | | | | | | | |
| 49.#28 I9 Use * Keep rdx | | |I9 i|V01a| | | | | | | | | | | | |
| 50.#29 Kill None [rax rcx rdx r8-r11 mm0-mm5] | |
| | | | |V01a| | | | | | | | | | | | |
| 50.#30 rax Fixd Keep rax | | | |V01a| | | | | | | | | | | | |
| 50.#31 I10 Def Alloc rax |I10a| | |V01a| | | | | | | | | | | | |
| [000025] 51.#32 I10 Use * Keep rax |I10i| | |V01a| | | | | | | | | | | | |
| 52.#33 V07 Def Alloc rcx | |V07a| |V01a| | | | | | | | | | | | |
| [000038] 55.#34 rcx Fixd Keep rcx | |V07a| |V01a| | | | | | | | | | | | |
| 55.#35 V07 Use * Keep rcx | |V07i| |V01a| | | | | | | | | | | | |
| 56.#36 rcx Fixd Keep rcx | | | |V01a| | | | | | | | | | | | |
| 56.#37 I11 Def Alloc rcx | |I11a| |V01a| | | | | | | | | | | | |
| [000039] 59.#38 rdx Fixd Keep rdx | |I11a| |V01a| | | | | | | | | | | | |
| 59.#39 V01 Use * Copy rdx | |I11a|V01i|V01i| | | | | | | | | | | | |
| 60.#40 rdx Fixd Keep rdx | |I11a| | | | | | | | | | | | | | |
| 60.#41 I12 Def Alloc rdx | |I11a|I12a| | | | | | | | | | | | | |
| [000006] 65.#42 rcx Fixd Keep rcx | |I11a|I12a| | | | | | | | | | | | | |
| 65.#43 I11 Use * Keep rcx | |I11i|I12a| | | | | | | | | | | | | |
| 65.#44 rdx Fixd Keep rdx | | |I12a| | | | | | | | | | | | | |
| 65.#45 I12 Use * Keep rdx | | |I12i| | | | | | | | | | | | | |
| 66.#46 Kill None [rax rcx rdx r8-r11 mm0-mm5] | |
| | | | | | | | | | | | | | | | | |
| Recording the maximum number of concurrent spills: | |
| ---------- | |
| LSRA Stats | |
| ---------- | |
| Register selection order: ABCDEFGHIJKLMNOPQ | |
| Total Tracked Vars: 4 | |
| Total Reg Cand Vars: 4 | |
| Total number of Intervals: 12 | |
| Total number of RefPositions: 46 | |
| Total Number of spill temps created: 0 | |
| .......... | |
| BB00 [ 100.00]: REG_ORDER = 1 | |
| BB03 [ 0.00]: BEST_FIT = 1 | |
| BB04 [ 2.00]: COVERS = 1, BEST_FIT = 1 | |
| .......... | |
| 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] : 1 Weighted: 2.000000 | |
| Total BEST_FIT [#11] : 2 Weighted: 2.000000 | |
| Total REG_ORDER [#13] : 1 Weighted: 100.000000 | |
| TUPLE STYLE DUMP WITH REGISTER ASSIGNMENTS | |
| Incoming Parameters: V00(rcx) V01(rdx=>rbx) | |
| BB01 [0000] [000..004) -> BB04(1),BB03(0) (cond), preds={} succs={BB03,BB04} | |
| ===== | |
| N003. IL_OFFSET INLRT @ 0x000[E-] | |
| N005. V01(rbx) | |
| N007. CNS_INT 1 | |
| N009. CMP ; rbx | |
| N011. JCC cond=ULE | |
| Var=Reg end of BB01: V00=rcx V01=rbx | |
| BB04 [0003] [013..022) (return), preds={BB01} succs={} | |
| ===== | |
| Predecessor for variable locations: BB01 | |
| Var=Reg beg of BB04: V00=rcx V01=rbx | |
| N015. IL_OFFSET INLRT @ 0x013[E-] | |
| N017. V00(rcx*) | |
| * N019. V08(rcx); rcx* | |
| N021. V08(rcx*) | |
| N023. V01(rbx*) | |
| N025. rdx = CAST ; rbx* | |
| N027. STK = LEA(b+(i*4)+0); rcx*,rdx | |
| N029. mm0 = IND ; STK | |
| N031. RETURN ; mm0 | |
| Var=Reg end of BB04: none | |
| BB03 [0002] [008..013) (throw), preds={BB01} succs={} | |
| ===== | |
| Predecessor for variable locations: BB01 | |
| Var=Reg beg of BB03: V01=rbx | |
| N035. IL_OFFSET INLRT @ 0x008[E-] | |
| N037. rcx = CNS_INT 1 | |
| N039. rcx = PUTARG_REG; rcx | |
| N041. rdx = CNS_INT(h) 0x7ff7f1188938 scope | |
| N043. rdx = PUTARG_REG; rdx | |
| N045. CNS_INT(h) 0x7ff7f0e0d9c8 ftn | |
| N047. IND | |
| N049. rax = CALL help; rcx,rdx | |
| * N051. V07(rcx); rax | |
| N053. V07(rcx*) | |
| N055. rcx = PUTARG_REG; rcx* | |
| N057. V01(rbx*) | |
| N059. rdx = PUTARG_REG; rbx* | |
| N061. CNS_INT(h) 0x7ff7f13342a0 ftn | |
| N063. IND | |
| N065. CALL ; rcx,rdx | |
| Var=Reg end of BB03: none | |
| *************** Finishing PHASE Linear scan register alloc | |
| Trees after Linear scan register alloc | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BBnum BBid ref try hnd preds weight IBC [IL range] [jump] [EH region] [flags] | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BB01 [0000] 1 1 2 [000..004)-> BB04(1),BB03(0) ( cond ) i LIR IBC | |
| BB03 [0002] 1 BB01 0 0 [008..013) (throw ) i LIR IBC rare hascall gcsafe | |
| BB04 [0003] 1 BB01 1 2 [013..022) (return) i LIR IBC | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| ------------ BB01 [0000] [000..004) -> BB04(1),BB03(0) (cond), preds={} succs={BB03,BB04} | |
| N003 (???,???) [000031] ----------- IL_OFFSET void INLRT @ 0x000[E-] REG NA | |
| N005 ( 1, 1) [000000] -----+----- t0 = LCL_VAR int V01 arg1 u:1 rbx REG rbx $c0 | |
| N007 ( 1, 1) [000001] -c---+----- t1 = CNS_INT int 1 REG NA | |
| /--* t0 int | |
| +--* t1 int | |
| N009 ( 3, 3) [000002] -----+-N-U- * CMP void REG NA | |
| N011 ( 5, 5) [000003] -----+----- JCC void cond=ULE REG NA | |
| ------------ BB03 [0002] [008..013) (throw), preds={BB01} succs={} | |
| N035 (???,???) [000032] ----------- IL_OFFSET void INLRT @ 0x008[E-] REG NA | |
| N037 ( 1, 1) [000023] -----+----- t23 = CNS_INT int 1 REG rcx $41 | |
| /--* t23 int | |
| N039 (???,???) [000034] ----------- t34 = * PUTARG_REG int REG rcx | |
| N041 ( 3, 10) [000022] H----+----- t22 = CNS_INT(h) long 0x7ff7f1188938 scope REG rdx $340 | |
| /--* t22 long | |
| N043 (???,???) [000035] ----------- t35 = * PUTARG_REG long REG rdx | |
| N045 ( 3, 10) [000036] Hc--------- t36 = CNS_INT(h) long 0x7ff7f0e0d9c8 ftn REG NA | |
| /--* t36 long | |
| N047 ( 5, 12) [000037] nc--G------ t37 = * IND long REG NA | |
| /--* t34 int arg0 rcx | |
| +--* t35 long arg1 rdx | |
| +--* t37 long control expr | |
| N049 ( 18, 18) [000024] --C-G+----- t24 = * CALL help ref CORINFO_HELP_STRCNS REG rax $2c2 | |
| /--* t24 ref | |
| N051 ( 22, 21) [000025] DAC-G+----- * STORE_LCL_VAR ref V07 tmp5 d:2 rcx REG rcx $VN.Void | |
| N053 ( 3, 2) [000026] -----+----- t26 = LCL_VAR ref V07 tmp5 u:2 rcx (last use) REG rcx $2c2 | |
| /--* t26 ref | |
| N055 (???,???) [000038] ----------- t38 = * PUTARG_REG ref REG rcx | |
| N057 ( 1, 1) [000005] -----+----- t5 = LCL_VAR int V01 arg1 u:1 rbx (last use) REG rbx $c0 | |
| /--* t5 int | |
| N059 (???,???) [000039] ----------- t39 = * PUTARG_REG int REG rdx | |
| N061 ( 3, 10) [000040] Hc--------- t40 = CNS_INT(h) long 0x7ff7f13342a0 ftn REG NA | |
| /--* t40 long | |
| N063 ( 5, 12) [000041] nc--G------ t41 = * IND long REG NA | |
| /--* t38 ref arg0 rcx | |
| +--* t39 int arg1 rdx | |
| +--* t41 long control expr | |
| N065 ( 43, 31) [000006] -ACXG+----- * CALL void Program.EntryPoint:ThrowOutOfRangeException[int](System.String,int) REG NA $VN.Void | |
| ------------ BB04 [0003] [013..022) (return), preds={BB01} succs={} | |
| N015 (???,???) [000033] ----------- IL_OFFSET void INLRT @ 0x013[E-] REG NA | |
| N017 ( 1, 1) [000008] -----+----- t8 = LCL_VAR byref V00 arg0 u:1 rcx (last use) REG rcx $80 | |
| /--* t8 byref | |
| N019 ( 1, 3) [000027] DA---+----- * STORE_LCL_VAR long V08 tmp6 d:1 rcx REG rcx $VN.Void | |
| N021 ( 1, 1) [000028] -----+----- t28 = LCL_VAR long V08 tmp6 u:1 rcx (last use) REG rcx $180 | |
| N023 ( 1, 1) [000010] -----+----- t10 = LCL_VAR int V01 arg1 u:1 rbx (last use) REG rbx $c0 | |
| /--* t10 int | |
| N025 ( 2, 3) [000011] -----+---U- t11 = * CAST long <- uint REG rdx $181 | |
| /--* t28 long | |
| +--* t11 long | |
| N027 ( 5, 8) [000015] -c---+----- t15 = * LEA(b+(i*4)+0) long REG NA | |
| /--* t15 long | |
| N029 ( 6, 6) [000016] -A-XG+----- t16 = * IND float REG mm0 <l:$301, c:$300> | |
| /--* t16 float | |
| N031 ( 7, 7) [000017] -A-XG+----- * RETURN float REG NA $2c1 | |
| ------------------------------------------------------------------------------------------------------------------- | |
| *************** In fgDebugCheckBBlist | |
| Checking Profile Weights (flags:0x1c) | |
| Profile is self-consistent (3 profiled blocks, 0 unprofiled) | |
| *************** Starting PHASE Optimize layout | |
| *************** In fgSearchImprovedLayout() | |
| Initial BasicBlocks | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BBnum BBid ref try hnd preds weight IBC [IL range] [jump] [EH region] [flags] | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BB01 [0000] 1 1 2 [000..004)-> BB04(1),BB03(0) ( cond ) i LIR IBC | |
| BB03 [0002] 1 BB01 0 0 [008..013) (throw ) i LIR IBC rare hascall gcsafe | |
| BB04 [0003] 1 BB01 1 2 [013..022) (return) i LIR IBC | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| Not enough blocks to partition anything. Skipping reordering. | |
| Reordering block list | |
| *************** Finishing PHASE Optimize layout | |
| Trees after Optimize layout | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BBnum BBid ref try hnd preds weight IBC [IL range] [jump] [EH region] [flags] | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BB01 [0000] 1 1 2 [000..004)-> BB04(1),BB03(0) ( cond ) i LIR IBC | |
| BB04 [0003] 1 BB01 1 2 [013..022) (return) i LIR IBC | |
| BB03 [0002] 1 BB01 0 0 [008..013) (throw ) i LIR IBC rare hascall gcsafe | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| ------------ BB01 [0000] [000..004) -> BB04(1),BB03(0) (cond), preds={} succs={BB03,BB04} | |
| N003 (???,???) [000031] ----------- IL_OFFSET void INLRT @ 0x000[E-] REG NA | |
| N005 ( 1, 1) [000000] -----+----- t0 = LCL_VAR int V01 arg1 u:1 rbx REG rbx $c0 | |
| N007 ( 1, 1) [000001] -c---+----- t1 = CNS_INT int 1 REG NA | |
| /--* t0 int | |
| +--* t1 int | |
| N009 ( 3, 3) [000002] -----+-N-U- * CMP void REG NA | |
| N011 ( 5, 5) [000003] -----+----- JCC void cond=ULE REG NA | |
| ------------ BB04 [0003] [013..022) (return), preds={BB01} succs={} | |
| N015 (???,???) [000033] ----------- IL_OFFSET void INLRT @ 0x013[E-] REG NA | |
| N017 ( 1, 1) [000008] -----+----- t8 = LCL_VAR byref V00 arg0 u:1 rcx (last use) REG rcx $80 | |
| /--* t8 byref | |
| N019 ( 1, 3) [000027] DA---+----- * STORE_LCL_VAR long V08 tmp6 d:1 rcx REG rcx $VN.Void | |
| N021 ( 1, 1) [000028] -----+----- t28 = LCL_VAR long V08 tmp6 u:1 rcx (last use) REG rcx $180 | |
| N023 ( 1, 1) [000010] -----+----- t10 = LCL_VAR int V01 arg1 u:1 rbx (last use) REG rbx $c0 | |
| /--* t10 int | |
| N025 ( 2, 3) [000011] -----+---U- t11 = * CAST long <- uint REG rdx $181 | |
| /--* t28 long | |
| +--* t11 long | |
| N027 ( 5, 8) [000015] -c---+----- t15 = * LEA(b+(i*4)+0) long REG NA | |
| /--* t15 long | |
| N029 ( 6, 6) [000016] -A-XG+----- t16 = * IND float REG mm0 <l:$301, c:$300> | |
| /--* t16 float | |
| N031 ( 7, 7) [000017] -A-XG+----- * RETURN float REG NA $2c1 | |
| ------------ BB03 [0002] [008..013) (throw), preds={BB01} succs={} | |
| N035 (???,???) [000032] ----------- IL_OFFSET void INLRT @ 0x008[E-] REG NA | |
| N037 ( 1, 1) [000023] -----+----- t23 = CNS_INT int 1 REG rcx $41 | |
| /--* t23 int | |
| N039 (???,???) [000034] ----------- t34 = * PUTARG_REG int REG rcx | |
| N041 ( 3, 10) [000022] H----+----- t22 = CNS_INT(h) long 0x7ff7f1188938 scope REG rdx $340 | |
| /--* t22 long | |
| N043 (???,???) [000035] ----------- t35 = * PUTARG_REG long REG rdx | |
| N045 ( 3, 10) [000036] Hc--------- t36 = CNS_INT(h) long 0x7ff7f0e0d9c8 ftn REG NA | |
| /--* t36 long | |
| N047 ( 5, 12) [000037] nc--G------ t37 = * IND long REG NA | |
| /--* t34 int arg0 rcx | |
| +--* t35 long arg1 rdx | |
| +--* t37 long control expr | |
| N049 ( 18, 18) [000024] --C-G+----- t24 = * CALL help ref CORINFO_HELP_STRCNS REG rax $2c2 | |
| /--* t24 ref | |
| N051 ( 22, 21) [000025] DAC-G+----- * STORE_LCL_VAR ref V07 tmp5 d:2 rcx REG rcx $VN.Void | |
| N053 ( 3, 2) [000026] -----+----- t26 = LCL_VAR ref V07 tmp5 u:2 rcx (last use) REG rcx $2c2 | |
| /--* t26 ref | |
| N055 (???,???) [000038] ----------- t38 = * PUTARG_REG ref REG rcx | |
| N057 ( 1, 1) [000005] -----+----- t5 = LCL_VAR int V01 arg1 u:1 rbx (last use) REG rbx $c0 | |
| /--* t5 int | |
| N059 (???,???) [000039] ----------- t39 = * PUTARG_REG int REG rdx | |
| N061 ( 3, 10) [000040] Hc--------- t40 = CNS_INT(h) long 0x7ff7f13342a0 ftn REG NA | |
| /--* t40 long | |
| N063 ( 5, 12) [000041] nc--G------ t41 = * IND long REG NA | |
| /--* t38 ref arg0 rcx | |
| +--* t39 int arg1 rdx | |
| +--* t41 long control expr | |
| N065 ( 43, 31) [000006] -ACXG+----- * CALL void Program.EntryPoint:ThrowOutOfRangeException[int](System.String,int) REG NA $VN.Void | |
| ------------------------------------------------------------------------------------------------------------------- | |
| *************** In fgDebugCheckBBlist | |
| Checking Profile Weights (flags:0x1c) | |
| Profile is self-consistent (3 profiled blocks, 0 unprofiled) | |
| *************** Starting PHASE Optimize post-layout | |
| *************** Finishing PHASE Optimize post-layout | |
| Trees after Optimize post-layout | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BBnum BBid ref try hnd preds weight IBC [IL range] [jump] [EH region] [flags] | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BB01 [0000] 1 1 2 [000..004)-> BB03(0),BB04(1) ( cond ) i LIR IBC | |
| BB04 [0003] 1 BB01 1 2 [013..022) (return) i LIR IBC | |
| BB03 [0002] 1 BB01 0 0 [008..013) (throw ) i LIR IBC rare hascall gcsafe | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| ------------ BB01 [0000] [000..004) -> BB03(0),BB04(1) (cond), preds={} succs={BB04,BB03} | |
| N003 (???,???) [000031] ----------- IL_OFFSET void INLRT @ 0x000[E-] REG NA | |
| N005 ( 1, 1) [000000] -----+----- t0 = LCL_VAR int V01 arg1 u:1 rbx REG rbx $c0 | |
| N007 ( 1, 1) [000001] -c---+----- t1 = CNS_INT int 1 REG NA | |
| /--* t0 int | |
| +--* t1 int | |
| N009 ( 3, 3) [000002] -----+-N-U- * CMP void REG NA | |
| N011 ( 5, 5) [000003] -----+----- JCC void cond=UGT REG NA | |
| ------------ BB04 [0003] [013..022) (return), preds={BB01} succs={} | |
| N015 (???,???) [000033] ----------- IL_OFFSET void INLRT @ 0x013[E-] REG NA | |
| N017 ( 1, 1) [000008] -----+----- t8 = LCL_VAR byref V00 arg0 u:1 rcx (last use) REG rcx $80 | |
| /--* t8 byref | |
| N019 ( 1, 3) [000027] DA---+----- * STORE_LCL_VAR long V08 tmp6 d:1 rcx REG rcx $VN.Void | |
| N021 ( 1, 1) [000028] -----+----- t28 = LCL_VAR long V08 tmp6 u:1 rcx (last use) REG rcx $180 | |
| N023 ( 1, 1) [000010] -----+----- t10 = LCL_VAR int V01 arg1 u:1 rbx (last use) REG rbx $c0 | |
| /--* t10 int | |
| N025 ( 2, 3) [000011] -----+---U- t11 = * CAST long <- uint REG rdx $181 | |
| /--* t28 long | |
| +--* t11 long | |
| N027 ( 5, 8) [000015] -c---+----- t15 = * LEA(b+(i*4)+0) long REG NA | |
| /--* t15 long | |
| N029 ( 6, 6) [000016] -A-XG+----- t16 = * IND float REG mm0 <l:$301, c:$300> | |
| /--* t16 float | |
| N031 ( 7, 7) [000017] -A-XG+----- * RETURN float REG NA $2c1 | |
| ------------ BB03 [0002] [008..013) (throw), preds={BB01} succs={} | |
| N035 (???,???) [000032] ----------- IL_OFFSET void INLRT @ 0x008[E-] REG NA | |
| N037 ( 1, 1) [000023] -----+----- t23 = CNS_INT int 1 REG rcx $41 | |
| /--* t23 int | |
| N039 (???,???) [000034] ----------- t34 = * PUTARG_REG int REG rcx | |
| N041 ( 3, 10) [000022] H----+----- t22 = CNS_INT(h) long 0x7ff7f1188938 scope REG rdx $340 | |
| /--* t22 long | |
| N043 (???,???) [000035] ----------- t35 = * PUTARG_REG long REG rdx | |
| N045 ( 3, 10) [000036] Hc--------- t36 = CNS_INT(h) long 0x7ff7f0e0d9c8 ftn REG NA | |
| /--* t36 long | |
| N047 ( 5, 12) [000037] nc--G------ t37 = * IND long REG NA | |
| /--* t34 int arg0 rcx | |
| +--* t35 long arg1 rdx | |
| +--* t37 long control expr | |
| N049 ( 18, 18) [000024] --C-G+----- t24 = * CALL help ref CORINFO_HELP_STRCNS REG rax $2c2 | |
| /--* t24 ref | |
| N051 ( 22, 21) [000025] DAC-G+----- * STORE_LCL_VAR ref V07 tmp5 d:2 rcx REG rcx $VN.Void | |
| N053 ( 3, 2) [000026] -----+----- t26 = LCL_VAR ref V07 tmp5 u:2 rcx (last use) REG rcx $2c2 | |
| /--* t26 ref | |
| N055 (???,???) [000038] ----------- t38 = * PUTARG_REG ref REG rcx | |
| N057 ( 1, 1) [000005] -----+----- t5 = LCL_VAR int V01 arg1 u:1 rbx (last use) REG rbx $c0 | |
| /--* t5 int | |
| N059 (???,???) [000039] ----------- t39 = * PUTARG_REG int REG rdx | |
| N061 ( 3, 10) [000040] Hc--------- t40 = CNS_INT(h) long 0x7ff7f13342a0 ftn REG NA | |
| /--* t40 long | |
| N063 ( 5, 12) [000041] nc--G------ t41 = * IND long REG NA | |
| /--* t38 ref arg0 rcx | |
| +--* t39 int arg1 rdx | |
| +--* t41 long control expr | |
| N065 ( 43, 31) [000006] -ACXG+----- * CALL void Program.EntryPoint:ThrowOutOfRangeException[int](System.String,int) REG NA $VN.Void | |
| ------------------------------------------------------------------------------------------------------------------- | |
| *************** In fgDebugCheckBBlist | |
| Checking Profile Weights (flags:0x1c) | |
| Profile is self-consistent (3 profiled blocks, 0 unprofiled) | |
| *************** 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 Place 'align' instructions | |
| *************** In placeLoopAlignInstructions() | |
| Identifying loops in DFS tree with following reverse post order: | |
| RPO -> BB [pre, post] | |
| 00 -> BB01[0, 2] | |
| 01 -> BB03[2, 1] | |
| 02 -> BB04[1, 0] | |
| Flow graph has no cycles; skipping identification of natural loops | |
| Not checking for any loops as fgMightHaveNaturalLoops is false | |
| *************** Finishing PHASE Place 'align' instructions [no changes] | |
| *************** In genGenerateCode() | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BBnum BBid ref try hnd preds weight IBC [IL range] [jump] [EH region] [flags] | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BB01 [0000] 1 1 2 [000..004)-> BB03(0),BB04(1) ( cond ) i LIR IBC | |
| BB04 [0003] 1 BB01 1 2 [013..022) (return) i LIR IBC | |
| BB03 [0002] 1 BB01 0 0 [008..013) (throw ) i LIR IBC rare hascall gcsafe | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| *************** Starting PHASE Generate code | |
| *************** In fgDebugCheckBBlist | |
| Finalizing stack frame | |
| Recording Var Locations at start of BB01 | |
| V00(rcx) V01(rbx) | |
| Modified regs: [rax rcx rdx rbx r8-r11 mm0-mm5] | |
| Callee-saved registers pushed: 1 [rbx] | |
| *************** In lvaAssignFrameOffsets(FINAL_FRAME_LAYOUT) | |
| Set V00 to offset 0 | |
| Set V01 to offset 8 | |
| Assign V02 OutArgs, size=32, stkOffs=-0x30 | |
| --- delta bump 8 for RA | |
| --- delta bump 40 for RSP frame | |
| --- virtual stack offset to actual stack offset delta is 48 | |
| -- V00 was 0, now 48 | |
| -- V01 was 8, now 56 | |
| -- V02 was -48, now 0 | |
| ; Final local variable assignments | |
| ; | |
| ; V00 arg0 [V00,T00] ( 3, 6 ) byref -> rcx ld-addr-op single-def | |
| ; V01 arg1 [V01,T01] ( 5, 4 ) int -> rbx single-def | |
| ; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" <UNNAMED> | |
| ;* V03 tmp1 [V03 ] ( 0, 0 ) float -> zero-ref do-not-enreg[] "field V00.X (fldOffset=0x0)" P-DEP | |
| ;* V04 tmp2 [V04 ] ( 0, 0 ) float -> zero-ref do-not-enreg[] "field V00.Y (fldOffset=0x4)" P-DEP | |
| ;* V05 tmp3 [V05 ] ( 0, 0 ) float -> zero-ref do-not-enreg[] "field V00.Z (fldOffset=0x8)" P-DEP | |
| ;* V06 tmp4 [V06 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] "Promoted implicit byref" <Program.EntryPoint+Vector2> | |
| ; V07 tmp5 [V07,T03] ( 2, 0 ) ref -> rcx single-def "argument with side effect" | |
| ; V08 tmp6 [V08,T02] ( 2, 4 ) long -> rcx "Cast away GC" | |
| ; | |
| ; Lcl frame size = 32 | |
| Created: | |
| G_M62292_IG02: ; offs=0x000000, size=0x0000, bbWeight=1, gcrefRegs=0000 {} | |
| Mark labels for codegen | |
| BB01 : first block | |
| BB03 : branch target | |
| *************** After genMarkLabelsForCodegen() | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BBnum BBid ref try hnd preds weight IBC [IL range] [jump] [EH region] [flags] | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| BB01 [0000] 1 1 2 [000..004)-> BB03(0),BB04(1) ( cond ) i LIR IBC label | |
| BB04 [0003] 1 BB01 1 2 [013..022) (return) i LIR IBC | |
| BB03 [0002] 1 BB01 0 0 [008..013) (throw ) i LIR IBC rare label hascall gcsafe | |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| =============== Generating BB01 [0000] [000..004) -> BB03(0),BB04(1) (cond), preds={} succs={BB04,BB03} flags=0x00000000.00801011: i LIR IBC label | |
| BB01 IN (2)={V00 V01} + ByrefExposed + GcHeap | |
| OUT(2)={V00 V01} + ByrefExposed + GcHeap | |
| Recording Var Locations at start of BB01 | |
| V00(rcx) V01(rbx) | |
| Change life 0000000000000000 {} -> 0000000000000003 {V00 V01} | |
| V00 in reg rcx is becoming live [------] | |
| Live regs: 0000000000000000 {} + {rcx} => 0000000000000002 {rcx} | |
| Debug: New V00 debug range: first | |
| V01 in reg rbx is becoming live [------] | |
| Live regs: 0000000000000002 {rcx} + {rbx} => 000000000000000A {rcx rbx} | |
| Debug: New V01 debug range: first | |
| Live regs: (unchanged) 000000000000000A {rcx rbx} | |
| GC regs: (unchanged) 0000 {} | |
| Byref regs: (unchanged) 0002 {rcx} | |
| L_M62292_BB01: | |
| Label: G_M62292_IG02, GCvars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0002 {rcx} | |
| Scope info: begin block BB01, IL range [000..004) | |
| Added IP mapping: 0x0000 STACK_EMPTY (G_M62292_IG02,ins#0,ofs#0) label | |
| Generating: N003 (???,???) [000031] ----------- IL_OFFSET void INLRT @ 0x000[E-] REG NA | |
| Generating: N005 ( 1, 1) [000000] -----+----- t0 = LCL_VAR int V01 arg1 u:1 rbx REG rbx $c0 | |
| Generating: N007 ( 1, 1) [000001] -c---+----- t1 = CNS_INT int 1 REG NA | |
| /--* t0 int | |
| +--* t1 int | |
| Generating: N009 ( 3, 3) [000002] -----+-N-U- * CMP void REG NA | |
| Mapped BB01 to G_M62292_IG02 | |
| IN0001: cmp ebx, 1 | |
| Generating: N011 ( 5, 5) [000003] -----+----- JCC void cond=UGT REG NA | |
| IN0002: ja L_M62292_BB03 | |
| Variable Live Range History Dump for BB01 | |
| V00 arg0: rcx [(G_M62292_IG02,ins#0,ofs#0), ...] | |
| V01 arg1: rbx [(G_M62292_IG02,ins#0,ofs#0), ...] | |
| =============== Generating BB04 [0003] [013..022) (return), preds={BB01} succs={} flags=0x00000000.00800011: i LIR IBC | |
| BB04 IN (2)={V00 V01} + ByrefExposed + GcHeap | |
| OUT(0)={ } | |
| Recording Var Locations at start of BB04 | |
| V00(rcx) V01(rbx) | |
| Liveness not changing: 0000000000000003 {V00 V01} | |
| Live regs: 0000000000000000 {} + {rcx rbx} => 000000000000000A {rcx rbx} | |
| GC regs: (unchanged) 0000 {} | |
| Byref regs: 0000 {} => 0002 {rcx} | |
| L_M62292_BB04: | |
| Scope info: begin block BB04, IL range [013..022) | |
| Added IP mapping: 0x0013 STACK_EMPTY (G_M62292_IG02,ins#2,ofs#9) label | |
| Generating: N015 (???,???) [000033] ----------- IL_OFFSET void INLRT @ 0x013[E-] REG NA | |
| Generating: N017 ( 1, 1) [000008] -----+----- t8 = LCL_VAR byref V00 arg0 u:1 rcx (last use) REG rcx $80 | |
| /--* t8 byref | |
| Generating: N019 ( 1, 3) [000027] DA---+----- * STORE_LCL_VAR long V08 tmp6 d:1 rcx REG rcx $VN.Void | |
| V00 in reg rcx is becoming dead [000008] | |
| Live regs: 000000000000000A {rcx rbx} - {rcx} => 0000000000000008 {rbx} | |
| Debug: Closing V00 debug range. | |
| Live vars after [000008]: {V00 V01} -{V00} => {V01} | |
| Byref regs: 0002 {rcx} => 0000 {} | |
| V08 in reg rcx is becoming live [000027] | |
| Live regs: 0000000000000008 {rbx} + {rcx} => 000000000000000A {rcx rbx} | |
| Live vars after [000027]: {V01} +{V08} => {V01 V08} | |
| Generating: N021 ( 1, 1) [000028] -----+----- t28 = LCL_VAR long V08 tmp6 u:1 rcx (last use) REG rcx $180 | |
| Generating: N023 ( 1, 1) [000010] -----+----- t10 = LCL_VAR int V01 arg1 u:1 rbx (last use) REG rbx $c0 | |
| /--* t10 int | |
| Generating: N025 ( 2, 3) [000011] -----+---U- t11 = * CAST long <- uint REG rdx $181 | |
| V01 in reg rbx is becoming dead [000010] | |
| Live regs: 000000000000000A {rcx rbx} - {rbx} => 0000000000000002 {rcx} | |
| Debug: Closing V01 debug range. | |
| Live vars after [000010]: {V01 V08} -{V01} => {V08} | |
| Mapped BB04 to G_M62292_IG02 | |
| IN0003: mov edx, ebx | |
| /--* t28 long | |
| +--* t11 long | |
| Generating: N027 ( 5, 8) [000015] -c---+----- t15 = * LEA(b+(i*4)+0) long REG NA | |
| /--* t15 long | |
| Generating: N029 ( 6, 6) [000016] -A-XG+----- t16 = * IND float REG mm0 <l:$301, c:$300> | |
| V08 in reg rcx is becoming dead [000028] | |
| Live regs: 0000000000000002 {rcx} - {rcx} => 0000000000000000 {} | |
| Live vars after [000028]: {V08} -{V08} => {} | |
| IN0004: vmovss xmm0, dword ptr [rcx+4*rdx] | |
| /--* t16 float | |
| Generating: N031 ( 7, 7) [000017] -A-XG+----- * RETURN float REG NA $2c1 | |
| Added IP mapping: EPILOG (G_M62292_IG02,ins#4,ofs#16) label | |
| Reserving epilog IG for block BB04 | |
| Saved: | |
| G_M62292_IG02: ; offs=0x000000, size=0x0010, bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, BB01 [0000], BB04 [0003], byref | |
| Created: | |
| G_M62292_IG03: ; offs=0x000010, size=0x0000, bbWeight=1, gcrefRegs=0000 {} | |
| Created: | |
| G_M62292_IG04: ; offs=0x000110, size=0x0000, bbWeight=1, gcrefRegs=0000 {}, epilog | |
| *************** After placeholder IG creation | |
| G_M62292_IG01: ; func=00, offs=0x000000, size=0x0000, bbWeight=1, gcrefRegs=0000 {} <-- Prolog IG | |
| G_M62292_IG02: ; offs=0x000000, size=0x0010, bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, BB01 [0000], BB04 [0003], byref | |
| G_M62292_IG03: ; epilog placeholder, next placeholder=<END>, BB04 [0003], epilog, extend <-- First placeholder <-- Last placeholder | |
| ; PrevGCVars=0000000000000000 {}, PrevGCrefRegs=0000 {}, PrevByrefRegs=0000 {} | |
| ; InitGCVars=0000000000000000 {}, InitGCrefRegs=0000 {}, InitByrefRegs=0002 {rcx} | |
| G_M62292_IG04: ; offs=0x000110, size=0x0000, bbWeight=1, gcrefRegs=0000 {} <-- Current IG | |
| Variable Live Range History Dump for BB04 | |
| V00 arg0: rcx [(G_M62292_IG02,ins#0,ofs#0), (G_M62292_IG02,ins#2,ofs#9)] | |
| V01 arg1: rbx [(G_M62292_IG02,ins#0,ofs#0), (G_M62292_IG02,ins#2,ofs#9)] | |
| =============== Generating BB03 [0002] [008..013) (throw), preds={BB01} succs={} flags=0x00000000.02811811: i LIR IBC rare label hascall gcsafe | |
| BB03 IN (1)={V01} + ByrefExposed + GcHeap | |
| OUT(0)={ } | |
| Recording Var Locations at start of BB03 | |
| V01(rbx) | |
| Change life 0000000000000000 {} -> 0000000000000002 {V01} | |
| V01 in reg rbx is becoming live [------] | |
| Live regs: 0000000000000000 {} + {rbx} => 0000000000000008 {rbx} | |
| Debug: New V01 debug range: new var or location | |
| Live regs: (unchanged) 0000000000000008 {rbx} | |
| GC regs: (unchanged) 0000 {} | |
| Byref regs: (unchanged) 0000 {} | |
| L_M62292_BB03: | |
| Label: G_M62292_IG04, GCvars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {} | |
| Scope info: begin block BB03, IL range [008..013) | |
| Added IP mapping: 0x0008 STACK_EMPTY (G_M62292_IG04,ins#0,ofs#0) label | |
| Generating: N035 (???,???) [000032] ----------- IL_OFFSET void INLRT @ 0x008[E-] REG NA | |
| Generating: N037 ( 1, 1) [000023] -----+----- t23 = CNS_INT int 1 REG rcx $41 | |
| Mapped BB03 to G_M62292_IG04 | |
| IN0005: mov ecx, 1 | |
| /--* t23 int | |
| Generating: N039 (???,???) [000034] ----------- t34 = * PUTARG_REG int REG rcx | |
| Generating: N041 ( 3, 10) [000022] H----+----- t22 = CNS_INT(h) long 0x7ff7f1188938 scope REG rdx $340 | |
| IN0006: mov rdx, 0x7FF7F1188938 | |
| /--* t22 long | |
| Generating: N043 (???,???) [000035] ----------- t35 = * PUTARG_REG long REG rdx | |
| Generating: N045 ( 3, 10) [000036] Hc--------- t36 = CNS_INT(h) long 0x7ff7f0e0d9c8 ftn REG NA | |
| /--* t36 long | |
| Generating: N047 ( 5, 12) [000037] nc--G------ t37 = * IND long REG NA | |
| /--* t34 int arg0 rcx | |
| +--* t35 long arg1 rdx | |
| +--* t37 long control expr | |
| Generating: N049 ( 18, 18) [000024] --C-G+----- t24 = * CALL help ref CORINFO_HELP_STRCNS REG rax $2c2 | |
| Call: GCvars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {} | |
| IN0007: call [CORINFO_HELP_STRCNS] | |
| GC regs: 0000 {} => 0001 {rax} | |
| /--* t24 ref | |
| Generating: N051 ( 22, 21) [000025] DAC-G+----- * STORE_LCL_VAR ref V07 tmp5 d:2 rcx REG rcx $VN.Void | |
| GC regs: 0001 {rax} => 0000 {} | |
| IN0008: mov rcx, rax | |
| V07 in reg rcx is becoming live [000025] | |
| Live regs: 0000000000000008 {rbx} + {rcx} => 000000000000000A {rcx rbx} | |
| Live vars after [000025]: {V01} +{V07} => {V01 V07} | |
| GC regs: 0000 {} => 0002 {rcx} | |
| Generating: N053 ( 3, 2) [000026] -----+----- t26 = LCL_VAR ref V07 tmp5 u:2 rcx (last use) REG rcx $2c2 | |
| /--* t26 ref | |
| Generating: N055 (???,???) [000038] ----------- t38 = * PUTARG_REG ref REG rcx | |
| V07 in reg rcx is becoming dead [000026] | |
| Live regs: 000000000000000A {rcx rbx} - {rcx} => 0000000000000008 {rbx} | |
| Live vars after [000026]: {V01 V07} -{V07} => {V01} | |
| GC regs: 0002 {rcx} => 0000 {} | |
| GC regs: 0000 {} => 0002 {rcx} | |
| Generating: N057 ( 1, 1) [000005] -----+----- t5 = LCL_VAR int V01 arg1 u:1 rbx (last use) REG rbx $c0 | |
| /--* t5 int | |
| Generating: N059 (???,???) [000039] ----------- t39 = * PUTARG_REG int REG rdx | |
| V01 in reg rbx is becoming dead [000005] | |
| Live regs: 0000000000000008 {rbx} - {rbx} => 0000000000000000 {} | |
| Debug: Closing V01 debug range. | |
| Live vars after [000005]: {V01} -{V01} => {} | |
| IN0009: mov edx, ebx | |
| Generating: N061 ( 3, 10) [000040] Hc--------- t40 = CNS_INT(h) long 0x7ff7f13342a0 ftn REG NA | |
| /--* t40 long | |
| Generating: N063 ( 5, 12) [000041] nc--G------ t41 = * IND long REG NA | |
| /--* t38 ref arg0 rcx | |
| +--* t39 int arg1 rdx | |
| +--* t41 long control expr | |
| Generating: N065 ( 43, 31) [000006] -ACXG+----- * CALL void Program.EntryPoint:ThrowOutOfRangeException[int](System.String,int) REG NA $VN.Void | |
| GC regs: 0002 {rcx} => 0000 {} | |
| Call: GCvars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {} | |
| IN000a: call [Program.EntryPoint:ThrowOutOfRangeException[int](System.String,int)] | |
| IN000b: int3 | |
| Variable Live Range History Dump for BB03 | |
| V01 arg1: rbx [(G_M62292_IG04,ins#0,ofs#0), (G_M62292_IG04,ins#4,ofs#24)] | |
| Liveness not changing: 0000000000000000 {} | |
| # compCycleEstimate = 55, compSizeEstimate = 43 Program.EntryPoint:GetTest(Program.EntryPoint+Vector2,int):float | |
| ; Final local variable assignments | |
| ; | |
| ; V00 arg0 [V00,T00] ( 3, 6 ) byref -> rcx ld-addr-op single-def | |
| ; V01 arg1 [V01,T01] ( 5, 4 ) int -> rbx single-def | |
| ; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" <UNNAMED> | |
| ;* V03 tmp1 [V03 ] ( 0, 0 ) float -> zero-ref do-not-enreg[] "field V00.X (fldOffset=0x0)" P-DEP | |
| ;* V04 tmp2 [V04 ] ( 0, 0 ) float -> zero-ref do-not-enreg[] "field V00.Y (fldOffset=0x4)" P-DEP | |
| ;* V05 tmp3 [V05 ] ( 0, 0 ) float -> zero-ref do-not-enreg[] "field V00.Z (fldOffset=0x8)" P-DEP | |
| ;* V06 tmp4 [V06 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] "Promoted implicit byref" <Program.EntryPoint+Vector2> | |
| ; V07 tmp5 [V07,T03] ( 2, 0 ) ref -> rcx single-def "argument with side effect" | |
| ; V08 tmp6 [V08,T02] ( 2, 4 ) long -> rcx "Cast away GC" | |
| ; | |
| ; Lcl frame size = 32 | |
| *************** Before prolog / epilog generation | |
| G_M62292_IG01: ; func=00, offs=0x000000, size=0x0000, bbWeight=1, gcrefRegs=0000 {} <-- Prolog IG | |
| G_M62292_IG02: ; offs=0x000000, size=0x0010, bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, BB01 [0000], BB04 [0003], byref | |
| G_M62292_IG03: ; epilog placeholder, next placeholder=<END>, BB04 [0003], epilog, extend <-- First placeholder <-- Last placeholder | |
| ; PrevGCVars=0000000000000000 {}, PrevGCrefRegs=0000 {}, PrevByrefRegs=0000 {} | |
| ; InitGCVars=0000000000000000 {}, InitGCrefRegs=0000 {}, InitByrefRegs=0002 {rcx} | |
| G_M62292_IG04: ; offs=0x000110, size=0x0000, bbWeight=0, gcrefRegs=0000 {}, BB03 [0002] <-- Current IG | |
| Recording Var Locations at start of BB01 | |
| V00(rcx) V01(rbx) | |
| Saved: | |
| G_M62292_IG04: ; offs=0x000110, size=0x0021, bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, BB03 [0002], gcvars, byref | |
| *************** In genFnProlog() | |
| Added IP mapping to front: PROLOG (G_M62292_IG01,ins#0,ofs#0) label | |
| __prolog: | |
| Debug: New V00 debug range: first | |
| Debug: New V01 debug range: first | |
| IN000c: push rbx | |
| IN000d: sub rsp, 32 | |
| *************** In genHomeRegisterParams() | |
| 3 registers in register parameter interference graph | |
| rcx | |
| rdx | |
| rbx | |
| <- rdx | |
| IN000e: mov ebx, edx | |
| *************** In genEnregisterIncomingStackArgs() | |
| Debug: Closing V00 debug range. | |
| Debug: Closing V01 debug range. | |
| Saved: | |
| G_M62292_IG01: ; offs=0x000000, size=0x0007, bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc | |
| *************** In genFnEpilog() | |
| __epilog: | |
| gcVarPtrSetCur=0000000000000000 {}, gcRegGCrefSetCur=0000 {}, gcRegByrefSetCur=0002 {rcx} | |
| IN000f: add rsp, 32 | |
| IN0010: pop rbx | |
| IN0011: ret | |
| Saved: | |
| G_M62292_IG03: ; offs=0x000010, size=0x0006, bbWeight=1, epilog, nogc, extend | |
| 0 prologs, 1 epilogs, 0 funclet prologs, 0 funclet epilogs | |
| *************** After prolog / epilog generation | |
| G_M62292_IG01: ; func=00, offs=0x000000, size=0x0007, bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG | |
| G_M62292_IG02: ; offs=0x000007, size=0x0010, bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, BB01 [0000], BB04 [0003], byref | |
| G_M62292_IG03: ; offs=0x000017, size=0x0006, bbWeight=1, epilog, nogc, extend | |
| G_M62292_IG04: ; offs=0x00001D, size=0x0021, bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, BB03 [0002], gcvars, byref | |
| *************** In emitJumpDistBind() | |
| Emitter Jump List: | |
| IG02 IN0002 ja[6] -> IG04 | |
| total jump count: 1 | |
| Binding: IN0002: 000000 ja L_M62292_BB03 | |
| Binding L_M62292_BB03 to G_M62292_IG04 | |
| Estimate of fwd jump [61E675B4/002]: 000A -> 001D = 0011 | |
| Shrinking jump [61E675B4/002] | |
| Adjusted offset of BB03 from 0017 to 0013 | |
| Adjusted offset of BB04 from 001D to 0019 | |
| Total shrinkage = 4, min extra jump size = 4294967295 | |
| *************** Finishing PHASE Generate code | |
| *************** Starting PHASE Emit code | |
| Hot code size = 0x3A bytes | |
| Cold code size = 0x0 bytes | |
| reserveUnwindInfo(isFunclet=false, isColdCode=false, unwindSize=0x8) | |
| *************** In emitEndCodeGen() | |
| Converting emitMaxStackDepth from bytes (0) to elements (0) | |
| *************************************************************************** | |
| Instructions as they come out of the scheduler | |
| G_M62292_IG01: ; offs=0x000000, size=0x0007, bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG | |
| IN000c: 000000 push rbx | |
| IN000d: 000001 sub rsp, 32 | |
| IN000e: 000005 mov ebx, edx | |
| ;; size=7 bbWeight=1 PerfScore 1.50 | |
| G_M62292_IG02: ; offs=0x000007, size=0x000C, bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, BB01 [0000], BB04 [0003], byref, isz | |
| ; byrRegs +[rcx] | |
| IN0001: 000007 cmp ebx, 1 | |
| IN0002: 00000A ja SHORT G_M62292_IG04 | |
| IN0003: 00000C mov edx, ebx | |
| IN0004: 00000E vmovss xmm0, dword ptr [rcx+4*rdx] | |
| ;; size=12 bbWeight=1 PerfScore 5.50 | |
| G_M62292_IG03: ; offs=0x000013, size=0x0006, bbWeight=1, epilog, nogc, extend | |
| IN000f: 000013 add rsp, 32 | |
| IN0010: 000017 pop rbx | |
| IN0011: 000018 ret | |
| ;; size=6 bbWeight=1 PerfScore 1.75 | |
| G_M62292_IG04: ; offs=0x000019, size=0x0021, bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, BB03 [0002], gcvars, byref | |
| ; byrRegs -[rcx] | |
| IN0005: 000019 mov ecx, 1 | |
| IN0006: 00001E mov rdx, 0x7FF7F1188938 | |
| recordRelocation: 00007FF7F08ED7FA (rw: 00000230620A9C72) => 00007FF7F0E0D9C8, type 16 (IMAGE_REL_BASED_DISP32), delta 0 | |
| IN0007: 000028 call [CORINFO_HELP_STRCNS] | |
| ; gcrRegs +[rax] | |
| ; gcr arg pop 0 | |
| IN0008: 00002E mov rcx, rax | |
| ; gcrRegs +[rcx] | |
| IN0009: 000031 mov edx, ebx | |
| recordRelocation: 00007FF7F08ED805 (rw: 00000230620A9C7D) => 00007FF7F13342A0, type 16 (IMAGE_REL_BASED_DISP32), delta 0 | |
| IN000a: 000033 call [Program.EntryPoint:ThrowOutOfRangeException[int](System.String,int)] | |
| ; gcrRegs -[rax rcx] | |
| ; gcr arg pop 0 | |
| IN000b: 000039 int3 | |
| ;; size=33 bbWeight=0 PerfScore 0.00 | |
| Allocated method code size = 58 , actual size = 58, unused size = 0 | |
| ; Total bytes of code 58, prolog size 5, PerfScore 8.75, instruction count 17, allocated bytes for code 58 (MethodHash=2b4c0cab) for method Program.EntryPoint:GetTest(Program.EntryPoint+Vector2,int):float (Tier1) | |
| ; ============================================================ | |
| *************** After end code gen, before unwindEmit() | |
| G_M62292_IG01: ; func=00, offs=0x000000, size=0x0007, bbWeight=1, PerfScore 1.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG | |
| IN000c: 000000 push rbx | |
| IN000d: 000001 sub rsp, 32 | |
| IN000e: 000005 mov ebx, edx | |
| G_M62292_IG02: ; offs=0x000007, size=0x000C, bbWeight=1, PerfScore 5.50, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, BB01 [0000], BB04 [0003], byref, isz | |
| IN0001: 000007 cmp ebx, 1 | |
| IN0002: 00000A ja SHORT G_M62292_IG04 | |
| IN0003: 00000C mov edx, ebx | |
| IN0004: 00000E vmovss xmm0, dword ptr [rcx+4*rdx] | |
| G_M62292_IG03: ; offs=0x000013, size=0x0006, bbWeight=1, PerfScore 1.75, epilog, nogc, extend | |
| IN000f: 000013 add rsp, 32 | |
| IN0010: 000017 pop rbx | |
| IN0011: 000018 ret | |
| G_M62292_IG04: ; offs=0x000019, size=0x0021, bbWeight=0, PerfScore 0.00, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, BB03 [0002], gcvars, byref | |
| IN0005: 000019 mov ecx, 1 | |
| IN0006: 00001E mov rdx, 0x7FF7F1188938 | |
| IN0007: 000028 call [CORINFO_HELP_STRCNS] | |
| IN0008: 00002E mov rcx, rax | |
| IN0009: 000031 mov edx, ebx | |
| IN000a: 000033 call [Program.EntryPoint:ThrowOutOfRangeException[int](System.String,int)] | |
| IN000b: 000039 int3 | |
| *************** Finishing PHASE Emit code | |
| *************** Starting PHASE Emit GC+EH tables | |
| Unwind Info: | |
| >> Start offset : 0x000000 (not in unwind data) | |
| >> End offset : 0x00003a (not in unwind data) | |
| Version : 1 | |
| Flags : 0x00 | |
| SizeOfProlog : 0x05 | |
| CountOfUnwindCodes: 2 | |
| FrameRegister : none (0) | |
| FrameOffset : N/A (no FrameRegister) (Value=0) | |
| UnwindCodes : | |
| CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20 | |
| CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) | |
| allocUnwindInfo(pHotCode=0x00007FF7F08ED7D0, pColdCode=0x0000000000000000, startOffset=0x0, endOffset=0x3a, unwindSize=0x8, pUnwindBlock=0x0000023062036D58, funKind=0 (main function)) | |
| *************** In genIPmappingGen() | |
| IP mapping count : 5 | |
| IL offs PROLOG : 0x00000000 ( STACK_EMPTY ) | |
| IL offs 0x0000 : 0x00000007 ( STACK_EMPTY ) | |
| IL offs 0x0013 : 0x0000000C ( STACK_EMPTY ) | |
| IL offs EPILOG : 0x00000013 ( STACK_EMPTY ) | |
| IL offs 0x0008 : 0x00000019 ( STACK_EMPTY ) | |
| *************** In genSetScopeInfo() | |
| VarLocInfo count is 5 | |
| ; Variable debug info: 4 live ranges, 2 vars for method Program.EntryPoint:GetTest(Program.EntryPoint+Vector2,int):float | |
| (V00 arg0) : From 00000000h to 0000000Ch, in rcx | |
| (V01 arg1) : From 00000000h to 00000007h, in rdx | |
| (V01 arg1) : From 00000007h to 0000000Ch, in rbx | |
| (V01 arg1) : From 00000019h to 00000031h, in rbx | |
| *************** In gcInfoBlockHdrSave() | |
| Set code length to 58. | |
| Set Outgoing stack arg area size to 32. | |
| Register slot id for reg rax = 0. | |
| Set state of slot 0 at instr offset 0x28 to Live. | |
| Set state of slot 0 at instr offset 0x2e to Dead. | |
| Defining 2 call sites: | |
| Offset 0x28, size 6. | |
| Offset 0x33, size 6. | |
| *************** Finishing PHASE Emit GC+EH tables | |
| Method code size: 58 | |
| Allocations for Program.EntryPoint:GetTest(Program.EntryPoint+Vector2,int):float (MethodHash=2b4c0cab) | |
| count: 843, size: 92025, max = 7576 | |
| allocateMemory: 131072, nraUsed: 100320 | |
| Alloc'd bytes by kind: | |
| kind | size | pct | |
| ---------------------+------------+-------- | |
| ABI | 152 | 0.17% | |
| AssertionProp | 6620 | 7.19% | |
| ASTNode | 6208 | 6.75% | |
| InstDesc | 3372 | 3.66% | |
| ImpStack | 384 | 0.42% | |
| BasicBlock | 1744 | 1.90% | |
| CallArgs | 320 | 0.35% | |
| FlowEdge | 240 | 0.26% | |
| DepthFirstSearch | 424 | 0.46% | |
| Loops | 272 | 0.30% | |
| TreeStatementList | 0 | 0.00% | |
| SiScope | 0 | 0.00% | |
| DominatorMemory | 328 | 0.36% | |
| LSRA | 9548 | 10.38% | |
| LSRA_Interval | 1248 | 1.36% | |
| LSRA_RefPosition | 3760 | 4.09% | |
| Reachability | 16 | 0.02% | |
| SSA | 672 | 0.73% | |
| ValueNumber | 12408 | 13.48% | |
| LvaTable | 1644 | 1.79% | |
| UnwindInfo | 0 | 0.00% | |
| hashBv | 40 | 0.04% | |
| bitset | 32 | 0.03% | |
| FixedBitVect | 40 | 0.04% | |
| Generic | 1056 | 1.15% | |
| LocalAddressVisitor | 112 | 0.12% | |
| FieldSeqStore | 0 | 0.00% | |
| MemorySsaMap | 40 | 0.04% | |
| MemoryPhiArg | 0 | 0.00% | |
| CSE | 1280 | 1.39% | |
| GC | 2542 | 2.76% | |
| CorTailCallInfo | 0 | 0.00% | |
| Inlining | 1800 | 1.96% | |
| ArrayStack | 0 | 0.00% | |
| DebugInfo | 320 | 0.35% | |
| DebugOnly | 29537 | 32.10% | |
| Codegen | 2848 | 3.09% | |
| LoopOpt | 0 | 0.00% | |
| LoopClone | 0 | 0.00% | |
| LoopUnroll | 0 | 0.00% | |
| LoopHoist | 0 | 0.00% | |
| LoopIVOpts | 0 | 0.00% | |
| Unknown | 194 | 0.21% | |
| RangeCheck | 0 | 0.00% | |
| CopyProp | 776 | 0.84% | |
| Promotion | 240 | 0.26% | |
| SideEffects | 0 | 0.00% | |
| ObjectAllocator | 0 | 0.00% | |
| VariableLiveRanges | 720 | 0.78% | |
| ClassLayout | 200 | 0.22% | |
| TailMergeThrows | 0 | 0.00% | |
| EarlyProp | 0 | 0.00% | |
| ZeroInit | 88 | 0.10% | |
| Pgo | 800 | 0.87% | |
| MaskConversionOpt | 0 | 0.00% | |
| TryRegionClone | 0 | 0.00% | |
| Async | 0 | 0.00% | |
| RangeCheckCloning | 0 | 0.00% | |
| Final metrics: | |
| ActualCodeBytes : 58 | |
| AllocatedHotCodeBytes : 58 | |
| AllocatedColdCodeBytes : 0 | |
| ReadOnlyDataBytes : 0 | |
| GCInfoBytes : 5 | |
| EHClauseCount : 0 | |
| PhysicallyPromotedFields : 0 | |
| LoopsFoundDuringOpts : 0 | |
| LoopsInverted : 0 | |
| LoopsCloned : 0 | |
| LoopsUnrolled : 0 | |
| LoopAlignmentCandidates : 0 | |
| LoopsAligned : 0 | |
| LoopsIVWidened : 0 | |
| WidenedIVs : 0 | |
| UnusedIVsRemoved : 0 | |
| LoopsMadeDownwardsCounted : 0 | |
| LoopsStrengthReduced : 0 | |
| VarsInSsa : 4 | |
| HoistedExpressions : 0 | |
| RedundantBranchesEliminated : 0 | |
| JumpThreadingsPerformed : 0 | |
| CseCount : 0 | |
| BasicBlocksAtCodegen : 3 | |
| PerfScore : 8.750000 | |
| BytesAllocated : 100320 | |
| ImporterBranchFold : 0 | |
| ImporterSwitchFold : 0 | |
| DevirtualizedCall : 0 | |
| DevirtualizedCallUnboxedEntry : 0 | |
| DevirtualizedCallRemovedBox : 0 | |
| GDV : 0 | |
| ClassGDV : 0 | |
| MethodGDV : 0 | |
| MultiGuessGDV : 0 | |
| ChainedGDV : 0 | |
| EnumeratorGDV : 0 | |
| InlinerBranchFold : 0 | |
| InlineAttempt : 0 | |
| InlineCount : 0 | |
| ProfileConsistentBeforeInline : 1 | |
| ProfileConsistentAfterInline : 1 | |
| ProfileConsistentBeforeMorph : 1 | |
| ProfileConsistentAfterMorph : 1 | |
| ProfileSynthesizedBlendedOrRepaired : 1 | |
| ProfileInconsistentInitially : 0 | |
| ProfileInconsistentResetLeave : 0 | |
| ProfileInconsistentImporterBranchFold : 0 | |
| ProfileInconsistentImporterSwitchFold : 0 | |
| ProfileInconsistentChainedGDV : 0 | |
| ProfileInconsistentScratchBB : 0 | |
| ProfileInconsistentInlinerBranchFold : 0 | |
| ProfileInconsistentInlineeScale : 0 | |
| ProfileInconsistentInlinee : 0 | |
| ProfileInconsistentNoReturnInlinee : 0 | |
| ProfileInconsistentMayThrowInlinee : 0 | |
| NewRefClassHelperCalls : 0 | |
| StackAllocatedRefClasses : 0 | |
| NewBoxedValueClassHelperCalls : 0 | |
| StackAllocatedBoxedValueClasses : 0 | |
| NewArrayHelperCalls : 0 | |
| StackAllocatedArrays : 0 | |
| LocalAssertionCount : 0 | |
| LocalAssertionOverflow : 0 | |
| MorphTrackedLocals : 1 | |
| MorphLocals : 9 | |
| EnumeratorGDVProvisionalNoEscape : 0 | |
| EnumeratorGDVCanCloneToEnsureNoEscape : 0 | |
| ****** DONE compiling Program.EntryPoint:GetTest(Program.EntryPoint+Vector2,int):float |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment