Diff
checker
टेक्स्ट
टेक्स्ट
छवियां
दस्तावेज़
Excel
फ़ोल्डर्स
Legal
Enterprise
डेस्कटॉप
मूल्य
साइन इन करें
Diffchecker डेस्कटॉप डाउनलोड करें
टेक्स्ट की तुलना करें
दो टेक्स्ट फ़ाइलों के बीच अंतर ढूंढें
उपकरण
इतिहास
प्रदर्शन
लेआउट
विभाजित
संयुक्त
रियल-टाइम एडिटर
रिक्त स्थान छिपाएँ
अपरिवर्तित संक्षिप्त करें
लाइन रैप बंद
परिवर्तन हाइलाइट करें
स्मार्ट
सिंटैक्स
कोई नहीं
दिखावट बदलें
प्रोसेसिंग
अनदेखा करें
टेक्स्ट बदलें
पहले अंतर पर जाएँ
इनपुट संपादित करें
Diffchecker Desktop
Diffchecker चलाने का सबसे सुरक्षित तरीका। Diffchecker Desktop ऐप पाएं: आपके diffs कभी आपके कंप्यूटर से बाहर नहीं जाते!
Desktop पाएं
Untitled Diff
बनाया गया
5 वर्ष पहले
Diff कभी समाप्त नहीं होता
साफ़
निर्यात करें
शेयर करें
समझाएं
8 हटाए गए
लाइनें
कुल
हटाया गया
अक्षर
कुल
हटाया गया
इस सुविधा का उपयोग जारी रखने के लिए, अपग्रेड करें
Diff
checker
Pro
मूल्य देखें
485 लाइनें
सभी को कॉपी करें
8 जोड़े गए
लाइनें
कुल
जोड़ा गया
अक्षर
कुल
जोड़ा गया
इस सुविधा का उपयोग जारी रखने के लिए, अपग्रेड करें
Diff
checker
Pro
मूल्य देखें
485 लाइनें
सभी को कॉपी करें
C:\prj\runtime\artifacts\tests\coreclr\windows.x64.Checked\nativeaot\SmokeTests\Exceptions\Exceptions\native>xcopy /s C:\Users\bogat\source\repos\ConsoleApp13\ConsoleApp4\bin\Release\net6.0\win-x64\Exceptions.dll C:\prj\runtime\artifacts\tests\coreclr\windows.x64.Checked\nativeaot\SmokeTests\Exceptions\Exceptions\ /Y
C:\prj\runtime\artifacts\tests\coreclr\windows.x64.Checked\nativeaot\SmokeTests\Exceptions\Exceptions\native>xcopy /s C:\Users\bogat\source\repos\ConsoleApp13\ConsoleApp4\bin\Release\net6.0\win-x64\Exceptions.dll C:\prj\runtime\artifacts\tests\coreclr\windows.x64.Checked\nativeaot\SmokeTests\Exceptions\Exceptions\ /Y
C:\Users\bogat\source\repos\ConsoleApp13\ConsoleApp4\bin\Release\net6.0\win-x64\Exceptions.dll
C:\Users\bogat\source\repos\ConsoleApp13\ConsoleApp4\bin\Release\net6.0\win-x64\Exceptions.dll
C:\Users\bogat\source\repos\ConsoleApp13\ConsoleApp4\bin\Release\net6.0\win-x64\Disasmo-v4.0.8\Exceptions.dll
C:\Users\bogat\source\repos\ConsoleApp13\ConsoleApp4\bin\Release\net6.0\win-x64\Disasmo-v4.0.8\Exceptions.dll
C:\Users\bogat\source\repos\ConsoleApp13\ConsoleApp4\bin\Release\net6.0\win-x64\ref\Exceptions.dll
C:\Users\bogat\source\repos\ConsoleApp13\ConsoleApp4\bin\Release\net6.0\win-x64\ref\Exceptions.dll
3 File(s) copied
3 File(s) copied
C:\prj\runtime\artifacts\tests\coreclr\windows.x64.Checked\nativeaot\SmokeTests\Exceptions\Exceptions\native>C:\prj\runtime\artifacts\bin\coreclr\windows.x64.Checked\ilc\net6.0\ilc.exe @"C:\prj\runtime\artifacts\tests\coreclr\windows.x64.Checked\nativeaot\SmokeTests\Exceptions\Exceptions\native\Exceptions.ilc.rsp" --codegenopt NgenDump=TryGetFullPathToApplicationModule --codegenopt JitDiffableDasm=0
C:\prj\runtime\artifacts\tests\coreclr\windows.x64.Checked\nativeaot\SmokeTests\Exceptions\Exceptions\native>C:\prj\runtime\artifacts\bin\coreclr\windows.x64.Checked\ilc\net6.0\ilc.exe @"C:\prj\runtime\artifacts\tests\coreclr\windows.x64.Checked\nativeaot\SmokeTests\Exceptions\Exceptions\native\Exceptions.ilc.rsp" --codegenopt NgenDump=TryGetFullPathToApplicationModule --codegenopt JitDiffableDasm=0
****** START compiling Internal.Runtime.Augments.RuntimeAugments:TryGetFullPathToApplicationModule(long,byref):System.String (MethodHash=11dd0eb3)
****** START compiling Internal.Runtime.Augments.RuntimeAugments:TryGetFullPathToApplicationModule(long,byref):System.String (MethodHash=11dd0eb3)
Generating code for Windows x64
Generating code for Windows x64
OPTIONS: compCodeOpt = BLENDED_CODE
OPTIONS: compCodeOpt = BLENDED_CODE
OPTIONS: compDbgCode = false
OPTIONS: compDbgCode = false
OPTIONS: compDbgInfo = true
OPTIONS: compDbgInfo = true
OPTIONS: compDbgEnC = false
OPTIONS: compDbgEnC = false
OPTIONS: compProcedureSplitting = false
OPTIONS: compProcedureSplitting = false
OPTIONS: compProcedureSplittingEH = false
OPTIONS: compProcedureSplittingEH = false
OPTIONS: Jit invoked for ngen
OPTIONS: Jit invoked for ngen
IL to import:
IL to import:
IL_0000 03 ldarg.1
IL_0000 03 ldarg.1
IL_0001 02 ldarg.0
IL_0001 02 ldarg.0
IL_0002 28 47 42 00 06 call 0x6004247
IL_0002 28 47 42 00 06 call 0x6004247
IL_0007 df stind.i
IL_0007 df stind.i
IL_0008 03 ldarg.1
IL_0008 03 ldarg.1
IL_0009 4d ldind.i
IL_0009 4d ldind.i
IL_000a 7e b8 02 00 04 ldsfld 0x40002B8
IL_000a 7e b8 02 00 04 ldsfld 0x40002B8
IL_000f 28 0c 10 00 06 call 0x600100C
IL_000f 28 0c 10 00 06 call 0x600100C
IL_0014 2c 02 brfalse.s 2 (IL_0018)
IL_0014 2c 02 brfalse.s 2 (IL_0018)
IL_0016 14 ldnull
IL_0016 14 ldnull
IL_0017 2a ret
IL_0017 2a ret
IL_0018 03 ldarg.1
IL_0018 03 ldarg.1
IL_0019 4d ldind.i
IL_0019 4d ldind.i
IL_001a 12 00 ldloca.s 0x0
IL_001a 12 00 ldloca.s 0x0
IL_001c 28 52 42 00 06 call 0x6004252
IL_001c 28 52 42 00 06 call 0x6004252
IL_0021 0b stloc.1
IL_0021 0b stloc.1
IL_0022 06 ldloc.0
IL_0022 06 ldloc.0
IL_0023 16 ldc.i4.0
IL_0023 16 ldc.i4.0
IL_0024 07 ldloc.1
IL_0024 07 ldloc.1
IL_0025 73 90 02 00 06 newobj 0x6000290
IL_0025 73 90 02 00 06 newobj 0x6000290
IL_002a 0c stloc.2
IL_002a 0c stloc.2
IL_002b 08 ldloc.2
IL_002b 08 ldloc.2
IL_002c 2a ret
IL_002c 2a ret
Arg #0 passed in register(s) rcx
Arg #0 passed in register(s) rcx
Arg #1 passed in register(s) rdx
Arg #1 passed in register(s) rdx
कॉपी
कॉपी हुआ
कॉपी
कॉपी हुआ
lvaSetClass: setting class for V04 to (4000000000420
0C0
) System.String
lvaSetClass: setting class for V04 to (4000000000420
888
) System.String
lvaGrabTemp returning 5 (V05 tmp0) (a long lifetime temp) called for OutgoingArgSpace.
lvaGrabTemp returning 5 (V05 tmp0) (a long lifetime temp) called for OutgoingArgSpace.
; Initial local variable assignments
; Initial local variable assignments
;
;
; V00 arg0 long
; V00 arg0 long
; V01 arg1 byref
; V01 arg1 byref
; V02 loc0 long
; V02 loc0 long
; V03 loc1 int
; V03 loc1 int
; V04 loc2 ref class-hnd
; V04 loc2 ref class-hnd
; V05 OutArgs lclBlk <na> "OutgoingArgSpace"
; V05 OutArgs lclBlk <na> "OutgoingArgSpace"
*************** In compInitDebuggingInfo() for Internal.Runtime.Augments.RuntimeAugments:TryGetFullPathToApplicationModule(long,byref):System.String
*************** In compInitDebuggingInfo() for Internal.Runtime.Augments.RuntimeAugments:TryGetFullPathToApplicationModule(long,byref):System.String
getVars() returned cVars = 0, extendOthers = true
getVars() returned cVars = 0, extendOthers = true
info.compVarScopesCount = 5
info.compVarScopesCount = 5
VarNum LVNum Name Beg End
VarNum LVNum Name Beg End
0: 00h 00h V00 arg0 000h 02Dh
0: 00h 00h V00 arg0 000h 02Dh
1: 01h 01h V01 arg1 000h 02Dh
1: 01h 01h V01 arg1 000h 02Dh
2: 02h 02h V02 loc0 000h 02Dh
2: 02h 02h V02 loc0 000h 02Dh
3: 03h 03h V03 loc1 000h 02Dh
3: 03h 03h V03 loc1 000h 02Dh
4: 04h 04h V04 loc2 000h 02Dh
4: 04h 04h V04 loc2 000h 02Dh
info.compStmtOffsetsCount = 0
info.compStmtOffsetsCount = 0
info.compStmtOffsetsImplicit = 0007h ( STACK_EMPTY NOP CALL_SITE )
info.compStmtOffsetsImplicit = 0007h ( STACK_EMPTY NOP CALL_SITE )
*************** In fgFindBasicBlocks() for Internal.Runtime.Augments.RuntimeAugments:TryGetFullPathToApplicationModule(long,byref):System.String
*************** In fgFindBasicBlocks() for Internal.Runtime.Augments.RuntimeAugments:TryGetFullPathToApplicationModule(long,byref):System.String
weight= 16 : state 4 [ ldarg.1 ]
weight= 16 : state 4 [ ldarg.1 ]
weight= 10 : state 3 [ ldarg.0 ]
weight= 10 : state 3 [ ldarg.0 ]
weight= 79 : state 40 [ call ]
weight= 79 : state 40 [ call ]
weight=182 : state 164 [ stind.i ]
weight=182 : state 164 [ stind.i ]
weight= 16 : state 4 [ ldarg.1 ]
weight= 16 : state 4 [ ldarg.1 ]
weight=-110 : state 65 [ ldind.i ]
weight=-110 : state 65 [ ldind.i ]
weight=159 : state 112 [ ldsfld ]
weight=159 : state 112 [ ldsfld ]
weight= 79 : state 40 [ call ]
weight= 79 : state 40 [ call ]
weight= 27 : state 44 [ brfalse.s ]
weight= 27 : state 44 [ brfalse.s ]
weight= 7 : state 21 [ ldnull ]
weight= 7 : state 21 [ ldnull ]
weight= 19 : state 42 [ ret ]
weight= 19 : state 42 [ ret ]
weight= 16 : state 4 [ ldarg.1 ]
weight= 16 : state 4 [ ldarg.1 ]
weight=-110 : state 65 [ ldind.i ]
weight=-110 : state 65 [ ldind.i ]
weight= 61 : state 19 [ ldloca.s ]
weight= 61 : state 19 [ ldloca.s ]
weight= 79 : state 40 [ call ]
weight= 79 : state 40 [ call ]
weight= 34 : state 12 [ stloc.1 ]
weight= 34 : state 12 [ stloc.1 ]
weight= 12 : state 7 [ ldloc.0 ]
weight= 12 : state 7 [ ldloc.0 ]
weight= 15 : state 23 [ ldc.i4.0 ]
weight= 15 : state 23 [ ldc.i4.0 ]
weight= 9 : state 8 [ ldloc.1 ]
weight= 9 : state 8 [ ldloc.1 ]
weight=227 : state 103 [ newobj ]
weight=227 : state 103 [ newobj ]
weight=-10 : state 201 [ stloc.2 -> ldloc.2 ]
weight=-10 : state 201 [ stloc.2 -> ldloc.2 ]
weight= 19 : state 42 [ ret ]
weight= 19 : state 42 [ ret ]
Marked V03 as a single def local
Marked V03 as a single def local
Marked V04 as a single def local
Marked V04 as a single def local
Jump targets:
Jump targets:
IL_0018
IL_0018
New Basic Block BB01 [0000] created.
New Basic Block BB01 [0000] created.
BB01 [000..016)
BB01 [000..016)
New Basic Block BB02 [0001] created.
New Basic Block BB02 [0001] created.
BB02 [016..018)
BB02 [016..018)
New Basic Block BB03 [0002] created.
New Basic Block BB03 [0002] created.
BB03 [018..02D)
BB03 [018..02D)
सेव किए गए Diffs
ऑरिजनल टेक्स्ट
फ़ाइल खोलें
C:\prj\runtime\artifacts\tests\coreclr\windows.x64.Checked\nativeaot\SmokeTests\Exceptions\Exceptions\native>xcopy /s C:\Users\bogat\source\repos\ConsoleApp13\ConsoleApp4\bin\Release\net6.0\win-x64\Exceptions.dll C:\prj\runtime\artifacts\tests\coreclr\windows.x64.Checked\nativeaot\SmokeTests\Exceptions\Exceptions\ /Y C:\Users\bogat\source\repos\ConsoleApp13\ConsoleApp4\bin\Release\net6.0\win-x64\Exceptions.dll C:\Users\bogat\source\repos\ConsoleApp13\ConsoleApp4\bin\Release\net6.0\win-x64\Disasmo-v4.0.8\Exceptions.dll C:\Users\bogat\source\repos\ConsoleApp13\ConsoleApp4\bin\Release\net6.0\win-x64\ref\Exceptions.dll 3 File(s) copied C:\prj\runtime\artifacts\tests\coreclr\windows.x64.Checked\nativeaot\SmokeTests\Exceptions\Exceptions\native>C:\prj\runtime\artifacts\bin\coreclr\windows.x64.Checked\ilc\net6.0\ilc.exe @"C:\prj\runtime\artifacts\tests\coreclr\windows.x64.Checked\nativeaot\SmokeTests\Exceptions\Exceptions\native\Exceptions.ilc.rsp" --codegenopt NgenDump=TryGetFullPathToApplicationModule --codegenopt JitDiffableDasm=0 ****** START compiling Internal.Runtime.Augments.RuntimeAugments:TryGetFullPathToApplicationModule(long,byref):System.String (MethodHash=11dd0eb3) Generating code for Windows x64 OPTIONS: compCodeOpt = BLENDED_CODE OPTIONS: compDbgCode = false OPTIONS: compDbgInfo = true OPTIONS: compDbgEnC = false OPTIONS: compProcedureSplitting = false OPTIONS: compProcedureSplittingEH = false OPTIONS: Jit invoked for ngen IL to import: IL_0000 03 ldarg.1 IL_0001 02 ldarg.0 IL_0002 28 47 42 00 06 call 0x6004247 IL_0007 df stind.i IL_0008 03 ldarg.1 IL_0009 4d ldind.i IL_000a 7e b8 02 00 04 ldsfld 0x40002B8 IL_000f 28 0c 10 00 06 call 0x600100C IL_0014 2c 02 brfalse.s 2 (IL_0018) IL_0016 14 ldnull IL_0017 2a ret IL_0018 03 ldarg.1 IL_0019 4d ldind.i IL_001a 12 00 ldloca.s 0x0 IL_001c 28 52 42 00 06 call 0x6004252 IL_0021 0b stloc.1 IL_0022 06 ldloc.0 IL_0023 16 ldc.i4.0 IL_0024 07 ldloc.1 IL_0025 73 90 02 00 06 newobj 0x6000290 IL_002a 0c stloc.2 IL_002b 08 ldloc.2 IL_002c 2a ret Arg #0 passed in register(s) rcx Arg #1 passed in register(s) rdx lvaSetClass: setting class for V04 to (40000000004200C0) System.String lvaGrabTemp returning 5 (V05 tmp0) (a long lifetime temp) called for OutgoingArgSpace. ; Initial local variable assignments ; ; V00 arg0 long ; V01 arg1 byref ; V02 loc0 long ; V03 loc1 int ; V04 loc2 ref class-hnd ; V05 OutArgs lclBlk <na> "OutgoingArgSpace" *************** In compInitDebuggingInfo() for Internal.Runtime.Augments.RuntimeAugments:TryGetFullPathToApplicationModule(long,byref):System.String getVars() returned cVars = 0, extendOthers = true info.compVarScopesCount = 5 VarNum LVNum Name Beg End 0: 00h 00h V00 arg0 000h 02Dh 1: 01h 01h V01 arg1 000h 02Dh 2: 02h 02h V02 loc0 000h 02Dh 3: 03h 03h V03 loc1 000h 02Dh 4: 04h 04h V04 loc2 000h 02Dh info.compStmtOffsetsCount = 0 info.compStmtOffsetsImplicit = 0007h ( STACK_EMPTY NOP CALL_SITE ) *************** In fgFindBasicBlocks() for Internal.Runtime.Augments.RuntimeAugments:TryGetFullPathToApplicationModule(long,byref):System.String weight= 16 : state 4 [ ldarg.1 ] weight= 10 : state 3 [ ldarg.0 ] weight= 79 : state 40 [ call ] weight=182 : state 164 [ stind.i ] weight= 16 : state 4 [ ldarg.1 ] weight=-110 : state 65 [ ldind.i ] weight=159 : state 112 [ ldsfld ] weight= 79 : state 40 [ call ] weight= 27 : state 44 [ brfalse.s ] weight= 7 : state 21 [ ldnull ] weight= 19 : state 42 [ ret ] weight= 16 : state 4 [ ldarg.1 ] weight=-110 : state 65 [ ldind.i ] weight= 61 : state 19 [ ldloca.s ] weight= 79 : state 40 [ call ] weight= 34 : state 12 [ stloc.1 ] weight= 12 : state 7 [ ldloc.0 ] weight= 15 : state 23 [ ldc.i4.0 ] weight= 9 : state 8 [ ldloc.1 ] weight=227 : state 103 [ newobj ] weight=-10 : state 201 [ stloc.2 -> ldloc.2 ] weight= 19 : state 42 [ ret ] Marked V03 as a single def local Marked V04 as a single def local Jump targets: IL_0018 New Basic Block BB01 [0000] created. BB01 [000..016) New Basic Block BB02 [0001] created. BB02 [016..018) New Basic Block BB03 [0002] created. BB03 [018..02D) Inline candidate callsite is hot. Multiplier increased to 3. Callsite has profile data: 1. Multiplier limited to 12.6. calleeNativeSizeEstimate=836 callsiteNativeSizeEstimate=115 benefit multiplier=12.6 threshold=1449 Native estimate for function size is within threshold for inlining 83.6 <= 144.9 (multiplier = 12.6) IL Code Size,Instr 45, 23, Basic Block count 3, Local Variable Num,Ref count 6, 10 for method Internal.Runtime.Augments.RuntimeAugments:TryGetFullPathToApplicationModule(long,byref):System.String OPTIONS: opts.MinOpts() == false Basic block list for 'Internal.Runtime.Augments.RuntimeAugments:TryGetFullPathToApplicationModule(long,byref):System.String' ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..016)-> BB03 ( cond ) BB02 [0001] 1 1 [016..018) (return) BB03 [0002] 1 1 [018..02D) (return) ----------------------------------------------------------------------------------------------------------------------------------------- *************** Starting PHASE Pre-import *************** Finishing PHASE Pre-import *************** Starting PHASE Profile incorporation BBOPT not set *************** Finishing PHASE Profile incorporation [no changes] *************** Starting PHASE Importation *************** In impImport() for Internal.Runtime.Augments.RuntimeAugments:TryGetFullPathToApplicationModule(long,byref):System.String impImportBlockPending for BB01 Importing BB01 (PC=000) of 'Internal.Runtime.Augments.RuntimeAugments:TryGetFullPathToApplicationModule(long,byref):System.String' [ 0] 0 (0x000) ldarg.1 [ 1] 1 (0x001) ldarg.0 [ 2] 2 (0x002) call 06004247 In Compiler::impImportCall: opcode is call, kind=0, callRetType is long, structSize is 0 INLINER: during 'impMarkInlineCandidate' result 'failed this callee' reason 'cannot get method info' for 'Internal.Runtime.Augments.RuntimeAugments:TryGetFullPathToApplicationModule(long,byref):System.String' calling 'System.Runtime.RuntimeImports:RhGetOSModuleFromPointer(long):long' INLINER: Marking System.Runtime.RuntimeImports:RhGetOSModuleFromPointer(long):long as NOINLINE because of cannot get method info INLINER: during 'impMarkInlineCandidate' result 'failed this callee' reason 'cannot get method info' [ 2] 7 (0x007) stind.i STMT00000 ( 0x000[E-] ... ??? ) [000004] -ACXG------- * ASG long [000003] *------N---- +--* IND long [000000] ------------ | \--* LCL_VAR byref V01 arg1 [000002] --C-G------- \--* CALL long System.Runtime.RuntimeImports.RhGetOSModuleFromPointer [000001] ------------ arg0 \--* LCL_VAR long V00 arg0 [ 0] 8 (0x008) ldarg.1 [ 1] 9 (0x009) ldind.i [ 1] 10 (0x00a) ldsfld 040002B8 [ 2] 15 (0x00f) call 0600100C In Compiler::impImportCall: opcode is call, kind=0, callRetType is bool, structSize is 0 STMT00001 ( 0x008[E-] ... ??? ) [000008] I-CXG------- * CALL int System.IntPtr.op_Equality (exactContextHnd=0x40000000004200A9) [000006] *--XG------- arg0 +--* IND long [000005] ------------ | \--* LCL_VAR byref V01 arg1 [000007] ------------ arg1 \--* CNS_INT long 0 [ 1] 20 (0x014) brfalse.s STMT00002 ( 0x008[E-] ... ??? ) [000013] --C--------- * JTRUE void [000012] --C--------- \--* EQ int [000010] --C--------- +--* CAST int <- bool <- int [000009] --C--------- | \--* RET_EXPR int (inl return expr [000008]) [000011] ------------ \--* CNS_INT int 0 impImportBlockPending for BB02 impImportBlockPending for BB03 Importing BB03 (PC=024) of 'Internal.Runtime.Augments.RuntimeAugments:TryGetFullPathToApplicationModule(long,byref):System.String' [ 0] 24 (0x018) ldarg.1 [ 1] 25 (0x019) ldind.i [ 1] 26 (0x01a) ldloca.s 0 [ 2] 28 (0x01c) call 06004252 In Compiler::impImportCall: opcode is call, kind=0, callRetType is int, structSize is 0 INLINER: during 'impMarkInlineCandidate' result 'failed this callee' reason 'cannot get method info' for 'Internal.Runtime.Augments.RuntimeAugments:TryGetFullPathToApplicationModule(long,byref):System.String' calling 'System.Runtime.RuntimeImports:RhGetModuleFileName(long,byref):int' INLINER: Marking System.Runtime.RuntimeImports:RhGetModuleFileName(long,byref):int as NOINLINE because of cannot get method info INLINER: during 'impMarkInlineCandidate' result 'failed this callee' reason 'cannot get method info' [ 1] 33 (0x021) stloc.1 STMT00003 ( 0x018[E-] ... ??? ) [000020] -ACXG------- * ASG int [000019] D------N---- +--* LCL_VAR int V03 loc1 [000018] --CXG------- \--* CALL int System.Runtime.RuntimeImports.RhGetModuleFileName [000015] *--XG------- arg0 +--* IND long [000014] ------------ | \--* LCL_VAR byref V01 arg1 [000017] ------------ arg1 \--* ADDR byref [000016] -------N---- \--* LCL_VAR long V02 loc0 [ 0] 34 (0x022) ldloc.0 [ 1] 35 (0x023) ldc.i4.0 0 [ 2] 36 (0x024) ldloc.1 [ 3] 37 (0x025) newobj 06000290 In Compiler::impImportCall: opcode is newobj, kind=0, callRetType is void, structSize is 0 [ 1] 42 (0x02a) stloc.2 lvaUpdateClass: Updating class for V04 from (40000000004200C0) System.String to (40000000004200C0) System.String [exact] STMT00004 ( 0x022[E-] ... ??? ) [000026] -AC-G------- * ASG ref [000025] D------N---- +--* LCL_VAR ref V04 loc2 [000024] --C-G------- \--* CALL ref System.String..ctor [000021] ------------ arg0 +--* LCL_VAR long V02 loc0 [000022] ------------ arg1 +--* CNS_INT int 0 [000023] ------------ arg2 \--* LCL_VAR int V03 loc1 [ 0] 43 (0x02b) ldloc.2 [ 1] 44 (0x02c) ret STMT00005 ( 0x02B[E-] ... ??? ) [000028] ------------ * RETURN ref [000027] ------------ \--* LCL_VAR ref V04 loc2 Importing BB02 (PC=022) of 'Internal.Runtime.Augments.RuntimeAugments:TryGetFullPathToApplicationModule(long,byref):System.String' [ 0] 22 (0x016) ldnull [ 1] 23 (0x017) ret STMT00006 ( 0x016[E-] ... ??? ) [000030] ------------ * RETURN ref [000029] ------------ \--* CNS_INT ref null *************** Finishing PHASE Importation Trees after Importation ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..016)-> BB03 ( cond ) i BB02 [0001] 1 1 [016..018) (return) i BB03 [0002] 1 1 [018..02D) (return) i newobj ----------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [000..016) -> BB03 (cond), preds={} succs={BB02,BB03} ***** BB01 STMT00000 ( 0x000[E-] ... 0x007 ) [000004] -ACXG------- * ASG long [000003] *------N---- +--* IND long [000000] ------------ | \--* LCL_VAR byref V01 arg1 [000002] --C-G------- \--* CALL long System.Runtime.RuntimeImports.RhGetOSModuleFromPointer [000001] ------------ arg0 \--* LCL_VAR long V00 arg0 ***** BB01 STMT00001 ( 0x008[E-] ... 0x014 ) [000008] I-CXG------- * CALL int System.IntPtr.op_Equality (exactContextHnd=0x40000000004200A9) [000006] *--XG------- arg0 +--* IND long [000005] ------------ | \--* LCL_VAR byref V01 arg1 [000007] ------------ arg1 \--* CNS_INT long 0 ***** BB01 STMT00002 ( 0x008[E-] ... ??? ) [000013] --C--------- * JTRUE void [000012] --C--------- \--* EQ int [000010] --C--------- +--* CAST int <- bool <- int [000009] --C--------- | \--* RET_EXPR int (inl return expr [000008]) [000011] ------------ \--* CNS_INT int 0 ------------ BB02 [016..018) (return), preds={} succs={} ***** BB02 STMT00006 ( 0x016[E-] ... 0x017 ) [000030] ------------ * RETURN ref [000029] ------------ \--* CNS_INT ref null ------------ BB03 [018..02D) (return), preds={} succs={} ***** BB03 STMT00003 ( 0x018[E-] ... 0x021 ) [000020] -ACXG------- * ASG int [000019] D------N---- +--* LCL_VAR int V03 loc1 [000018] --CXG------- \--* CALL int System.Runtime.RuntimeImports.RhGetModuleFileName [000015] *--XG------- arg0 +--* IND long [000014] ------------ | \--* LCL_VAR byref V01 arg1 [000017] ------------ arg1 \--* ADDR byref [000016] -------N---- \--* LCL_VAR long V02 loc0 ***** BB03 STMT00004 ( 0x022[E-] ... 0x02A ) [000026] -AC-G------- * ASG ref [000025] D------N---- +--* LCL_VAR ref V04 loc2 [000024] --C-G------- \--* CALL ref System.String..ctor [000021] ------------ arg0 +--* LCL_VAR long V02 loc0 [000022] ------------ arg1 +--* CNS_INT int 0 [000023] ------------ arg2 \--* LCL_VAR int V03 loc1 ***** BB03 STMT00005 ( 0x02B[E-] ... 0x02C ) [000028] ------------ * RETURN ref [000027] ------------ \--* LCL_VAR ref V04 loc2 ------------------------------------------------------------------------------------------------------------------- *************** 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 *************** Starting PHASE Morph - Init New BlockSet epoch 1, # of blocks (including unused BB00): 4, bitset array size: 1 (short) *************** In fgPostImportationCleanup *************** Finishing PHASE Morph - Init *************** In fgDebugCheckBBlist *************** Starting PHASE Morph - Inlining Expanding INLINE_CANDIDATE in statement STMT00001 in BB01: STMT00001 ( 0x008[E-] ... 0x014 ) [000008] I-CXG------- * CALL int System.IntPtr.op_Equality (exactContextHnd=0x40000000004200A9) [000006] *--XG------- arg0 +--* IND long [000005] ------------ | \--* LCL_VAR byref V01 arg1 [000007] ------------ arg1 \--* CNS_INT long 0 Argument #0: has global refs has side effects [000006] *--XG------- * IND long [000005] ------------ \--* LCL_VAR byref V01 arg1 Argument #1: is a constant [000007] ------------ * CNS_INT long 0 INLINER: inlineInfo.tokenLookupContextHandle for System.IntPtr:op_Equality(long,long):bool set to 0x40000000004200A9: Invoking compiler for the inlinee method System.IntPtr:op_Equality(long,long):bool : IL to import: IL_0000 0f 00 ldarga.s 0x0 IL_0002 7b b7 02 00 04 ldfld 0x40002B7 IL_0007 0f 01 ldarga.s 0x1 IL_0009 7b b7 02 00 04 ldfld 0x40002B7 IL_000e fe 01 ceq IL_0010 2a ret INLINER impTokenLookupContextHandle for System.IntPtr:op_Equality(long,long):bool is 0x40000000004200A9. *************** In compInitDebuggingInfo() for System.IntPtr:op_Equality(long,long):bool info.compStmtOffsetsCount = 0 info.compStmtOffsetsImplicit = 0007h ( STACK_EMPTY NOP CALL_SITE ) *************** In fgFindBasicBlocks() for System.IntPtr:op_Equality(long,long):bool weight= 19 : state 197 [ ldarga.s.normed -> ldfld ] weight= 19 : state 197 [ ldarga.s.normed -> ldfld ] weight= 20 : state 168 [ ceq ] weight= 19 : state 42 [ ret ] multiplier in methods of promotable struct increased to 3. Inline candidate is mostly loads and stores. Multiplier increased to 6. Inline candidate has const arg that feeds a conditional. Multiplier increased to 9. Inline candidate callsite is boring. Multiplier increased to 10.3. calleeNativeSizeEstimate=77 callsiteNativeSizeEstimate=115 benefit multiplier=10.3 threshold=1184 Native estimate for function size is within threshold for inlining 7.7 <= 118.4 (multiplier = 10.3) Jump targets: none New Basic Block BB04 [0003] created. BB04 [000..011) Basic block list for 'System.IntPtr:op_Equality(long,long):bool' ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB04 [0003] 1 1 [000..011) (return) ----------------------------------------------------------------------------------------------------------------------------------------- *************** Inline @[000008] Starting PHASE Pre-import *************** Inline @[000008] Finishing PHASE Pre-import *************** Inline @[000008] Starting PHASE Profile incorporation BBOPT not set Computing inlinee profile scale: ... no callee profile data, will use non-pgo weight to scale ... call site not profiled, will use non-pgo weight to scale call site count 100 callee entry count 100 scale 1 Scaling inlinee blocks *************** Inline @[000008] Finishing PHASE Profile incorporation Trees after Profile incorporation ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB04 [0003] 1 1 [000..011) (return) ----------------------------------------------------------------------------------------------------------------------------------------- ------------ BB04 [000..011) (return), preds={} succs={} ------------------------------------------------------------------------------------------------------------------- *************** Inline @[000008] Starting PHASE Importation *************** In impImport() for System.IntPtr:op_Equality(long,long):bool impImportBlockPending for BB04 Importing BB04 (PC=000) of 'System.IntPtr:op_Equality(long,long):bool' [ 0] 0 (0x000) ldarga.s 0 lvaGrabTemp returning 6 (V06 tmp1) called for Inlining Arg. [ 1] 2 (0x002) ldfld 040002B7 [ 1] 7 (0x007) ldarga.s 1 lvaGrabTemp returning 7 (V07 tmp2) called for Inlining Arg. [ 2] 9 (0x009) ldfld 040002B7 [ 2] 14 (0x00e) ceq [ 1] 16 (0x010) ret Inlinee Return expression (before normalization) => [000037] ----G------- * EQ int [000033] ----G------- +--* FIELD long _value [000032] ------------ | \--* ADDR byref [000031] -------N---- | \--* LCL_VAR long V06 tmp1 [000036] ----G------- \--* FIELD long _value [000035] ------------ \--* ADDR byref [000034] -------N---- \--* LCL_VAR long V07 tmp2 Inlinee Return expression (after normalization) => [000037] ----G------- * EQ int [000033] ----G------- +--* FIELD long _value [000032] ------------ | \--* ADDR byref [000031] -------N---- | \--* LCL_VAR long V06 tmp1 [000036] ----G------- \--* FIELD long _value [000035] ------------ \--* ADDR byref [000034] -------N---- \--* LCL_VAR long V07 tmp2 ** Note: inlinee IL was partially imported -- imported 0 of 17 bytes of method IL *************** Inline @[000008] Finishing PHASE Importation Trees after Importation ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB04 [0003] 1 1 [000..011) (return) i ----------------------------------------------------------------------------------------------------------------------------------------- ------------ BB04 [000..011) (return), preds={} succs={} ------------------------------------------------------------------------------------------------------------------- *************** Inline @[000008] Starting PHASE Expand patchpoints -- no patchpoints to transform *************** Inline @[000008] Finishing PHASE Expand patchpoints [no changes] *************** Inline @[000008] Starting PHASE Indirect call transform -- no candidates to transform *************** Inline @[000008] Finishing PHASE Indirect call transform [no changes] *************** Inline @[000008] Starting PHASE Post-import *************** In fgPostImportationCleanup *************** Inline @[000008] Finishing PHASE Post-import ----------- Statements (and blocks) added due to the inlining of call [000008] ----------- Arguments setup: STMT00007 ( 0x008[E-] ... ??? ) [000039] -A-XG------- * ASG long [000038] D------N---- +--* LCL_VAR long V06 tmp1 [000006] *--XG------- \--* IND long [000005] ------------ \--* LCL_VAR byref V01 arg1 STMT00008 ( 0x008[E-] ... ??? ) [000041] -A---------- * ASG long [000040] D------N---- +--* LCL_VAR long V07 tmp2 [000007] ------------ \--* CNS_INT long 0 Inlinee method body:fgInlineAppendStatements: no gc ref inline locals. Return expression for call at [000008] is [000037] ----G------- * EQ int [000033] ----G------- +--* FIELD long _value [000032] ------------ | \--* ADDR byref [000031] -------N---- | \--* LCL_VAR long V06 tmp1 [000036] ----G------- \--* FIELD long _value [000035] ------------ \--* ADDR byref [000034] -------N---- \--* LCL_VAR long V07 tmp2 Successfully inlined System.IntPtr:op_Equality(long,long):bool (17 IL bytes) (depth 1) [profitable inline] -------------------------------------------------------------------------------------------- INLINER: during 'fgInline' result 'success' reason 'profitable inline' for 'Internal.Runtime.Augments.RuntimeAugments:TryGetFullPathToApplicationModule(long,byref):System.String' calling 'System.IntPtr:op_Equality(long,long):bool' INLINER: during 'fgInline' result 'success' reason 'profitable inline' Replacing the return expression placeholder [000009] with [000037] [000009] --C--------- * RET_EXPR int (inl return expr [000037]) Inserting the inline return expression [000037] ----G------- * EQ int [000033] ----G------- +--* FIELD long _value [000032] ------------ | \--* ADDR byref [000031] -------N---- | \--* LCL_VAR long V06 tmp1 [000036] ----G------- \--* FIELD long _value [000035] ------------ \--* ADDR byref [000034] -------N---- \--* LCL_VAR long V07 tmp2 **************** Inline Tree Inlines into 0600600B [via ExtendedDefaultPolicy] Internal.Runtime.Augments.RuntimeAugments:TryGetFullPathToApplicationModule(long,byref):System.String: [INL00 IL=0002 TR=000002 06004247] [FAILED: callee: cannot get method info] System.Runtime.RuntimeImports:RhGetOSModuleFromPointer(long):long [INL01 IL=0015 TR=000008 0600100C] [INLINED: call site: profitable inline] System.IntPtr:op_Equality(long,long):bool [INL00 IL=0028 TR=000018 06004252] [FAILED: callee: cannot get method info] System.Runtime.RuntimeImports:RhGetModuleFileName(long,byref):int [INL00 IL=0034 TR=000024 06000290] [FAILED: call site: not inline candidate] System.String:.ctor(long,int,int):this Budget: initialTime=195, finalTime=181, initialBudget=1950, currentBudget=1950 Budget: initialSize=1157, finalSize=1119 *************** Finishing PHASE Morph - Inlining Trees after Morph - Inlining ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..016)-> BB03 ( cond ) i BB02 [0001] 1 1 [016..018) (return) i BB03 [0002] 1 1 [018..02D) (return) i newobj ----------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [000..016) -> BB03 (cond), preds={} succs={BB02,BB03} ***** BB01 STMT00000 ( 0x000[E-] ... 0x007 ) [000004] -ACXG------- * ASG long [000003] *------N---- +--* IND long [000000] ------------ | \--* LCL_VAR byref V01 arg1 [000002] --C-G------- \--* CALL long System.Runtime.RuntimeImports.RhGetOSModuleFromPointer [000001] ------------ arg0 \--* LCL_VAR long V00 arg0 ***** BB01 STMT00007 ( 0x008[E-] ... ??? ) [000039] -A-XG------- * ASG long [000038] D------N---- +--* LCL_VAR long V06 tmp1 [000006] *--XG------- \--* IND long [000005] ------------ \--* LCL_VAR byref V01 arg1 ***** BB01 STMT00008 ( 0x008[E-] ... ??? ) [000041] -A---------- * ASG long [000040] D------N---- +--* LCL_VAR long V07 tmp2 [000007] ------------ \--* CNS_INT long 0 ***** BB01 STMT00002 ( 0x008[E-] ... ??? ) [000013] --C--------- * JTRUE void [000012] --C--------- \--* EQ int [000010] --C--------- +--* CAST int <- bool <- int [000037] ----G------- | \--* EQ int [000033] ----G------- | +--* FIELD long _value [000032] ------------ | | \--* ADDR byref [000031] -------N---- | | \--* LCL_VAR long V06 tmp1 [000036] ----G------- | \--* FIELD long _value [000035] ------------ | \--* ADDR byref [000034] -------N---- | \--* LCL_VAR long V07 tmp2 [000011] ------------ \--* CNS_INT int 0 ------------ BB02 [016..018) (return), preds={} succs={} ***** BB02 STMT00006 ( 0x016[E-] ... 0x017 ) [000030] ------------ * RETURN ref [000029] ------------ \--* CNS_INT ref null ------------ BB03 [018..02D) (return), preds={} succs={} ***** BB03 STMT00003 ( 0x018[E-] ... 0x021 ) [000020] -ACXG------- * ASG int [000019] D------N---- +--* LCL_VAR int V03 loc1 [000018] --CXG------- \--* CALL int System.Runtime.RuntimeImports.RhGetModuleFileName [000015] *--XG------- arg0 +--* IND long [000014] ------------ | \--* LCL_VAR byref V01 arg1 [000017] ------------ arg1 \--* ADDR byref [000016] -------N---- \--* LCL_VAR long V02 loc0 ***** BB03 STMT00004 ( 0x022[E-] ... 0x02A ) [000026] -AC-G------- * ASG ref [000025] D------N---- +--* LCL_VAR ref V04 loc2 [000024] --C-G------- \--* CALL ref System.String..ctor [000021] ------------ arg0 +--* LCL_VAR long V02 loc0 [000022] ------------ arg1 +--* CNS_INT int 0 [000023] ------------ arg2 \--* LCL_VAR int V03 loc1 ***** BB03 STMT00005 ( 0x02B[E-] ... 0x02C ) [000028] ------------ * RETURN ref [000027] ------------ \--* LCL_VAR ref V04 loc2 ------------------------------------------------------------------------------------------------------------------- *************** Starting PHASE Allocate Objects disabled, punting *************** Finishing PHASE Allocate Objects [no changes] *************** Starting PHASE Morph - Add internal blocks *************** After fgAddInternal() ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..016)-> BB03 ( cond ) i BB02 [0001] 1 1 [016..018) (return) i BB03 [0002] 1 1 [018..02D) (return) i newobj ----------------------------------------------------------------------------------------------------------------------------------------- *************** Exception Handling table is empty *************** Finishing PHASE Morph - Add internal blocks *************** Starting PHASE Remove empty try *************** In fgRemoveEmptyTry() No EH in this method, nothing to remove. *************** Finishing PHASE Remove empty try [no changes] *************** Starting PHASE Remove empty finally No EH in this method, nothing to remove. *************** Finishing PHASE Remove empty finally [no changes] *************** Starting PHASE Merge callfinally chains No EH in this method, nothing to merge. *************** Finishing PHASE Merge callfinally chains [no changes] *************** Starting PHASE Clone finally No EH in this method, no cloning. *************** Finishing PHASE Clone finally [no changes] *************** Starting PHASE Compute preds Renumbering the basic blocks for fgComputePred *************** Before renumbering the basic blocks ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..016)-> BB03 ( cond ) i BB02 [0001] 1 1 [016..018) (return) i BB03 [0002] 1 1 [018..02D) (return) i newobj ----------------------------------------------------------------------------------------------------------------------------------------- *************** Exception Handling table is empty *************** After renumbering the basic blocks =============== No blocks renumbered! New BlockSet epoch 2, # of blocks (including unused BB00): 4, bitset array size: 1 (short) *************** In fgComputePreds() ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..016)-> BB03 ( cond ) i BB02 [0001] 1 1 [016..018) (return) i BB03 [0002] 1 1 [018..02D) (return) i newobj ----------------------------------------------------------------------------------------------------------------------------------------- Setting edge weights for BB01 -> BB03 to [0 .. 3.402823e+38] Setting edge weights for BB01 -> BB02 to [0 .. 3.402823e+38] *************** After fgComputePreds() ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..016)-> BB03 ( cond ) i BB02 [0001] 1 BB01 1 [016..018) (return) i BB03 [0002] 1 BB01 1 [018..02D) (return) i newobj ----------------------------------------------------------------------------------------------------------------------------------------- *************** Finishing PHASE Compute preds *************** Starting PHASE Merge throw blocks *************** In fgTailMergeThrows Method does not have multiple noreturn calls. *************** Finishing PHASE Merge throw blocks [no changes] *************** Starting PHASE Update flow graph early pass *************** In fgUpdateFlowGraph() Before updating the flow graph: ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..016)-> BB03 ( cond ) i BB02 [0001] 1 BB01 1 [016..018) (return) i BB03 [0002] 1 BB01 1 [018..02D) (return) i newobj ----------------------------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist *************** Finishing PHASE Update flow graph early pass *************** Starting PHASE Morph - Promote Structs *************** In fgResetImplicitByRefRefCount() *************** In fgPromoteStructs() lvaTable before fgPromoteStructs ; Initial local variable assignments ; ; V00 arg0 long ; V01 arg1 byref ; V02 loc0 long ld-addr-op ; V03 loc1 int ; V04 loc2 ref class-hnd exact ; V05 OutArgs lclBlk <na> "OutgoingArgSpace" ; V06 tmp1 long ld-addr-op "Inlining Arg" ; V07 tmp2 long ld-addr-op "Inlining Arg" lvaTable after fgPromoteStructs ; Initial local variable assignments ; ; V00 arg0 long ; V01 arg1 byref ; V02 loc0 long ld-addr-op ; V03 loc1 int ; V04 loc2 ref class-hnd exact ; V05 OutArgs lclBlk <na> "OutgoingArgSpace" ; V06 tmp1 long ld-addr-op "Inlining Arg" ; V07 tmp2 long ld-addr-op "Inlining Arg" *************** Finishing PHASE Morph - Promote Structs *************** Starting PHASE Morph - Structs/AddrExp *************** In fgMarkAddressExposedLocals() LocalAddressVisitor visiting statement: STMT00000 ( 0x000[E-] ... 0x007 ) [000004] -ACXG------- * ASG long [000003] *------N---- +--* IND long [000000] ------------ | \--* LCL_VAR byref V01 arg1 [000002] --C-G------- \--* CALL long System.Runtime.RuntimeImports.RhGetOSModuleFromPointer [000001] ------------ arg0 \--* LCL_VAR long V00 arg0 LocalAddressVisitor visiting statement: STMT00007 ( 0x008[E-] ... ??? ) [000039] -A-XG------- * ASG long [000038] D------N---- +--* LCL_VAR long V06 tmp1 [000006] *--XG------- \--* IND long [000005] ------------ \--* LCL_VAR byref V01 arg1 LocalAddressVisitor visiting statement: STMT00008 ( 0x008[E-] ... ??? ) [000041] -A---------- * ASG long [000040] D------N---- +--* LCL_VAR long V07 tmp2 [000007] ------------ \--* CNS_INT long 0 LocalAddressVisitor visiting statement: STMT00002 ( 0x008[E-] ... ??? ) [000013] --C--------- * JTRUE void [000012] --C--------- \--* EQ int [000010] --C--------- +--* CAST int <- bool <- int [000037] ----G------- | \--* EQ int [000033] ----G------- | +--* FIELD long _value [000032] ------------ | | \--* ADDR byref [000031] -------N---- | | \--* LCL_VAR long V06 tmp1 [000036] ----G------- | \--* FIELD long _value [000035] ------------ | \--* ADDR byref [000034] -------N---- | \--* LCL_VAR long V07 tmp2 [000011] ------------ \--* CNS_INT int 0 Replacing the field in normed struct with local var V06 Replacing the field in normed struct with local var V07 LocalAddressVisitor modified statement: STMT00002 ( 0x008[E-] ... ??? ) [000013] --C--------- * JTRUE void [000012] --C--------- \--* EQ int [000010] --C--------- +--* CAST int <- bool <- int [000037] ----G------- | \--* EQ int [000033] ------------ | +--* LCL_VAR long V06 tmp1 [000036] ------------ | \--* LCL_VAR long V07 tmp2 [000011] ------------ \--* CNS_INT int 0 LocalAddressVisitor visiting statement: STMT00006 ( 0x016[E-] ... 0x017 ) [000030] ------------ * RETURN ref [000029] ------------ \--* CNS_INT ref null LocalAddressVisitor visiting statement: STMT00003 ( 0x018[E-] ... 0x021 ) [000020] -ACXG------- * ASG int [000019] D------N---- +--* LCL_VAR int V03 loc1 [000018] --CXG------- \--* CALL int System.Runtime.RuntimeImports.RhGetModuleFileName [000015] *--XG------- arg0 +--* IND long [000014] ------------ | \--* LCL_VAR byref V01 arg1 [000017] ------------ arg1 \--* ADDR byref [000016] -------N---- \--* LCL_VAR long V02 loc0 Local V02 should not be enregistered because: it is address exposed LocalAddressVisitor modified statement: STMT00003 ( 0x018[E-] ... 0x021 ) [000020] -ACXG------- * ASG int [000019] D------N---- +--* LCL_VAR int V03 loc1 [000018] --CXG------- \--* CALL int System.Runtime.RuntimeImports.RhGetModuleFileName [000015] *--XG------- arg0 +--* IND long [000014] ------------ | \--* LCL_VAR byref V01 arg1 [000017] ------------ arg1 \--* LCL_VAR_ADDR byref V02 loc0 LocalAddressVisitor visiting statement: STMT00004 ( 0x022[E-] ... 0x02A ) [000026] -AC-G------- * ASG ref [000025] D------N---- +--* LCL_VAR ref V04 loc2 [000024] --C-G------- \--* CALL ref System.String..ctor [000021] ------------ arg0 +--* LCL_VAR long (AX) V02 loc0 [000022] ------------ arg1 +--* CNS_INT int 0 [000023] ------------ arg2 \--* LCL_VAR int V03 loc1 LocalAddressVisitor visiting statement: STMT00005 ( 0x02B[E-] ... 0x02C ) [000028] ------------ * RETURN ref [000027] ------------ \--* LCL_VAR ref V04 loc2 *************** Finishing PHASE Morph - Structs/AddrExp *************** Starting PHASE Morph - ByRefs *************** In fgRetypeImplicitByRefArgs() *************** Finishing PHASE Morph - ByRefs *************** Starting PHASE Morph - Global *************** In fgMorphBlocks() Morphing BB01 of 'Internal.Runtime.Augments.RuntimeAugments:TryGetFullPathToApplicationModule(long,byref):System.String' fgMorphTree BB01, STMT00000 (before) [000004] -ACXG------- * ASG long [000003] *------N---- +--* IND long [000000] ------------ | \--* LCL_VAR byref V01 arg1 [000002] --C-G------- \--* CALL long System.Runtime.RuntimeImports.RhGetOSModuleFromPointer [000001] ------------ arg0 \--* LCL_VAR long V00 arg0 Notify VM instruction set (SSE2) must be supported. Initializing arg info for 2.CALL: ArgTable for 2.CALL after fgInitArgInfo: fgArgTabEntry[arg 0 1.LCL_VAR long (By ref), 1 reg: rcx, byteAlignment=8] Morphing args for 2.CALL: argSlots=1, preallocatedArgCount=4, nextSlotNum=4, nextSlotByteOffset=32, outgoingArgSpaceSize=32 Sorting the arguments: Deferred argument ('rcx'): [000001] -----+------ * LCL_VAR long V00 arg0 Replaced with placeholder node: [000043] ----------L- * ARGPLACE long Shuffled argument table: rcx ArgTable for 2.CALL after fgMorphArgs: fgArgTabEntry[arg 0 1.LCL_VAR long (By ref), 1 reg: rcx, byteAlignment=8, lateArgInx=0, processed] fgMorphTree BB01, STMT00000 (after) [000004] -ACXG+------ * ASG long [000003] *--X-+-N---- +--* IND long [000000] -----+------ | \--* LCL_VAR byref V01 arg1 [000002] --CXG+------ \--* CALL long System.Runtime.RuntimeImports.RhGetOSModuleFromPointer [000001] -----+------ arg0 in rcx \--* LCL_VAR long V00 arg0 fgMorphTree BB01, STMT00007 (before) [000039] -A-XG------- * ASG long [000038] D------N---- +--* LCL_VAR long V06 tmp1 [000006] *--XG------- \--* IND long [000005] ------------ \--* LCL_VAR byref V01 arg1 fgMorphTree BB01, STMT00008 (before) [000041] -A---------- * ASG long [000040] D------N---- +--* LCL_VAR long V07 tmp2 [000007] ------------ \--* CNS_INT long 0 GenTreeNode creates assertion: [000041] -A---------- * ASG long In BB01 New Local Constant Assertion: V07 == 0, index = #01 fgMorphTree BB01, STMT00002 (before) [000013] --C--------- * JTRUE void [000012] --C--------- \--* EQ int [000010] --C--------- +--* CAST int <- bool <- int [000037] ----G------- | \--* EQ int [000033] ------------ | +--* LCL_VAR long V06 tmp1 [000036] ------------ | \--* LCL_VAR long V07 tmp2 [000011] ------------ \--* CNS_INT int 0 Assertion prop in BB01: Constant Assertion: V07 == 0, index = #01 [000036] ------------ * CNS_INT long 0 fgMorphTree BB01, STMT00002 (after) [000013] ----G+------ * JTRUE void [000037] J---G+-N---- \--* NE int [000033] -----+------ +--* LCL_VAR long V06 tmp1 [000036] -----+------ \--* CNS_INT long 0 Morphing BB02 of 'Internal.Runtime.Augments.RuntimeAugments:TryGetFullPathToApplicationModule(long,byref):System.String' fgMorphTree BB02, STMT00006 (before) [000030] ------------ * RETURN ref [000029] ------------ \--* CNS_INT ref null Morphing BB03 of 'Internal.Runtime.Augments.RuntimeAugments:TryGetFullPathToApplicationModule(long,byref):System.String' fgMorphTree BB03, STMT00003 (before) [000020] -ACXG------- * ASG int [000019] D------N---- +--* LCL_VAR int V03 loc1 [000018] --CXG------- \--* CALL int System.Runtime.RuntimeImports.RhGetModuleFileName [000015] *--XG------- arg0 +--* IND long [000014] ------------ | \--* LCL_VAR byref V01 arg1 [000017] ------------ arg1 \--* LCL_VAR_ADDR byref V02 loc0 Initializing arg info for 18.CALL: ArgTable for 18.CALL after fgInitArgInfo: fgArgTabEntry[arg 0 15.IND long (By ref), 1 reg: rcx, byteAlignment=8] fgArgTabEntry[arg 1 17.LCL_VAR_ADDR long (By ref), 1 reg: rdx, byteAlignment=8] Morphing args for 18.CALL: argSlots=2, preallocatedArgCount=4, nextSlotNum=4, nextSlotByteOffset=32, outgoingArgSpaceSize=32 Sorting the arguments: Deferred argument ('rcx'): ( 6, 4) [000015] *--XG------- * IND long ( 3, 2) [000014] ------------ \--* LCL_VAR byref V01 arg1 Replaced with placeholder node: [000044] ----------L- * ARGPLACE long Deferred argument ('rdx'): ( 3, 3) [000017] ------------ * LCL_VAR_ADDR long V02 loc0 Replaced with placeholder node: [000045] ----------L- * ARGPLACE long Shuffled argument table: rcx rdx ArgTable for 18.CALL after fgMorphArgs: fgArgTabEntry[arg 0 15.IND long (By ref), 1 reg: rcx, byteAlignment=8, lateArgInx=0, processed] fgArgTabEntry[arg 1 17.LCL_VAR_ADDR long (By ref), 1 reg: rdx, byteAlignment=8, lateArgInx=1, processed] fgMorphTree BB03, STMT00003 (after) [000020] -ACXG+------ * ASG int [000019] D----+-N---- +--* LCL_VAR int V03 loc1 [000018] --CXG+------ \--* CALL int System.Runtime.RuntimeImports.RhGetModuleFileName ( 6, 4) [000015] *--XG------- arg0 in rcx +--* IND long ( 3, 2) [000014] ------------ | \--* LCL_VAR byref V01 arg1 ( 3, 3) [000017] ------------ arg1 in rdx \--* LCL_VAR_ADDR long V02 loc0 fgMorphTree BB03, STMT00004 (before) [000026] -AC-G------- * ASG ref [000025] D------N---- +--* LCL_VAR ref V04 loc2 [000024] --C-G------- \--* CALL ref System.String..ctor [000021] ------------ arg0 +--* LCL_VAR long (AX) V02 loc0 [000022] ------------ arg1 +--* CNS_INT int 0 [000023] ------------ arg2 \--* LCL_VAR int V03 loc1 Initializing arg info for 24.CALL: ArgTable for 24.CALL after fgInitArgInfo: fgArgTabEntry[arg 0 21.LCL_VAR long (By ref), 1 reg: rcx, byteAlignment=8] fgArgTabEntry[arg 1 22.CNS_INT int (By ref), 1 reg: rdx, byteAlignment=8] fgArgTabEntry[arg 2 23.LCL_VAR int (By ref), 1 reg: r8, byteAlignment=8] Morphing args for 24.CALL: argSlots=3, preallocatedArgCount=4, nextSlotNum=4, nextSlotByteOffset=32, outgoingArgSpaceSize=32 Sorting the arguments: Deferred argument ('rcx'): [000021] ----G+------ * LCL_VAR long (AX) V02 loc0 Replaced with placeholder node: [000046] ----------L- * ARGPLACE long Deferred argument ('r8'): [000023] -----+------ * LCL_VAR int V03 loc1 Replaced with placeholder node: [000047] ----------L- * ARGPLACE int Deferred argument ('rdx'): [000022] -----+------ * CNS_INT int 0 Replaced with placeholder node: [000048] ----------L- * ARGPLACE int Shuffled argument table: rcx r8 rdx ArgTable for 24.CALL after fgMorphArgs: fgArgTabEntry[arg 0 21.LCL_VAR long (By ref), 1 reg: rcx, byteAlignment=8, lateArgInx=0, processed] fgArgTabEntry[arg 2 23.LCL_VAR int (By ref), 1 reg: r8, byteAlignment=8, lateArgInx=1, processed] fgArgTabEntry[arg 1 22.CNS_INT int (By ref), 1 reg: rdx, byteAlignment=8, lateArgInx=2, processed] fgMorphTree BB03, STMT00004 (after) [000026] -ACXG+------ * ASG ref [000025] D----+-N---- +--* LCL_VAR ref V04 loc2 [000024] --CXG+------ \--* CALL ref System.String..ctor [000021] ----G+------ arg0 in rcx +--* LCL_VAR long (AX) V02 loc0 [000023] -----+------ arg2 in r8 +--* LCL_VAR int V03 loc1 [000022] -----+------ arg1 in rdx \--* CNS_INT int 0 fgMorphTree BB03, STMT00005 (before) [000028] ------------ * RETURN ref [000027] ------------ \--* LCL_VAR ref V04 loc2 *************** In fgMarkDemotedImplicitByRefArgs() *************** Finishing PHASE Morph - Global Trees after Morph - Global ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..016)-> BB03 ( cond ) i hascall gcsafe BB02 [0001] 1 BB01 1 [016..018) (return) i BB03 [0002] 1 BB01 1 [018..02D) (return) i hascall gcsafe newobj ----------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [000..016) -> BB03 (cond), preds={} succs={BB02,BB03} ***** BB01 STMT00000 ( 0x000[E-] ... 0x007 ) [000004] -ACXG+------ * ASG long [000003] *--X-+-N---- +--* IND long [000000] -----+------ | \--* LCL_VAR byref V01 arg1 [000002] --CXG+------ \--* CALL long System.Runtime.RuntimeImports.RhGetOSModuleFromPointer [000001] -----+------ arg0 in rcx \--* LCL_VAR long V00 arg0 ***** BB01 STMT00007 ( 0x008[E-] ... ??? ) [000039] -A-XG+------ * ASG long [000038] D----+-N---- +--* LCL_VAR long V06 tmp1 [000006] *--XG+------ \--* IND long [000005] -----+------ \--* LCL_VAR byref V01 arg1 ***** BB01 STMT00008 ( 0x008[E-] ... ??? ) [000041] -A---+------ * ASG long [000040] D----+-N---- +--* LCL_VAR long V07 tmp2 [000007] -----+------ \--* CNS_INT long 0 ***** BB01 STMT00002 ( 0x008[E-] ... ??? ) [000013] ----G+------ * JTRUE void [000037] J---G+-N---- \--* NE int [000033] -----+------ +--* LCL_VAR long V06 tmp1 [000036] -----+------ \--* CNS_INT long 0 ------------ BB02 [016..018) (return), preds={BB01} succs={} ***** BB02 STMT00006 ( 0x016[E-] ... 0x017 ) [000030] -----+------ * RETURN ref [000029] -----+------ \--* CNS_INT ref null ------------ BB03 [018..02D) (return), preds={BB01} succs={} ***** BB03 STMT00003 ( 0x018[E-] ... 0x021 ) [000020] -ACXG+------ * ASG int [000019] D----+-N---- +--* LCL_VAR int V03 loc1 [000018] --CXG+------ \--* CALL int System.Runtime.RuntimeImports.RhGetModuleFileName ( 6, 4) [000015] *--XG------- arg0 in rcx +--* IND long ( 3, 2) [000014] ------------ | \--* LCL_VAR byref V01 arg1 ( 3, 3) [000017] ------------ arg1 in rdx \--* LCL_VAR_ADDR long V02 loc0 ***** BB03 STMT00004 ( 0x022[E-] ... 0x02A ) [000026] -ACXG+------ * ASG ref [000025] D----+-N---- +--* LCL_VAR ref V04 loc2 [000024] --CXG+------ \--* CALL ref System.String..ctor [000021] ----G+------ arg0 in rcx +--* LCL_VAR long (AX) V02 loc0 [000023] -----+------ arg2 in r8 +--* LCL_VAR int V03 loc1 [000022] -----+------ arg1 in rdx \--* CNS_INT int 0 ***** BB03 STMT00005 ( 0x02B[E-] ... 0x02C ) [000028] -----+------ * RETURN ref [000027] -----+------ \--* LCL_VAR ref V04 loc2 ------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist *************** Starting PHASE GS Cookie No GS security needed *************** Finishing PHASE GS Cookie *************** Starting PHASE Compute edge weights (1, false) *************** In fgComputeBlockAndEdgeWeights() ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..016)-> BB03 ( cond ) i hascall gcsafe BB02 [0001] 1 BB01 1 [016..018) (return) i BB03 [0002] 1 BB01 1 [018..02D) (return) i hascall gcsafe newobj ----------------------------------------------------------------------------------------------------------------------------------------- -- no profile data, so using default called count -- not optimizing or no profile data, so not computing edge weights *************** Finishing PHASE Compute edge weights (1, false) *************** Starting PHASE Create EH funclets *************** In fgCreateFunclets() After fgCreateFunclets() ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..016)-> BB03 ( cond ) i hascall gcsafe BB02 [0001] 1 BB01 1 [016..018) (return) i BB03 [0002] 1 BB01 1 [018..02D) (return) i hascall gcsafe newobj ----------------------------------------------------------------------------------------------------------------------------------------- *************** Exception Handling table is empty *************** In fgDebugCheckBBlist *************** Finishing PHASE Create EH funclets *************** Starting PHASE Invert loops *************** Finishing PHASE Invert loops [no changes] *************** Starting PHASE Optimize layout *************** In fgUpdateFlowGraph() Before updating the flow graph: ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..016)-> BB03 ( cond ) i hascall gcsafe BB02 [0001] 1 BB01 1 [016..018) (return) i BB03 [0002] 1 BB01 1 [018..02D) (return) i hascall gcsafe newobj ----------------------------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist *************** In fgExpandRarelyRunBlocks() *************** In fgReorderBlocks() Initial BasicBlocks ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..016)-> BB03 ( cond ) i hascall gcsafe BB02 [0001] 1 BB01 1 [016..018) (return) i BB03 [0002] 1 BB01 1 [018..02D) (return) i hascall gcsafe newobj ----------------------------------------------------------------------------------------------------------------------------------------- *************** In fgUpdateFlowGraph() Before updating the flow graph: ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..016)-> BB03 ( cond ) i hascall gcsafe BB02 [0001] 1 BB01 1 [016..018) (return) i BB03 [0002] 1 BB01 1 [018..02D) (return) i hascall gcsafe newobj ----------------------------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist *************** Finishing PHASE Optimize layout Trees after Optimize layout ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..016)-> BB03 ( cond ) i hascall gcsafe BB02 [0001] 1 BB01 1 [016..018) (return) i BB03 [0002] 1 BB01 1 [018..02D) (return) i hascall gcsafe newobj ----------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [000..016) -> BB03 (cond), preds={} succs={BB02,BB03} ***** BB01 STMT00000 ( 0x000[E-] ... 0x007 ) [000004] -ACXG+------ * ASG long [000003] *--X-+-N---- +--* IND long [000000] -----+------ | \--* LCL_VAR byref V01 arg1 [000002] --CXG+------ \--* CALL long System.Runtime.RuntimeImports.RhGetOSModuleFromPointer [000001] -----+------ arg0 in rcx \--* LCL_VAR long V00 arg0 ***** BB01 STMT00007 ( 0x008[E-] ... ??? ) [000039] -A-XG+------ * ASG long [000038] D----+-N---- +--* LCL_VAR long V06 tmp1 [000006] *--XG+------ \--* IND long [000005] -----+------ \--* LCL_VAR byref V01 arg1 ***** BB01 STMT00008 ( 0x008[E-] ... ??? ) [000041] -A---+------ * ASG long [000040] D----+-N---- +--* LCL_VAR long V07 tmp2 [000007] -----+------ \--* CNS_INT long 0 ***** BB01 STMT00002 ( 0x008[E-] ... ??? ) [000013] ----G+------ * JTRUE void [000037] J---G+-N---- \--* NE int [000033] -----+------ +--* LCL_VAR long V06 tmp1 [000036] -----+------ \--* CNS_INT long 0 ------------ BB02 [016..018) (return), preds={BB01} succs={} ***** BB02 STMT00006 ( 0x016[E-] ... 0x017 ) [000030] -----+------ * RETURN ref [000029] -----+------ \--* CNS_INT ref null ------------ BB03 [018..02D) (return), preds={BB01} succs={} ***** BB03 STMT00003 ( 0x018[E-] ... 0x021 ) [000020] -ACXG+------ * ASG int [000019] D----+-N---- +--* LCL_VAR int V03 loc1 [000018] --CXG+------ \--* CALL int System.Runtime.RuntimeImports.RhGetModuleFileName ( 6, 4) [000015] *--XG------- arg0 in rcx +--* IND long ( 3, 2) [000014] ------------ | \--* LCL_VAR byref V01 arg1 ( 3, 3) [000017] ------------ arg1 in rdx \--* LCL_VAR_ADDR long V02 loc0 ***** BB03 STMT00004 ( 0x022[E-] ... 0x02A ) [000026] -ACXG+------ * ASG ref [000025] D----+-N---- +--* LCL_VAR ref V04 loc2 [000024] --CXG+------ \--* CALL ref System.String..ctor [000021] ----G+------ arg0 in rcx +--* LCL_VAR long (AX) V02 loc0 [000023] -----+------ arg2 in r8 +--* LCL_VAR int V03 loc1 [000022] -----+------ arg1 in rdx \--* CNS_INT int 0 ***** BB03 STMT00005 ( 0x02B[E-] ... 0x02C ) [000028] -----+------ * RETURN ref [000027] -----+------ \--* LCL_VAR ref V04 loc2 ------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist *************** Starting PHASE Compute blocks reachability *************** In fgComputeReachability *************** In fgDebugCheckBBlist Return blocks: BB03 BB02 Renumbering the basic blocks for fgComputeReachability pass #1 *************** Before renumbering the basic blocks ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..016)-> BB03 ( cond ) i hascall gcsafe BB02 [0001] 1 BB01 1 [016..018) (return) i BB03 [0002] 1 BB01 1 [018..02D) (return) i hascall gcsafe newobj ----------------------------------------------------------------------------------------------------------------------------------------- *************** Exception Handling table is empty *************** After renumbering the basic blocks =============== No blocks renumbered! Enter blocks: BB01 After computing reachability sets: ------------------------------------------------ BBnum Reachable by ------------------------------------------------ BB01 : BB01 BB02 : BB01 BB02 BB03 : BB01 BB03 After computing reachability: ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..016)-> BB03 ( cond ) i hascall gcsafe BB02 [0001] 1 BB01 1 [016..018) (return) i gcsafe BB03 [0002] 1 BB01 1 [018..02D) (return) i hascall gcsafe newobj ----------------------------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist *************** In fgComputeDoms *************** In fgDebugCheckBBlist Dominator computation start blocks (those blocks with no incoming edges): BB01 ------------------------------------------------ BBnum Dominated by ------------------------------------------------ BB01: BB01 BB02: BB02 BB01 BB03: BB03 BB01 Inside fgBuildDomTree After computing the Dominance Tree: BB01 : BB03 BB02 After numbering the dominator tree: BB01: pre=01, post=03 BB02: pre=03, post=02 BB03: pre=02, post=01 *************** Finishing PHASE Compute blocks reachability *************** Starting PHASE Set block weights After optSetBlockWeights: ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..016)-> BB03 ( cond ) i hascall gcsafe BB02 [0001] 1 BB01 0.50 [016..018) (return) i gcsafe BB03 [0002] 1 BB01 0.50 [018..02D) (return) i hascall gcsafe newobj ----------------------------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist *************** Finishing PHASE Set block weights *************** Starting PHASE Find loops *************** In optFindLoops() *************** In optMarkLoopHeads() 0 loop heads marked *************** Finishing PHASE Find loops Trees after Find loops ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..016)-> BB03 ( cond ) i hascall gcsafe BB02 [0001] 1 BB01 0.50 [016..018) (return) i gcsafe BB03 [0002] 1 BB01 0.50 [018..02D) (return) i hascall gcsafe newobj ----------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [000..016) -> BB03 (cond), preds={} succs={BB02,BB03} ***** BB01 STMT00000 ( 0x000[E-] ... 0x007 ) [000004] -ACXG+------ * ASG long [000003] *--X-+-N---- +--* IND long [000000] -----+------ | \--* LCL_VAR byref V01 arg1 [000002] --CXG+------ \--* CALL long System.Runtime.RuntimeImports.RhGetOSModuleFromPointer [000001] -----+------ arg0 in rcx \--* LCL_VAR long V00 arg0 ***** BB01 STMT00007 ( 0x008[E-] ... ??? ) [000039] -A-XG+------ * ASG long [000038] D----+-N---- +--* LCL_VAR long V06 tmp1 [000006] *--XG+------ \--* IND long [000005] -----+------ \--* LCL_VAR byref V01 arg1 ***** BB01 STMT00008 ( 0x008[E-] ... ??? ) [000041] -A---+------ * ASG long [000040] D----+-N---- +--* LCL_VAR long V07 tmp2 [000007] -----+------ \--* CNS_INT long 0 ***** BB01 STMT00002 ( 0x008[E-] ... ??? ) [000013] ----G+------ * JTRUE void [000037] J---G+-N---- \--* NE int [000033] -----+------ +--* LCL_VAR long V06 tmp1 [000036] -----+------ \--* CNS_INT long 0 ------------ BB02 [016..018) (return), preds={BB01} succs={} ***** BB02 STMT00006 ( 0x016[E-] ... 0x017 ) [000030] -----+------ * RETURN ref [000029] -----+------ \--* CNS_INT ref null ------------ BB03 [018..02D) (return), preds={BB01} succs={} ***** BB03 STMT00003 ( 0x018[E-] ... 0x021 ) [000020] -ACXG+------ * ASG int [000019] D----+-N---- +--* LCL_VAR int V03 loc1 [000018] --CXG+------ \--* CALL int System.Runtime.RuntimeImports.RhGetModuleFileName ( 6, 4) [000015] *--XG------- arg0 in rcx +--* IND long ( 3, 2) [000014] ------------ | \--* LCL_VAR byref V01 arg1 ( 3, 3) [000017] ------------ arg1 in rdx \--* LCL_VAR_ADDR long V02 loc0 ***** BB03 STMT00004 ( 0x022[E-] ... 0x02A ) [000026] -ACXG+------ * ASG ref [000025] D----+-N---- +--* LCL_VAR ref V04 loc2 [000024] --CXG+------ \--* CALL ref System.String..ctor [000021] ----G+------ arg0 in rcx +--* LCL_VAR long (AX) V02 loc0 [000023] -----+------ arg2 in r8 +--* LCL_VAR int V03 loc1 [000022] -----+------ arg1 in rdx \--* CNS_INT int 0 ***** BB03 STMT00005 ( 0x02B[E-] ... 0x02C ) [000028] -----+------ * RETURN ref [000027] -----+------ \--* LCL_VAR ref V04 loc2 ------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist *************** 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 Mark local vars *************** In lvaMarkLocalVars() *** lvaComputeRefCounts *** *** lvaComputeRefCounts -- explicit counts *** *** marking local variables in block BB01 (weight=1 ) STMT00000 ( 0x000[E-] ... 0x007 ) [000004] -ACXG+------ * ASG long [000003] *--X-+-N---- +--* IND long [000000] -----+------ | \--* LCL_VAR byref V01 arg1 [000002] --CXG+------ \--* CALL long System.Runtime.RuntimeImports.RhGetOSModuleFromPointer [000001] -----+------ arg0 in rcx \--* LCL_VAR long V00 arg0 New refCnts for V01: refCnt = 1, refCntWtd = 1 New refCnts for V00: refCnt = 1, refCntWtd = 1 STMT00007 ( 0x008[E-] ... ??? ) [000039] -A-XG+------ * ASG long [000038] D----+-N---- +--* LCL_VAR long V06 tmp1 [000006] *--XG+------ \--* IND long [000005] -----+------ \--* LCL_VAR byref V01 arg1 New refCnts for V06: refCnt = 1, refCntWtd = 2 V06 needs explicit zero init. Disqualified as a single-def register candidate. New refCnts for V01: refCnt = 2, refCntWtd = 2 STMT00008 ( 0x008[E-] ... ??? ) [000041] -A---+------ * ASG long [000040] D----+-N---- +--* LCL_VAR long V07 tmp2 [000007] -----+------ \--* CNS_INT long 0 New refCnts for V07: refCnt = 1, refCntWtd = 2 V07 needs explicit zero init. Disqualified as a single-def register candidate. STMT00002 ( 0x008[E-] ... ??? ) [000013] ----G+------ * JTRUE void [000037] J---G+-N---- \--* NE int [000033] -----+------ +--* LCL_VAR long V06 tmp1 [000036] -----+------ \--* CNS_INT long 0 New refCnts for V06: refCnt = 2, refCntWtd = 4 *** marking local variables in block BB02 (weight=0.50) STMT00006 ( 0x016[E-] ... 0x017 ) [000030] -----+------ * RETURN ref [000029] -----+------ \--* CNS_INT ref null *** marking local variables in block BB03 (weight=0.50) STMT00003 ( 0x018[E-] ... 0x021 ) [000020] -ACXG+------ * ASG int [000019] D----+-N---- +--* LCL_VAR int V03 loc1 [000018] --CXG+------ \--* CALL int System.Runtime.RuntimeImports.RhGetModuleFileName ( 6, 4) [000015] *--XG------- arg0 in rcx +--* IND long ( 3, 2) [000014] ------------ | \--* LCL_VAR byref V01 arg1 ( 3, 3) [000017] ------------ arg1 in rdx \--* LCL_VAR_ADDR long V02 loc0 New refCnts for V03: refCnt = 1, refCntWtd = 0.50 V03 needs explicit zero init. Disqualified as a single-def register candidate. New refCnts for V01: refCnt = 3, refCntWtd = 2.50 New refCnts for V02: refCnt = 1, refCntWtd = 0.50 STMT00004 ( 0x022[E-] ... 0x02A ) [000026] -ACXG+------ * ASG ref [000025] D----+-N---- +--* LCL_VAR ref V04 loc2 [000024] --CXG+------ \--* CALL ref System.String..ctor [000021] ----G+------ arg0 in rcx +--* LCL_VAR long (AX) V02 loc0 [000023] -----+------ arg2 in r8 +--* LCL_VAR int V03 loc1 [000022] -----+------ arg1 in rdx \--* CNS_INT int 0 New refCnts for V04: refCnt = 1, refCntWtd = 0.50 Marking EH Var V04 as a register candidate. New refCnts for V02: refCnt = 2, refCntWtd = 1 New refCnts for V03: refCnt = 2, refCntWtd = 1 STMT00005 ( 0x02B[E-] ... 0x02C ) [000028] -----+------ * RETURN ref [000027] -----+------ \--* LCL_VAR ref V04 loc2 New refCnts for V04: refCnt = 2, refCntWtd = 1 *** lvaComputeRefCounts -- implicit counts *** New refCnts for V00: refCnt = 2, refCntWtd = 2 New refCnts for V00: refCnt = 3, refCntWtd = 3 New refCnts for V01: refCnt = 4, refCntWtd = 3.50 New refCnts for V01: refCnt = 5, refCntWtd = 4.50 *************** In optAddCopies() *************** Finishing PHASE Mark local vars *************** Starting PHASE Optimize bools *************** In optOptimizeBools() *************** In fgDebugCheckBBlist *************** Finishing PHASE Optimize bools *************** Starting PHASE Find oper order *************** In fgFindOperOrder() *************** Finishing PHASE Find oper order *************** Starting PHASE Set block order *************** In fgSetBlockOrder() The biggest BB has 9 tree nodes *************** Finishing PHASE Set block order Trees before Build SSA representation ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..016)-> BB03 ( cond ) i hascall gcsafe BB02 [0001] 1 BB01 0.50 [016..018) (return) i gcsafe BB03 [0002] 1 BB01 0.50 [018..02D) (return) i hascall gcsafe newobj ----------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [000..016) -> BB03 (cond), preds={} succs={BB02,BB03} ***** BB01 STMT00000 ( 0x000[E-] ... 0x007 ) N006 ( 19, 10) [000004] -ACXG---R--- * ASG long N005 ( 3, 2) [000003] *--X---N---- +--* IND long N004 ( 1, 1) [000000] ------------ | \--* LCL_VAR byref V01 arg1 N003 ( 15, 7) [000002] --CXG------- \--* CALL long System.Runtime.RuntimeImports.RhGetOSModuleFromPointer N002 ( 1, 1) [000001] ------------ arg0 in rcx \--* LCL_VAR long V00 arg0 ***** BB01 STMT00007 ( 0x008[E-] ... ??? ) N004 ( 3, 3) [000039] -A-XG---R--- * ASG long N003 ( 1, 1) [000038] D------N---- +--* LCL_VAR long V06 tmp1 N002 ( 3, 2) [000006] *--XG------- \--* IND long N001 ( 1, 1) [000005] ------------ \--* LCL_VAR byref V01 arg1 ***** BB01 STMT00008 ( 0x008[E-] ... ??? ) N003 ( 5, 4) [000041] -A------R--- * ASG long N002 ( 3, 2) [000040] D------N---- +--* LCL_VAR long V07 tmp2 N001 ( 1, 1) [000007] ------------ \--* CNS_INT long 0 ***** BB01 STMT00002 ( 0x008[E-] ... ??? ) N004 ( 5, 5) [000013] ----G------- * JTRUE void N003 ( 3, 3) [000037] J---G--N---- \--* NE int N001 ( 1, 1) [000033] ------------ +--* LCL_VAR long V06 tmp1 N002 ( 1, 1) [000036] ------------ \--* CNS_INT long 0 ------------ BB02 [016..018) (return), preds={BB01} succs={} ***** BB02 STMT00006 ( 0x016[E-] ... 0x017 ) N002 ( 2, 2) [000030] ------------ * RETURN ref N001 ( 1, 1) [000029] ------------ \--* CNS_INT ref null ------------ BB03 [018..02D) (return), preds={BB01} succs={} ***** BB03 STMT00003 ( 0x018[E-] ... 0x021 ) N008 ( 24, 15) [000020] -ACXG---R--- * ASG int N007 ( 3, 2) [000019] D------N---- +--* LCL_VAR int V03 loc1 N006 ( 20, 12) [000018] --CXG------- \--* CALL int System.Runtime.RuntimeImports.RhGetModuleFileName N004 ( 3, 2) [000015] *--XG------- arg0 in rcx +--* IND long N003 ( 1, 1) [000014] ------------ | \--* LCL_VAR byref V01 arg1 N005 ( 3, 3) [000017] ------------ arg1 in rdx \--* LCL_VAR_ADDR long V02 loc0 ***** BB03 STMT00004 ( 0x022[E-] ... 0x02A ) N009 ( 25, 16) [000026] -ACXG---R--- * ASG ref N008 ( 3, 2) [000025] D------N---- +--* LCL_VAR ref V04 loc2 N007 ( 21, 13) [000024] --CXG------- \--* CALL ref System.String..ctor N004 ( 3, 2) [000021] ----G------- arg0 in rcx +--* LCL_VAR long (AX) V02 loc0 N005 ( 3, 2) [000023] ------------ arg2 in r8 +--* LCL_VAR int V03 loc1 N006 ( 1, 1) [000022] ------------ arg1 in rdx \--* CNS_INT int 0 ***** BB03 STMT00005 ( 0x02B[E-] ... 0x02C ) N002 ( 4, 3) [000028] ------------ * RETURN ref N001 ( 3, 2) [000027] ------------ \--* LCL_VAR ref V04 loc2 ------------------------------------------------------------------------------------------------------------------- *************** Starting PHASE Build SSA representation *************** In SsaBuilder::Build() [SsaBuilder] Max block count is 4. ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..016)-> BB03 ( cond ) i hascall gcsafe BB02 [0001] 1 BB01 0.50 [016..018) (return) i gcsafe BB03 [0002] 1 BB01 0.50 [018..02D) (return) i hascall gcsafe newobj ----------------------------------------------------------------------------------------------------------------------------------------- *************** Exception Handling table is empty [SsaBuilder] Topologically sorted the graph. [SsaBuilder::ComputeImmediateDom] Inside fgBuildDomTree After computing the Dominance Tree: BB01 : BB03 BB02 *************** In fgLocalVarLiveness() In fgLocalVarLivenessInit Tracked variable (6 out of 8) table: V01 arg1 [ byref]: refCnt = 5, refCntWtd = 4.50 V00 arg0 [ long]: refCnt = 3, refCntWtd = 3 V06 tmp1 [ long]: refCnt = 2, refCntWtd = 4 V07 tmp2 [ long]: refCnt = 1, refCntWtd = 2 V04 loc2 [ ref]: refCnt = 2, refCntWtd = 1 V03 loc1 [ int]: refCnt = 2, refCntWtd = 1 *************** In fgPerBlockLocalVarLiveness() BB01 USE(2)={V01 V00 } + ByrefExposed + GcHeap DEF(2)={ V06 V07} + ByrefExposed* + GcHeap* BB02 USE(0)={} DEF(0)={} BB03 USE(1)={V01 } + ByrefExposed + GcHeap DEF(2)={ V04 V03} + ByrefExposed* + GcHeap* ** Memory liveness computed, GcHeap states and ByrefExposed states match *************** In fgInterBlockLocalVarLiveness() BB liveness after fgLiveVarAnalysis(): BB01 IN (2)={V01 V00} + ByrefExposed + GcHeap OUT(1)={V01 } + ByrefExposed + GcHeap BB02 IN (0)={} OUT(0)={} BB03 IN (1)={V01} + ByrefExposed + GcHeap OUT(0)={ } top level assign removing stmt with no side effects removing useless STMT00008 ( 0x008[E-] ... ??? ) N003 ( 5, 4) [000041] -A------R--- * ASG long N002 ( 3, 2) [000040] D------N---- +--* LCL_VAR long V07 tmp2 N001 ( 1, 1) [000007] ------------ \--* CNS_INT long 0 from BB01 *************** In optRemoveRedundantZeroInits() Marking L06 as having an explicit init *************** In SsaBuilder::InsertPhiFunctions() Inserting phi functions: *************** In SsaBuilder::RenameVariables() After fgSsaBuild: ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..016)-> BB03 ( cond ) i hascall gcsafe BB02 [0001] 1 BB01 0.50 [016..018) (return) i gcsafe BB03 [0002] 1 BB01 0.50 [018..02D) (return) i hascall gcsafe newobj ----------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [000..016) -> BB03 (cond), preds={} succs={BB02,BB03} ***** BB01 STMT00000 ( 0x000[E-] ... 0x007 ) N006 ( 19, 10) [000004] -ACXG---R--- * ASG long N005 ( 3, 2) [000003] *--X---N---- +--* IND long N004 ( 1, 1) [000000] ------------ | \--* LCL_VAR byref V01 arg1 u:1 N003 ( 15, 7) [000002] --CXG------- \--* CALL long System.Runtime.RuntimeImports.RhGetOSModuleFromPointer N002 ( 1, 1) [000001] ------------ arg0 in rcx \--* LCL_VAR long V00 arg0 u:1 (last use) ***** BB01 STMT00007 ( 0x008[E-] ... ??? ) N004 ( 3, 3) [000039] -A-XG---R--- * ASG long N003 ( 1, 1) [000038] D------N---- +--* LCL_VAR long V06 tmp1 d:1 N002 ( 3, 2) [000006] *--XG------- \--* IND long N001 ( 1, 1) [000005] ------------ \--* LCL_VAR byref V01 arg1 u:1 ***** BB01 STMT00002 ( 0x008[E-] ... ??? ) N004 ( 5, 5) [000013] ----G------- * JTRUE void N003 ( 3, 3) [000037] J---G--N---- \--* NE int N001 ( 1, 1) [000033] ------------ +--* LCL_VAR long V06 tmp1 u:1 (last use) N002 ( 1, 1) [000036] ------------ \--* CNS_INT long 0 ------------ BB02 [016..018) (return), preds={BB01} succs={} ***** BB02 STMT00006 ( 0x016[E-] ... 0x017 ) N002 ( 2, 2) [000030] ------------ * RETURN ref N001 ( 1, 1) [000029] ------------ \--* CNS_INT ref null ------------ BB03 [018..02D) (return), preds={BB01} succs={} ***** BB03 STMT00003 ( 0x018[E-] ... 0x021 ) N008 ( 24, 15) [000020] -ACXG---R--- * ASG int N007 ( 3, 2) [000019] D------N---- +--* LCL_VAR int V03 loc1 d:1 N006 ( 20, 12) [000018] --CXG------- \--* CALL int System.Runtime.RuntimeImports.RhGetModuleFileName N004 ( 3, 2) [000015] *--XG------- arg0 in rcx +--* IND long N003 ( 1, 1) [000014] ------------ | \--* LCL_VAR byref V01 arg1 u:1 (last use) N005 ( 3, 3) [000017] ------------ arg1 in rdx \--* LCL_VAR_ADDR long V02 loc0 ***** BB03 STMT00004 ( 0x022[E-] ... 0x02A ) N009 ( 25, 16) [000026] -ACXG---R--- * ASG ref N008 ( 3, 2) [000025] D------N---- +--* LCL_VAR ref V04 loc2 d:1 N007 ( 21, 13) [000024] --CXG------- \--* CALL ref System.String..ctor N004 ( 3, 2) [000021] ----G------- arg0 in rcx +--* LCL_VAR long (AX) V02 loc0 N005 ( 3, 2) [000023] ------------ arg2 in r8 +--* LCL_VAR int V03 loc1 u:1 (last use) N006 ( 1, 1) [000022] ------------ arg1 in rdx \--* CNS_INT int 0 ***** BB03 STMT00005 ( 0x02B[E-] ... 0x02C ) N002 ( 4, 3) [000028] ------------ * RETURN ref N001 ( 3, 2) [000027] ------------ \--* LCL_VAR ref V04 loc2 u:1 (last use) ------------------------------------------------------------------------------------------------------------------- *************** Finishing PHASE Build SSA representation Trees after Build SSA representation ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..016)-> BB03 ( cond ) i hascall gcsafe BB02 [0001] 1 BB01 0.50 [016..018) (return) i gcsafe BB03 [0002] 1 BB01 0.50 [018..02D) (return) i hascall gcsafe newobj ----------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [000..016) -> BB03 (cond), preds={} succs={BB02,BB03} ***** BB01 STMT00000 ( 0x000[E-] ... 0x007 ) N006 ( 19, 10) [000004] -ACXG---R--- * ASG long N005 ( 3, 2) [000003] *--X---N---- +--* IND long N004 ( 1, 1) [000000] ------------ | \--* LCL_VAR byref V01 arg1 u:1 N003 ( 15, 7) [000002] --CXG------- \--* CALL long System.Runtime.RuntimeImports.RhGetOSModuleFromPointer N002 ( 1, 1) [000001] ------------ arg0 in rcx \--* LCL_VAR long V00 arg0 u:1 (last use) ***** BB01 STMT00007 ( 0x008[E-] ... ??? ) N004 ( 3, 3) [000039] -A-XG---R--- * ASG long N003 ( 1, 1) [000038] D------N---- +--* LCL_VAR long V06 tmp1 d:1 N002 ( 3, 2) [000006] *--XG------- \--* IND long N001 ( 1, 1) [000005] ------------ \--* LCL_VAR byref V01 arg1 u:1 ***** BB01 STMT00002 ( 0x008[E-] ... ??? ) N004 ( 5, 5) [000013] ----G------- * JTRUE void N003 ( 3, 3) [000037] J---G--N---- \--* NE int N001 ( 1, 1) [000033] ------------ +--* LCL_VAR long V06 tmp1 u:1 (last use) N002 ( 1, 1) [000036] ------------ \--* CNS_INT long 0 ------------ BB02 [016..018) (return), preds={BB01} succs={} ***** BB02 STMT00006 ( 0x016[E-] ... 0x017 ) N002 ( 2, 2) [000030] ------------ * RETURN ref N001 ( 1, 1) [000029] ------------ \--* CNS_INT ref null ------------ BB03 [018..02D) (return), preds={BB01} succs={} ***** BB03 STMT00003 ( 0x018[E-] ... 0x021 ) N008 ( 24, 15) [000020] -ACXG---R--- * ASG int N007 ( 3, 2) [000019] D------N---- +--* LCL_VAR int V03 loc1 d:1 N006 ( 20, 12) [000018] --CXG------- \--* CALL int System.Runtime.RuntimeImports.RhGetModuleFileName N004 ( 3, 2) [000015] *--XG------- arg0 in rcx +--* IND long N003 ( 1, 1) [000014] ------------ | \--* LCL_VAR byref V01 arg1 u:1 (last use) N005 ( 3, 3) [000017] ------------ arg1 in rdx \--* LCL_VAR_ADDR long V02 loc0 ***** BB03 STMT00004 ( 0x022[E-] ... 0x02A ) N009 ( 25, 16) [000026] -ACXG---R--- * ASG ref N008 ( 3, 2) [000025] D------N---- +--* LCL_VAR ref V04 loc2 d:1 N007 ( 21, 13) [000024] --CXG------- \--* CALL ref System.String..ctor N004 ( 3, 2) [000021] ----G------- arg0 in rcx +--* LCL_VAR long (AX) V02 loc0 N005 ( 3, 2) [000023] ------------ arg2 in r8 +--* LCL_VAR int V03 loc1 u:1 (last use) N006 ( 1, 1) [000022] ------------ arg1 in rdx \--* CNS_INT int 0 ***** BB03 STMT00005 ( 0x02B[E-] ... 0x02C ) N002 ( 4, 3) [000028] ------------ * RETURN ref N001 ( 3, 2) [000027] ------------ \--* LCL_VAR ref V04 loc2 u:1 (last use) ------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist *************** Starting PHASE Early Value Propagation *************** In optEarlyProp() After optEarlyProp: ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..016)-> BB03 ( cond ) i hascall gcsafe BB02 [0001] 1 BB01 0.50 [016..018) (return) i gcsafe BB03 [0002] 1 BB01 0.50 [018..02D) (return) i hascall gcsafe newobj ----------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [000..016) -> BB03 (cond), preds={} succs={BB02,BB03} ***** BB01 STMT00000 ( 0x000[E-] ... 0x007 ) N006 ( 19, 10) [000004] -ACXG---R--- * ASG long N005 ( 3, 2) [000003] *--X---N---- +--* IND long N004 ( 1, 1) [000000] ------------ | \--* LCL_VAR byref V01 arg1 u:1 N003 ( 15, 7) [000002] --CXG------- \--* CALL long System.Runtime.RuntimeImports.RhGetOSModuleFromPointer N002 ( 1, 1) [000001] ------------ arg0 in rcx \--* LCL_VAR long V00 arg0 u:1 (last use) ***** BB01 STMT00007 ( 0x008[E-] ... ??? ) N004 ( 3, 3) [000039] -A-XG---R--- * ASG long N003 ( 1, 1) [000038] D------N---- +--* LCL_VAR long V06 tmp1 d:1 N002 ( 3, 2) [000006] *--XG------- \--* IND long N001 ( 1, 1) [000005] ------------ \--* LCL_VAR byref V01 arg1 u:1 ***** BB01 STMT00002 ( 0x008[E-] ... ??? ) N004 ( 5, 5) [000013] ----G------- * JTRUE void N003 ( 3, 3) [000037] J---G--N---- \--* NE int N001 ( 1, 1) [000033] ------------ +--* LCL_VAR long V06 tmp1 u:1 (last use) N002 ( 1, 1) [000036] ------------ \--* CNS_INT long 0 ------------ BB02 [016..018) (return), preds={BB01} succs={} ***** BB02 STMT00006 ( 0x016[E-] ... 0x017 ) N002 ( 2, 2) [000030] ------------ * RETURN ref N001 ( 1, 1) [000029] ------------ \--* CNS_INT ref null ------------ BB03 [018..02D) (return), preds={BB01} succs={} ***** BB03 STMT00003 ( 0x018[E-] ... 0x021 ) N008 ( 24, 15) [000020] -ACXG---R--- * ASG int N007 ( 3, 2) [000019] D------N---- +--* LCL_VAR int V03 loc1 d:1 N006 ( 20, 12) [000018] --CXG------- \--* CALL int System.Runtime.RuntimeImports.RhGetModuleFileName N004 ( 3, 2) [000015] *--XG------- arg0 in rcx +--* IND long N003 ( 1, 1) [000014] ------------ | \--* LCL_VAR byref V01 arg1 u:1 (last use) N005 ( 3, 3) [000017] ------------ arg1 in rdx \--* LCL_VAR_ADDR long V02 loc0 ***** BB03 STMT00004 ( 0x022[E-] ... 0x02A ) N009 ( 25, 16) [000026] -ACXG---R--- * ASG ref N008 ( 3, 2) [000025] D------N---- +--* LCL_VAR ref V04 loc2 d:1 N007 ( 21, 13) [000024] --CXG------- \--* CALL ref System.String..ctor N004 ( 3, 2) [000021] ----G------- arg0 in rcx +--* LCL_VAR long (AX) V02 loc0 N005 ( 3, 2) [000023] ------------ arg2 in r8 +--* LCL_VAR int V03 loc1 u:1 (last use) N006 ( 1, 1) [000022] ------------ arg1 in rdx \--* CNS_INT int 0 ***** BB03 STMT00005 ( 0x02B[E-] ... 0x02C ) N002 ( 4, 3) [000028] ------------ * RETURN ref N001 ( 3, 2) [000027] ------------ \--* LCL_VAR ref V04 loc2 u:1 (last use) ------------------------------------------------------------------------------------------------------------------- *************** Finishing PHASE Early Value Propagation *************** Starting PHASE Do value numbering *************** In fgValueNumber() Memory Initial Value in BB01 is: $100 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) N006 ( 19, 10) [000004] -ACXG---R--- * ASG long N005 ( 3, 2) [000003] *--X---N---- +--* IND long N004 ( 1, 1) [000000] ------------ | \--* LCL_VAR byref V01 arg1 u:1 N003 ( 15, 7) [000002] --CXG------- \--* CALL long System.Runtime.RuntimeImports.RhGetOSModuleFromPointer N002 ( 1, 1) [000001] ------------ arg0 in rcx \--* LCL_VAR long V00 arg0 u:1 (last use) N001 [000043] ARGPLACE => $81 {MemOpaque:NotInLoop} N002 [000001] LCL_VAR V00 arg0 u:1 (last use) => $80 {InitVal($40)} VN of ARGPLACE tree [000043] updated to $80 {InitVal($40)} fgCurMemoryVN[GcHeap] assigned for CALL at [000002] to VN: $101. N003 [000002] CALL => $82 {MemOpaque:NotInLoop} N004 [000000] LCL_VAR V01 arg1 u:1 => $c0 {InitVal($41)} fgCurMemoryVN[GcHeap] assigned for assign-of-IND at [000004] to VN: $102. N006 [000004] ASG => $VN.Void ***** BB01, STMT00000(after) N006 ( 19, 10) [000004] -ACXG---R--- * ASG long $VN.Void N005 ( 3, 2) [000003] *--X---N---- +--* IND long $82 N004 ( 1, 1) [000000] ------------ | \--* LCL_VAR byref V01 arg1 u:1 $c0 N003 ( 15, 7) [000002] --CXG------- \--* CALL long System.Runtime.RuntimeImports.RhGetOSModuleFromPointer $82 N002 ( 1, 1) [000001] ------------ arg0 in rcx \--* LCL_VAR long V00 arg0 u:1 (last use) $80 --------- ***** BB01, STMT00007(before) N004 ( 3, 3) [000039] -A-XG---R--- * ASG long N003 ( 1, 1) [000038] D------N---- +--* LCL_VAR long V06 tmp1 d:1 N002 ( 3, 2) [000006] *--XG------- \--* IND long N001 ( 1, 1) [000005] ------------ \--* LCL_VAR byref V01 arg1 u:1 N001 [000005] LCL_VAR V01 arg1 u:1 => $c0 {InitVal($41)} N002 [000006] IND => <l:$201 {norm=$140 {ByrefExposedLoad($43, $c0, $102)}, exc=$1c0 {NullPtrExc($c0)}}, c:$200 {norm=$83 {MemOpaque:NotInLoop}, exc=$1c0 {NullPtrExc($c0)}}> N003 [000038] LCL_VAR V06 tmp1 d:1 => <l:$140 {ByrefExposedLoad($43, $c0, $102)}, c:$83 {MemOpaque:NotInLoop}> N004 [000039] ASG => <l:$201 {norm=$140 {ByrefExposedLoad($43, $c0, $102)}, exc=$1c0 {NullPtrExc($c0)}}, c:$200 {norm=$83 {MemOpaque:NotInLoop}, exc=$1c0 {NullPtrExc($c0)}}> ***** BB01, STMT00007(after) N004 ( 3, 3) [000039] -A-XG---R--- * ASG long <l:$201, c:$200> N003 ( 1, 1) [000038] D------N---- +--* LCL_VAR long V06 tmp1 d:1 <l:$140, c:$83> N002 ( 3, 2) [000006] *--XG------- \--* IND long <l:$201, c:$200> N001 ( 1, 1) [000005] ------------ \--* LCL_VAR byref V01 arg1 u:1 $c0 --------- ***** BB01, STMT00002(before) N004 ( 5, 5) [000013] ----G------- * JTRUE void N003 ( 3, 3) [000037] J---G--N---- \--* NE int N001 ( 1, 1) [000033] ------------ +--* LCL_VAR long V06 tmp1 u:1 (last use) N002 ( 1, 1) [000036] ------------ \--* CNS_INT long 0 N001 [000033] LCL_VAR V06 tmp1 u:1 (last use) => <l:$140 {ByrefExposedLoad($43, $c0, $102)}, c:$83 {MemOpaque:NotInLoop}> N002 [000036] CNS_INT 0 => $240 {LngCns: 0} N003 [000037] NE => <l:$281 {NE($140, $240)}, c:$280 {NE($83, $240)}> ***** BB01, STMT00002(after) N004 ( 5, 5) [000013] ----G------- * JTRUE void N003 ( 3, 3) [000037] J---G--N---- \--* NE int <l:$281, c:$280> N001 ( 1, 1) [000033] ------------ +--* LCL_VAR long V06 tmp1 u:1 (last use) <l:$140, c:$83> N002 ( 1, 1) [000036] ------------ \--* CNS_INT long 0 $240 finish(BB01). Succ(BB02). Not yet completed. All preds complete, adding to allDone. Succ(BB03). Not yet completed. All preds complete, adding to allDone. The SSA definition for ByrefExposed (#2) at start of BB03 is $102 {MemOpaque:NotInLoop} The SSA definition for GcHeap (#2) at start of BB03 is $102 {MemOpaque:NotInLoop} ***** BB03, STMT00003(before) N008 ( 24, 15) [000020] -ACXG---R--- * ASG int N007 ( 3, 2) [000019] D------N---- +--* LCL_VAR int V03 loc1 d:1 N006 ( 20, 12) [000018] --CXG------- \--* CALL int System.Runtime.RuntimeImports.RhGetModuleFileName N004 ( 3, 2) [000015] *--XG------- arg0 in rcx +--* IND long N003 ( 1, 1) [000014] ------------ | \--* LCL_VAR byref V01 arg1 u:1 (last use) N005 ( 3, 3) [000017] ------------ arg1 in rdx \--* LCL_VAR_ADDR long V02 loc0 N001 [000044] ARGPLACE => $85 {MemOpaque:NotInLoop} N002 [000045] ARGPLACE => $86 {MemOpaque:NotInLoop} N003 [000014] LCL_VAR V01 arg1 u:1 (last use) => $c0 {InitVal($41)} N004 [000015] IND => <l:$201 {norm=$140 {ByrefExposedLoad($43, $c0, $102)}, exc=$1c0 {NullPtrExc($c0)}}, c:$202 {norm=$87 {MemOpaque:NotInLoop}, exc=$1c0 {NullPtrExc($c0)}}> N005 [000017] LCL_VAR_ADDR V02 loc0 => $88 {MemOpaque:NotInLoop} VN of ARGPLACE tree [000044] updated to <l:$201 {norm=$140 {ByrefExposedLoad($43, $c0, $102)}, exc=$1c0 {NullPtrExc($c0)}}, c:$202 {norm=$87 {MemOpaque:NotInLoop}, exc=$1c0 {NullPtrExc($c0)}}> VN of ARGPLACE tree [000045] updated to $88 {MemOpaque:NotInLoop} fgCurMemoryVN[GcHeap] assigned for CALL at [000018] to VN: $103. N006 [000018] CALL => $2c0 {MemOpaque:NotInLoop} N007 [000019] LCL_VAR V03 loc1 d:1 => $2c0 {MemOpaque:NotInLoop} N008 [000020] ASG => $2c0 {MemOpaque:NotInLoop} ***** BB03, STMT00003(after) N008 ( 24, 15) [000020] -ACXG---R--- * ASG int $2c0 N007 ( 3, 2) [000019] D------N---- +--* LCL_VAR int V03 loc1 d:1 $2c0 N006 ( 20, 12) [000018] --CXG------- \--* CALL int System.Runtime.RuntimeImports.RhGetModuleFileName $2c0 N004 ( 3, 2) [000015] *--XG------- arg0 in rcx +--* IND long <l:$201, c:$202> N003 ( 1, 1) [000014] ------------ | \--* LCL_VAR byref V01 arg1 u:1 (last use) $c0 N005 ( 3, 3) [000017] ------------ arg1 in rdx \--* LCL_VAR_ADDR long V02 loc0 $88 --------- ***** BB03, STMT00004(before) N009 ( 25, 16) [000026] -ACXG---R--- * ASG ref N008 ( 3, 2) [000025] D------N---- +--* LCL_VAR ref V04 loc2 d:1 N007 ( 21, 13) [000024] --CXG------- \--* CALL ref System.String..ctor N004 ( 3, 2) [000021] ----G------- arg0 in rcx +--* LCL_VAR long (AX) V02 loc0 N005 ( 3, 2) [000023] ------------ arg2 in r8 +--* LCL_VAR int V03 loc1 u:1 (last use) N006 ( 1, 1) [000022] ------------ arg1 in rdx \--* CNS_INT int 0 N001 [000046] ARGPLACE => $89 {MemOpaque:NotInLoop} N002 [000048] ARGPLACE => $2c2 {MemOpaque:NotInLoop} N003 [000047] ARGPLACE => $2c3 {MemOpaque:NotInLoop} N004 [000021] LCL_VAR V02 loc0 => $141 {ByrefExposedLoad($43, $300, $103)} N005 [000023] LCL_VAR V03 loc1 u:1 (last use) => $2c0 {MemOpaque:NotInLoop} N006 [000022] CNS_INT 0 => $40 {IntCns 0} VN of ARGPLACE tree [000046] updated to $141 {ByrefExposedLoad($43, $300, $103)} VN of ARGPLACE tree [000048] updated to $40 {IntCns 0} VN of ARGPLACE tree [000047] updated to $2c0 {MemOpaque:NotInLoop} fgCurMemoryVN[GcHeap] assigned for CALL at [000024] to VN: $104. N007 [000024] CALL => $181 {MemOpaque:NotInLoop} N008 [000025] LCL_VAR V04 loc2 d:1 => $181 {MemOpaque:NotInLoop} N009 [000026] ASG => $181 {MemOpaque:NotInLoop} ***** BB03, STMT00004(after) N009 ( 25, 16) [000026] -ACXG---R--- * ASG ref $181 N008 ( 3, 2) [000025] D------N---- +--* LCL_VAR ref V04 loc2 d:1 $181 N007 ( 21, 13) [000024] --CXG------- \--* CALL ref System.String..ctor $181 N004 ( 3, 2) [000021] ----G------- arg0 in rcx +--* LCL_VAR long (AX) V02 loc0 $141 N005 ( 3, 2) [000023] ------------ arg2 in r8 +--* LCL_VAR int V03 loc1 u:1 (last use) $2c0 N006 ( 1, 1) [000022] ------------ arg1 in rdx \--* CNS_INT int 0 $40 --------- ***** BB03, STMT00005(before) N002 ( 4, 3) [000028] ------------ * RETURN ref N001 ( 3, 2) [000027] ------------ \--* LCL_VAR ref V04 loc2 u:1 (last use) N001 [000027] LCL_VAR V04 loc2 u:1 (last use) => $181 {MemOpaque:NotInLoop} N002 [000028] RETURN => $183 {MemOpaque:NotInLoop} ***** BB03, STMT00005(after) N002 ( 4, 3) [000028] ------------ * RETURN ref $183 N001 ( 3, 2) [000027] ------------ \--* LCL_VAR ref V04 loc2 u:1 (last use) $181 finish(BB03). The SSA definition for ByrefExposed (#2) at start of BB02 is $102 {MemOpaque:NotInLoop} The SSA definition for GcHeap (#2) at start of BB02 is $102 {MemOpaque:NotInLoop} ***** BB02, STMT00006(before) N002 ( 2, 2) [000030] ------------ * RETURN ref N001 ( 1, 1) [000029] ------------ \--* CNS_INT ref null N001 [000029] CNS_INT null => $VN.Null N002 [000030] RETURN => $184 {MemOpaque:NotInLoop} ***** BB02, STMT00006(after) N002 ( 2, 2) [000030] ------------ * RETURN ref $184 N001 ( 1, 1) [000029] ------------ \--* CNS_INT ref null $VN.Null finish(BB02). *************** Finishing PHASE Do value numbering *************** Starting PHASE Hoist loop code No loops; no hoisting *************** Finishing PHASE Hoist loop code *************** Starting PHASE VN based copy prop *************** In optVnCopyProp() Copy Assertion for BB01 curSsaName stack: { } Live vars: {V00 V01} => {V01} Live vars: {V01} => {V01 V06} Live vars: {V01 V06} => {V01} Copy Assertion for BB03 curSsaName stack: { 0-[000001]:V00 1-[000000]:V01 6-[000038]:V06 } Live vars: {V01} => {} Live vars: {} => {V03} Live vars: {V03} => {} Live vars: {} => {V04} Live vars: {V04} => {} Copy Assertion for BB02 curSsaName stack: { 0-[000001]:V00 1-[000000]:V01 6-[000038]:V06 } *************** Finishing PHASE VN based copy prop *************** Starting PHASE Redundant branch opts ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..016)-> BB03 ( cond ) i hascall gcsafe BB02 [0001] 1 BB01 0.50 [016..018) (return) i gcsafe BB03 [0002] 1 BB01 0.50 [018..02D) (return) i hascall gcsafe newobj ----------------------------------------------------------------------------------------------------------------------------------------- optRedundantRelop in BB01; jump tree is N004 ( 5, 5) [000013] ----G------- * JTRUE void N003 ( 3, 3) [000037] J---G--N---- \--* NE int <l:$281, c:$280> N001 ( 1, 1) [000033] ------------ +--* LCL_VAR long V06 tmp1 u:1 (last use) <l:$140, c:$83> N002 ( 1, 1) [000036] ------------ \--* CNS_INT long 0 $240 ... checking previous tree N004 ( 3, 3) [000039] -A-XG---R--- * ASG long <l:$201, c:$200> N003 ( 1, 1) [000038] D------N---- +--* LCL_VAR long V06 tmp1 d:1 <l:$140, c:$83> N002 ( 3, 2) [000006] *--XG------- \--* IND long <l:$201, c:$200> N001 ( 1, 1) [000005] ------------ \--* LCL_VAR byref V01 arg1 u:1 $c0 -- prev tree VN is not related ... checking previous tree N006 ( 19, 10) [000004] -ACXG---R--- * ASG long $VN.Void N005 ( 3, 2) [000003] *--X---N---- +--* IND long $82 N004 ( 1, 1) [000000] ------------ | \--* LCL_VAR byref V01 arg1 u:1 $c0 N003 ( 15, 7) [000002] --CXG------- \--* CALL long System.Runtime.RuntimeImports.RhGetOSModuleFromPointer $82 N002 ( 1, 1) [000001] ------------ arg0 in rcx \--* LCL_VAR long V00 arg0 u:1 (last use) $80 -- prev tree has side effects and is not next to jumpTree *************** Finishing PHASE Redundant branch opts [no changes] Trees before Optimize Valnum CSEs ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..016)-> BB03 ( cond ) i hascall gcsafe BB02 [0001] 1 BB01 0.50 [016..018) (return) i gcsafe BB03 [0002] 1 BB01 0.50 [018..02D) (return) i hascall gcsafe newobj ----------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [000..016) -> BB03 (cond), preds={} succs={BB02,BB03} ***** BB01 STMT00000 ( 0x000[E-] ... 0x007 ) N006 ( 19, 10) [000004] -ACXG---R--- * ASG long $VN.Void N005 ( 3, 2) [000003] *--X---N---- +--* IND long $82 N004 ( 1, 1) [000000] ------------ | \--* LCL_VAR byref V01 arg1 u:1 $c0 N003 ( 15, 7) [000002] --CXG------- \--* CALL long System.Runtime.RuntimeImports.RhGetOSModuleFromPointer $82 N002 ( 1, 1) [000001] ------------ arg0 in rcx \--* LCL_VAR long V00 arg0 u:1 (last use) $80 ***** BB01 STMT00007 ( 0x008[E-] ... ??? ) N004 ( 3, 3) [000039] -A-XG---R--- * ASG long <l:$201, c:$200> N003 ( 1, 1) [000038] D------N---- +--* LCL_VAR long V06 tmp1 d:1 <l:$140, c:$83> N002 ( 3, 2) [000006] *--XG------- \--* IND long <l:$201, c:$200> N001 ( 1, 1) [000005] ------------ \--* LCL_VAR byref V01 arg1 u:1 $c0 ***** BB01 STMT00002 ( 0x008[E-] ... ??? ) N004 ( 5, 5) [000013] ----G------- * JTRUE void N003 ( 3, 3) [000037] J---G--N---- \--* NE int <l:$281, c:$280> N001 ( 1, 1) [000033] ------------ +--* LCL_VAR long V06 tmp1 u:1 (last use) <l:$140, c:$83> N002 ( 1, 1) [000036] ------------ \--* CNS_INT long 0 $240 ------------ BB02 [016..018) (return), preds={BB01} succs={} ***** BB02 STMT00006 ( 0x016[E-] ... 0x017 ) N002 ( 2, 2) [000030] ------------ * RETURN ref $184 N001 ( 1, 1) [000029] ------------ \--* CNS_INT ref null $VN.Null ------------ BB03 [018..02D) (return), preds={BB01} succs={} ***** BB03 STMT00003 ( 0x018[E-] ... 0x021 ) N008 ( 24, 15) [000020] -ACXG---R--- * ASG int $2c0 N007 ( 3, 2) [000019] D------N---- +--* LCL_VAR int V03 loc1 d:1 $2c0 N006 ( 20, 12) [000018] --CXG------- \--* CALL int System.Runtime.RuntimeImports.RhGetModuleFileName $2c0 N004 ( 3, 2) [000015] *--XG------- arg0 in rcx +--* IND long <l:$201, c:$202> N003 ( 1, 1) [000014] ------------ | \--* LCL_VAR byref V01 arg1 u:1 (last use) $c0 N005 ( 3, 3) [000017] ------------ arg1 in rdx \--* LCL_VAR_ADDR long V02 loc0 $88 ***** BB03 STMT00004 ( 0x022[E-] ... 0x02A ) N009 ( 25, 16) [000026] -ACXG---R--- * ASG ref $181 N008 ( 3, 2) [000025] D------N---- +--* LCL_VAR ref V04 loc2 d:1 $181 N007 ( 21, 13) [000024] --CXG------- \--* CALL ref System.String..ctor $181 N004 ( 3, 2) [000021] ----G------- arg0 in rcx +--* LCL_VAR long (AX) V02 loc0 $141 N005 ( 3, 2) [000023] ------------ arg2 in r8 +--* LCL_VAR int V03 loc1 u:1 (last use) $2c0 N006 ( 1, 1) [000022] ------------ arg1 in rdx \--* CNS_INT int 0 $40 ***** BB03 STMT00005 ( 0x02B[E-] ... 0x02C ) N002 ( 4, 3) [000028] ------------ * RETURN ref $183 N001 ( 3, 2) [000027] ------------ \--* LCL_VAR ref V04 loc2 u:1 (last use) $181 ------------------------------------------------------------------------------------------------------------------- *************** Starting PHASE Optimize Valnum CSEs CSE candidate #01, key=$140 in BB03, [cost= 3, size= 2]: N004 ( 3, 2) CSE #01 (use)[000015] *--XG------- * IND long <l:$201, c:$202> N003 ( 1, 1) [000014] ------------ \--* LCL_VAR byref V01 arg1 u:1 (last use) $c0 Blocks that generate CSE def/uses BB01 cseGen = 0000000000000003 CSE #01.c BB03 cseGen = 0000000000000001 CSE #01 Performing DataFlow for ValnumCSE's After performing DataFlow for ValnumCSE's BB01 in gen out 0000000000000000 0000000000000003 CSE #01.c 0000000000000003 CSE #01.c BB02 in gen out 0000000000000003 CSE #01.c 0000000000000000 0000000000000003 CSE #01.c BB03 in gen out 0000000000000003 CSE #01.c 0000000000000001 CSE #01 0000000000000001 CSE #01 Labeling the CSEs with Use/Def information BB01 [000006] Def of CSE #01 [weight=1 ] BB03 [000015] Use of CSE #01 [weight=0.50] ************ Trees at start of optValnumCSE_Heuristic() ------------ BB01 [000..016) -> BB03 (cond), preds={} succs={BB02,BB03} ***** BB01 STMT00000 ( 0x000[E-] ... 0x007 ) N006 ( 19, 10) [000004] -ACXG---R--- * ASG long $VN.Void N005 ( 3, 2) [000003] *--X---N---- +--* IND long $82 N004 ( 1, 1) [000000] ------------ | \--* LCL_VAR byref V01 arg1 u:1 $c0 N003 ( 15, 7) [000002] --CXG------- \--* CALL long System.Runtime.RuntimeImports.RhGetOSModuleFromPointer $82 N002 ( 1, 1) [000001] ------------ arg0 in rcx \--* LCL_VAR long V00 arg0 u:1 (last use) $80 ***** BB01 STMT00007 ( 0x008[E-] ... ??? ) N004 ( 3, 3) [000039] -A-XG---R--- * ASG long <l:$201, c:$200> N003 ( 1, 1) [000038] D------N---- +--* LCL_VAR long V06 tmp1 d:1 <l:$140, c:$83> N002 ( 3, 2) CSE #01 (def)[000006] *--XG------- \--* IND long <l:$201, c:$200> N001 ( 1, 1) [000005] ------------ \--* LCL_VAR byref V01 arg1 u:1 $c0 ***** BB01 STMT00002 ( 0x008[E-] ... ??? ) N004 ( 5, 5) [000013] ----G------- * JTRUE void N003 ( 3, 3) [000037] J---G--N---- \--* NE int <l:$281, c:$280> N001 ( 1, 1) [000033] ------------ +--* LCL_VAR long V06 tmp1 u:1 (last use) <l:$140, c:$83> N002 ( 1, 1) [000036] ------------ \--* CNS_INT long 0 $240 ------------ BB02 [016..018) (return), preds={BB01} succs={} ***** BB02 STMT00006 ( 0x016[E-] ... 0x017 ) N002 ( 2, 2) [000030] ------------ * RETURN ref $184 N001 ( 1, 1) [000029] ------------ \--* CNS_INT ref null $VN.Null ------------ BB03 [018..02D) (return), preds={BB01} succs={} ***** BB03 STMT00003 ( 0x018[E-] ... 0x021 ) N008 ( 24, 15) [000020] -ACXG---R--- * ASG int $2c0 N007 ( 3, 2) [000019] D------N---- +--* LCL_VAR int V03 loc1 d:1 $2c0 N006 ( 20, 12) [000018] --CXG------- \--* CALL int System.Runtime.RuntimeImports.RhGetModuleFileName $2c0 N004 ( 3, 2) CSE #01 (use)[000015] *--XG------- arg0 in rcx +--* IND long <l:$201, c:$202> N003 ( 1, 1) [000014] ------------ | \--* LCL_VAR byref V01 arg1 u:1 (last use) $c0 N005 ( 3, 3) [000017] ------------ arg1 in rdx \--* LCL_VAR_ADDR long V02 loc0 $88 ***** BB03 STMT00004 ( 0x022[E-] ... 0x02A ) N009 ( 25, 16) [000026] -ACXG---R--- * ASG ref $181 N008 ( 3, 2) [000025] D------N---- +--* LCL_VAR ref V04 loc2 d:1 $181 N007 ( 21, 13) [000024] --CXG------- \--* CALL ref System.String..ctor $181 N004 ( 3, 2) [000021] ----G------- arg0 in rcx +--* LCL_VAR long (AX) V02 loc0 $141 N005 ( 3, 2) [000023] ------------ arg2 in r8 +--* LCL_VAR int V03 loc1 u:1 (last use) $2c0 N006 ( 1, 1) [000022] ------------ arg1 in rdx \--* CNS_INT int 0 $40 ***** BB03 STMT00005 ( 0x02B[E-] ... 0x02C ) N002 ( 4, 3) [000028] ------------ * RETURN ref $183 N001 ( 3, 2) [000027] ------------ \--* LCL_VAR ref V04 loc2 u:1 (last use) $181 ------------------------------------------------------------------------------------------------------------------- Aggressive CSE Promotion cutoff is 200.000000 Moderate CSE Promotion cutoff is 100.000000 enregCount is 6 Framesize estimate is 0x0008 We have a small frame Sorted CSE candidates: CSE #01, {$140, $1c0} useCnt=1: [def=100.000000, use=50.000000, cost= 3 ] :: N002 ( 3, 2) CSE #01 (def)[000006] *--XG------- * IND long <l:$201, c:$200> Considering CSE #01 {$140, $1c0} [def=100.000000, use=50.000000, cost= 3 ] CSE Expression : N002 ( 3, 2) CSE #01 (def)[000006] *--XG------- * IND long <l:$201, c:$200> N001 ( 1, 1) [000005] ------------ \--* LCL_VAR byref V01 arg1 u:1 $c0 Aggressive CSE Promotion (250.000000 >= 200.000000) cseRefCnt=250.000000, aggressiveRefCnt=200.000000, moderateRefCnt=100.000000 defCnt=100.000000, useCnt=50.000000, cost=3, size=2 def_cost=1, use_cost=1, extra_no_cost=2, extra_yes_cost=0 CSE cost savings check (152.000000 >= 150.000000) passes Promoting CSE: lvaGrabTemp returning 8 (V08 rat0) (a long lifetime temp) called for CSE - aggressive. CSE #01 is single-def, so associated CSE temp V08 will be in SSA New refCnts for V08: refCnt = 2, refCntWtd = 2 New refCnts for V08: refCnt = 3, refCntWtd = 2.50 CSE #01 def at [000006] replaced in BB01 with def of V08 optValnumCSE morphed tree: N008 ( 10, 7) [000039] -A-XG---R--- * ASG long <l:$201, c:$200> N007 ( 1, 1) [000038] D------N---- +--* LCL_VAR long V06 tmp1 d:1 <l:$140, c:$83> N006 ( 10, 7) [000052] -A-XG------- \--* COMMA long <l:$201, c:$200> N004 ( 7, 5) [000050] -A-XG---R--- +--* ASG long $VN.Void N003 ( 3, 2) [000049] D------N---- | +--* LCL_VAR long V08 cse0 d:1 <l:$201, c:$200> N002 ( 3, 2) [000006] *--XG------- | \--* IND long <l:$201, c:$200> N001 ( 1, 1) [000005] ------------ | \--* LCL_VAR byref V01 arg1 u:1 $c0 N005 ( 3, 2) [000051] ------------ \--* LCL_VAR long V08 cse0 u:1 <l:$201, c:$200> Working on the replacement of the CSE #01 use at [000015] in BB03 ReMorphing args for 18.CALL: argSlots=2, preallocatedArgCount=4, nextSlotNum=4, nextSlotByteOffset=32, outgoingArgSpaceSize=32 ArgTable for 18.CALL after fgMorphArgs: fgArgTabEntry[arg 0 53.LCL_VAR long (By ref), 1 reg: rcx, byteAlignment=8, lateArgInx=0, processed] fgArgTabEntry[arg 1 17.LCL_VAR_ADDR long (By ref), 1 reg: rdx, byteAlignment=8, lateArgInx=1, processed] optValnumCSE morphed tree: N007 ( 24, 15) [000020] -ACXG---R--- * ASG int $2c0 N006 ( 3, 2) [000019] D------N---- +--* LCL_VAR int V03 loc1 d:1 $2c0 N005 ( 20, 12) [000018] --CXG------- \--* CALL int System.Runtime.RuntimeImports.RhGetModuleFileName $2c0 N003 ( 3, 2) [000053] ------------ arg0 in rcx +--* LCL_VAR long V08 cse0 u:1 <l:$140, c:$83> N004 ( 3, 3) [000017] ------------ arg1 in rdx \--* LCL_VAR_ADDR long V02 loc0 $88 *************** Finishing PHASE Optimize Valnum CSEs *************** Starting PHASE Assertion prop *************** In optAssertionPropMain() Blocks/Trees at start of phase ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..016)-> BB03 ( cond ) i hascall gcsafe BB02 [0001] 1 BB01 0.50 [016..018) (return) i gcsafe BB03 [0002] 1 BB01 0.50 [018..02D) (return) i hascall gcsafe newobj ----------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [000..016) -> BB03 (cond), preds={} succs={BB02,BB03} ***** BB01 STMT00000 ( 0x000[E-] ... 0x007 ) N006 ( 19, 10) [000004] -ACXG---R--- * ASG long $VN.Void N005 ( 3, 2) [000003] *--X---N---- +--* IND long $82 N004 ( 1, 1) [000000] ------------ | \--* LCL_VAR byref V01 arg1 u:1 $c0 N003 ( 15, 7) [000002] --CXG------- \--* CALL long System.Runtime.RuntimeImports.RhGetOSModuleFromPointer $82 N002 ( 1, 1) [000001] ------------ arg0 in rcx \--* LCL_VAR long V00 arg0 u:1 (last use) $80 ***** BB01 STMT00007 ( 0x008[E-] ... ??? ) N008 ( 10, 7) [000039] -A-XG---R--- * ASG long <l:$201, c:$200> N007 ( 1, 1) [000038] D------N---- +--* LCL_VAR long V06 tmp1 d:1 <l:$140, c:$83> N006 ( 10, 7) [000052] -A-XG------- \--* COMMA long <l:$201, c:$200> N004 ( 7, 5) [000050] -A-XG---R--- +--* ASG long $VN.Void N003 ( 3, 2) [000049] D------N---- | +--* LCL_VAR long V08 cse0 d:1 <l:$201, c:$200> N002 ( 3, 2) [000006] *--XG------- | \--* IND long <l:$201, c:$200> N001 ( 1, 1) [000005] ------------ | \--* LCL_VAR byref V01 arg1 u:1 $c0 N005 ( 3, 2) [000051] ------------ \--* LCL_VAR long V08 cse0 u:1 <l:$201, c:$200> ***** BB01 STMT00002 ( 0x008[E-] ... ??? ) N004 ( 5, 5) [000013] ----G------- * JTRUE void N003 ( 3, 3) [000037] J---G--N---- \--* NE int <l:$281, c:$280> N001 ( 1, 1) [000033] ------------ +--* LCL_VAR long V06 tmp1 u:1 (last use) <l:$140, c:$83> N002 ( 1, 1) [000036] ------------ \--* CNS_INT long 0 $240 ------------ BB02 [016..018) (return), preds={BB01} succs={} ***** BB02 STMT00006 ( 0x016[E-] ... 0x017 ) N002 ( 2, 2) [000030] ------------ * RETURN ref $184 N001 ( 1, 1) [000029] ------------ \--* CNS_INT ref null $VN.Null ------------ BB03 [018..02D) (return), preds={BB01} succs={} ***** BB03 STMT00003 ( 0x018[E-] ... 0x021 ) N007 ( 24, 15) [000020] -ACXG---R--- * ASG int $2c0 N006 ( 3, 2) [000019] D------N---- +--* LCL_VAR int V03 loc1 d:1 $2c0 N005 ( 20, 12) [000018] --CXG------- \--* CALL int System.Runtime.RuntimeImports.RhGetModuleFileName $2c0 N003 ( 3, 2) [000053] ------------ arg0 in rcx +--* LCL_VAR long V08 cse0 u:1 <l:$140, c:$83> N004 ( 3, 3) [000017] ------------ arg1 in rdx \--* LCL_VAR_ADDR long V02 loc0 $88 ***** BB03 STMT00004 ( 0x022[E-] ... 0x02A ) N009 ( 25, 16) [000026] -ACXG---R--- * ASG ref $181 N008 ( 3, 2) [000025] D------N---- +--* LCL_VAR ref V04 loc2 d:1 $181 N007 ( 21, 13) [000024] --CXG------- \--* CALL ref System.String..ctor $181 N004 ( 3, 2) [000021] ----G------- arg0 in rcx +--* LCL_VAR long (AX) V02 loc0 $141 N005 ( 3, 2) [000023] ------------ arg2 in r8 +--* LCL_VAR int V03 loc1 u:1 (last use) $2c0 N006 ( 1, 1) [000022] ------------ arg1 in rdx \--* CNS_INT int 0 $40 ***** BB03 STMT00005 ( 0x02B[E-] ... 0x02C ) N002 ( 4, 3) [000028] ------------ * RETURN ref $183 N001 ( 3, 2) [000027] ------------ \--* LCL_VAR ref V04 loc2 u:1 (last use) $181 ------------------------------------------------------------------------------------------------------------------- GenTreeNode creates assertion: N006 ( 19, 10) [000004] -ACXG---R--- * ASG long $VN.Void In BB01 New Global Constant Assertion: ($c0,$0) Value_Number {InitVal($41)} is not 0, index = #01 GenTreeNode creates assertion: N004 ( 5, 5) [000013] ----G------- * JTRUE void In BB01 New Global Constant Assertion: ($83,$240) V06.01 != 0, index = #02 GenTreeNode creates assertion: N004 ( 5, 5) [000013] ----G------- * JTRUE void In BB01 New Global Constant Assertion: ($83,$240) V06.01 == 0, index = #03 BB01 valueGen = #01 #03 => BB03 valueGen = #01 #02 BB02 valueGen = #NA BB03 valueGen = #NA BB01: in = #NA out = #01 #03 BB03 = #01 #02 BB02: in = #01 #03 out = #01 #03 BB03: in = #01 #02 out = #01 #02 Propagating #NA for BB01, stmt STMT00000, tree [000043], 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 [000000], tree -> #NA Propagating #NA for BB01, stmt STMT00000, tree [000003], tree -> #NA Propagating #NA for BB01, stmt STMT00000, tree [000004], tree -> #01 Propagating #01 for BB01, stmt STMT00007, tree [000005], tree -> #NA Propagating #01 for BB01, stmt STMT00007, tree [000006], tree -> #01 VN based non-null prop in BB01: N002 ( 3, 2) [000006] *--XG------- * IND long <l:$201, c:$200> Propagating #01 for BB01, stmt STMT00007, tree [000049], tree -> #NA Propagating #01 for BB01, stmt STMT00007, tree [000050], tree -> #NA Propagating #01 for BB01, stmt STMT00007, tree [000051], tree -> #NA Propagating #01 for BB01, stmt STMT00007, tree [000052], tree -> #NA Propagating #01 for BB01, stmt STMT00007, tree [000038], tree -> #NA Propagating #01 for BB01, stmt STMT00007, tree [000039], tree -> #NA Re-morphing this stmt: STMT00007 ( 0x008[E-] ... ??? ) N008 ( 10, 7) [000039] -A-XG---R--- * ASG long <l:$201, c:$200> N007 ( 1, 1) [000038] D------N---- +--* LCL_VAR long V06 tmp1 d:1 <l:$140, c:$83> N006 ( 10, 7) [000052] -A-XG------- \--* COMMA long <l:$201, c:$200> N004 ( 7, 5) [000050] -A-XG---R--- +--* ASG long $VN.Void N003 ( 3, 2) [000049] D------N---- | +--* LCL_VAR long V08 cse0 d:1 <l:$201, c:$200> N002 ( 3, 2) [000006] *---GO------ | \--* IND long <l:$201, c:$200> N001 ( 1, 1) [000005] ------------ | \--* LCL_VAR byref V01 arg1 u:1 $c0 N005 ( 3, 2) [000051] ------------ \--* LCL_VAR long V08 cse0 u:1 <l:$201, c:$200> optAssertionPropMain morphed tree: N008 ( 10, 7) [000039] -A--GO--R--- * ASG long <l:$201, c:$200> N007 ( 1, 1) [000038] D------N---- +--* LCL_VAR long V06 tmp1 d:1 <l:$140, c:$83> N006 ( 10, 7) [000052] -A--GO------ \--* COMMA long <l:$201, c:$200> N004 ( 7, 5) [000050] -A--GO--R--- +--* ASG long $VN.Void N003 ( 3, 2) [000049] D------N---- | +--* LCL_VAR long V08 cse0 d:1 <l:$201, c:$200> N002 ( 3, 2) [000006] *---GO------ | \--* IND long <l:$201, c:$200> N001 ( 1, 1) [000005] ------------ | \--* LCL_VAR byref V01 arg1 u:1 $c0 N005 ( 3, 2) [000051] ------------ \--* LCL_VAR long V08 cse0 u:1 <l:$201, c:$200> Propagating #01 for BB01, stmt STMT00002, tree [000033], tree -> #NA Propagating #01 for BB01, stmt STMT00002, tree [000036], tree -> #NA Propagating #01 for BB01, stmt STMT00002, tree [000037], tree -> #NA Propagating #01 for BB01, stmt STMT00002, tree [000013], tree -> #02 Propagating #01 #03 for BB02, stmt STMT00006, tree [000029], tree -> #NA Propagating #01 #03 for BB02, stmt STMT00006, tree [000030], tree -> #NA Propagating #01 #02 for BB03, stmt STMT00003, tree [000044], tree -> #NA Propagating #01 #02 for BB03, stmt STMT00003, tree [000045], tree -> #NA Propagating #01 #02 for BB03, stmt STMT00003, tree [000053], tree -> #NA Propagating #01 #02 for BB03, stmt STMT00003, tree [000017], tree -> #NA Propagating #01 #02 for BB03, stmt STMT00003, tree [000018], tree -> #NA Propagating #01 #02 for BB03, stmt STMT00003, tree [000019], tree -> #NA Propagating #01 #02 for BB03, stmt STMT00003, tree [000020], tree -> #NA Propagating #01 #02 for BB03, stmt STMT00004, tree [000046], tree -> #NA Propagating #01 #02 for BB03, stmt STMT00004, tree [000048], tree -> #NA Propagating #01 #02 for BB03, stmt STMT00004, tree [000047], tree -> #NA Propagating #01 #02 for BB03, stmt STMT00004, tree [000021], tree -> #NA Propagating #01 #02 for BB03, stmt STMT00004, tree [000023], tree -> #NA Propagating #01 #02 for BB03, stmt STMT00004, tree [000022], tree -> #NA Propagating #01 #02 for BB03, stmt STMT00004, tree [000024], tree -> #NA Propagating #01 #02 for BB03, stmt STMT00004, tree [000025], tree -> #NA Propagating #01 #02 for BB03, stmt STMT00004, tree [000026], tree -> #NA Propagating #01 #02 for BB03, stmt STMT00005, tree [000027], tree -> #NA Propagating #01 #02 for BB03, stmt STMT00005, tree [000028], tree -> #NA *************** In fgDebugCheckBBlist *************** Finishing PHASE Assertion prop *************** Starting PHASE Optimize index checks *************** In OptimizeRangeChecks() Blocks/trees before phase ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..016)-> BB03 ( cond ) i hascall gcsafe BB02 [0001] 1 BB01 0.50 [016..018) (return) i gcsafe BB03 [0002] 1 BB01 0.50 [018..02D) (return) i hascall gcsafe newobj ----------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [000..016) -> BB03 (cond), preds={} succs={BB02,BB03} ***** BB01 STMT00000 ( 0x000[E-] ... 0x007 ) N006 ( 19, 10) [000004] -ACXG---R--- * ASG long $VN.Void N005 ( 3, 2) [000003] *--X---N---- +--* IND long $82 N004 ( 1, 1) [000000] ------------ | \--* LCL_VAR byref V01 arg1 u:1 $c0 N003 ( 15, 7) [000002] --CXG------- \--* CALL long System.Runtime.RuntimeImports.RhGetOSModuleFromPointer $82 N002 ( 1, 1) [000001] ------------ arg0 in rcx \--* LCL_VAR long V00 arg0 u:1 (last use) $80 ***** BB01 STMT00007 ( 0x008[E-] ... ??? ) N008 ( 10, 7) [000039] -A--GO--R--- * ASG long <l:$201, c:$200> N007 ( 1, 1) [000038] D------N---- +--* LCL_VAR long V06 tmp1 d:1 <l:$140, c:$83> N006 ( 10, 7) [000052] -A--GO------ \--* COMMA long <l:$201, c:$200> N004 ( 7, 5) [000050] -A--GO--R--- +--* ASG long $VN.Void N003 ( 3, 2) [000049] D------N---- | +--* LCL_VAR long V08 cse0 d:1 <l:$201, c:$200> N002 ( 3, 2) [000006] *---GO------ | \--* IND long <l:$201, c:$200> N001 ( 1, 1) [000005] ------------ | \--* LCL_VAR byref V01 arg1 u:1 $c0 N005 ( 3, 2) [000051] ------------ \--* LCL_VAR long V08 cse0 u:1 <l:$201, c:$200> ***** BB01 STMT00002 ( 0x008[E-] ... ??? ) N004 ( 5, 5) [000013] ----G------- * JTRUE void N003 ( 3, 3) [000037] J---G--N---- \--* NE int <l:$281, c:$280> N001 ( 1, 1) [000033] ------------ +--* LCL_VAR long V06 tmp1 u:1 (last use) <l:$140, c:$83> N002 ( 1, 1) [000036] ------------ \--* CNS_INT long 0 $240 ------------ BB02 [016..018) (return), preds={BB01} succs={} ***** BB02 STMT00006 ( 0x016[E-] ... 0x017 ) N002 ( 2, 2) [000030] ------------ * RETURN ref $184 N001 ( 1, 1) [000029] ------------ \--* CNS_INT ref null $VN.Null ------------ BB03 [018..02D) (return), preds={BB01} succs={} ***** BB03 STMT00003 ( 0x018[E-] ... 0x021 ) N007 ( 24, 15) [000020] -ACXG---R--- * ASG int $2c0 N006 ( 3, 2) [000019] D------N---- +--* LCL_VAR int V03 loc1 d:1 $2c0 N005 ( 20, 12) [000018] --CXG------- \--* CALL int System.Runtime.RuntimeImports.RhGetModuleFileName $2c0 N003 ( 3, 2) [000053] ------------ arg0 in rcx +--* LCL_VAR long V08 cse0 u:1 <l:$140, c:$83> N004 ( 3, 3) [000017] ------------ arg1 in rdx \--* LCL_VAR_ADDR long V02 loc0 $88 ***** BB03 STMT00004 ( 0x022[E-] ... 0x02A ) N009 ( 25, 16) [000026] -ACXG---R--- * ASG ref $181 N008 ( 3, 2) [000025] D------N---- +--* LCL_VAR ref V04 loc2 d:1 $181 N007 ( 21, 13) [000024] --CXG------- \--* CALL ref System.String..ctor $181 N004 ( 3, 2) [000021] ----G------- arg0 in rcx +--* LCL_VAR long (AX) V02 loc0 $141 N005 ( 3, 2) [000023] ------------ arg2 in r8 +--* LCL_VAR int V03 loc1 u:1 (last use) $2c0 N006 ( 1, 1) [000022] ------------ arg1 in rdx \--* CNS_INT int 0 $40 ***** BB03 STMT00005 ( 0x02B[E-] ... 0x02C ) N002 ( 4, 3) [000028] ------------ * RETURN ref $183 N001 ( 3, 2) [000027] ------------ \--* LCL_VAR ref V04 loc2 u:1 (last use) $181 ------------------------------------------------------------------------------------------------------------------- *************** Finishing PHASE Optimize index checks *************** Starting PHASE Insert GC Polls *************** Finishing PHASE Insert GC Polls [no changes] *************** Starting PHASE Determine first cold block *************** In fgDetermineFirstColdBlock() No procedure splitting will be done for this method *************** Finishing PHASE Determine first cold block Trees before Rationalize IR ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..016)-> BB03 ( cond ) i hascall gcsafe BB02 [0001] 1 BB01 0.50 [016..018) (return) i gcsafe BB03 [0002] 1 BB01 0.50 [018..02D) (return) i hascall gcsafe newobj ----------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [000..016) -> BB03 (cond), preds={} succs={BB02,BB03} ***** BB01 STMT00000 ( 0x000[E-] ... 0x007 ) N006 ( 19, 10) [000004] -ACXG---R--- * ASG long $VN.Void N005 ( 3, 2) [000003] *--X---N---- +--* IND long $82 N004 ( 1, 1) [000000] ------------ | \--* LCL_VAR byref V01 arg1 u:1 $c0 N003 ( 15, 7) [000002] --CXG------- \--* CALL long System.Runtime.RuntimeImports.RhGetOSModuleFromPointer $82 N002 ( 1, 1) [000001] ------------ arg0 in rcx \--* LCL_VAR long V00 arg0 u:1 (last use) $80 ***** BB01 STMT00007 ( 0x008[E-] ... ??? ) N008 ( 10, 7) [000039] -A--GO--R--- * ASG long <l:$201, c:$200> N007 ( 1, 1) [000038] D------N---- +--* LCL_VAR long V06 tmp1 d:1 <l:$140, c:$83> N006 ( 10, 7) [000052] -A--GO------ \--* COMMA long <l:$201, c:$200> N004 ( 7, 5) [000050] -A--GO--R--- +--* ASG long $VN.Void N003 ( 3, 2) [000049] D------N---- | +--* LCL_VAR long V08 cse0 d:1 <l:$201, c:$200> N002 ( 3, 2) [000006] *---GO------ | \--* IND long <l:$201, c:$200> N001 ( 1, 1) [000005] ------------ | \--* LCL_VAR byref V01 arg1 u:1 $c0 N005 ( 3, 2) [000051] ------------ \--* LCL_VAR long V08 cse0 u:1 <l:$201, c:$200> ***** BB01 STMT00002 ( 0x008[E-] ... ??? ) N004 ( 5, 5) [000013] ----G------- * JTRUE void N003 ( 3, 3) [000037] J---G--N---- \--* NE int <l:$281, c:$280> N001 ( 1, 1) [000033] ------------ +--* LCL_VAR long V06 tmp1 u:1 (last use) <l:$140, c:$83> N002 ( 1, 1) [000036] ------------ \--* CNS_INT long 0 $240 ------------ BB02 [016..018) (return), preds={BB01} succs={} ***** BB02 STMT00006 ( 0x016[E-] ... 0x017 ) N002 ( 2, 2) [000030] ------------ * RETURN ref $184 N001 ( 1, 1) [000029] ------------ \--* CNS_INT ref null $VN.Null ------------ BB03 [018..02D) (return), preds={BB01} succs={} ***** BB03 STMT00003 ( 0x018[E-] ... 0x021 ) N007 ( 24, 15) [000020] -ACXG---R--- * ASG int $2c0 N006 ( 3, 2) [000019] D------N---- +--* LCL_VAR int V03 loc1 d:1 $2c0 N005 ( 20, 12) [000018] --CXG------- \--* CALL int System.Runtime.RuntimeImports.RhGetModuleFileName $2c0 N003 ( 3, 2) [000053] ------------ arg0 in rcx +--* LCL_VAR long V08 cse0 u:1 <l:$140, c:$83> N004 ( 3, 3) [000017] ------------ arg1 in rdx \--* LCL_VAR_ADDR long V02 loc0 $88 ***** BB03 STMT00004 ( 0x022[E-] ... 0x02A ) N009 ( 25, 16) [000026] -ACXG---R--- * ASG ref $181 N008 ( 3, 2) [000025] D------N---- +--* LCL_VAR ref V04 loc2 d:1 $181 N007 ( 21, 13) [000024] --CXG------- \--* CALL ref System.String..ctor $181 N004 ( 3, 2) [000021] ----G------- arg0 in rcx +--* LCL_VAR long (AX) V02 loc0 $141 N005 ( 3, 2) [000023] ------------ arg2 in r8 +--* LCL_VAR int V03 loc1 u:1 (last use) $2c0 N006 ( 1, 1) [000022] ------------ arg1 in rdx \--* CNS_INT int 0 $40 ***** BB03 STMT00005 ( 0x02B[E-] ... 0x02C ) N002 ( 4, 3) [000028] ------------ * RETURN ref $183 N001 ( 3, 2) [000027] ------------ \--* LCL_VAR ref V04 loc2 u:1 (last use) $181 ------------------------------------------------------------------------------------------------------------------- *************** Starting PHASE Rationalize IR rewriting asg(LCL_VAR, X) to STORE_LCL_VAR(X) N004 ( 7, 5) [000050] DA--GO------ * STORE_LCL_VAR long V08 cse0 d:1 rewriting asg(LCL_VAR, X) to STORE_LCL_VAR(X) N008 ( 10, 7) [000039] DA--GO------ * STORE_LCL_VAR long V06 tmp1 d:1 rewriting asg(LCL_VAR, X) to STORE_LCL_VAR(X) N007 ( 24, 15) [000020] DACXG------- * STORE_LCL_VAR int V03 loc1 d:1 rewriting asg(LCL_VAR, X) to STORE_LCL_VAR(X) N009 ( 25, 16) [000026] DACXG------- * STORE_LCL_VAR ref V04 loc2 d:1 *************** Finishing PHASE Rationalize IR Trees after Rationalize IR ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..016)-> BB03 ( cond ) i hascall gcsafe LIR BB02 [0001] 1 BB01 0.50 [016..018) (return) i gcsafe LIR BB03 [0002] 1 BB01 0.50 [018..02D) (return) i hascall gcsafe newobj LIR ----------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [000..016) -> BB03 (cond), preds={} succs={BB02,BB03} [000054] ------------ IL_OFFSET void INLRT @ 0x000[E-] N002 ( 1, 1) [000001] ------------ t1 = LCL_VAR long V00 arg0 u:1 (last use) $80 /--* t1 long arg0 in rcx N003 ( 15, 7) [000002] --CXG------- t2 = * CALL long System.Runtime.RuntimeImports.RhGetOSModuleFromPointer $82 N004 ( 1, 1) [000000] ------------ t0 = LCL_VAR byref V01 arg1 u:1 $c0 /--* t0 byref +--* t2 long [000055] -ACXG------- * STOREIND long [000056] ------------ IL_OFFSET void INLRT @ 0x008[E-] N001 ( 1, 1) [000005] ------------ t5 = LCL_VAR byref V01 arg1 u:1 $c0 /--* t5 byref N002 ( 3, 2) [000006] *---GO------ t6 = * IND long <l:$201, c:$200> /--* t6 long N004 ( 7, 5) [000050] DA--GO------ * STORE_LCL_VAR long V08 cse0 d:1 N005 ( 3, 2) [000051] ------------ t51 = LCL_VAR long V08 cse0 u:1 <l:$201, c:$200> /--* t51 long N008 ( 10, 7) [000039] DA--GO------ * STORE_LCL_VAR long V06 tmp1 d:1 [000057] ------------ IL_OFFSET void INLRT @ 0x008[E-] N001 ( 1, 1) [000033] ------------ t33 = LCL_VAR long V06 tmp1 u:1 (last use) <l:$140, c:$83> N002 ( 1, 1) [000036] ------------ t36 = CNS_INT long 0 $240 /--* t33 long +--* t36 long N003 ( 3, 3) [000037] J---G--N---- t37 = * NE int <l:$281, c:$280> /--* t37 int N004 ( 5, 5) [000013] ----G------- * JTRUE void ------------ BB02 [016..018) (return), preds={BB01} succs={} [000058] ------------ IL_OFFSET void INLRT @ 0x016[E-] N001 ( 1, 1) [000029] ------------ t29 = CNS_INT ref null $VN.Null /--* t29 ref N002 ( 2, 2) [000030] ------------ * RETURN ref $184 ------------ BB03 [018..02D) (return), preds={BB01} succs={} [000059] ------------ IL_OFFSET void INLRT @ 0x018[E-] N003 ( 3, 2) [000053] ------------ t53 = LCL_VAR long V08 cse0 u:1 <l:$140, c:$83> N004 ( 3, 3) [000017] ------------ t17 = LCL_VAR_ADDR long V02 loc0 $88 /--* t53 long arg0 in rcx +--* t17 long arg1 in rdx N005 ( 20, 12) [000018] --CXG------- t18 = * CALL int System.Runtime.RuntimeImports.RhGetModuleFileName $2c0 /--* t18 int N007 ( 24, 15) [000020] DA-XG------- * STORE_LCL_VAR int V03 loc1 d:1 [000060] ------------ IL_OFFSET void INLRT @ 0x022[E-] N004 ( 3, 2) [000021] ------------ t21 = LCL_VAR long (AX) V02 loc0 $141 N005 ( 3, 2) [000023] ------------ t23 = LCL_VAR int V03 loc1 u:1 (last use) $2c0 N006 ( 1, 1) [000022] ------------ t22 = CNS_INT int 0 $40 /--* t21 long arg0 in rcx +--* t23 int arg2 in r8 +--* t22 int arg1 in rdx N007 ( 21, 13) [000024] --CXG------- t24 = * CALL ref System.String..ctor $181 /--* t24 ref N009 ( 25, 16) [000026] DA-XG------- * STORE_LCL_VAR ref V04 loc2 d:1 [000061] ------------ IL_OFFSET void INLRT @ 0x02B[E-] N001 ( 3, 2) [000027] ------------ t27 = LCL_VAR ref V04 loc2 u:1 (last use) $181 /--* t27 ref N002 ( 4, 3) [000028] ------------ * RETURN ref $183 ------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist *************** Starting PHASE Do 'simple' lowering Bumping outgoingArgSpaceSize from 0 to 32 for call [000002] outgoingArgSpaceSize 32 sufficient for call [000018], which needs 32 outgoingArgSpaceSize 32 sufficient for call [000024], which needs 32 *************** Finishing PHASE Do 'simple' lowering *************** In fgDebugCheckBBlist Trees before Lowering nodeinfo ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..016)-> BB03 ( cond ) i hascall gcsafe LIR BB02 [0001] 1 BB01 0.50 [016..018) (return) i gcsafe LIR BB03 [0002] 1 BB01 0.50 [018..02D) (return) i hascall gcsafe newobj LIR ----------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [000..016) -> BB03 (cond), preds={} succs={BB02,BB03} [000054] ------------ IL_OFFSET void INLRT @ 0x000[E-] N002 ( 1, 1) [000001] ------------ t1 = LCL_VAR long V00 arg0 u:1 (last use) $80 /--* t1 long arg0 in rcx N003 ( 15, 7) [000002] --CXG------- t2 = * CALL long System.Runtime.RuntimeImports.RhGetOSModuleFromPointer $82 N004 ( 1, 1) [000000] ------------ t0 = LCL_VAR byref V01 arg1 u:1 $c0 /--* t0 byref +--* t2 long [000055] -ACXG------- * STOREIND long [000056] ------------ IL_OFFSET void INLRT @ 0x008[E-] N001 ( 1, 1) [000005] ------------ t5 = LCL_VAR byref V01 arg1 u:1 $c0 /--* t5 byref N002 ( 3, 2) [000006] *---GO------ t6 = * IND long <l:$201, c:$200> /--* t6 long N004 ( 7, 5) [000050] DA--GO------ * STORE_LCL_VAR long V08 cse0 d:1 N005 ( 3, 2) [000051] ------------ t51 = LCL_VAR long V08 cse0 u:1 <l:$201, c:$200> /--* t51 long N008 ( 10, 7) [000039] DA--GO------ * STORE_LCL_VAR long V06 tmp1 d:1 [000057] ------------ IL_OFFSET void INLRT @ 0x008[E-] N001 ( 1, 1) [000033] ------------ t33 = LCL_VAR long V06 tmp1 u:1 (last use) <l:$140, c:$83> N002 ( 1, 1) [000036] ------------ t36 = CNS_INT long 0 $240 /--* t33 long +--* t36 long N003 ( 3, 3) [000037] J---G--N---- t37 = * NE int <l:$281, c:$280> /--* t37 int N004 ( 5, 5) [000013] ----G------- * JTRUE void ------------ BB02 [016..018) (return), preds={BB01} succs={} [000058] ------------ IL_OFFSET void INLRT @ 0x016[E-] N001 ( 1, 1) [000029] ------------ t29 = CNS_INT ref null $VN.Null /--* t29 ref N002 ( 2, 2) [000030] ------------ * RETURN ref $184 ------------ BB03 [018..02D) (return), preds={BB01} succs={} [000059] ------------ IL_OFFSET void INLRT @ 0x018[E-] N003 ( 3, 2) [000053] ------------ t53 = LCL_VAR long V08 cse0 u:1 <l:$140, c:$83> N004 ( 3, 3) [000017] ------------ t17 = LCL_VAR_ADDR long V02 loc0 $88 /--* t53 long arg0 in rcx +--* t17 long arg1 in rdx N005 ( 20, 12) [000018] --CXG------- t18 = * CALL int System.Runtime.RuntimeImports.RhGetModuleFileName $2c0 /--* t18 int N007 ( 24, 15) [000020] DA-XG------- * STORE_LCL_VAR int V03 loc1 d:1 [000060] ------------ IL_OFFSET void INLRT @ 0x022[E-] N004 ( 3, 2) [000021] ------------ t21 = LCL_VAR long (AX) V02 loc0 $141 N005 ( 3, 2) [000023] ------------ t23 = LCL_VAR int V03 loc1 u:1 (last use) $2c0 N006 ( 1, 1) [000022] ------------ t22 = CNS_INT int 0 $40 /--* t21 long arg0 in rcx +--* t23 int arg2 in r8 +--* t22 int arg1 in rdx N007 ( 21, 13) [000024] --CXG------- t24 = * CALL ref System.String..ctor $181 /--* t24 ref N009 ( 25, 16) [000026] DA-XG------- * STORE_LCL_VAR ref V04 loc2 d:1 [000061] ------------ IL_OFFSET void INLRT @ 0x02B[E-] N001 ( 3, 2) [000027] ------------ t27 = LCL_VAR ref V04 loc2 u:1 (last use) $181 /--* t27 ref N002 ( 4, 3) [000028] ------------ * RETURN ref $183 ------------------------------------------------------------------------------------------------------------------- *************** Starting PHASE Lowering nodeinfo lowering call (before): N002 ( 1, 1) [000001] ------------ t1 = LCL_VAR long V00 arg0 u:1 (last use) $80 /--* t1 long arg0 in rcx N003 ( 15, 7) [000002] --CXG------- t2 = * CALL long System.Runtime.RuntimeImports.RhGetOSModuleFromPointer $82 objp: ====== args: ====== lowering arg : N001 ( 0, 0) [000043] ----------L- * ARGPLACE long $80 late: ====== lowering arg : N002 ( 1, 1) [000001] ------------ * LCL_VAR long V00 arg0 u:1 (last use) $80 new node is : [000062] ------------ * PUTARG_REG long REG rcx lowering call (after): N002 ( 1, 1) [000001] ------------ t1 = LCL_VAR long V00 arg0 u:1 (last use) $80 /--* t1 long [000062] ------------ t62 = * PUTARG_REG long REG rcx /--* t62 long arg0 in rcx N003 ( 15, 7) [000002] --CXG------- t2 = * CALL long System.Runtime.RuntimeImports.RhGetOSModuleFromPointer $82 Lower of StoreInd didn't mark the node as self contained for reason: oper is not supported N002 ( 1, 1) [000001] ------------ t1 = LCL_VAR long V00 arg0 u:1 (last use) $80 /--* t1 long [000062] ------------ t62 = * PUTARG_REG long REG rcx /--* t62 long arg0 in rcx N003 ( 15, 7) [000002] --CXG------- t2 = * CALL long System.Runtime.RuntimeImports.RhGetOSModuleFromPointer $82 N004 ( 1, 1) [000000] ------------ t0 = LCL_VAR byref V01 arg1 u:1 $c0 /--* t0 byref +--* t2 long [000055] -ACXG------- * STOREIND long lowering store lcl var/field (before): N001 ( 1, 1) [000005] ------------ t5 = LCL_VAR byref V01 arg1 u:1 $c0 /--* t5 byref N002 ( 3, 2) [000006] *---GO------ t6 = * IND long <l:$201, c:$200> /--* t6 long N004 ( 7, 5) [000050] DA--GO------ * STORE_LCL_VAR long V08 cse0 d:1 lowering store lcl var/field (after): N001 ( 1, 1) [000005] ------------ t5 = LCL_VAR byref V01 arg1 u:1 $c0 /--* t5 byref N002 ( 3, 2) [000006] *---GO------ t6 = * IND long <l:$201, c:$200> /--* t6 long N004 ( 7, 5) [000050] DA--GO------ * STORE_LCL_VAR long V08 cse0 d:1 lowering store lcl var/field (before): N005 ( 3, 2) [000051] ------------ t51 = LCL_VAR long V08 cse0 u:1 <l:$201, c:$200> /--* t51 long N008 ( 10, 7) [000039] DA--GO------ * STORE_LCL_VAR long V06 tmp1 d:1 lowering store lcl var/field (after): N005 ( 3, 2) [000051] ------------ t51 = LCL_VAR long V08 cse0 u:1 <l:$201, c:$200> /--* t51 long N008 ( 10, 7) [000039] DA--GO------ * STORE_LCL_VAR long V06 tmp1 d:1 lowering GT_RETURN N002 ( 2, 2) [000030] ------------ * RETURN ref $184 ============lowering call (before): N003 ( 3, 2) [000053] ------------ t53 = LCL_VAR long V08 cse0 u:1 <l:$140, c:$83> N004 ( 3, 3) [000017] ------------ t17 = LCL_VAR_ADDR long V02 loc0 $88 /--* t53 long arg0 in rcx +--* t17 long arg1 in rdx N005 ( 20, 12) [000018] --CXG------- t18 = * CALL int System.Runtime.RuntimeImports.RhGetModuleFileName $2c0 objp: ====== args: ====== lowering arg : N001 ( 0, 0) [000044] ----------L- * ARGPLACE long <l:$201, c:$202> lowering arg : N002 ( 0, 0) [000045] ----------L- * ARGPLACE long $88 late: ====== lowering arg : N003 ( 3, 2) [000053] ------------ * LCL_VAR long V08 cse0 u:1 <l:$140, c:$83> new node is : [000063] ------------ * PUTARG_REG long REG rcx lowering arg : N004 ( 3, 3) [000017] ------------ * LCL_VAR_ADDR long V02 loc0 $88 new node is : [000064] ------------ * PUTARG_REG long REG rdx lowering call (after): N003 ( 3, 2) [000053] ------------ t53 = LCL_VAR long V08 cse0 u:1 <l:$140, c:$83> /--* t53 long [000063] ------------ t63 = * PUTARG_REG long REG rcx N004 ( 3, 3) [000017] ------------ t17 = LCL_VAR_ADDR long V02 loc0 $88 /--* t17 long [000064] ------------ t64 = * PUTARG_REG long REG rdx /--* t63 long arg0 in rcx +--* t64 long arg1 in rdx N005 ( 20, 12) [000018] --CXG------- t18 = * CALL int System.Runtime.RuntimeImports.RhGetModuleFileName $2c0 lowering store lcl var/field (before): N003 ( 3, 2) [000053] ------------ t53 = LCL_VAR long V08 cse0 u:1 <l:$140, c:$83> /--* t53 long [000063] ------------ t63 = * PUTARG_REG long REG rcx N004 ( 3, 3) [000017] ------------ t17 = LCL_VAR_ADDR long V02 loc0 $88 /--* t17 long [000064] ------------ t64 = * PUTARG_REG long REG rdx /--* t63 long arg0 in rcx +--* t64 long arg1 in rdx N005 ( 20, 12) [000018] --CXG------- t18 = * CALL int System.Runtime.RuntimeImports.RhGetModuleFileName $2c0 /--* t18 int N007 ( 24, 15) [000020] DA-XG------- * STORE_LCL_VAR int V03 loc1 d:1 lowering store lcl var/field (after): N003 ( 3, 2) [000053] ------------ t53 = LCL_VAR long V08 cse0 u:1 <l:$140, c:$83> /--* t53 long [000063] ------------ t63 = * PUTARG_REG long REG rcx N004 ( 3, 3) [000017] ------------ t17 = LCL_VAR_ADDR long V02 loc0 $88 /--* t17 long [000064] ------------ t64 = * PUTARG_REG long REG rdx /--* t63 long arg0 in rcx +--* t64 long arg1 in rdx N005 ( 20, 12) [000018] --CXG------- t18 = * CALL int System.Runtime.RuntimeImports.RhGetModuleFileName $2c0 /--* t18 int N007 ( 24, 15) [000020] DA-XG------- * STORE_LCL_VAR int V03 loc1 d:1 lowering call (before): N004 ( 3, 2) [000021] ------------ t21 = LCL_VAR long (AX) V02 loc0 $141 N005 ( 3, 2) [000023] ------------ t23 = LCL_VAR int V03 loc1 u:1 (last use) $2c0 N006 ( 1, 1) [000022] ------------ t22 = CNS_INT int 0 $40 /--* t21 long arg0 in rcx +--* t23 int arg2 in r8 +--* t22 int arg1 in rdx N007 ( 21, 13) [000024] --CXG------- t24 = * CALL ref System.String..ctor $181 objp: ====== args: ====== lowering arg : N001 ( 0, 0) [000046] ----------L- * ARGPLACE long $141 lowering arg : N002 ( 0, 0) [000048] ----------L- * ARGPLACE int $40 lowering arg : N003 ( 0, 0) [000047] ----------L- * ARGPLACE int $2c0 late: ====== lowering arg : N004 ( 3, 2) [000021] ------------ * LCL_VAR long (AX) V02 loc0 $141 new node is : [000065] ------------ * PUTARG_REG long REG rcx lowering arg : N005 ( 3, 2) [000023] ------------ * LCL_VAR int V03 loc1 u:1 (last use) $2c0 new node is : [000066] ------------ * PUTARG_REG int REG r8 lowering arg : N006 ( 1, 1) [000022] ------------ * CNS_INT int 0 $40 new node is : [000067] ------------ * PUTARG_REG int REG rdx lowering call (after): N004 ( 3, 2) [000021] ------------ t21 = LCL_VAR long (AX) V02 loc0 $141 /--* t21 long [000065] ------------ t65 = * PUTARG_REG long REG rcx N005 ( 3, 2) [000023] ------------ t23 = LCL_VAR int V03 loc1 u:1 (last use) $2c0 /--* t23 int [000066] ------------ t66 = * PUTARG_REG int REG r8 N006 ( 1, 1) [000022] ------------ t22 = CNS_INT int 0 $40 /--* t22 int [000067] ------------ t67 = * PUTARG_REG int REG rdx /--* t65 long arg0 in rcx +--* t66 int arg2 in r8 +--* t67 int arg1 in rdx N007 ( 21, 13) [000024] --CXG------- t24 = * CALL ref System.String..ctor $181 lowering store lcl var/field (before): N004 ( 3, 2) [000021] ------------ t21 = LCL_VAR long (AX) V02 loc0 $141 /--* t21 long [000065] ------------ t65 = * PUTARG_REG long REG rcx N005 ( 3, 2) [000023] ------------ t23 = LCL_VAR int V03 loc1 u:1 (last use) $2c0 /--* t23 int [000066] ------------ t66 = * PUTARG_REG int REG r8 N006 ( 1, 1) [000022] ------------ t22 = CNS_INT int 0 $40 /--* t22 int [000067] ------------ t67 = * PUTARG_REG int REG rdx /--* t65 long arg0 in rcx +--* t66 int arg2 in r8 +--* t67 int arg1 in rdx N007 ( 21, 13) [000024] --CXG------- t24 = * CALL ref System.String..ctor $181 /--* t24 ref N009 ( 25, 16) [000026] DA-XG------- * STORE_LCL_VAR ref V04 loc2 d:1 lowering store lcl var/field (after): N004 ( 3, 2) [000021] ------------ t21 = LCL_VAR long (AX) V02 loc0 $141 /--* t21 long [000065] ------------ t65 = * PUTARG_REG long REG rcx N005 ( 3, 2) [000023] ------------ t23 = LCL_VAR int V03 loc1 u:1 (last use) $2c0 /--* t23 int [000066] ------------ t66 = * PUTARG_REG int REG r8 N006 ( 1, 1) [000022] ------------ t22 = CNS_INT int 0 $40 /--* t22 int [000067] ------------ t67 = * PUTARG_REG int REG rdx /--* t65 long arg0 in rcx +--* t66 int arg2 in r8 +--* t67 int arg1 in rdx N007 ( 21, 13) [000024] --CXG------- t24 = * CALL ref System.String..ctor $181 /--* t24 ref N009 ( 25, 16) [000026] DA-XG------- * STORE_LCL_VAR ref V04 loc2 d:1 lowering GT_RETURN N002 ( 4, 3) [000028] ------------ * RETURN ref $183 ============Lower has completed modifying nodes. ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..016)-> BB03 ( cond ) i hascall gcsafe LIR BB02 [0001] 1 BB01 0.50 [016..018) (return) i gcsafe LIR BB03 [0002] 1 BB01 0.50 [018..02D) (return) i hascall gcsafe newobj LIR ----------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [000..016) -> BB03 (cond), preds={} succs={BB02,BB03} [000054] ------------ IL_OFFSET void INLRT @ 0x000[E-] N002 ( 1, 1) [000001] ------------ t1 = LCL_VAR long V00 arg0 u:1 (last use) $80 /--* t1 long [000062] ------------ t62 = * PUTARG_REG long REG rcx /--* t62 long arg0 in rcx N003 ( 15, 7) [000002] --CXG------- t2 = * CALL long System.Runtime.RuntimeImports.RhGetOSModuleFromPointer $82 N004 ( 1, 1) [000000] ------------ t0 = LCL_VAR byref V01 arg1 u:1 $c0 /--* t0 byref +--* t2 long [000055] -ACXG------- * STOREIND long [000056] ------------ IL_OFFSET void INLRT @ 0x008[E-] N001 ( 1, 1) [000005] ------------ t5 = LCL_VAR byref V01 arg1 u:1 $c0 /--* t5 byref N002 ( 3, 2) [000006] *---GO------ t6 = * IND long <l:$201, c:$200> /--* t6 long N004 ( 7, 5) [000050] DA--GO------ * STORE_LCL_VAR long V08 cse0 d:1 N005 ( 3, 2) [000051] ------------ t51 = LCL_VAR long V08 cse0 u:1 <l:$201, c:$200> /--* t51 long N008 ( 10, 7) [000039] DA--GO------ * STORE_LCL_VAR long V06 tmp1 d:1 [000057] ------------ IL_OFFSET void INLRT @ 0x008[E-] N001 ( 1, 1) [000033] ------------ t33 = LCL_VAR long V06 tmp1 u:1 (last use) <l:$140, c:$83> N002 ( 1, 1) [000036] -c---------- t36 = CNS_INT long 0 $240 /--* t33 long +--* t36 long N003 ( 3, 3) [000037] J---G--N---- * NE void <l:$281, c:$280> N004 ( 5, 5) [000013] ----G------- * JTRUE void ------------ BB02 [016..018) (return), preds={BB01} succs={} [000058] ------------ IL_OFFSET void INLRT @ 0x016[E-] N001 ( 1, 1) [000029] ------------ t29 = CNS_INT ref null $VN.Null /--* t29 ref N002 ( 2, 2) [000030] ------------ * RETURN ref $184 ------------ BB03 [018..02D) (return), preds={BB01} succs={} [000059] ------------ IL_OFFSET void INLRT @ 0x018[E-] N003 ( 3, 2) [000053] ------------ t53 = LCL_VAR long V08 cse0 u:1 <l:$140, c:$83> /--* t53 long [000063] ------------ t63 = * PUTARG_REG long REG rcx N004 ( 3, 3) [000017] ------------ t17 = LCL_VAR_ADDR long V02 loc0 $88 /--* t17 long [000064] ------------ t64 = * PUTARG_REG long REG rdx /--* t63 long arg0 in rcx +--* t64 long arg1 in rdx N005 ( 20, 12) [000018] --CXG------- t18 = * CALL int System.Runtime.RuntimeImports.RhGetModuleFileName $2c0 /--* t18 int N007 ( 24, 15) [000020] DA-XG------- * STORE_LCL_VAR int V03 loc1 d:1 [000060] ------------ IL_OFFSET void INLRT @ 0x022[E-] N004 ( 3, 2) [000021] ------------ t21 = LCL_VAR long (AX) V02 loc0 $141 /--* t21 long [000065] ------------ t65 = * PUTARG_REG long REG rcx N005 ( 3, 2) [000023] ------------ t23 = LCL_VAR int V03 loc1 u:1 (last use) $2c0 /--* t23 int [000066] ------------ t66 = * PUTARG_REG int REG r8 N006 ( 1, 1) [000022] ------------ t22 = CNS_INT int 0 $40 /--* t22 int [000067] ------------ t67 = * PUTARG_REG int REG rdx /--* t65 long arg0 in rcx +--* t66 int arg2 in r8 +--* t67 int arg1 in rdx N007 ( 21, 13) [000024] --CXG------- t24 = * CALL ref System.String..ctor $181 /--* t24 ref N009 ( 25, 16) [000026] DA-XG------- * STORE_LCL_VAR ref V04 loc2 d:1 [000061] ------------ IL_OFFSET void INLRT @ 0x02B[E-] N001 ( 3, 2) [000027] ------------ t27 = LCL_VAR ref V04 loc2 u:1 (last use) $181 /--* t27 ref N002 ( 4, 3) [000028] ------------ * RETURN ref $183 ------------------------------------------------------------------------------------------------------------------- *** lvaComputeRefCounts *** *** lvaComputeRefCounts -- explicit counts *** New refCnts for V00: refCnt = 1, refCntWtd = 1 New refCnts for V01: refCnt = 1, refCntWtd = 1 New refCnts for V01: refCnt = 2, refCntWtd = 2 New refCnts for V08: refCnt = 1, refCntWtd = 1 New refCnts for V08: refCnt = 2, refCntWtd = 2 New refCnts for V06: refCnt = 1, refCntWtd = 2 New refCnts for V06: refCnt = 2, refCntWtd = 4 New refCnts for V08: refCnt = 3, refCntWtd = 2.50 New refCnts for V02: refCnt = 1, refCntWtd = 0.50 New refCnts for V03: refCnt = 1, refCntWtd = 0.50 New refCnts for V02: refCnt = 2, refCntWtd = 1 New refCnts for V03: refCnt = 2, refCntWtd = 1 New refCnts for V04: refCnt = 1, refCntWtd = 0.50 New refCnts for V04: refCnt = 2, refCntWtd = 1 *** lvaComputeRefCounts -- implicit counts *** New refCnts for V00: refCnt = 2, refCntWtd = 2 New refCnts for V00: refCnt = 3, refCntWtd = 3 New refCnts for V01: refCnt = 3, refCntWtd = 3 New refCnts for V01: refCnt = 4, refCntWtd = 4 *************** In fgLocalVarLiveness() ; Initial local variable assignments ; ; V00 arg0 long single-def ; V01 arg1 byref single-def ; V02 loc0 long do-not-enreg[X] addr-exposed ld-addr-op ; V03 loc1 int ; V04 loc2 ref class-hnd exact single-def ; V05 OutArgs lclBlk <32> "OutgoingArgSpace" ; V06 tmp1 long ld-addr-op "Inlining Arg" ; V07 tmp2 long ld-addr-op "Inlining Arg" ; V08 cse0 long "CSE - aggressive" In fgLocalVarLivenessInit Tracked variable (6 out of 9) table: V01 arg1 [ byref]: refCnt = 4, refCntWtd = 4 V00 arg0 [ long]: refCnt = 3, refCntWtd = 3 V06 tmp1 [ long]: refCnt = 2, refCntWtd = 4 V08 cse0 [ long]: refCnt = 3, refCntWtd = 2.50 V04 loc2 [ ref]: refCnt = 2, refCntWtd = 1 V03 loc1 [ int]: refCnt = 2, refCntWtd = 1 *************** In fgPerBlockLocalVarLiveness() BB01 USE(2)={V01 V00 } + ByrefExposed + GcHeap DEF(2)={ V06 V08} + ByrefExposed* + GcHeap* BB02 USE(0)={} DEF(0)={} BB03 USE(1)={V08 } + ByrefExposed + GcHeap DEF(2)={ V04 V03} + ByrefExposed* + GcHeap* ** Memory liveness computed, GcHeap states and ByrefExposed states match *************** In fgInterBlockLocalVarLiveness() BB liveness after fgLiveVarAnalysis(): BB01 IN (2)={V01 V00 } + ByrefExposed + GcHeap OUT(1)={ V08} + ByrefExposed + GcHeap BB02 IN (0)={} OUT(0)={} BB03 IN (1)={V08} + ByrefExposed + GcHeap OUT(0)={ } *************** In fgUpdateFlowGraph() Before updating the flow graph: ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..016)-> BB03 ( cond ) i hascall gcsafe LIR BB02 [0001] 1 BB01 0.50 [016..018) (return) i gcsafe LIR BB03 [0002] 1 BB01 0.50 [018..02D) (return) i hascall gcsafe newobj LIR ----------------------------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist *** lvaComputeRefCounts *** *** lvaComputeRefCounts -- explicit counts *** New refCnts for V00: refCnt = 1, refCntWtd = 1 New refCnts for V01: refCnt = 1, refCntWtd = 1 New refCnts for V01: refCnt = 2, refCntWtd = 2 New refCnts for V08: refCnt = 1, refCntWtd = 1 New refCnts for V08: refCnt = 2, refCntWtd = 2 New refCnts for V06: refCnt = 1, refCntWtd = 2 New refCnts for V06: refCnt = 2, refCntWtd = 4 New refCnts for V08: refCnt = 3, refCntWtd = 2.50 New refCnts for V02: refCnt = 1, refCntWtd = 0.50 New refCnts for V03: refCnt = 1, refCntWtd = 0.50 New refCnts for V02: refCnt = 2, refCntWtd = 1 New refCnts for V03: refCnt = 2, refCntWtd = 1 New refCnts for V04: refCnt = 1, refCntWtd = 0.50 New refCnts for V04: refCnt = 2, refCntWtd = 1 *** lvaComputeRefCounts -- implicit counts *** New refCnts for V00: refCnt = 2, refCntWtd = 2 New refCnts for V00: refCnt = 3, refCntWtd = 3 New refCnts for V01: refCnt = 3, refCntWtd = 3 New refCnts for V01: refCnt = 4, refCntWtd = 4 *************** Finishing PHASE Lowering nodeinfo Trees after Lowering nodeinfo ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..016)-> BB03 ( cond ) i hascall gcsafe LIR BB02 [0001] 1 BB01 0.50 [016..018) (return) i gcsafe LIR BB03 [0002] 1 BB01 0.50 [018..02D) (return) i hascall gcsafe newobj LIR ----------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [000..016) -> BB03 (cond), preds={} succs={BB02,BB03} [000054] ------------ IL_OFFSET void INLRT @ 0x000[E-] N002 ( 1, 1) [000001] ------------ t1 = LCL_VAR long V00 arg0 u:1 (last use) $80 /--* t1 long [000062] ------------ t62 = * PUTARG_REG long REG rcx /--* t62 long arg0 in rcx N003 ( 15, 7) [000002] --CXG------- t2 = * CALL long System.Runtime.RuntimeImports.RhGetOSModuleFromPointer $82 N004 ( 1, 1) [000000] ------------ t0 = LCL_VAR byref V01 arg1 u:1 $c0 /--* t0 byref +--* t2 long [000055] -ACXG------- * STOREIND long [000056] ------------ IL_OFFSET void INLRT @ 0x008[E-] N001 ( 1, 1) [000005] ------------ t5 = LCL_VAR byref V01 arg1 u:1 (last use) $c0 /--* t5 byref N002 ( 3, 2) [000006] *---GO------ t6 = * IND long <l:$201, c:$200> /--* t6 long N004 ( 7, 5) [000050] DA--GO------ * STORE_LCL_VAR long V08 cse0 d:1 N005 ( 3, 2) [000051] ------------ t51 = LCL_VAR long V08 cse0 u:1 <l:$201, c:$200> /--* t51 long N008 ( 10, 7) [000039] DA--GO------ * STORE_LCL_VAR long V06 tmp1 d:1 [000057] ------------ IL_OFFSET void INLRT @ 0x008[E-] N001 ( 1, 1) [000033] ------------ t33 = LCL_VAR long V06 tmp1 u:1 (last use) <l:$140, c:$83> N002 ( 1, 1) [000036] -c---------- t36 = CNS_INT long 0 $240 /--* t33 long +--* t36 long N003 ( 3, 3) [000037] J---G--N---- * NE void <l:$281, c:$280> N004 ( 5, 5) [000013] ----G------- * JTRUE void ------------ BB02 [016..018) (return), preds={BB01} succs={} [000058] ------------ IL_OFFSET void INLRT @ 0x016[E-] N001 ( 1, 1) [000029] ------------ t29 = CNS_INT ref null $VN.Null /--* t29 ref N002 ( 2, 2) [000030] ------------ * RETURN ref $184 ------------ BB03 [018..02D) (return), preds={BB01} succs={} [000059] ------------ IL_OFFSET void INLRT @ 0x018[E-] N003 ( 3, 2) [000053] ------------ t53 = LCL_VAR long V08 cse0 u:1 (last use) <l:$140, c:$83> /--* t53 long [000063] ------------ t63 = * PUTARG_REG long REG rcx N004 ( 3, 3) [000017] ------------ t17 = LCL_VAR_ADDR long V02 loc0 $88 /--* t17 long [000064] ------------ t64 = * PUTARG_REG long REG rdx /--* t63 long arg0 in rcx +--* t64 long arg1 in rdx N005 ( 20, 12) [000018] --CXG------- t18 = * CALL int System.Runtime.RuntimeImports.RhGetModuleFileName $2c0 /--* t18 int N007 ( 24, 15) [000020] DA-XG------- * STORE_LCL_VAR int V03 loc1 d:1 [000060] ------------ IL_OFFSET void INLRT @ 0x022[E-] N004 ( 3, 2) [000021] ------------ t21 = LCL_VAR long (AX) V02 loc0 $141 /--* t21 long [000065] ------------ t65 = * PUTARG_REG long REG rcx N005 ( 3, 2) [000023] ------------ t23 = LCL_VAR int V03 loc1 u:1 (last use) $2c0 /--* t23 int [000066] ------------ t66 = * PUTARG_REG int REG r8 N006 ( 1, 1) [000022] ------------ t22 = CNS_INT int 0 $40 /--* t22 int [000067] ------------ t67 = * PUTARG_REG int REG rdx /--* t65 long arg0 in rcx +--* t66 int arg2 in r8 +--* t67 int arg1 in rdx N007 ( 21, 13) [000024] --CXG------- t24 = * CALL ref System.String..ctor $181 /--* t24 ref N009 ( 25, 16) [000026] DA-XG------- * STORE_LCL_VAR ref V04 loc2 d:1 [000061] ------------ IL_OFFSET void INLRT @ 0x02B[E-] N001 ( 3, 2) [000027] ------------ t27 = LCL_VAR ref V04 loc2 u:1 (last use) $181 /--* t27 ref N002 ( 4, 3) [000028] ------------ * RETURN ref $183 ------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist Trees before Calculate stack level slots ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..016)-> BB03 ( cond ) i hascall gcsafe LIR BB02 [0001] 1 BB01 0.50 [016..018) (return) i gcsafe LIR BB03 [0002] 1 BB01 0.50 [018..02D) (return) i hascall gcsafe newobj LIR ----------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [000..016) -> BB03 (cond), preds={} succs={BB02,BB03} [000054] ------------ IL_OFFSET void INLRT @ 0x000[E-] N002 ( 1, 1) [000001] ------------ t1 = LCL_VAR long V00 arg0 u:1 (last use) $80 /--* t1 long [000062] ------------ t62 = * PUTARG_REG long REG rcx /--* t62 long arg0 in rcx N003 ( 15, 7) [000002] --CXG------- t2 = * CALL long System.Runtime.RuntimeImports.RhGetOSModuleFromPointer $82 N004 ( 1, 1) [000000] ------------ t0 = LCL_VAR byref V01 arg1 u:1 $c0 /--* t0 byref +--* t2 long [000055] -ACXG------- * STOREIND long [000056] ------------ IL_OFFSET void INLRT @ 0x008[E-] N001 ( 1, 1) [000005] ------------ t5 = LCL_VAR byref V01 arg1 u:1 (last use) $c0 /--* t5 byref N002 ( 3, 2) [000006] *---GO------ t6 = * IND long <l:$201, c:$200> /--* t6 long N004 ( 7, 5) [000050] DA--GO------ * STORE_LCL_VAR long V08 cse0 d:1 N005 ( 3, 2) [000051] ------------ t51 = LCL_VAR long V08 cse0 u:1 <l:$201, c:$200> /--* t51 long N008 ( 10, 7) [000039] DA--GO------ * STORE_LCL_VAR long V06 tmp1 d:1 [000057] ------------ IL_OFFSET void INLRT @ 0x008[E-] N001 ( 1, 1) [000033] ------------ t33 = LCL_VAR long V06 tmp1 u:1 (last use) <l:$140, c:$83> N002 ( 1, 1) [000036] -c---------- t36 = CNS_INT long 0 $240 /--* t33 long +--* t36 long N003 ( 3, 3) [000037] J---G--N---- * NE void <l:$281, c:$280> N004 ( 5, 5) [000013] ----G------- * JTRUE void ------------ BB02 [016..018) (return), preds={BB01} succs={} [000058] ------------ IL_OFFSET void INLRT @ 0x016[E-] N001 ( 1, 1) [000029] ------------ t29 = CNS_INT ref null $VN.Null /--* t29 ref N002 ( 2, 2) [000030] ------------ * RETURN ref $184 ------------ BB03 [018..02D) (return), preds={BB01} succs={} [000059] ------------ IL_OFFSET void INLRT @ 0x018[E-] N003 ( 3, 2) [000053] ------------ t53 = LCL_VAR long V08 cse0 u:1 (last use) <l:$140, c:$83> /--* t53 long [000063] ------------ t63 = * PUTARG_REG long REG rcx N004 ( 3, 3) [000017] ------------ t17 = LCL_VAR_ADDR long V02 loc0 $88 /--* t17 long [000064] ------------ t64 = * PUTARG_REG long REG rdx /--* t63 long arg0 in rcx +--* t64 long arg1 in rdx N005 ( 20, 12) [000018] --CXG------- t18 = * CALL int System.Runtime.RuntimeImports.RhGetModuleFileName $2c0 /--* t18 int N007 ( 24, 15) [000020] DA-XG------- * STORE_LCL_VAR int V03 loc1 d:1 [000060] ------------ IL_OFFSET void INLRT @ 0x022[E-] N004 ( 3, 2) [000021] ------------ t21 = LCL_VAR long (AX) V02 loc0 $141 /--* t21 long [000065] ------------ t65 = * PUTARG_REG long REG rcx N005 ( 3, 2) [000023] ------------ t23 = LCL_VAR int V03 loc1 u:1 (last use) $2c0 /--* t23 int [000066] ------------ t66 = * PUTARG_REG int REG r8 N006 ( 1, 1) [000022] ------------ t22 = CNS_INT int 0 $40 /--* t22 int [000067] ------------ t67 = * PUTARG_REG int REG rdx /--* t65 long arg0 in rcx +--* t66 int arg2 in r8 +--* t67 int arg1 in rdx N007 ( 21, 13) [000024] --CXG------- t24 = * CALL ref System.String..ctor $181 /--* t24 ref N009 ( 25, 16) [000026] DA-XG------- * STORE_LCL_VAR ref V04 loc2 d:1 [000061] ------------ IL_OFFSET void INLRT @ 0x02B[E-] N001 ( 3, 2) [000027] ------------ t27 = LCL_VAR ref V04 loc2 u:1 (last use) $181 /--* t27 ref N002 ( 4, 3) [000028] ------------ * RETURN ref $183 ------------------------------------------------------------------------------------------------------------------- *************** 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 {V00 V01} {V06 V08} {V00 V01} {V08} BB02 use def in out {} {} {} {} BB03 use def in out {V08} {V03 V04} {V08} {} Interval 0: long RefPositions {} physReg:NA Preferences=[allInt] Interval 0: (V00) long RefPositions {} physReg:NA Preferences=[allInt] Interval 1: byref RefPositions {} physReg:NA Preferences=[allInt] Interval 1: (V01) byref RefPositions {} physReg:NA Preferences=[allInt] Interval 2: int RefPositions {} physReg:NA Preferences=[allInt] Interval 2: (V03) int RefPositions {} physReg:NA Preferences=[allInt] Interval 3: ref RefPositions {} physReg:NA Preferences=[allInt] Interval 3: (V04) ref RefPositions {} physReg:NA Preferences=[allInt] Interval 4: long RefPositions {} physReg:NA Preferences=[allInt] Interval 4: (V06) long RefPositions {} physReg:NA Preferences=[allInt] Interval 5: long RefPositions {} physReg:NA Preferences=[allInt] Interval 5: (V08) long RefPositions {} physReg:NA Preferences=[allInt] FP callee save candidate vars: None floatVarCount = 0; hasLoops = false, singleExit = false TUPLE STYLE DUMP BEFORE LSRA Start LSRA Block Sequence: Current block: BB01 Succ block: BB02, Criteria: weight, Worklist: [BB02 ] Succ block: BB03, Criteria: bbNum, Worklist: [BB02 BB03 ] Current block: BB02 Current block: BB03 Final LSRA Block Sequence: BB01( 1 ) BB02( 0.50) BB03( 0.50) BB01 [000..016) -> BB03 (cond), preds={} succs={BB02,BB03} ===== N000. IL_OFFSET INLRT @ 0x000[E-] N002. V00(t1*) N000. t62 = PUTARG_REG; t1* N003. t2 = CALL ; t62 N004. V01(t0) N000. STOREIND ; t0,t2 N000. IL_OFFSET INLRT @ 0x008[E-] N001. V01(t5*) N002. t6 = IND ; t5* N004. V08(t50); t6 N005. V08(t51) N008. V06(t39); t51 N000. IL_OFFSET INLRT @ 0x008[E-] N001. V06(t33*) N002. CNS_INT 0 N003. NE ; t33* N004. JTRUE BB02 [016..018) (return), preds={BB01} succs={} ===== N000. IL_OFFSET INLRT @ 0x016[E-] N001. t29 = CNS_INT null N002. RETURN ; t29 BB03 [018..02D) (return), preds={BB01} succs={} ===== N000. IL_OFFSET INLRT @ 0x018[E-] N003. V08(t53*) N000. t63 = PUTARG_REG; t53* N004. t17 = LCL_VAR_ADDR V02 loc0 N000. t64 = PUTARG_REG; t17 N005. t18 = CALL ; t63,t64 N007. V03(t20); t18 N000. IL_OFFSET INLRT @ 0x022[E-] N004. t21 = V02 MEM N000. t65 = PUTARG_REG; t21 N005. V03(t23*) N000. t66 = PUTARG_REG; t23* N006. t22 = CNS_INT 0 N000. t67 = PUTARG_REG; t22 N007. t24 = CALL ; t65,t66,t67 N009. V04(t26); t24 N000. IL_OFFSET INLRT @ 0x02B[E-] N001. V04(t27*) N002. RETURN ; t27* buildIntervals second part ======== Int arg V01 in reg rdx <RefPosition #0 @0 RefTypeParamDef <Ivl:1 V01> BB00 regmask=[rdx] minReg=1 fixed wt=100.00> Int arg V00 in reg rcx <RefPosition #1 @0 RefTypeParamDef <Ivl:0 V00> BB00 regmask=[rcx] minReg=1 fixed wt=100.00> NEW BLOCK BB01 <RefPosition #2 @1 RefTypeBB BB01 regmask=[] minReg=1 wt=100.00> DefList: { } N003 (???,???) [000054] ------------ * IL_OFFSET void INLRT @ 0x000[E-] REG NA DefList: { } N005 ( 1, 1) [000001] ------------ * LCL_VAR long V00 arg0 u:1 NA (last use) REG NA $80 DefList: { } N007 (???,???) [000062] ------------ * PUTARG_REG long REG rcx <RefPosition #3 @7 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00> <RefPosition #4 @7 RefTypeUse <Ivl:0 V00> LCL_VAR BB01 regmask=[rcx] minReg=1 last fixed wt=300.00> Interval 6: long RefPositions {} physReg:NA Preferences=[allInt] <RefPosition #5 @8 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00> <RefPosition #6 @8 RefTypeDef <Ivl:6> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00> DefList: { N007.t62. PUTARG_REG } N009 ( 15, 7) [000002] --CXG------- * CALL long System.Runtime.RuntimeImports.RhGetOSModuleFromPointer REG NA $82 <RefPosition #7 @9 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00> <RefPosition #8 @9 RefTypeUse <Ivl:6> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00> <RefPosition #9 @10 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 wt=100.00> <RefPosition #10 @10 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00> <RefPosition #11 @10 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 wt=100.00> <RefPosition #12 @10 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 wt=100.00> <RefPosition #13 @10 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 wt=100.00> <RefPosition #14 @10 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 wt=100.00> <RefPosition #15 @10 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 wt=100.00> Interval 7: long RefPositions {} physReg:NA Preferences=[allInt] <RefPosition #16 @10 RefTypeFixedReg <Reg:rax> BB01 regmask=[rax] minReg=1 wt=100.00> <RefPosition #17 @10 RefTypeDef <Ivl:7> CALL BB01 regmask=[rax] minReg=1 fixed wt=400.00> DefList: { N009.t2. CALL } N011 ( 1, 1) [000000] ------------ * LCL_VAR byref V01 arg1 u:1 NA REG NA $c0 DefList: { N009.t2. CALL } N013 (???,???) [000055] -ACXG------- * STOREIND long REG NA <RefPosition #18 @13 RefTypeUse <Ivl:1 V01> LCL_VAR BB01 regmask=[allInt] minReg=1 last wt=400.00> <RefPosition #19 @13 RefTypeUse <Ivl:7> BB01 regmask=[allInt] minReg=1 last wt=100.00> DefList: { } N015 (???,???) [000056] ------------ * IL_OFFSET void INLRT @ 0x008[E-] REG NA DefList: { } N017 ( 1, 1) [000005] ------------ * LCL_VAR byref V01 arg1 u:1 NA (last use) REG NA $c0 DefList: { } N019 ( 3, 2) [000006] *---GO------ * IND long REG NA <l:$201, c:$200> <RefPosition #20 @19 RefTypeUse <Ivl:1 V01> LCL_VAR BB01 regmask=[allInt] minReg=1 last wt=400.00> Interval 8: long RefPositions {} physReg:NA Preferences=[allInt] <RefPosition #21 @20 RefTypeDef <Ivl:8> IND BB01 regmask=[allInt] minReg=1 wt=400.00> DefList: { N019.t6. IND } N021 ( 7, 5) [000050] DA--GO------ * STORE_LCL_VAR long V08 cse0 d:1 NA REG NA <RefPosition #22 @21 RefTypeUse <Ivl:8> BB01 regmask=[allInt] minReg=1 last wt=100.00> Assigning related <V08/L5> to <I8> <RefPosition #23 @22 RefTypeDef <Ivl:5 V08> STORE_LCL_VAR BB01 regmask=[allInt] minReg=1 last wt=250.00> DefList: { } N023 ( 3, 2) [000051] ------------ * LCL_VAR long V08 cse0 u:1 NA REG NA <l:$201, c:$200> DefList: { } N025 ( 10, 7) [000039] DA--GO------ * STORE_LCL_VAR long V06 tmp1 d:1 NA REG NA <RefPosition #24 @25 RefTypeUse <Ivl:5 V08> LCL_VAR BB01 regmask=[allInt] minReg=1 last wt=250.00> <RefPosition #25 @26 RefTypeDef <Ivl:4 V06> STORE_LCL_VAR BB01 regmask=[allInt] minReg=1 last wt=400.00> DefList: { } N027 (???,???) [000057] ------------ * IL_OFFSET void INLRT @ 0x008[E-] REG NA DefList: { } N029 ( 1, 1) [000033] ------------ * LCL_VAR long V06 tmp1 u:1 NA (last use) REG NA <l:$140, c:$83> DefList: { } N031 ( 1, 1) [000036] -c---------- * CNS_INT long 0 REG NA $240 Contained DefList: { } N033 ( 3, 3) [000037] J---G--N---- * NE void REG NA <l:$281, c:$280> <RefPosition #26 @33 RefTypeUse <Ivl:4 V06> LCL_VAR BB01 regmask=[allInt] minReg=1 last wt=400.00> DefList: { } N035 ( 5, 5) [000013] ----G------- * JTRUE void REG NA CHECKING LAST USES for BB01, liveout={V08} ============================== use: {V00 V01} def: {V06 V08} NEW BLOCK BB02 Setting BB01 as the predecessor for determining incoming variable registers of BB02 <RefPosition #27 @37 RefTypeBB BB02 regmask=[] minReg=1 wt=50.00> DefList: { } N039 (???,???) [000058] ------------ * IL_OFFSET void INLRT @ 0x016[E-] REG NA DefList: { } N041 ( 1, 1) [000029] ------------ * CNS_INT ref null REG NA $VN.Null Interval 9: ref RefPositions {} physReg:NA Preferences=[allInt] <RefPosition #28 @42 RefTypeDef <Ivl:9> CNS_INT BB02 regmask=[allInt] minReg=1 wt=200.00> DefList: { N041.t29. CNS_INT } N043 ( 2, 2) [000030] ------------ * RETURN ref REG NA $184 <RefPosition #29 @43 RefTypeFixedReg <Reg:rax> BB02 regmask=[rax] minReg=1 wt=50.00> <RefPosition #30 @43 RefTypeUse <Ivl:9> BB02 regmask=[rax] minReg=1 last fixed wt=50.00> CHECKING LAST USES for BB02, liveout={} ============================== use: {} def: {} NEW BLOCK BB03 Setting BB01 as the predecessor for determining incoming variable registers of BB03 <RefPosition #31 @45 RefTypeBB BB03 regmask=[] minReg=1 wt=50.00> DefList: { } N047 (???,???) [000059] ------------ * IL_OFFSET void INLRT @ 0x018[E-] REG NA DefList: { } N049 ( 3, 2) [000053] ------------ * LCL_VAR long V08 cse0 u:1 NA (last use) REG NA <l:$140, c:$83> DefList: { } N051 (???,???) [000063] ------------ * PUTARG_REG long REG rcx <RefPosition #32 @51 RefTypeFixedReg <Reg:rcx> BB03 regmask=[rcx] minReg=1 wt=50.00> <RefPosition #33 @51 RefTypeUse <Ivl:5 V08> LCL_VAR BB03 regmask=[rcx] minReg=1 last fixed wt=250.00> Interval 10: long RefPositions {} physReg:NA Preferences=[allInt] <RefPosition #34 @52 RefTypeFixedReg <Reg:rcx> BB03 regmask=[rcx] minReg=1 wt=50.00> <RefPosition #35 @52 RefTypeDef <Ivl:10> PUTARG_REG BB03 regmask=[rcx] minReg=1 fixed wt=200.00> DefList: { N051.t63. PUTARG_REG } N053 ( 3, 3) [000017] ------------ * LCL_VAR_ADDR long V02 loc0 NA REG NA $88 Interval 11: long RefPositions {} physReg:NA Preferences=[allInt] <RefPosition #36 @54 RefTypeDef <Ivl:11> LCL_VAR_ADDR BB03 regmask=[allInt] minReg=1 wt=200.00> DefList: { N051.t63. PUTARG_REG; N053.t17. LCL_VAR_ADDR } N055 (???,???) [000064] ------------ * PUTARG_REG long REG rdx <RefPosition #37 @55 RefTypeFixedReg <Reg:rdx> BB03 regmask=[rdx] minReg=1 wt=50.00> <RefPosition #38 @55 RefTypeUse <Ivl:11> BB03 regmask=[rdx] minReg=1 last fixed wt=50.00> Interval 12: long RefPositions {} physReg:NA Preferences=[allInt] <RefPosition #39 @56 RefTypeFixedReg <Reg:rdx> BB03 regmask=[rdx] minReg=1 wt=50.00> <RefPosition #40 @56 RefTypeDef <Ivl:12> PUTARG_REG BB03 regmask=[rdx] minReg=1 fixed wt=200.00> DefList: { N051.t63. PUTARG_REG; N055.t64. PUTARG_REG } N057 ( 20, 12) [000018] --CXG------- * CALL int System.Runtime.RuntimeImports.RhGetModuleFileName REG NA $2c0 <RefPosition #41 @57 RefTypeFixedReg <Reg:rcx> BB03 regmask=[rcx] minReg=1 wt=50.00> <RefPosition #42 @57 RefTypeUse <Ivl:10> BB03 regmask=[rcx] minReg=1 last fixed wt=50.00> <RefPosition #43 @57 RefTypeFixedReg <Reg:rdx> BB03 regmask=[rdx] minReg=1 wt=50.00> <RefPosition #44 @57 RefTypeUse <Ivl:12> BB03 regmask=[rdx] minReg=1 last fixed wt=50.00> <RefPosition #45 @58 RefTypeKill <Reg:rax> BB03 regmask=[rax] minReg=1 wt=50.00> <RefPosition #46 @58 RefTypeKill <Reg:rcx> BB03 regmask=[rcx] minReg=1 wt=50.00> <RefPosition #47 @58 RefTypeKill <Reg:rdx> BB03 regmask=[rdx] minReg=1 wt=50.00> <RefPosition #48 @58 RefTypeKill <Reg:r8 > BB03 regmask=[r8] minReg=1 wt=50.00> <RefPosition #49 @58 RefTypeKill <Reg:r9 > BB03 regmask=[r9] minReg=1 wt=50.00> <RefPosition #50 @58 RefTypeKill <Reg:r10> BB03 regmask=[r10] minReg=1 wt=50.00> <RefPosition #51 @58 RefTypeKill <Reg:r11> BB03 regmask=[r11] minReg=1 wt=50.00> Interval 13: int RefPositions {} physReg:NA Preferences=[allInt] <RefPosition #52 @58 RefTypeFixedReg <Reg:rax> BB03 regmask=[rax] minReg=1 wt=50.00> <RefPosition #53 @58 RefTypeDef <Ivl:13> CALL BB03 regmask=[rax] minReg=1 fixed wt=200.00> DefList: { N057.t18. CALL } N059 ( 24, 15) [000020] DA-XG------- * STORE_LCL_VAR int V03 loc1 d:1 NA REG NA <RefPosition #54 @59 RefTypeUse <Ivl:13> BB03 regmask=[allInt] minReg=1 last wt=50.00> Assigning related <V03/L2> to <I13> <RefPosition #55 @60 RefTypeDef <Ivl:2 V03> STORE_LCL_VAR BB03 regmask=[allInt] minReg=1 last wt=100.00> DefList: { } N061 (???,???) [000060] ------------ * IL_OFFSET void INLRT @ 0x022[E-] REG NA DefList: { } N063 ( 3, 2) [000021] ------------ * LCL_VAR long (AX) V02 loc0 NA REG NA $141 Interval 14: long RefPositions {} physReg:NA Preferences=[allInt] <RefPosition #56 @64 RefTypeDef <Ivl:14> LCL_VAR BB03 regmask=[allInt] minReg=1 wt=200.00> DefList: { N063.t21. LCL_VAR } N065 (???,???) [000065] ------------ * PUTARG_REG long REG rcx <RefPosition #57 @65 RefTypeFixedReg <Reg:rcx> BB03 regmask=[rcx] minReg=1 wt=50.00> <RefPosition #58 @65 RefTypeUse <Ivl:14> BB03 regmask=[rcx] minReg=1 last fixed wt=50.00> Interval 15: long RefPositions {} physReg:NA Preferences=[allInt] <RefPosition #59 @66 RefTypeFixedReg <Reg:rcx> BB03 regmask=[rcx] minReg=1 wt=50.00> <RefPosition #60 @66 RefTypeDef <Ivl:15> PUTARG_REG BB03 regmask=[rcx] minReg=1 fixed wt=200.00> DefList: { N065.t65. PUTARG_REG } N067 ( 3, 2) [000023] ------------ * LCL_VAR int V03 loc1 u:1 NA (last use) REG NA $2c0 DefList: { N065.t65. PUTARG_REG } N069 (???,???) [000066] ------------ * PUTARG_REG int REG r8 <RefPosition #61 @69 RefTypeFixedReg <Reg:r8 > BB03 regmask=[r8] minReg=1 wt=50.00> <RefPosition #62 @69 RefTypeUse <Ivl:2 V03> LCL_VAR BB03 regmask=[r8] minReg=1 last fixed wt=100.00> Interval 16: int RefPositions {} physReg:NA Preferences=[allInt] <RefPosition #63 @70 RefTypeFixedReg <Reg:r8 > BB03 regmask=[r8] minReg=1 wt=50.00> <RefPosition #64 @70 RefTypeDef <Ivl:16> PUTARG_REG BB03 regmask=[r8] minReg=1 fixed wt=200.00> DefList: { N065.t65. PUTARG_REG; N069.t66. PUTARG_REG } N071 ( 1, 1) [000022] ------------ * CNS_INT int 0 REG NA $40 Interval 17: int RefPositions {} physReg:NA Preferences=[allInt] <RefPosition #65 @72 RefTypeDef <Ivl:17> CNS_INT BB03 regmask=[allInt] minReg=1 wt=200.00> DefList: { N065.t65. PUTARG_REG; N069.t66. PUTARG_REG; N071.t22. CNS_INT } N073 (???,???) [000067] ------------ * PUTARG_REG int REG rdx <RefPosition #66 @73 RefTypeFixedReg <Reg:rdx> BB03 regmask=[rdx] minReg=1 wt=50.00> <RefPosition #67 @73 RefTypeUse <Ivl:17> BB03 regmask=[rdx] minReg=1 last fixed wt=50.00> Interval 18: int RefPositions {} physReg:NA Preferences=[allInt] <RefPosition #68 @74 RefTypeFixedReg <Reg:rdx> BB03 regmask=[rdx] minReg=1 wt=50.00> <RefPosition #69 @74 RefTypeDef <Ivl:18> PUTARG_REG BB03 regmask=[rdx] minReg=1 fixed wt=200.00> DefList: { N065.t65. PUTARG_REG; N069.t66. PUTARG_REG; N073.t67. PUTARG_REG } N075 ( 21, 13) [000024] --CXG------- * CALL ref System.String..ctor REG NA $181 <RefPosition #70 @75 RefTypeFixedReg <Reg:rcx> BB03 regmask=[rcx] minReg=1 wt=50.00> <RefPosition #71 @75 RefTypeUse <Ivl:15> BB03 regmask=[rcx] minReg=1 last fixed wt=50.00> <RefPosition #72 @75 RefTypeFixedReg <Reg:r8 > BB03 regmask=[r8] minReg=1 wt=50.00> <RefPosition #73 @75 RefTypeUse <Ivl:16> BB03 regmask=[r8] minReg=1 last fixed wt=50.00> <RefPosition #74 @75 RefTypeFixedReg <Reg:rdx> BB03 regmask=[rdx] minReg=1 wt=50.00> <RefPosition #75 @75 RefTypeUse <Ivl:18> BB03 regmask=[rdx] minReg=1 last fixed wt=50.00> <RefPosition #76 @76 RefTypeKill <Reg:rax> BB03 regmask=[rax] minReg=1 wt=50.00> <RefPosition #77 @76 RefTypeKill <Reg:rcx> BB03 regmask=[rcx] minReg=1 wt=50.00> <RefPosition #78 @76 RefTypeKill <Reg:rdx> BB03 regmask=[rdx] minReg=1 wt=50.00> <RefPosition #79 @76 RefTypeKill <Reg:r8 > BB03 regmask=[r8] minReg=1 wt=50.00> <RefPosition #80 @76 RefTypeKill <Reg:r9 > BB03 regmask=[r9] minReg=1 wt=50.00> <RefPosition #81 @76 RefTypeKill <Reg:r10> BB03 regmask=[r10] minReg=1 wt=50.00> <RefPosition #82 @76 RefTypeKill <Reg:r11> BB03 regmask=[r11] minReg=1 wt=50.00> Interval 19: ref RefPositions {} physReg:NA Preferences=[allInt] <RefPosition #83 @76 RefTypeFixedReg <Reg:rax> BB03 regmask=[rax] minReg=1 wt=50.00> <RefPosition #84 @76 RefTypeDef <Ivl:19> CALL BB03 regmask=[rax] minReg=1 fixed wt=200.00> DefList: { N075.t24. CALL } N077 ( 25, 16) [000026] DA-XG------- * STORE_LCL_VAR ref V04 loc2 d:1 NA REG NA <RefPosition #85 @77 RefTypeUse <Ivl:19> BB03 regmask=[allInt] minReg=1 last wt=50.00> Assigning related <V04/L3> to <I19> <RefPosition #86 @78 RefTypeDef <Ivl:3 V04> STORE_LCL_VAR BB03 regmask=[allInt] minReg=1 last wt=100.00> DefList: { } N079 (???,???) [000061] ------------ * IL_OFFSET void INLRT @ 0x02B[E-] REG NA DefList: { } N081 ( 3, 2) [000027] ------------ * LCL_VAR ref V04 loc2 u:1 NA (last use) REG NA $181 DefList: { } N083 ( 4, 3) [000028] ------------ * RETURN ref REG NA $183 <RefPosition #87 @83 RefTypeFixedReg <Reg:rax> BB03 regmask=[rax] minReg=1 wt=50.00> <RefPosition #88 @83 RefTypeUse <Ivl:3 V04> LCL_VAR BB03 regmask=[rax] minReg=1 last fixed wt=100.00> CHECKING LAST USES for BB03, liveout={} ============================== use: {V08} def: {V03 V04} Linear scan intervals BEFORE VALIDATING INTERVALS: Interval 0: (V00) long RefPositions {#1@0 #4@7} physReg:rcx Preferences=[rcx] Interval 1: (V01) byref RefPositions {#0@0 #18@13 #20@19} physReg:rdx Preferences=[rbx rbp rsi rdi r12-r15] Interval 2: (V03) int RefPositions {#55@60 #62@69} physReg:NA Preferences=[r8] Interval 3: (V04) ref RefPositions {#86@78 #88@83} physReg:NA Preferences=[rax] Interval 4: (V06) long RefPositions {#25@26 #26@33} physReg:NA Preferences=[allInt] Interval 5: (V08) long RefPositions {#23@22 #24@25 #33@51} physReg:NA Preferences=[rcx] Interval 6: long RefPositions {#6@8 #8@9} physReg:NA Preferences=[rcx] Interval 7: long RefPositions {#17@10 #19@13} physReg:NA Preferences=[rax] Interval 8: long RefPositions {#21@20 #22@21} physReg:NA Preferences=[allInt] RelatedInterval <V08/L5> Interval 9: ref (constant) RefPositions {#28@42 #30@43} physReg:NA Preferences=[rax] Interval 10: long RefPositions {#35@52 #42@57} physReg:NA Preferences=[rcx] Interval 11: long RefPositions {#36@54 #38@55} physReg:NA Preferences=[rdx] Interval 12: long RefPositions {#40@56 #44@57} physReg:NA Preferences=[rdx] Interval 13: int RefPositions {#53@58 #54@59} physReg:NA Preferences=[rax] RelatedInterval <V03/L2> Interval 14: long RefPositions {#56@64 #58@65} physReg:NA Preferences=[rcx] Interval 15: long RefPositions {#60@66 #71@75} physReg:NA Preferences=[rcx] Interval 16: int RefPositions {#64@70 #73@75} physReg:NA Preferences=[r8] Interval 17: int (constant) RefPositions {#65@72 #67@73} physReg:NA Preferences=[rdx] Interval 18: int RefPositions {#69@74 #75@75} physReg:NA Preferences=[rdx] Interval 19: ref RefPositions {#84@76 #85@77} physReg:NA Preferences=[rax] RelatedInterval <V04/L3> ------------ REFPOSITIONS BEFORE VALIDATING INTERVALS: ------------ <RefPosition #0 @0 RefTypeParamDef <Ivl:1 V01> BB00 regmask=[rdx] minReg=1 fixed regOptional wt=100.00> <RefPosition #1 @0 RefTypeParamDef <Ivl:0 V00> BB00 regmask=[rcx] minReg=1 fixed regOptional wt=100.00> <RefPosition #2 @1 RefTypeBB BB01 regmask=[] minReg=1 wt=100.00> <RefPosition #3 @7 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00> <RefPosition #4 @7 RefTypeUse <Ivl:0 V00> LCL_VAR BB01 regmask=[rcx] minReg=1 last fixed wt=300.00> <RefPosition #5 @8 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00> <RefPosition #6 @8 RefTypeDef <Ivl:6> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00> <RefPosition #7 @9 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00> <RefPosition #8 @9 RefTypeUse <Ivl:6> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00> <RefPosition #9 @10 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 last wt=100.00> <RefPosition #10 @10 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 last wt=100.00> <RefPosition #11 @10 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 last wt=100.00> <RefPosition #12 @10 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 last wt=100.00> <RefPosition #13 @10 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 last wt=100.00> <RefPosition #14 @10 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 last wt=100.00> <RefPosition #15 @10 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 last wt=100.00> <RefPosition #16 @10 RefTypeFixedReg <Reg:rax> BB01 regmask=[rax] minReg=1 wt=100.00> <RefPosition #17 @10 RefTypeDef <Ivl:7> CALL BB01 regmask=[rax] minReg=1 fixed wt=400.00> <RefPosition #18 @13 RefTypeUse <Ivl:1 V01> LCL_VAR BB01 regmask=[allInt] minReg=1 wt=400.00> <RefPosition #19 @13 RefTypeUse <Ivl:7> BB01 regmask=[allInt] minReg=1 last wt=100.00> <RefPosition #20 @19 RefTypeUse <Ivl:1 V01> LCL_VAR BB01 regmask=[allInt] minReg=1 last wt=400.00> <RefPosition #21 @20 RefTypeDef <Ivl:8> IND BB01 regmask=[allInt] minReg=1 wt=400.00> <RefPosition #22 @21 RefTypeUse <Ivl:8> BB01 regmask=[allInt] minReg=1 last wt=100.00> <RefPosition #23 @22 RefTypeDef <Ivl:5 V08> STORE_LCL_VAR BB01 regmask=[allInt] minReg=1 wt=250.00> <RefPosition #24 @25 RefTypeUse <Ivl:5 V08> LCL_VAR BB01 regmask=[allInt] minReg=1 wt=250.00> <RefPosition #25 @26 RefTypeDef <Ivl:4 V06> STORE_LCL_VAR BB01 regmask=[allInt] minReg=1 wt=400.00> <RefPosition #26 @33 RefTypeUse <Ivl:4 V06> LCL_VAR BB01 regmask=[allInt] minReg=1 last regOptional wt=400.00> <RefPosition #27 @37 RefTypeBB BB02 regmask=[] minReg=1 wt=50.00> <RefPosition #28 @42 RefTypeDef <Ivl:9> CNS_INT BB02 regmask=[rax] minReg=1 wt=200.00> <RefPosition #29 @43 RefTypeFixedReg <Reg:rax> BB02 regmask=[rax] minReg=1 wt=50.00> <RefPosition #30 @43 RefTypeUse <Ivl:9> BB02 regmask=[rax] minReg=1 last fixed wt=50.00> <RefPosition #31 @45 RefTypeBB BB03 regmask=[] minReg=1 wt=50.00> <RefPosition #32 @51 RefTypeFixedReg <Reg:rcx> BB03 regmask=[rcx] minReg=1 wt=50.00> <RefPosition #33 @51 RefTypeUse <Ivl:5 V08> LCL_VAR BB03 regmask=[rcx] minReg=1 last fixed wt=250.00> <RefPosition #34 @52 RefTypeFixedReg <Reg:rcx> BB03 regmask=[rcx] minReg=1 wt=50.00> <RefPosition #35 @52 RefTypeDef <Ivl:10> PUTARG_REG BB03 regmask=[rcx] minReg=1 fixed wt=200.00> <RefPosition #36 @54 RefTypeDef <Ivl:11> LCL_VAR_ADDR BB03 regmask=[rdx] minReg=1 wt=200.00> <RefPosition #37 @55 RefTypeFixedReg <Reg:rdx> BB03 regmask=[rdx] minReg=1 wt=50.00> <RefPosition #38 @55 RefTypeUse <Ivl:11> BB03 regmask=[rdx] minReg=1 last fixed wt=50.00> <RefPosition #39 @56 RefTypeFixedReg <Reg:rdx> BB03 regmask=[rdx] minReg=1 wt=50.00> <RefPosition #40 @56 RefTypeDef <Ivl:12> PUTARG_REG BB03 regmask=[rdx] minReg=1 fixed wt=200.00> <RefPosition #41 @57 RefTypeFixedReg <Reg:rcx> BB03 regmask=[rcx] minReg=1 wt=50.00> <RefPosition #42 @57 RefTypeUse <Ivl:10> BB03 regmask=[rcx] minReg=1 last fixed wt=50.00> <RefPosition #43 @57 RefTypeFixedReg <Reg:rdx> BB03 regmask=[rdx] minReg=1 wt=50.00> <RefPosition #44 @57 RefTypeUse <Ivl:12> BB03 regmask=[rdx] minReg=1 last fixed wt=50.00> <RefPosition #45 @58 RefTypeKill <Reg:rax> BB03 regmask=[rax] minReg=1 last wt=50.00> <RefPosition #46 @58 RefTypeKill <Reg:rcx> BB03 regmask=[rcx] minReg=1 last wt=50.00> <RefPosition #47 @58 RefTypeKill <Reg:rdx> BB03 regmask=[rdx] minReg=1 last wt=50.00> <RefPosition #48 @58 RefTypeKill <Reg:r8 > BB03 regmask=[r8] minReg=1 last wt=50.00> <RefPosition #49 @58 RefTypeKill <Reg:r9 > BB03 regmask=[r9] minReg=1 last wt=50.00> <RefPosition #50 @58 RefTypeKill <Reg:r10> BB03 regmask=[r10] minReg=1 last wt=50.00> <RefPosition #51 @58 RefTypeKill <Reg:r11> BB03 regmask=[r11] minReg=1 last wt=50.00> <RefPosition #52 @58 RefTypeFixedReg <Reg:rax> BB03 regmask=[rax] minReg=1 wt=50.00> <RefPosition #53 @58 RefTypeDef <Ivl:13> CALL BB03 regmask=[rax] minReg=1 fixed wt=200.00> <RefPosition #54 @59 RefTypeUse <Ivl:13> BB03 regmask=[allInt] minReg=1 last wt=50.00> <RefPosition #55 @60 RefTypeDef <Ivl:2 V03> STORE_LCL_VAR BB03 regmask=[allInt] minReg=1 wt=100.00> <RefPosition #56 @64 RefTypeDef <Ivl:14> LCL_VAR BB03 regmask=[rcx] minReg=1 wt=200.00> <RefPosition #57 @65 RefTypeFixedReg <Reg:rcx> BB03 regmask=[rcx] minReg=1 wt=50.00> <RefPosition #58 @65 RefTypeUse <Ivl:14> BB03 regmask=[rcx] minReg=1 last fixed wt=50.00> <RefPosition #59 @66 RefTypeFixedReg <Reg:rcx> BB03 regmask=[rcx] minReg=1 wt=50.00> <RefPosition #60 @66 RefTypeDef <Ivl:15> PUTARG_REG BB03 regmask=[rcx] minReg=1 fixed wt=200.00> <RefPosition #61 @69 RefTypeFixedReg <Reg:r8 > BB03 regmask=[r8] minReg=1 wt=50.00> <RefPosition #62 @69 RefTypeUse <Ivl:2 V03> LCL_VAR BB03 regmask=[r8] minReg=1 last fixed wt=100.00> <RefPosition #63 @70 RefTypeFixedReg <Reg:r8 > BB03 regmask=[r8] minReg=1 wt=50.00> <RefPosition #64 @70 RefTypeDef <Ivl:16> PUTARG_REG BB03 regmask=[r8] minReg=1 fixed wt=200.00> <RefPosition #65 @72 RefTypeDef <Ivl:17> CNS_INT BB03 regmask=[rdx] minReg=1 wt=200.00> <RefPosition #66 @73 RefTypeFixedReg <Reg:rdx> BB03 regmask=[rdx] minReg=1 wt=50.00> <RefPosition #67 @73 RefTypeUse <Ivl:17> BB03 regmask=[rdx] minReg=1 last fixed wt=50.00> <RefPosition #68 @74 RefTypeFixedReg <Reg:rdx> BB03 regmask=[rdx] minReg=1 wt=50.00> <RefPosition #69 @74 RefTypeDef <Ivl:18> PUTARG_REG BB03 regmask=[rdx] minReg=1 fixed wt=200.00> <RefPosition #70 @75 RefTypeFixedReg <Reg:rcx> BB03 regmask=[rcx] minReg=1 wt=50.00> <RefPosition #71 @75 RefTypeUse <Ivl:15> BB03 regmask=[rcx] minReg=1 last fixed wt=50.00> <RefPosition #72 @75 RefTypeFixedReg <Reg:r8 > BB03 regmask=[r8] minReg=1 wt=50.00> <RefPosition #73 @75 RefTypeUse <Ivl:16> BB03 regmask=[r8] minReg=1 last fixed wt=50.00> <RefPosition #74 @75 RefTypeFixedReg <Reg:rdx> BB03 regmask=[rdx] minReg=1 wt=50.00> <RefPosition #75 @75 RefTypeUse <Ivl:18> BB03 regmask=[rdx] minReg=1 last fixed wt=50.00> <RefPosition #76 @76 RefTypeKill <Reg:rax> BB03 regmask=[rax] minReg=1 last wt=50.00> <RefPosition #77 @76 RefTypeKill <Reg:rcx> BB03 regmask=[rcx] minReg=1 last wt=50.00> <RefPosition #78 @76 RefTypeKill <Reg:rdx> BB03 regmask=[rdx] minReg=1 last wt=50.00> <RefPosition #79 @76 RefTypeKill <Reg:r8 > BB03 regmask=[r8] minReg=1 last wt=50.00> <RefPosition #80 @76 RefTypeKill <Reg:r9 > BB03 regmask=[r9] minReg=1 last wt=50.00> <RefPosition #81 @76 RefTypeKill <Reg:r10> BB03 regmask=[r10] minReg=1 last wt=50.00> <RefPosition #82 @76 RefTypeKill <Reg:r11> BB03 regmask=[r11] minReg=1 last wt=50.00> <RefPosition #83 @76 RefTypeFixedReg <Reg:rax> BB03 regmask=[rax] minReg=1 wt=50.00> <RefPosition #84 @76 RefTypeDef <Ivl:19> CALL BB03 regmask=[rax] minReg=1 fixed wt=200.00> <RefPosition #85 @77 RefTypeUse <Ivl:19> BB03 regmask=[allInt] minReg=1 last wt=50.00> <RefPosition #86 @78 RefTypeDef <Ivl:3 V04> STORE_LCL_VAR BB03 regmask=[allInt] minReg=1 wt=100.00> <RefPosition #87 @83 RefTypeFixedReg <Reg:rax> BB03 regmask=[rax] minReg=1 wt=50.00> <RefPosition #88 @83 RefTypeUse <Ivl:3 V04> LCL_VAR BB03 regmask=[rax] minReg=1 last fixed wt=100.00> ----------------- <RefPosition #0 @0 RefTypeParamDef <Ivl:1 V01> BB00 regmask=[rdx] minReg=1 fixed regOptional wt=100.00> <RefPosition #18 @13 RefTypeUse <Ivl:1 V01> LCL_VAR BB01 regmask=[allInt] minReg=1 wt=400.00> <RefPosition #20 @19 RefTypeUse <Ivl:1 V01> LCL_VAR BB01 regmask=[allInt] minReg=1 last wt=400.00> ----------------- <RefPosition #1 @0 RefTypeParamDef <Ivl:0 V00> BB00 regmask=[rcx] minReg=1 fixed regOptional wt=100.00> <RefPosition #4 @7 RefTypeUse <Ivl:0 V00> LCL_VAR BB01 regmask=[rcx] minReg=1 last fixed wt=300.00> ----------------- <RefPosition #25 @26 RefTypeDef <Ivl:4 V06> STORE_LCL_VAR BB01 regmask=[allInt] minReg=1 wt=400.00> <RefPosition #26 @33 RefTypeUse <Ivl:4 V06> LCL_VAR BB01 regmask=[allInt] minReg=1 last regOptional wt=400.00> ----------------- <RefPosition #23 @22 RefTypeDef <Ivl:5 V08> STORE_LCL_VAR BB01 regmask=[allInt] minReg=1 wt=250.00> <RefPosition #24 @25 RefTypeUse <Ivl:5 V08> LCL_VAR BB01 regmask=[allInt] minReg=1 wt=250.00> <RefPosition #33 @51 RefTypeUse <Ivl:5 V08> LCL_VAR BB03 regmask=[rcx] minReg=1 last fixed wt=250.00> ----------------- <RefPosition #86 @78 RefTypeDef <Ivl:3 V04> STORE_LCL_VAR BB03 regmask=[allInt] minReg=1 wt=100.00> <RefPosition #88 @83 RefTypeUse <Ivl:3 V04> LCL_VAR BB03 regmask=[rax] minReg=1 last fixed wt=100.00> ----------------- <RefPosition #55 @60 RefTypeDef <Ivl:2 V03> STORE_LCL_VAR BB03 regmask=[allInt] minReg=1 wt=100.00> <RefPosition #62 @69 RefTypeUse <Ivl:2 V03> LCL_VAR BB03 regmask=[r8] minReg=1 last fixed wt=100.00> TUPLE STYLE DUMP WITH REF POSITIONS Incoming Parameters: V01 V00 BB01 [000..016) -> BB03 (cond), preds={} succs={BB02,BB03} ===== N003. IL_OFFSET INLRT @ 0x000[E-] N005. V00(L0) N007. PUTARG_REG Use:<V00/L0>(#4) Fixed:rcx(#3) * Def:<I6>(#6) rcx N009. CALL Use:<I6>(#8) Fixed:rcx(#7) * Kill: rax rcx rdx r8 r9 r10 r11 Def:<I7>(#17) rax N011. V01(L1) N013. STOREIND Use:<V01/L1>(#18) Use:<I7>(#19) * N015. IL_OFFSET INLRT @ 0x008[E-] N017. V01(L1) N019. IND Use:<V01/L1>(#20) * Def:<I8>(#21) Pref:<V08/L5> N021. V08(L5) Use:<I8>(#22) * Def:<V08/L5>(#23) N023. V08(L5) N025. V06(L4) Use:<V08/L5>(#24) Def:<V06/L4>(#25) N027. IL_OFFSET INLRT @ 0x008[E-] N029. V06(L4) N031. CNS_INT 0 N033. NE Use:<V06/L4>(#26) * N035. JTRUE BB02 [016..018) (return), preds={BB01} succs={} ===== N039. IL_OFFSET INLRT @ 0x016[E-] N041. CNS_INT null Def:<I9>(#28) N043. RETURN Use:<I9>(#30) Fixed:rax(#29) * BB03 [018..02D) (return), preds={BB01} succs={} ===== N047. IL_OFFSET INLRT @ 0x018[E-] N049. V08(L5) N051. PUTARG_REG Use:<V08/L5>(#33) Fixed:rcx(#32) * Def:<I10>(#35) rcx N053. LCL_VAR_ADDR V02 loc0 NA Def:<I11>(#36) N055. PUTARG_REG Use:<I11>(#38) Fixed:rdx(#37) * Def:<I12>(#40) rdx N057. CALL Use:<I10>(#42) Fixed:rcx(#41) * Use:<I12>(#44) Fixed:rdx(#43) * Kill: rax rcx rdx r8 r9 r10 r11 Def:<I13>(#53) rax Pref:<V03/L2> N059. V03(L2) Use:<I13>(#54) * Def:<V03/L2>(#55) N061. IL_OFFSET INLRT @ 0x022[E-] N063. V02 MEM Def:<I14>(#56) N065. PUTARG_REG Use:<I14>(#58) Fixed:rcx(#57) * Def:<I15>(#60) rcx N067. V03(L2) N069. PUTARG_REG Use:<V03/L2>(#62) Fixed:r8(#61) * Def:<I16>(#64) r8 N071. CNS_INT 0 Def:<I17>(#65) N073. PUTARG_REG Use:<I17>(#67) Fixed:rdx(#66) * Def:<I18>(#69) rdx N075. CALL Use:<I15>(#71) Fixed:rcx(#70) * Use:<I16>(#73) Fixed:r8(#72) * Use:<I18>(#75) Fixed:rdx(#74) * Kill: rax rcx rdx r8 r9 r10 r11 Def:<I19>(#84) rax Pref:<V04/L3> N077. V04(L3) Use:<I19>(#85) * Def:<V04/L3>(#86) N079. IL_OFFSET INLRT @ 0x02B[E-] N081. V04(L3) N083. RETURN Use:<V04/L3>(#88) Fixed:rax(#87) * Linear scan intervals after buildIntervals: Interval 0: (V00) long RefPositions {#1@0 #4@7} physReg:rcx Preferences=[rcx] Interval 1: (V01) byref RefPositions {#0@0 #18@13 #20@19} physReg:rdx Preferences=[rbx rbp rsi rdi r12-r15] Interval 2: (V03) int RefPositions {#55@60 #62@69} physReg:NA Preferences=[r8] Interval 3: (V04) ref RefPositions {#86@78 #88@83} physReg:NA Preferences=[rax] Interval 4: (V06) long RefPositions {#25@26 #26@33} physReg:NA Preferences=[allInt] Interval 5: (V08) long RefPositions {#23@22 #24@25 #33@51} physReg:NA Preferences=[rcx] Interval 6: long RefPositions {#6@8 #8@9} physReg:NA Preferences=[rcx] Interval 7: long RefPositions {#17@10 #19@13} physReg:NA Preferences=[rax] Interval 8: long RefPositions {#21@20 #22@21} physReg:NA Preferences=[allInt] RelatedInterval <V08/L5> Interval 9: ref (constant) RefPositions {#28@42 #30@43} physReg:NA Preferences=[rax] Interval 10: long RefPositions {#35@52 #42@57} physReg:NA Preferences=[rcx] Interval 11: long RefPositions {#36@54 #38@55} physReg:NA Preferences=[rdx] Interval 12: long RefPositions {#40@56 #44@57} physReg:NA Preferences=[rdx] Interval 13: int RefPositions {#53@58 #54@59} physReg:NA Preferences=[rax] RelatedInterval <V03/L2> Interval 14: long RefPositions {#56@64 #58@65} physReg:NA Preferences=[rcx] Interval 15: long RefPositions {#60@66 #71@75} physReg:NA Preferences=[rcx] Interval 16: int RefPositions {#64@70 #73@75} physReg:NA Preferences=[r8] Interval 17: int (constant) RefPositions {#65@72 #67@73} physReg:NA Preferences=[rdx] Interval 18: int RefPositions {#69@74 #75@75} physReg:NA Preferences=[rdx] Interval 19: ref RefPositions {#84@76 #85@77} physReg:NA Preferences=[rax] RelatedInterval <V04/L3> *************** In LinearScan::allocateRegisters() Linear scan intervals before allocateRegisters: Interval 0: (V00) long RefPositions {#1@0 #4@7} physReg:rcx Preferences=[rcx] Interval 1: (V01) byref RefPositions {#0@0 #18@13 #20@19} physReg:rdx Preferences=[rbx rbp rsi rdi r12-r15] Interval 2: (V03) int RefPositions {#55@60 #62@69} physReg:NA Preferences=[r8] Interval 3: (V04) ref RefPositions {#86@78 #88@83} physReg:NA Preferences=[rax] Interval 4: (V06) long RefPositions {#25@26 #26@33} physReg:NA Preferences=[allInt] Interval 5: (V08) long RefPositions {#23@22 #24@25 #33@51} physReg:NA Preferences=[rcx] Interval 6: long RefPositions {#6@8 #8@9} physReg:NA Preferences=[rcx] Interval 7: long RefPositions {#17@10 #19@13} physReg:NA Preferences=[rax] Interval 8: long RefPositions {#21@20 #22@21} physReg:NA Preferences=[allInt] RelatedInterval <V08/L5> Interval 9: ref (constant) RefPositions {#28@42 #30@43} physReg:NA Preferences=[rax] Interval 10: long RefPositions {#35@52 #42@57} physReg:NA Preferences=[rcx] Interval 11: long RefPositions {#36@54 #38@55} physReg:NA Preferences=[rdx] Interval 12: long RefPositions {#40@56 #44@57} physReg:NA Preferences=[rdx] Interval 13: int RefPositions {#53@58 #54@59} physReg:NA Preferences=[rax] RelatedInterval <V03/L2> Interval 14: long RefPositions {#56@64 #58@65} physReg:NA Preferences=[rcx] Interval 15: long RefPositions {#60@66 #71@75} physReg:NA Preferences=[rcx] Interval 16: int RefPositions {#64@70 #73@75} physReg:NA Preferences=[r8] Interval 17: int (constant) RefPositions {#65@72 #67@73} physReg:NA Preferences=[rdx] Interval 18: int RefPositions {#69@74 #75@75} physReg:NA Preferences=[rdx] Interval 19: ref RefPositions {#84@76 #85@77} physReg:NA Preferences=[rax] RelatedInterval <V04/L3> ------------ REFPOSITIONS BEFORE ALLOCATION: ------------ <RefPosition #0 @0 RefTypeParamDef <Ivl:1 V01> BB00 regmask=[rdx] minReg=1 fixed regOptional wt=100.00> <RefPosition #1 @0 RefTypeParamDef <Ivl:0 V00> BB00 regmask=[rcx] minReg=1 fixed regOptional wt=100.00> <RefPosition #2 @1 RefTypeBB BB01 regmask=[] minReg=1 wt=100.00> <RefPosition #3 @7 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00> <RefPosition #4 @7 RefTypeUse <Ivl:0 V00> LCL_VAR BB01 regmask=[rcx] minReg=1 last fixed wt=300.00> <RefPosition #5 @8 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00> <RefPosition #6 @8 RefTypeDef <Ivl:6> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00> <RefPosition #7 @9 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00> <RefPosition #8 @9 RefTypeUse <Ivl:6> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00> <RefPosition #9 @10 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 last wt=100.00> <RefPosition #10 @10 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 last wt=100.00> <RefPosition #11 @10 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 last wt=100.00> <RefPosition #12 @10 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 last wt=100.00> <RefPosition #13 @10 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 last wt=100.00> <RefPosition #14 @10 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 last wt=100.00> <RefPosition #15 @10 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 last wt=100.00> <RefPosition #16 @10 RefTypeFixedReg <Reg:rax> BB01 regmask=[rax] minReg=1 wt=100.00> <RefPosition #17 @10 RefTypeDef <Ivl:7> CALL BB01 regmask=[rax] minReg=1 fixed wt=400.00> <RefPosition #18 @13 RefTypeUse <Ivl:1 V01> LCL_VAR BB01 regmask=[allInt] minReg=1 wt=400.00> <RefPosition #19 @13 RefTypeUse <Ivl:7> BB01 regmask=[allInt] minReg=1 last wt=100.00> <RefPosition #20 @19 RefTypeUse <Ivl:1 V01> LCL_VAR BB01 regmask=[allInt] minReg=1 last wt=400.00> <RefPosition #21 @20 RefTypeDef <Ivl:8> IND BB01 regmask=[allInt] minReg=1 wt=400.00> <RefPosition #22 @21 RefTypeUse <Ivl:8> BB01 regmask=[allInt] minReg=1 last wt=100.00> <RefPosition #23 @22 RefTypeDef <Ivl:5 V08> STORE_LCL_VAR BB01 regmask=[allInt] minReg=1 wt=250.00> <RefPosition #24 @25 RefTypeUse <Ivl:5 V08> LCL_VAR BB01 regmask=[allInt] minReg=1 wt=250.00> <RefPosition #25 @26 RefTypeDef <Ivl:4 V06> STORE_LCL_VAR BB01 regmask=[allInt] minReg=1 wt=400.00> <RefPosition #26 @33 RefTypeUse <Ivl:4 V06> LCL_VAR BB01 regmask=[allInt] minReg=1 last regOptional wt=400.00> <RefPosition #27 @37 RefTypeBB BB02 regmask=[] minReg=1 wt=50.00> <RefPosition #28 @42 RefTypeDef <Ivl:9> CNS_INT BB02 regmask=[rax] minReg=1 wt=200.00> <RefPosition #29 @43 RefTypeFixedReg <Reg:rax> BB02 regmask=[rax] minReg=1 wt=50.00> <RefPosition #30 @43 RefTypeUse <Ivl:9> BB02 regmask=[rax] minReg=1 last fixed wt=50.00> <RefPosition #31 @45 RefTypeBB BB03 regmask=[] minReg=1 wt=50.00> <RefPosition #32 @51 RefTypeFixedReg <Reg:rcx> BB03 regmask=[rcx] minReg=1 wt=50.00> <RefPosition #33 @51 RefTypeUse <Ivl:5 V08> LCL_VAR BB03 regmask=[rcx] minReg=1 last fixed wt=250.00> <RefPosition #34 @52 RefTypeFixedReg <Reg:rcx> BB03 regmask=[rcx] minReg=1 wt=50.00> <RefPosition #35 @52 RefTypeDef <Ivl:10> PUTARG_REG BB03 regmask=[rcx] minReg=1 fixed wt=200.00> <RefPosition #36 @54 RefTypeDef <Ivl:11> LCL_VAR_ADDR BB03 regmask=[rdx] minReg=1 wt=200.00> <RefPosition #37 @55 RefTypeFixedReg <Reg:rdx> BB03 regmask=[rdx] minReg=1 wt=50.00> <RefPosition #38 @55 RefTypeUse <Ivl:11> BB03 regmask=[rdx] minReg=1 last fixed wt=50.00> <RefPosition #39 @56 RefTypeFixedReg <Reg:rdx> BB03 regmask=[rdx] minReg=1 wt=50.00> <RefPosition #40 @56 RefTypeDef <Ivl:12> PUTARG_REG BB03 regmask=[rdx] minReg=1 fixed wt=200.00> <RefPosition #41 @57 RefTypeFixedReg <Reg:rcx> BB03 regmask=[rcx] minReg=1 wt=50.00> <RefPosition #42 @57 RefTypeUse <Ivl:10> BB03 regmask=[rcx] minReg=1 last fixed wt=50.00> <RefPosition #43 @57 RefTypeFixedReg <Reg:rdx> BB03 regmask=[rdx] minReg=1 wt=50.00> <RefPosition #44 @57 RefTypeUse <Ivl:12> BB03 regmask=[rdx] minReg=1 last fixed wt=50.00> <RefPosition #45 @58 RefTypeKill <Reg:rax> BB03 regmask=[rax] minReg=1 last wt=50.00> <RefPosition #46 @58 RefTypeKill <Reg:rcx> BB03 regmask=[rcx] minReg=1 last wt=50.00> <RefPosition #47 @58 RefTypeKill <Reg:rdx> BB03 regmask=[rdx] minReg=1 last wt=50.00> <RefPosition #48 @58 RefTypeKill <Reg:r8 > BB03 regmask=[r8] minReg=1 last wt=50.00> <RefPosition #49 @58 RefTypeKill <Reg:r9 > BB03 regmask=[r9] minReg=1 last wt=50.00> <RefPosition #50 @58 RefTypeKill <Reg:r10> BB03 regmask=[r10] minReg=1 last wt=50.00> <RefPosition #51 @58 RefTypeKill <Reg:r11> BB03 regmask=[r11] minReg=1 last wt=50.00> <RefPosition #52 @58 RefTypeFixedReg <Reg:rax> BB03 regmask=[rax] minReg=1 wt=50.00> <RefPosition #53 @58 RefTypeDef <Ivl:13> CALL BB03 regmask=[rax] minReg=1 fixed wt=200.00> <RefPosition #54 @59 RefTypeUse <Ivl:13> BB03 regmask=[allInt] minReg=1 last wt=50.00> <RefPosition #55 @60 RefTypeDef <Ivl:2 V03> STORE_LCL_VAR BB03 regmask=[allInt] minReg=1 wt=100.00> <RefPosition #56 @64 RefTypeDef <Ivl:14> LCL_VAR BB03 regmask=[rcx] minReg=1 wt=200.00> <RefPosition #57 @65 RefTypeFixedReg <Reg:rcx> BB03 regmask=[rcx] minReg=1 wt=50.00> <RefPosition #58 @65 RefTypeUse <Ivl:14> BB03 regmask=[rcx] minReg=1 last fixed wt=50.00> <RefPosition #59 @66 RefTypeFixedReg <Reg:rcx> BB03 regmask=[rcx] minReg=1 wt=50.00> <RefPosition #60 @66 RefTypeDef <Ivl:15> PUTARG_REG BB03 regmask=[rcx] minReg=1 fixed wt=200.00> <RefPosition #61 @69 RefTypeFixedReg <Reg:r8 > BB03 regmask=[r8] minReg=1 wt=50.00> <RefPosition #62 @69 RefTypeUse <Ivl:2 V03> LCL_VAR BB03 regmask=[r8] minReg=1 last fixed wt=100.00> <RefPosition #63 @70 RefTypeFixedReg <Reg:r8 > BB03 regmask=[r8] minReg=1 wt=50.00> <RefPosition #64 @70 RefTypeDef <Ivl:16> PUTARG_REG BB03 regmask=[r8] minReg=1 fixed wt=200.00> <RefPosition #65 @72 RefTypeDef <Ivl:17> CNS_INT BB03 regmask=[rdx] minReg=1 wt=200.00> <RefPosition #66 @73 RefTypeFixedReg <Reg:rdx> BB03 regmask=[rdx] minReg=1 wt=50.00> <RefPosition #67 @73 RefTypeUse <Ivl:17> BB03 regmask=[rdx] minReg=1 last fixed wt=50.00> <RefPosition #68 @74 RefTypeFixedReg <Reg:rdx> BB03 regmask=[rdx] minReg=1 wt=50.00> <RefPosition #69 @74 RefTypeDef <Ivl:18> PUTARG_REG BB03 regmask=[rdx] minReg=1 fixed wt=200.00> <RefPosition #70 @75 RefTypeFixedReg <Reg:rcx> BB03 regmask=[rcx] minReg=1 wt=50.00> <RefPosition #71 @75 RefTypeUse <Ivl:15> BB03 regmask=[rcx] minReg=1 last fixed wt=50.00> <RefPosition #72 @75 RefTypeFixedReg <Reg:r8 > BB03 regmask=[r8] minReg=1 wt=50.00> <RefPosition #73 @75 RefTypeUse <Ivl:16> BB03 regmask=[r8] minReg=1 last fixed wt=50.00> <RefPosition #74 @75 RefTypeFixedReg <Reg:rdx> BB03 regmask=[rdx] minReg=1 wt=50.00> <RefPosition #75 @75 RefTypeUse <Ivl:18> BB03 regmask=[rdx] minReg=1 last fixed wt=50.00> <RefPosition #76 @76 RefTypeKill <Reg:rax> BB03 regmask=[rax] minReg=1 last wt=50.00> <RefPosition #77 @76 RefTypeKill <Reg:rcx> BB03 regmask=[rcx] minReg=1 last wt=50.00> <RefPosition #78 @76 RefTypeKill <Reg:rdx> BB03 regmask=[rdx] minReg=1 last wt=50.00> <RefPosition #79 @76 RefTypeKill <Reg:r8 > BB03 regmask=[r8] minReg=1 last wt=50.00> <RefPosition #80 @76 RefTypeKill <Reg:r9 > BB03 regmask=[r9] minReg=1 last wt=50.00> <RefPosition #81 @76 RefTypeKill <Reg:r10> BB03 regmask=[r10] minReg=1 last wt=50.00> <RefPosition #82 @76 RefTypeKill <Reg:r11> BB03 regmask=[r11] minReg=1 last wt=50.00> <RefPosition #83 @76 RefTypeFixedReg <Reg:rax> BB03 regmask=[rax] minReg=1 wt=50.00> <RefPosition #84 @76 RefTypeDef <Ivl:19> CALL BB03 regmask=[rax] minReg=1 fixed wt=200.00> <RefPosition #85 @77 RefTypeUse <Ivl:19> BB03 regmask=[allInt] minReg=1 last wt=50.00> <RefPosition #86 @78 RefTypeDef <Ivl:3 V04> STORE_LCL_VAR BB03 regmask=[allInt] minReg=1 wt=100.00> <RefPosition #87 @83 RefTypeFixedReg <Reg:rax> BB03 regmask=[rax] minReg=1 wt=50.00> <RefPosition #88 @83 RefTypeUse <Ivl:3 V04> LCL_VAR BB03 regmask=[rax] minReg=1 last fixed wt=100.00> VAR REFPOSITIONS BEFORE ALLOCATION --- V00 (Interval 0) <RefPosition #1 @0 RefTypeParamDef <Ivl:0 V00> BB00 regmask=[rcx] minReg=1 fixed regOptional wt=100.00> <RefPosition #4 @7 RefTypeUse <Ivl:0 V00> LCL_VAR BB01 regmask=[rcx] minReg=1 last fixed wt=300.00> --- V01 (Interval 1) <RefPosition #0 @0 RefTypeParamDef <Ivl:1 V01> BB00 regmask=[rdx] minReg=1 fixed regOptional wt=100.00> <RefPosition #18 @13 RefTypeUse <Ivl:1 V01> LCL_VAR BB01 regmask=[allInt] minReg=1 wt=400.00> <RefPosition #20 @19 RefTypeUse <Ivl:1 V01> LCL_VAR BB01 regmask=[allInt] minReg=1 last wt=400.00> --- V02 --- V03 (Interval 2) <RefPosition #55 @60 RefTypeDef <Ivl:2 V03> STORE_LCL_VAR BB03 regmask=[allInt] minReg=1 wt=100.00> <RefPosition #62 @69 RefTypeUse <Ivl:2 V03> LCL_VAR BB03 regmask=[r8] minReg=1 last fixed wt=100.00> --- V04 (Interval 3) <RefPosition #86 @78 RefTypeDef <Ivl:3 V04> STORE_LCL_VAR BB03 regmask=[allInt] minReg=1 wt=100.00> <RefPosition #88 @83 RefTypeUse <Ivl:3 V04> LCL_VAR BB03 regmask=[rax] minReg=1 last fixed wt=100.00> --- V05 --- V06 (Interval 4) <RefPosition #25 @26 RefTypeDef <Ivl:4 V06> STORE_LCL_VAR BB01 regmask=[allInt] minReg=1 wt=400.00> <RefPosition #26 @33 RefTypeUse <Ivl:4 V06> LCL_VAR BB01 regmask=[allInt] minReg=1 last regOptional wt=400.00> --- V07 --- V08 (Interval 5) <RefPosition #23 @22 RefTypeDef <Ivl:5 V08> STORE_LCL_VAR BB01 regmask=[allInt] minReg=1 wt=250.00> <RefPosition #24 @25 RefTypeUse <Ivl:5 V08> LCL_VAR BB01 regmask=[allInt] minReg=1 wt=250.00> <RefPosition #33 @51 RefTypeUse <Ivl:5 V08> LCL_VAR BB03 regmask=[rcx] minReg=1 last fixed wt=250.00> Allocating Registers -------------------- The following table has one or more rows for each RefPosition that is handled during allocation. The first column provides the basic information about the RefPosition, with its type (e.g. Def, Use, Fixd) followed by a '*' if it is a last use, and a 'D' if it is delayRegFree, and then the action taken during allocation (e.g. Alloc a new register, or Keep an existing one). The subsequent columns show the Interval occupying each register, if any, followed by 'a' if it is active, a '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 modifed register, which may increase during allocation, in which case additional columns will appear. Registers which are not marked modified have ---- in their column. ---------------------------------+----+----+----+----+----+----+----+----+----+ LocRP# Name Type Action Reg |rax |rcx |rdx |rbx |rbp |rsi |rdi |r8 |r9 | ---------------------------------+----+----+----+----+----+----+----+----+----+ | |V0 a|V1 a| | | | | | | 0.#0 V1 Parm ORDER(A) rsi | |V0 a| | | |V1 a| | | | 0.#1 V0 Parm Keep rcx | |V0 a| | | |V1 a| | | | 1.#2 BB1 PredBB0 | |V0 a| | | |V1 a| | | | 7.#3 rcx Fixd Keep rcx | |V0 a| | | |V1 a| | | | 7.#4 V0 Use * Keep rcx | |V0 a| | | |V1 a| | | | 8.#5 rcx Fixd Keep rcx | | | | | |V1 a| | | | 8.#6 I6 Def Alloc rcx | |I6 a| | | |V1 a| | | | 9.#7 rcx Fixd Keep rcx | |I6 a| | | |V1 a| | | | 9.#8 I6 Use * Keep rcx | |I6 a| | | |V1 a| | | | 10.#9 rax Kill Keep rax | | | | | |V1 a| | | | 10.#10 rcx Kill Keep rcx | | | | | |V1 a| | | | 10.#11 rdx Kill Keep rdx | | | | | |V1 a| | | | 10.#12 r8 Kill Keep r8 | | | | | |V1 a| | | | 10.#13 r9 Kill Keep r9 | | | | | |V1 a| | | | 10.#14 r10 Kill Keep r10 | | | | | |V1 a| | | | 10.#15 r11 Kill Keep r11 | | | | | |V1 a| | | | 10.#16 rax Fixd Keep rax | | | | | |V1 a| | | | 10.#17 I7 Def Alloc rax |I7 a| | | | |V1 a| | | | 13.#18 V1 Use Keep rsi |I7 a| | | | |V1 a| | | | 13.#19 I7 Use * Keep rax |I7 a| | | | |V1 a| | | | 19.#20 V1 Use * Keep rsi | | | | | |V1 a| | | | 20.#21 I8 Def RELPR(A) rcx | |I8 a| | | | | | | | 21.#22 I8 Use * Keep rcx | |I8 a| | | | | | | | 22.#23 V8 Def COVRS(A) rcx | |V8 a| | | | | | | | 25.#24 V8 Use Keep rcx | |V8 a| | | | | | | | 26.#25 V6 Def BSFIT(A) rax |V6 a|V8 a| | | | | | | | 33.#26 V6 Use * Keep rax |V6 a|V8 a| | | | | | | | ---------------------------------+----+----+----+----+----+----+----+----+----+ LocRP# Name Type Action Reg |rax |rcx |rdx |rbx |rbp |rsi |rdi |r8 |r9 | ---------------------------------+----+----+----+----+----+----+----+----+----+ 37.#27 BB2 PredBB1 | |V8 i| | | | | | | | 42.#28 C9 Def Alloc rax |C9 a|V8 i| | | | | | | | 43.#29 rax Fixd Keep rax |C9 a|V8 i| | | | | | | | 43.#30 C9 Use * Keep rax |C9 a|V8 i| | | | | | | | ---------------------------------+----+----+----+----+----+----+----+----+----+ LocRP# Name Type Action Reg |rax |rcx |rdx |rbx |rbp |rsi |rdi |r8 |r9 | ---------------------------------+----+----+----+----+----+----+----+----+----+ 45.#31 BB3 PredBB1 | |V8 a| | | | | | | | 51.#32 rcx Fixd Keep rcx | |V8 a| | | | | | | | 51.#33 V8 Use * Keep rcx | |V8 a| | | | | | | | 52.#34 rcx Fixd Keep rcx | | | | | | | | | | 52.#35 I10 Def Alloc rcx | |I10a| | | | | | | | 54.#36 I11 Def Alloc rdx | |I10a|I11a| | | | | | | 55.#37 rdx Fixd Keep rdx | |I10a|I11a| | | | | | | 55.#38 I11 Use * Keep rdx | |I10a|I11a| | | | | | | 56.#39 rdx Fixd Keep rdx | |I10a| | | | | | | | 56.#40 I12 Def Alloc rdx | |I10a|I12a| | | | | | | 57.#41 rcx Fixd Keep rcx | |I10a|I12a| | | | | | | 57.#42 I10 Use * Keep rcx | |I10a|I12a| | | | | | | 57.#43 rdx Fixd Keep rdx | |I10a|I12a| | | | | | | 57.#44 I12 Use * Keep rdx | |I10a|I12a| | | | | | | 58.#45 rax Kill Keep rax | | | | | | | | | | 58.#46 rcx Kill Keep rcx | | | | | | | | | | 58.#47 rdx Kill Keep rdx | | | | | | | | | | 58.#48 r8 Kill Keep r8 | | | | | | | | | | 58.#49 r9 Kill Keep r9 | | | | | | | | | | 58.#50 r10 Kill Keep r10 | | | | | | | | | | 58.#51 r11 Kill Keep r11 | | | | | | | | | | 58.#52 rax Fixd Keep rax | | | | | | | | | | 58.#53 I13 Def Alloc rax |I13a| | | | | | | | | 59.#54 I13 Use * Keep rax |I13a| | | | | | | | | 60.#55 V3 Def BSFIT(A) r8 | | | | | | | |V3 a| | 64.#56 I14 Def Alloc rcx | |I14a| | | | | |V3 a| | 65.#57 rcx Fixd Keep rcx | |I14a| | | | | |V3 a| | 65.#58 I14 Use * Keep rcx | |I14a| | | | | |V3 a| | 66.#59 rcx Fixd Keep rcx | | | | | | | |V3 a| | 66.#60 I15 Def Alloc rcx | |I15a| | | | | |V3 a| | 69.#61 r8 Fixd Keep r8 | |I15a| | | | | |V3 a| | 69.#62 V3 Use * Keep r8 | |I15a| | | | | |V3 a| | 70.#63 r8 Fixd Keep r8 | |I15a| | | | | | | | 70.#64 I16 Def Alloc r8 | |I15a| | | | | |I16a| | 72.#65 C17 Def Alloc rdx | |I15a|C17a| | | | |I16a| | 73.#66 rdx Fixd Keep rdx | |I15a|C17a| | | | |I16a| | 73.#67 C17 Use * Keep rdx | |I15a|C17a| | | | |I16a| | 74.#68 rdx Fixd Keep rdx | |I15a| | | | | |I16a| | 74.#69 I18 Def Alloc rdx | |I15a|I18a| | | | |I16a| | 75.#70 rcx Fixd Keep rcx | |I15a|I18a| | | | |I16a| | 75.#71 I15 Use * Keep rcx | |I15a|I18a| | | | |I16a| | 75.#72 r8 Fixd Keep r8 | |I15a|I18a| | | | |I16a| | 75.#73 I16 Use * Keep r8 | |I15a|I18a| | | | |I16a| | 75.#74 rdx Fixd Keep rdx | |I15a|I18a| | | | |I16a| | 75.#75 I18 Use * Keep rdx | |I15a|I18a| | | | |I16a| | 76.#76 rax Kill Keep rax | | | | | | | | | | 76.#77 rcx Kill Keep rcx | | | | | | | | | | 76.#78 rdx Kill Keep rdx | | | | | | | | | | 76.#79 r8 Kill Keep r8 | | | | | | | | | | 76.#80 r9 Kill Keep r9 | | | | | | | | | | 76.#81 r10 Kill Keep r10 | | | | | | | | | | 76.#82 r11 Kill Keep r11 | | | | | | | | | | 76.#83 rax Fixd Keep rax | | | | | | | | | | ---------------------------------+----+----+----+----+----+----+----+----+----+ LocRP# Name Type Action Reg |rax |rcx |rdx |rbx |rbp |rsi |rdi |r8 |r9 | ---------------------------------+----+----+----+----+----+----+----+----+----+ 76.#84 I19 Def Alloc rax |I19a| | | | | | | | | 77.#85 I19 Use * Keep rax |I19a| | | | | | | | | 78.#86 V4 Def COVRS(A) rax |V4 a| | | | | | | | | 83.#87 rax Fixd Keep rax |V4 a| | | | | | | | | 83.#88 V4 Use * Keep rax | | | | | | | | | | ------------ REFPOSITIONS AFTER ALLOCATION: ------------ <RefPosition #0 @0 RefTypeParamDef <Ivl:1 V01> BB00 regmask=[rsi] minReg=1 regOptional wt=100.00> <RefPosition #1 @0 RefTypeParamDef <Ivl:0 V00> BB00 regmask=[rcx] minReg=1 fixed regOptional wt=100.00> <RefPosition #2 @1 RefTypeBB BB01 regmask=[] minReg=1 wt=100.00> <RefPosition #3 @7 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00> <RefPosition #4 @7 RefTypeUse <Ivl:0 V00> LCL_VAR BB01 regmask=[rcx] minReg=1 last fixed wt=300.00> <RefPosition #5 @8 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00> <RefPosition #6 @8 RefTypeDef <Ivl:6> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00> <RefPosition #7 @9 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00> <RefPosition #8 @9 RefTypeUse <Ivl:6> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00> <RefPosition #9 @10 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 last wt=100.00> <RefPosition #10 @10 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 last wt=100.00> <RefPosition #11 @10 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 last wt=100.00> <RefPosition #12 @10 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 last wt=100.00> <RefPosition #13 @10 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 last wt=100.00> <RefPosition #14 @10 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 last wt=100.00> <RefPosition #15 @10 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 last wt=100.00> <RefPosition #16 @10 RefTypeFixedReg <Reg:rax> BB01 regmask=[rax] minReg=1 wt=100.00> <RefPosition #17 @10 RefTypeDef <Ivl:7> CALL BB01 regmask=[rax] minReg=1 fixed wt=400.00> <RefPosition #18 @13 RefTypeUse <Ivl:1 V01> LCL_VAR BB01 regmask=[rsi] minReg=1 wt=400.00> <RefPosition #19 @13 RefTypeUse <Ivl:7> BB01 regmask=[rax] minReg=1 last wt=100.00> <RefPosition #20 @19 RefTypeUse <Ivl:1 V01> LCL_VAR BB01 regmask=[rsi] minReg=1 last wt=400.00> <RefPosition #21 @20 RefTypeDef <Ivl:8> IND BB01 regmask=[rcx] minReg=1 wt=400.00> <RefPosition #22 @21 RefTypeUse <Ivl:8> BB01 regmask=[rcx] minReg=1 last wt=100.00> <RefPosition #23 @22 RefTypeDef <Ivl:5 V08> STORE_LCL_VAR BB01 regmask=[rcx] minReg=1 wt=250.00> <RefPosition #24 @25 RefTypeUse <Ivl:5 V08> LCL_VAR BB01 regmask=[rcx] minReg=1 wt=250.00> <RefPosition #25 @26 RefTypeDef <Ivl:4 V06> STORE_LCL_VAR BB01 regmask=[rax] minReg=1 wt=400.00> <RefPosition #26 @33 RefTypeUse <Ivl:4 V06> LCL_VAR BB01 regmask=[rax] minReg=1 last regOptional wt=400.00> <RefPosition #27 @37 RefTypeBB BB02 regmask=[] minReg=1 wt=50.00> <RefPosition #28 @42 RefTypeDef <Ivl:9> CNS_INT BB02 regmask=[rax] minReg=1 wt=200.00> <RefPosition #29 @43 RefTypeFixedReg <Reg:rax> BB02 regmask=[rax] minReg=1 wt=50.00> <RefPosition #30 @43 RefTypeUse <Ivl:9> BB02 regmask=[rax] minReg=1 last fixed wt=50.00> <RefPosition #31 @45 RefTypeBB BB03 regmask=[] minReg=1 wt=50.00> <RefPosition #32 @51 RefTypeFixedReg <Reg:rcx> BB03 regmask=[rcx] minReg=1 wt=50.00> <RefPosition #33 @51 RefTypeUse <Ivl:5 V08> LCL_VAR BB03 regmask=[rcx] minReg=1 last fixed wt=250.00> <RefPosition #34 @52 RefTypeFixedReg <Reg:rcx> BB03 regmask=[rcx] minReg=1 wt=50.00> <RefPosition #35 @52 RefTypeDef <Ivl:10> PUTARG_REG BB03 regmask=[rcx] minReg=1 fixed wt=200.00> <RefPosition #36 @54 RefTypeDef <Ivl:11> LCL_VAR_ADDR BB03 regmask=[rdx] minReg=1 wt=200.00> <RefPosition #37 @55 RefTypeFixedReg <Reg:rdx> BB03 regmask=[rdx] minReg=1 wt=50.00> <RefPosition #38 @55 RefTypeUse <Ivl:11> BB03 regmask=[rdx] minReg=1 last fixed wt=50.00> <RefPosition #39 @56 RefTypeFixedReg <Reg:rdx> BB03 regmask=[rdx] minReg=1 wt=50.00> <RefPosition #40 @56 RefTypeDef <Ivl:12> PUTARG_REG BB03 regmask=[rdx] minReg=1 fixed wt=200.00> <RefPosition #41 @57 RefTypeFixedReg <Reg:rcx> BB03 regmask=[rcx] minReg=1 wt=50.00> <RefPosition #42 @57 RefTypeUse <Ivl:10> BB03 regmask=[rcx] minReg=1 last fixed wt=50.00> <RefPosition #43 @57 RefTypeFixedReg <Reg:rdx> BB03 regmask=[rdx] minReg=1 wt=50.00> <RefPosition #44 @57 RefTypeUse <Ivl:12> BB03 regmask=[rdx] minReg=1 last fixed wt=50.00> <RefPosition #45 @58 RefTypeKill <Reg:rax> BB03 regmask=[rax] minReg=1 last wt=50.00> <RefPosition #46 @58 RefTypeKill <Reg:rcx> BB03 regmask=[rcx] minReg=1 last wt=50.00> <RefPosition #47 @58 RefTypeKill <Reg:rdx> BB03 regmask=[rdx] minReg=1 last wt=50.00> <RefPosition #48 @58 RefTypeKill <Reg:r8 > BB03 regmask=[r8] minReg=1 last wt=50.00> <RefPosition #49 @58 RefTypeKill <Reg:r9 > BB03 regmask=[r9] minReg=1 last wt=50.00> <RefPosition #50 @58 RefTypeKill <Reg:r10> BB03 regmask=[r10] minReg=1 last wt=50.00> <RefPosition #51 @58 RefTypeKill <Reg:r11> BB03 regmask=[r11] minReg=1 last wt=50.00> <RefPosition #52 @58 RefTypeFixedReg <Reg:rax> BB03 regmask=[rax] minReg=1 wt=50.00> <RefPosition #53 @58 RefTypeDef <Ivl:13> CALL BB03 regmask=[rax] minReg=1 fixed wt=200.00> <RefPosition #54 @59 RefTypeUse <Ivl:13> BB03 regmask=[rax] minReg=1 last wt=50.00> <RefPosition #55 @60 RefTypeDef <Ivl:2 V03> STORE_LCL_VAR BB03 regmask=[r8] minReg=1 wt=100.00> <RefPosition #56 @64 RefTypeDef <Ivl:14> LCL_VAR BB03 regmask=[rcx] minReg=1 wt=200.00> <RefPosition #57 @65 RefTypeFixedReg <Reg:rcx> BB03 regmask=[rcx] minReg=1 wt=50.00> <RefPosition #58 @65 RefTypeUse <Ivl:14> BB03 regmask=[rcx] minReg=1 last fixed wt=50.00> <RefPosition #59 @66 RefTypeFixedReg <Reg:rcx> BB03 regmask=[rcx] minReg=1 wt=50.00> <RefPosition #60 @66 RefTypeDef <Ivl:15> PUTARG_REG BB03 regmask=[rcx] minReg=1 fixed wt=200.00> <RefPosition #61 @69 RefTypeFixedReg <Reg:r8 > BB03 regmask=[r8] minReg=1 wt=50.00> <RefPosition #62 @69 RefTypeUse <Ivl:2 V03> LCL_VAR BB03 regmask=[r8] minReg=1 last fixed wt=100.00> <RefPosition #63 @70 RefTypeFixedReg <Reg:r8 > BB03 regmask=[r8] minReg=1 wt=50.00> <RefPosition #64 @70 RefTypeDef <Ivl:16> PUTARG_REG BB03 regmask=[r8] minReg=1 fixed wt=200.00> <RefPosition #65 @72 RefTypeDef <Ivl:17> CNS_INT BB03 regmask=[rdx] minReg=1 wt=200.00> <RefPosition #66 @73 RefTypeFixedReg <Reg:rdx> BB03 regmask=[rdx] minReg=1 wt=50.00> <RefPosition #67 @73 RefTypeUse <Ivl:17> BB03 regmask=[rdx] minReg=1 last fixed wt=50.00> <RefPosition #68 @74 RefTypeFixedReg <Reg:rdx> BB03 regmask=[rdx] minReg=1 wt=50.00> <RefPosition #69 @74 RefTypeDef <Ivl:18> PUTARG_REG BB03 regmask=[rdx] minReg=1 fixed wt=200.00> <RefPosition #70 @75 RefTypeFixedReg <Reg:rcx> BB03 regmask=[rcx] minReg=1 wt=50.00> <RefPosition #71 @75 RefTypeUse <Ivl:15> BB03 regmask=[rcx] minReg=1 last fixed wt=50.00> <RefPosition #72 @75 RefTypeFixedReg <Reg:r8 > BB03 regmask=[r8] minReg=1 wt=50.00> <RefPosition #73 @75 RefTypeUse <Ivl:16> BB03 regmask=[r8] minReg=1 last fixed wt=50.00> <RefPosition #74 @75 RefTypeFixedReg <Reg:rdx> BB03 regmask=[rdx] minReg=1 wt=50.00> <RefPosition #75 @75 RefTypeUse <Ivl:18> BB03 regmask=[rdx] minReg=1 last fixed wt=50.00> <RefPosition #76 @76 RefTypeKill <Reg:rax> BB03 regmask=[rax] minReg=1 last wt=50.00> <RefPosition #77 @76 RefTypeKill <Reg:rcx> BB03 regmask=[rcx] minReg=1 last wt=50.00> <RefPosition #78 @76 RefTypeKill <Reg:rdx> BB03 regmask=[rdx] minReg=1 last wt=50.00> <RefPosition #79 @76 RefTypeKill <Reg:r8 > BB03 regmask=[r8] minReg=1 last wt=50.00> <RefPosition #80 @76 RefTypeKill <Reg:r9 > BB03 regmask=[r9] minReg=1 last wt=50.00> <RefPosition #81 @76 RefTypeKill <Reg:r10> BB03 regmask=[r10] minReg=1 last wt=50.00> <RefPosition #82 @76 RefTypeKill <Reg:r11> BB03 regmask=[r11] minReg=1 last wt=50.00> <RefPosition #83 @76 RefTypeFixedReg <Reg:rax> BB03 regmask=[rax] minReg=1 wt=50.00> <RefPosition #84 @76 RefTypeDef <Ivl:19> CALL BB03 regmask=[rax] minReg=1 fixed wt=200.00> <RefPosition #85 @77 RefTypeUse <Ivl:19> BB03 regmask=[rax] minReg=1 last wt=50.00> <RefPosition #86 @78 RefTypeDef <Ivl:3 V04> STORE_LCL_VAR BB03 regmask=[rax] minReg=1 wt=100.00> <RefPosition #87 @83 RefTypeFixedReg <Reg:rax> BB03 regmask=[rax] minReg=1 wt=50.00> <RefPosition #88 @83 RefTypeUse <Ivl:3 V04> LCL_VAR BB03 regmask=[rax] minReg=1 last fixed wt=100.00> VAR REFPOSITIONS AFTER ALLOCATION --- V00 (Interval 0) <RefPosition #1 @0 RefTypeParamDef <Ivl:0 V00> BB00 regmask=[rcx] minReg=1 fixed regOptional wt=100.00> <RefPosition #4 @7 RefTypeUse <Ivl:0 V00> LCL_VAR BB01 regmask=[rcx] minReg=1 last fixed wt=300.00> --- V01 (Interval 1) <RefPosition #0 @0 RefTypeParamDef <Ivl:1 V01> BB00 regmask=[rsi] minReg=1 regOptional wt=100.00> <RefPosition #18 @13 RefTypeUse <Ivl:1 V01> LCL_VAR BB01 regmask=[rsi] minReg=1 wt=400.00> <RefPosition #20 @19 RefTypeUse <Ivl:1 V01> LCL_VAR BB01 regmask=[rsi] minReg=1 last wt=400.00> --- V02 --- V03 (Interval 2) <RefPosition #55 @60 RefTypeDef <Ivl:2 V03> STORE_LCL_VAR BB03 regmask=[r8] minReg=1 wt=100.00> <RefPosition #62 @69 RefTypeUse <Ivl:2 V03> LCL_VAR BB03 regmask=[r8] minReg=1 last fixed wt=100.00> --- V04 (Interval 3) <RefPosition #86 @78 RefTypeDef <Ivl:3 V04> STORE_LCL_VAR BB03 regmask=[rax] minReg=1 wt=100.00> <RefPosition #88 @83 RefTypeUse <Ivl:3 V04> LCL_VAR BB03 regmask=[rax] minReg=1 last fixed wt=100.00> --- V05 --- V06 (Interval 4) <RefPosition #25 @26 RefTypeDef <Ivl:4 V06> STORE_LCL_VAR BB01 regmask=[rax] minReg=1 wt=400.00> <RefPosition #26 @33 RefTypeUse <Ivl:4 V06> LCL_VAR BB01 regmask=[rax] minReg=1 last regOptional wt=400.00> --- V07 --- V08 (Interval 5) <RefPosition #23 @22 RefTypeDef <Ivl:5 V08> STORE_LCL_VAR BB01 regmask=[rcx] minReg=1 wt=250.00> <RefPosition #24 @25 RefTypeUse <Ivl:5 V08> LCL_VAR BB01 regmask=[rcx] minReg=1 wt=250.00> <RefPosition #33 @51 RefTypeUse <Ivl:5 V08> LCL_VAR BB03 regmask=[rcx] minReg=1 last fixed wt=250.00> Active intervals at end of allocation: ----------------------- RESOLVING BB BOUNDARIES ----------------------- Resolution Candidates: {V00 V01 V08} Has No Critical Edges Prior to Resolution BB01 use def in out {V00 V01} {V06 V08} {V00 V01} {V08} Var=Reg beg of BB01: V01=rsi V00=rcx Var=Reg end of BB01: V08=rcx BB02 use def in out {} {} {} {} Var=Reg beg of BB02: none Var=Reg end of BB02: none BB03 use def in out {V08} {V03 V04} {V08} {} Var=Reg beg of BB03: V08=rcx Var=Reg end of BB03: none RESOLVING EDGES Set V00 argument initial register to rcx Set V01 argument initial register to rsi Trees after linear scan register allocator (LSRA) ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..016)-> BB03 ( cond ) i hascall gcsafe LIR BB02 [0001] 1 BB01 0.50 [016..018) (return) i gcsafe LIR BB03 [0002] 1 BB01 0.50 [018..02D) (return) i hascall gcsafe newobj LIR ----------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [000..016) -> BB03 (cond), preds={} succs={BB02,BB03} N003 (???,???) [000054] ------------ IL_OFFSET void INLRT @ 0x000[E-] REG NA N005 ( 1, 1) [000001] ------------ t1 = LCL_VAR long V00 arg0 u:1 rcx (last use) REG rcx $80 /--* t1 long N007 (???,???) [000062] ------------ t62 = * PUTARG_REG long REG rcx /--* t62 long arg0 in rcx N009 ( 15, 7) [000002] --CXG------- t2 = * CALL long System.Runtime.RuntimeImports.RhGetOSModuleFromPointer REG rax $82 N011 ( 1, 1) [000000] ------------ t0 = LCL_VAR byref V01 arg1 u:1 rsi REG rsi $c0 /--* t0 byref +--* t2 long N013 (???,???) [000055] -ACXG------- * STOREIND long REG NA N015 (???,???) [000056] ------------ IL_OFFSET void INLRT @ 0x008[E-] REG NA N017 ( 1, 1) [000005] ------------ t5 = LCL_VAR byref V01 arg1 u:1 rsi (last use) REG rsi $c0 /--* t5 byref N019 ( 3, 2) [000006] *---GO------ t6 = * IND long REG rcx <l:$201, c:$200> /--* t6 long N021 ( 7, 5) [000050] DA--GO------ * STORE_LCL_VAR long V08 cse0 d:1 rcx REG rcx N023 ( 3, 2) [000051] ------------ t51 = LCL_VAR long V08 cse0 u:1 rcx REG rcx <l:$201, c:$200> /--* t51 long N025 ( 10, 7) [000039] DA--GO------ * STORE_LCL_VAR long V06 tmp1 d:1 rax REG rax N027 (???,???) [000057] ------------ IL_OFFSET void INLRT @ 0x008[E-] REG NA N029 ( 1, 1) [000033] ------------ t33 = LCL_VAR long V06 tmp1 u:1 rax (last use) REG rax <l:$140, c:$83> N031 ( 1, 1) [000036] -c---------- t36 = CNS_INT long 0 REG NA $240 /--* t33 long +--* t36 long N033 ( 3, 3) [000037] J---G--N---- * NE void REG NA <l:$281, c:$280> N035 ( 5, 5) [000013] ----G------- * JTRUE void REG NA ------------ BB02 [016..018) (return), preds={BB01} succs={} N039 (???,???) [000058] ------------ IL_OFFSET void INLRT @ 0x016[E-] REG NA N041 ( 1, 1) [000029] ------------ t29 = CNS_INT ref null REG rax $VN.Null /--* t29 ref N043 ( 2, 2) [000030] ------------ * RETURN ref REG NA $184 ------------ BB03 [018..02D) (return), preds={BB01} succs={} N047 (???,???) [000059] ------------ IL_OFFSET void INLRT @ 0x018[E-] REG NA N049 ( 3, 2) [000053] ------------ t53 = LCL_VAR long V08 cse0 u:1 rcx (last use) REG rcx <l:$140, c:$83> /--* t53 long N051 (???,???) [000063] ------------ t63 = * PUTARG_REG long REG rcx N053 ( 3, 3) [000017] ------------ t17 = LCL_VAR_ADDR long V02 loc0 rdx REG rdx $88 /--* t17 long N055 (???,???) [000064] ------------ t64 = * PUTARG_REG long REG rdx /--* t63 long arg0 in rcx +--* t64 long arg1 in rdx N057 ( 20, 12) [000018] --CXG------- t18 = * CALL int System.Runtime.RuntimeImports.RhGetModuleFileName REG rax $2c0 /--* t18 int N059 ( 24, 15) [000020] DA-XG------- * STORE_LCL_VAR int V03 loc1 d:1 r8 REG r8 N061 (???,???) [000060] ------------ IL_OFFSET void INLRT @ 0x022[E-] REG NA N063 ( 3, 2) [000021] ------------ t21 = LCL_VAR long (AX) V02 loc0 rcx REG rcx $141 /--* t21 long N065 (???,???) [000065] ------------ t65 = * PUTARG_REG long REG rcx N067 ( 3, 2) [000023] ------------ t23 = LCL_VAR int V03 loc1 u:1 r8 (last use) REG r8 $2c0 /--* t23 int N069 (???,???) [000066] ------------ t66 = * PUTARG_REG int REG r8 N071 ( 1, 1) [000022] ------------ t22 = CNS_INT int 0 REG rdx $40 /--* t22 int N073 (???,???) [000067] ------------ t67 = * PUTARG_REG int REG rdx /--* t65 long arg0 in rcx +--* t66 int arg2 in r8 +--* t67 int arg1 in rdx N075 ( 21, 13) [000024] --CXG------- t24 = * CALL ref System.String..ctor REG rax $181 /--* t24 ref N077 ( 25, 16) [000026] DA-XG------- * STORE_LCL_VAR ref V04 loc2 d:1 rax REG rax N079 (???,???) [000061] ------------ IL_OFFSET void INLRT @ 0x02B[E-] REG NA N081 ( 3, 2) [000027] ------------ t27 = LCL_VAR ref V04 loc2 u:1 rax (last use) REG rax $181 /--* t27 ref N083 ( 4, 3) [000028] ------------ * RETURN ref REG NA $183 ------------------------------------------------------------------------------------------------------------------- Final allocation ---------------------------------+----+----+----+----+----+----+----+----+----+ LocRP# Name Type Action Reg |rax |rcx |rdx |rbx |rbp |rsi |rdi |r8 |r9 | ---------------------------------+----+----+----+----+----+----+----+----+----+ 0.#0 V1 Parm Alloc rsi | | | | | |V1 a| | | | 0.#1 V0 Parm Alloc rcx | |V0 a| | | |V1 a| | | | 1.#2 BB1 PredBB0 | |V0 a| | | |V1 a| | | | 7.#3 rcx Fixd Keep rcx | |V0 a| | | |V1 a| | | | 7.#4 V0 Use * Keep rcx | |V0 i| | | |V1 a| | | | 8.#5 rcx Fixd Keep rcx | | | | | |V1 a| | | | 8.#6 I6 Def Alloc rcx | |I6 a| | | |V1 a| | | | 9.#7 rcx Fixd Keep rcx | |I6 a| | | |V1 a| | | | 9.#8 I6 Use * Keep rcx | |I6 i| | | |V1 a| | | | 10.#9 rax Kill Keep rax | | | | | |V1 a| | | | 10.#10 rcx Kill Keep rcx | | | | | |V1 a| | | | 10.#11 rdx Kill Keep rdx | | | | | |V1 a| | | | 10.#12 r8 Kill Keep r8 | | | | | |V1 a| | | | 10.#13 r9 Kill Keep r9 | | | | | |V1 a| | | | 10.#14 r10 Kill Keep r10 | | | | | |V1 a| | | | 10.#15 r11 Kill Keep r11 | | | | | |V1 a| | | | 10.#16 rax Fixd Keep rax | | | | | |V1 a| | | | 10.#17 I7 Def Alloc rax |I7 a| | | | |V1 a| | | | 13.#18 V1 Use Keep rsi |I7 a| | | | |V1 a| | | | 13.#19 I7 Use * Keep rax |I7 i| | | | |V1 a| | | | 19.#20 V1 Use * Keep rsi | | | | | |V1 i| | | | 20.#21 I8 Def Alloc rcx | |I8 a| | | | | | | | 21.#22 I8 Use * Keep rcx | |I8 i| | | | | | | | 22.#23 V8 Def Alloc rcx | |V8 a| | | | | | | | 25.#24 V8 Use Keep rcx | |V8 a| | | | | | | | 26.#25 V6 Def Alloc rax |V6 a|V8 a| | | | | | | | 33.#26 V6 Use * Keep rax |V6 i|V8 a| | | | | | | | ---------------------------------+----+----+----+----+----+----+----+----+----+ LocRP# Name Type Action Reg |rax |rcx |rdx |rbx |rbp |rsi |rdi |r8 |r9 | ---------------------------------+----+----+----+----+----+----+----+----+----+ 37.#27 BB2 PredBB1 | | | | | | | | | | 42.#28 C9 Def Alloc rax |C9 a| | | | | | | | | 43.#29 rax Fixd Keep rax |C9 a| | | | | | | | | 43.#30 C9 Use * Keep rax |C9 i| | | | | | | | | ---------------------------------+----+----+----+----+----+----+----+----+----+ LocRP# Name Type Action Reg |rax |rcx |rdx |rbx |rbp |rsi |rdi |r8 |r9 | ---------------------------------+----+----+----+----+----+----+----+----+----+ 45.#31 BB3 PredBB1 | |V8 a| | | | | | | | 51.#32 rcx Fixd Keep rcx | |V8 a| | | | | | | | 51.#33 V8 Use * Keep rcx | |V8 i| | | | | | | | 52.#34 rcx Fixd Keep rcx | | | | | | | | | | 52.#35 I10 Def Alloc rcx | |I10a| | | | | | | | 54.#36 I11 Def Alloc rdx | |I10a|I11a| | | | | | | 55.#37 rdx Fixd Keep rdx | |I10a|I11a| | | | | | | 55.#38 I11 Use * Keep rdx | |I10a|I11i| | | | | | | 56.#39 rdx Fixd Keep rdx | |I10a| | | | | | | | 56.#40 I12 Def Alloc rdx | |I10a|I12a| | | | | | | 57.#41 rcx Fixd Keep rcx | |I10a|I12a| | | | | | | 57.#42 I10 Use * Keep rcx | |I10i|I12a| | | | | | | 57.#43 rdx Fixd Keep rdx | | |I12a| | | | | | | 57.#44 I12 Use * Keep rdx | | |I12i| | | | | | | 58.#45 rax Kill Keep rax | | | | | | | | | | 58.#46 rcx Kill Keep rcx | | | | | | | | | | 58.#47 rdx Kill Keep rdx | | | | | | | | | | 58.#48 r8 Kill Keep r8 | | | | | | | | | | 58.#49 r9 Kill Keep r9 | | | | | | | | | | 58.#50 r10 Kill Keep r10 | | | | | | | | | | 58.#51 r11 Kill Keep r11 | | | | | | | | | | 58.#52 rax Fixd Keep rax | | | | | | | | | | 58.#53 I13 Def Alloc rax |I13a| | | | | | | | | 59.#54 I13 Use * Keep rax |I13i| | | | | | | | | 60.#55 V3 Def Alloc r8 | | | | | | | |V3 a| | 64.#56 I14 Def Alloc rcx | |I14a| | | | | |V3 a| | 65.#57 rcx Fixd Keep rcx | |I14a| | | | | |V3 a| | 65.#58 I14 Use * Keep rcx | |I14i| | | | | |V3 a| | 66.#59 rcx Fixd Keep rcx | | | | | | | |V3 a| | 66.#60 I15 Def Alloc rcx | |I15a| | | | | |V3 a| | 69.#61 r8 Fixd Keep r8 | |I15a| | | | | |V3 a| | 69.#62 V3 Use * Keep r8 | |I15a| | | | | |V3 i| | 70.#63 r8 Fixd Keep r8 | |I15a| | | | | | | | 70.#64 I16 Def Alloc r8 | |I15a| | | | | |I16a| | 72.#65 C17 Def Alloc rdx | |I15a|C17a| | | | |I16a| | 73.#66 rdx Fixd Keep rdx | |I15a|C17a| | | | |I16a| | 73.#67 C17 Use * Keep rdx | |I15a|C17i| | | | |I16a| | 74.#68 rdx Fixd Keep rdx | |I15a| | | | | |I16a| | 74.#69 I18 Def Alloc rdx | |I15a|I18a| | | | |I16a| | 75.#70 rcx Fixd Keep rcx | |I15a|I18a| | | | |I16a| | 75.#71 I15 Use * Keep rcx | |I15i|I18a| | | | |I16a| | 75.#72 r8 Fixd Keep r8 | | |I18a| | | | |I16a| | 75.#73 I16 Use * Keep r8 | | |I18a| | | | |I16i| | 75.#74 rdx Fixd Keep rdx | | |I18a| | | | | | | 75.#75 I18 Use * Keep rdx | | |I18i| | | | | | | 76.#76 rax Kill Keep rax | | | | | | | | | | 76.#77 rcx Kill Keep rcx | | | | | | | | | | 76.#78 rdx Kill Keep rdx | | | | | | | | | | 76.#79 r8 Kill Keep r8 | | | | | | | | | | 76.#80 r9 Kill Keep r9 | | | | | | | | | | 76.#81 r10 Kill Keep r10 | | | | | | | | | | 76.#82 r11 Kill Keep r11 | | | | | | | | | | 76.#83 rax Fixd Keep rax | | | | | | | | | | 76.#84 I19 Def Alloc rax |I19a| | | | | | | | | 77.#85 I19 Use * Keep rax |I19i| | | | | | | | | 78.#86 V4 Def Alloc rax |V4 a| | | | | | | | | 83.#87 rax Fixd Keep rax |V4 a| | | | | | | | | 83.#88 V4 Use * Keep rax |V4 i| | | | | | | | | Recording the maximum number of concurrent spills: ---------- LSRA Stats ---------- Register selection order: ABCDEFGHIJKLMNOPQ Total Tracked Vars: 6 Total Reg Cand Vars: 6 Total number of Intervals: 19 Total number of RefPositions: 88 Total Number of spill temps created: 0 .......... BB00 [ 100.00]: REG_ORDER = 1 BB01 [ 100.00]: COVERS = 1, RELATED_PREFERENCE = 1, BEST_FIT = 1 BB03 [ 50.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] : 2 Weighted: 150.000000 Total RELATED_PREFERENCE [# 7] : 1 Weighted: 100.000000 Total BEST_FIT [#11] : 2 Weighted: 150.000000 Total REG_ORDER [#13] : 1 Weighted: 100.000000 TUPLE STYLE DUMP WITH REGISTER ASSIGNMENTS Incoming Parameters: V01(rdx=>rsi) V00(rcx) BB01 [000..016) -> BB03 (cond), preds={} succs={BB02,BB03} ===== N003. IL_OFFSET INLRT @ 0x000[E-] N005. V00(rcx*) N007. rcx = PUTARG_REG; rcx* N009. rax = CALL ; rcx N011. V01(rsi) N013. STOREIND ; rsi,rax N015. IL_OFFSET INLRT @ 0x008[E-] N017. V01(rsi*) N019. rcx = IND ; rsi* * N021. V08(rcx); rcx N023. V08(rcx) * N025. V06(rax); rcx N027. IL_OFFSET INLRT @ 0x008[E-] N029. V06(rax*) N031. CNS_INT 0 N033. NE ; rax* N035. JTRUE Var=Reg end of BB01: V08=rcx BB02 [016..018) (return), preds={BB01} succs={} ===== Predecessor for variable locations: BB01 Var=Reg beg of BB02: none N039. IL_OFFSET INLRT @ 0x016[E-] N041. rax = CNS_INT null N043. RETURN ; rax Var=Reg end of BB02: none BB03 [018..02D) (return), preds={BB01} succs={} ===== Predecessor for variable locations: BB01 Var=Reg beg of BB03: V08=rcx N047. IL_OFFSET INLRT @ 0x018[E-] N049. V08(rcx*) N051. rcx = PUTARG_REG; rcx* N053. rdx = LCL_VAR_ADDR V02 loc0 rdx N055. rdx = PUTARG_REG; rdx N057. rax = CALL ; rcx,rdx * N059. V03(r8); rax N061. IL_OFFSET INLRT @ 0x022[E-] N063. rcx = V02 MEM N065. rcx = PUTARG_REG; rcx N067. V03(r8*) N069. r8 = PUTARG_REG; r8* N071. rdx = CNS_INT 0 N073. rdx = PUTARG_REG; rdx N075. rax = CALL ; rcx,r8,rdx * N077. V04(rax); rax N079. IL_OFFSET INLRT @ 0x02B[E-] N081. V04(rax*) N083. RETURN ; rax* Var=Reg end of BB03: none *************** Finishing PHASE Linear scan register alloc *************** Starting PHASE Place 'align' instructions *************** Finishing PHASE Place 'align' instructions *************** In genGenerateCode() ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..016)-> BB03 ( cond ) i hascall gcsafe LIR BB02 [0001] 1 BB01 0.50 [016..018) (return) i gcsafe LIR BB03 [0002] 1 BB01 0.50 [018..02D) (return) i hascall gcsafe newobj LIR ----------------------------------------------------------------------------------------------------------------------------------------- *************** Starting PHASE Generate code *************** In fgDebugCheckBBlist Finalizing stack frame Recording Var Locations at start of BB01 V01(rsi) V00(rcx) Modified regs: [rax rcx rdx rsi r8-r11] Callee-saved registers pushed: 1 [rsi] *************** In lvaAssignFrameOffsets(FINAL_FRAME_LAYOUT) Assign V02 loc0, size=8, stkOffs=-0x18 Assign V05 OutArgs, size=32, stkOffs=-0x38 --- delta bump 8 for RA --- delta bump 56 for RSP frame --- virtual stack offset to actual stack offset delta is 64 -- V00 was 0, now 64 -- V01 was 8, now 72 -- V02 was -24, now 40 -- V05 was -56, now 8 ; Final local variable assignments ; ; V00 arg0 [V00,T01] ( 3, 3 ) long -> rcx single-def ; V01 arg1 [V01,T00] ( 4, 4 ) byref -> rsi single-def ; V02 loc0 [V02 ] ( 2, 1 ) long -> [rsp+28H] do-not-enreg[X] addr-exposed ld-addr-op ; V03 loc1 [V03,T05] ( 2, 1 ) int -> r8 ; V04 loc2 [V04,T04] ( 2, 1 ) ref -> rax class-hnd exact single-def ; V05 OutArgs [V05 ] ( 1, 1 ) lclBlk (32) [rsp+00H] "OutgoingArgSpace" ; V06 tmp1 [V06,T02] ( 2, 4 ) long -> rax ld-addr-op "Inlining Arg" ;* V07 tmp2 [V07 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inlining Arg" ; V08 cse0 [V08,T03] ( 3, 2.50) long -> rcx "CSE - aggressive" ; ; Lcl frame size = 48 Mark labels for codegen BB01 : first block BB03 : branch target *************** After genMarkLabelsForCodegen() ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..016)-> BB03 ( cond ) i label hascall gcsafe LIR BB02 [0001] 1 BB01 0.50 [016..018) (return) i gcsafe LIR BB03 [0002] 1 BB01 0.50 [018..02D) (return) i label hascall gcsafe newobj LIR ----------------------------------------------------------------------------------------------------------------------------------------- Setting stack level from -572662307 to 0 =============== Generating BB01 [000..016) -> BB03 (cond), preds={} succs={BB02,BB03} flags=0x00000002.20090020: i label hascall gcsafe LIR BB01 IN (2)={V01 V00 } + ByrefExposed + GcHeap OUT(1)={ V08} + ByrefExposed + GcHeap Recording Var Locations at start of BB01 V01(rsi) V00(rcx) Change life 0000000000000000 {} -> 0000000000000003 {V00 V01} V01 in reg rsi is becoming live [------] Live regs: 00000000 {} => 00000040 {rsi} New debug range: first V00 in reg rcx is becoming live [------] Live regs: 00000040 {rsi} => 00000042 {rcx rsi} New debug range: first Live regs: (unchanged) 00000042 {rcx rsi} GC regs: (unchanged) 00000000 {} Byref regs: (unchanged) 00000040 {rsi} L_M61772_BB01: Mapped BB01 to G_M61772_IG02 Label: IG02, GCvars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000040 {rsi} Scope info: begin block BB01, IL range [000..016) Added IP mapping: 0x0000 STACK_EMPTY (G_M61772_IG02,ins#0,ofs#0) label Generating: N003 (???,???) [000054] ------------ IL_OFFSET void INLRT @ 0x000[E-] REG NA Generating: N005 ( 1, 1) [000001] ------------ t1 = LCL_VAR long V00 arg0 u:1 rcx (last use) REG rcx $80 /--* t1 long Generating: N007 (???,???) [000062] ------------ t62 = * PUTARG_REG long REG rcx V00 in reg rcx is becoming dead [000001] Live regs: 00000042 {rcx rsi} => 00000040 {rsi} Live vars: {V00 V01} => {V01} /--* t62 long arg0 in rcx Generating: N009 ( 15, 7) [000002] --CXG------- t2 = * CALL long System.Runtime.RuntimeImports.RhGetOSModuleFromPointer REG rax $82 Call: GCvars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000040 {rsi} IN0001: call System.Runtime.RuntimeImports:RhGetOSModuleFromPointer(long):long Generating: N011 ( 1, 1) [000000] ------------ t0 = LCL_VAR byref V01 arg1 u:1 rsi REG rsi $c0 /--* t0 byref +--* t2 long Generating: N013 (???,???) [000055] -ACXG------- * STOREIND long REG NA IN0002: mov qword ptr [rsi], rax Added IP mapping: 0x0008 STACK_EMPTY (G_M61772_IG02,ins#2,ofs#8) Generating: N015 (???,???) [000056] ------------ IL_OFFSET void INLRT @ 0x008[E-] REG NA Generating: N017 ( 1, 1) [000005] ------------ t5 = LCL_VAR byref V01 arg1 u:1 rsi (last use) REG rsi $c0 /--* t5 byref Generating: N019 ( 3, 2) [000006] *---GO------ t6 = * IND long REG rcx <l:$201, c:$200> V01 in reg rsi is becoming dead [000005] Live regs: 00000040 {rsi} => 00000000 {} Live vars: {V01} => {} Byref regs: 00000040 {rsi} => 00000000 {} IN0003: mov rcx, qword ptr [rsi] /--* t6 long Generating: N021 ( 7, 5) [000050] DA--GO------ * STORE_LCL_VAR long V08 cse0 d:1 rcx REG rcx V08 in reg rcx is becoming live [000050] Live regs: 00000000 {} => 00000002 {rcx} Live vars: {} => {V08} Generating: N023 ( 3, 2) [000051] ------------ t51 = LCL_VAR long V08 cse0 u:1 rcx REG rcx <l:$201, c:$200> /--* t51 long Generating: N025 ( 10, 7) [000039] DA--GO------ * STORE_LCL_VAR long V06 tmp1 d:1 rax REG rax IN0004: mov rax, rcx V06 in reg rax is becoming live [000039] Live regs: 00000002 {rcx} => 00000003 {rax rcx} Live vars: {V08} => {V06 V08} genIPmappingAdd: ignoring duplicate IL offset 0x8 Generating: N027 (???,???) [000057] ------------ IL_OFFSET void INLRT @ 0x008[E-] REG NA Generating: N029 ( 1, 1) [000033] ------------ t33 = LCL_VAR long V06 tmp1 u:1 rax (last use) REG rax <l:$140, c:$83> Generating: N031 ( 1, 1) [000036] -c---------- t36 = CNS_INT long 0 REG NA $240 /--* t33 long +--* t36 long Generating: N033 ( 3, 3) [000037] J---G--N---- * NE void REG NA <l:$281, c:$280> V06 in reg rax is becoming dead [000033] Live regs: 00000003 {rax rcx} => 00000002 {rcx} Live vars: {V06 V08} => {V08} IN0005: test rax, rax Generating: N035 ( 5, 5) [000013] ----G------- * JTRUE void REG NA IN0006: jne L_M61772_BB03 Variable Live Range History Dump for BB01 V00 arg0: rcx [(G_M61772_IG02,ins#0,ofs#0), (G_M61772_IG02,ins#0,ofs#0)] V01 arg1: rsi [(G_M61772_IG02,ins#0,ofs#0), (G_M61772_IG02,ins#2,ofs#8)] =============== Generating BB02 [016..018) (return), preds={BB01} succs={} flags=0x00000000.20080020: i gcsafe LIR BB02 IN (0)={} OUT(0)={} Recording Var Locations at start of BB02 <none> Change life 0000000000000008 {V08} -> 0000000000000000 {} V08 in reg rcx is becoming dead [------] Live regs: (unchanged) 00000000 {} Live regs: (unchanged) 00000000 {} GC regs: (unchanged) 00000000 {} Byref regs: (unchanged) 00000000 {} L_M61772_BB02: Adding label due to BB weight difference: BBJ_COND BB01 with weight 100 different from BB02 with weight 50 G_M61772_IG02: ; offs=000000H, funclet=00, bbWeight=1 Mapped BB02 to G_M61772_IG03 Label: IG03, GCvars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {} Scope info: begin block BB02, IL range [016..018) Added IP mapping: 0x0016 STACK_EMPTY (G_M61772_IG03,ins#0,ofs#0) label Generating: N039 (???,???) [000058] ------------ IL_OFFSET void INLRT @ 0x016[E-] REG NA Generating: N041 ( 1, 1) [000029] ------------ t29 = CNS_INT ref null REG rax $VN.Null IN0007: xor rax, rax GC regs: 00000000 {} => 00000001 {rax} /--* t29 ref Generating: N043 ( 2, 2) [000030] ------------ * RETURN ref REG NA $184 GC regs: 00000001 {rax} => 00000000 {} Added IP mapping: EPILOG (G_M61772_IG03,ins#1,ofs#2) label GC regs: 00000000 {} => 00000001 {rax} Extending return value GC liveness to epilog Reserving epilog IG for block BB02 G_M61772_IG03: ; offs=000017H, funclet=00, bbWeight=0.50 *************** After placeholder IG creation G_M61772_IG01: ; func=00, offs=000000H, size=0000H, gcrefRegs=00000000 {} <-- Prolog IG G_M61772_IG02: ; offs=000000H, size=0017H, gcrefRegs=00000000 {}, byrefRegs=00000040 {rsi}, BB01 [0000], byref G_M61772_IG03: ; offs=000017H, size=0002H, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB02 [0001], byref G_M61772_IG04: ; epilog placeholder, next placeholder=<END>, BB02 [0001], epilog, extend <-- First placeholder <-- Last placeholder ; PrevGCVars=0000000000000000 {}, PrevGCrefRegs=00000000 {}, PrevByrefRegs=00000040 {rsi} ; InitGCVars=0000000000000000 {}, InitGCrefRegs=00000000 {}, InitByrefRegs=00000000 {} G_M61772_IG05: ; offs=000119H, size=0000H, gcrefRegs=00000000 {} <-- Current IG Variable Live Range History Dump for BB02 ..None.. =============== Generating BB03 [018..02D) (return), preds={BB01} succs={} flags=0x00000002.20490020: i label hascall gcsafe newobj LIR BB03 IN (1)={V08} + ByrefExposed + GcHeap OUT(0)={ } Recording Var Locations at start of BB03 V08(rcx) Change life 0000000000000000 {} -> 0000000000000008 {V08} V08 in reg rcx is becoming live [------] Live regs: 00000000 {} => 00000002 {rcx} Live regs: (unchanged) 00000002 {rcx} GC regs: (unchanged) 00000000 {} Byref regs: (unchanged) 00000000 {} L_M61772_BB03: Mapped BB03 to G_M61772_IG05 Label: IG05, GCvars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {} Scope info: begin block BB03, IL range [018..02D) Added IP mapping: 0x0018 STACK_EMPTY (G_M61772_IG05,ins#0,ofs#0) label Generating: N047 (???,???) [000059] ------------ IL_OFFSET void INLRT @ 0x018[E-] REG NA Generating: N049 ( 3, 2) [000053] ------------ t53 = LCL_VAR long V08 cse0 u:1 rcx (last use) REG rcx <l:$140, c:$83> /--* t53 long Generating: N051 (???,???) [000063] ------------ t63 = * PUTARG_REG long REG rcx V08 in reg rcx is becoming dead [000053] Live regs: 00000002 {rcx} => 00000000 {} Live vars: {V08} => {} Generating: N053 ( 3, 3) [000017] ------------ t17 = LCL_VAR_ADDR long V02 loc0 rdx REG rdx $88 IN0008: lea rdx, [V02 rsp+28H] /--* t17 long Generating: N055 (???,???) [000064] ------------ t64 = * PUTARG_REG long REG rdx /--* t63 long arg0 in rcx +--* t64 long arg1 in rdx Generating: N057 ( 20, 12) [000018] --CXG------- t18 = * CALL int System.Runtime.RuntimeImports.RhGetModuleFileName REG rax $2c0 Call: GCvars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {} IN0009: call System.Runtime.RuntimeImports:RhGetModuleFileName(long,byref):int /--* t18 int Generating: N059 ( 24, 15) [000020] DA-XG------- * STORE_LCL_VAR int V03 loc1 d:1 r8 REG r8 IN000a: mov r8d, eax V03 in reg r8 is becoming live [000020] Live regs: 00000000 {} => 00000100 {r8} Live vars: {} => {V03} New debug range: first Added IP mapping: 0x0022 STACK_EMPTY (G_M61772_IG05,ins#3,ofs#13) Generating: N061 (???,???) [000060] ------------ IL_OFFSET void INLRT @ 0x022[E-] REG NA Generating: N063 ( 3, 2) [000021] ------------ t21 = LCL_VAR long (AX) V02 loc0 rcx REG rcx $141 IN000b: mov rcx, qword ptr [V02 rsp+28H] /--* t21 long Generating: N065 (???,???) [000065] ------------ t65 = * PUTARG_REG long REG rcx Generating: N067 ( 3, 2) [000023] ------------ t23 = LCL_VAR int V03 loc1 u:1 r8 (last use) REG r8 $2c0 /--* t23 int Generating: N069 (???,???) [000066] ------------ t66 = * PUTARG_REG int REG r8 V03 in reg r8 is becoming dead [000023] Live regs: 00000100 {r8} => 00000000 {} Live vars: {V03} => {} Generating: N071 ( 1, 1) [000022] ------------ t22 = CNS_INT int 0 REG rdx $40 IN000c: xor edx, edx /--* t22 int Generating: N073 (???,???) [000067] ------------ t67 = * PUTARG_REG int REG rdx /--* t65 long arg0 in rcx +--* t66 int arg2 in r8 +--* t67 int arg1 in rdx Generating: N075 ( 21, 13) [000024] --CXG------- t24 = * CALL ref System.String..ctor REG rax $181 Call: GCvars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {} IN000d: call System.String:.ctor(long,int,int):this GC regs: 00000000 {} => 00000001 {rax} /--* t24 ref Generating: N077 ( 25, 16) [000026] DA-XG------- * STORE_LCL_VAR ref V04 loc2 d:1 rax REG rax GC regs: 00000001 {rax} => 00000000 {} V04 in reg rax is becoming live [000026] Live regs: 00000000 {} => 00000001 {rax} Live vars: {} => {V04} New debug range: first GC regs: 00000000 {} => 00000001 {rax} Added IP mapping: 0x002B STACK_EMPTY (G_M61772_IG05,ins#6,ofs#25) Generating: N079 (???,???) [000061] ------------ IL_OFFSET void INLRT @ 0x02B[E-] REG NA Generating: N081 ( 3, 2) [000027] ------------ t27 = LCL_VAR ref V04 loc2 u:1 rax (last use) REG rax $181 /--* t27 ref Generating: N083 ( 4, 3) [000028] ------------ * RETURN ref REG NA $183 V04 in reg rax is becoming dead [000027] Live regs: 00000001 {rax} => 00000000 {} Live vars: {V04} => {} GC regs: 00000001 {rax} => 00000000 {} Added IP mapping: EPILOG (G_M61772_IG05,ins#6,ofs#25) label GC regs: 00000000 {} => 00000001 {rax} Extending return value GC liveness to epilog Reserving epilog IG for block BB03 IN000e: nop G_M61772_IG05: ; offs=000119H, funclet=00, bbWeight=0.50 *************** After placeholder IG creation G_M61772_IG01: ; func=00, offs=000000H, size=0000H, gcrefRegs=00000000 {} <-- Prolog IG G_M61772_IG02: ; offs=000000H, size=0017H, gcrefRegs=00000000 {}, byrefRegs=00000040 {rsi}, BB01 [0000], byref G_M61772_IG03: ; offs=000017H, size=0002H, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB02 [0001], byref G_M61772_IG04: ; epilog placeholder, next placeholder=IG06 , BB02 [0001], epilog, extend <-- First placeholder ; PrevGCVars=0000000000000000 {}, PrevGCrefRegs=00000000 {}, PrevByrefRegs=00000040 {rsi} ; InitGCVars=0000000000000000 {}, InitGCrefRegs=00000000 {}, InitByrefRegs=00000000 {} G_M61772_IG05: ; offs=000119H, size=001AH, gcVars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB03 [0002], gcvars, byref G_M61772_IG06: ; epilog placeholder, next placeholder=<END>, BB03 [0002], epilog, extend <-- Last placeholder ; PrevGCVars=0000000000000000 {}, PrevGCrefRegs=00000000 {}, PrevByrefRegs=00000040 {rsi} ; InitGCVars=0000000000000000 {}, InitGCrefRegs=00000000 {}, InitByrefRegs=00000000 {} Variable Live Range History Dump for BB03 V03 loc1: r8 [(G_M61772_IG05,ins#3,ofs#13), (G_M61772_IG05,ins#4,ofs#18)] V04 loc2: rax [(G_M61772_IG05,ins#6,ofs#25), (G_M61772_IG05,ins#6,ofs#25)] Liveness not changing: 0000000000000000 {} # compCycleEstimate = 89, compSizeEstimate = 58 Internal.Runtime.Augments.RuntimeAugments:TryGetFullPathToApplicationModule(long,byref):System.String ; Final local variable assignments ; ; V00 arg0 [V00,T01] ( 3, 3 ) long -> rcx single-def ; V01 arg1 [V01,T00] ( 4, 4 ) byref -> rsi single-def ; V02 loc0 [V02 ] ( 2, 1 ) long -> [rsp+28H] do-not-enreg[X] addr-exposed ld-addr-op ; V03 loc1 [V03,T05] ( 2, 1 ) int -> r8 ; V04 loc2 [V04,T04] ( 2, 1 ) ref -> rax class-hnd exact single-def ; V05 OutArgs [V05 ] ( 1, 1 ) lclBlk (32) [rsp+00H] "OutgoingArgSpace" ; V06 tmp1 [V06,T02] ( 2, 4 ) long -> rax ld-addr-op "Inlining Arg" ;* V07 tmp2 [V07 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inlining Arg" ; V08 cse0 [V08,T03] ( 3, 2.50) long -> rcx "CSE - aggressive" ; ; Lcl frame size = 48 *************** Before prolog / epilog generation G_M61772_IG01: ; func=00, offs=000000H, size=0000H, gcrefRegs=00000000 {} <-- Prolog IG G_M61772_IG02: ; offs=000000H, size=0017H, gcrefRegs=00000000 {}, byrefRegs=00000040 {rsi}, BB01 [0000], byref G_M61772_IG03: ; offs=000017H, size=0002H, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB02 [0001], byref G_M61772_IG04: ; epilog placeholder, next placeholder=IG06 , BB02 [0001], epilog, extend <-- First placeholder ; PrevGCVars=0000000000000000 {}, PrevGCrefRegs=00000000 {}, PrevByrefRegs=00000040 {rsi} ; InitGCVars=0000000000000000 {}, InitGCrefRegs=00000000 {}, InitByrefRegs=00000000 {} G_M61772_IG05: ; offs=000119H, size=001AH, gcVars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB03 [0002], gcvars, byref G_M61772_IG06: ; epilog placeholder, next placeholder=<END>, BB03 [0002], epilog, extend <-- Last placeholder ; PrevGCVars=0000000000000000 {}, PrevGCrefRegs=00000000 {}, PrevByrefRegs=00000040 {rsi} ; InitGCVars=0000000000000000 {}, InitGCrefRegs=00000000 {}, InitByrefRegs=00000000 {} Recording Var Locations at start of BB01 V01(rsi) V00(rcx) *************** In genFnProlog() Added IP mapping to front: PROLOG (G_M61772_IG01,ins#0,ofs#0) label __prolog: New debug range: first New debug range: first IN000f: push rsi IN0010: sub rsp, 48 *************** In genFnPrologCalleeRegArgs() for int regs IN0011: mov rsi, rdx *************** In genEnregisterIncomingStackArgs() G_M61772_IG01: ; offs=000000H, funclet=00, bbWeight=1 *************** In genFnEpilog() __epilog: gcVarPtrSetCur=0000000000000000 {}, gcRegGCrefSetCur=00000000 {}, gcRegByrefSetCur=00000000 {} IN0012: add rsp, 48 IN0013: pop rsi IN0014: ret G_M61772_IG04: ; offs=000019H, funclet=00, bbWeight=0.50 *************** In genFnEpilog() __epilog: gcVarPtrSetCur=0000000000000000 {}, gcRegGCrefSetCur=00000000 {}, gcRegByrefSetCur=00000000 {} IN0015: add rsp, 48 IN0016: pop rsi IN0017: ret G_M61772_IG06: ; offs=000133H, funclet=00, bbWeight=0.50 0 prologs, 2 epilogs, 0 funclet prologs, 0 funclet epilogs *************** After prolog / epilog generation G_M61772_IG01: ; func=00, offs=000000H, size=0008H, gcVars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, nogc <-- Prolog IG G_M61772_IG02: ; offs=000008H, size=0017H, gcrefRegs=00000000 {}, byrefRegs=00000040 {rsi}, BB01 [0000], byref G_M61772_IG03: ; offs=00001FH, size=0002H, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB02 [0001], byref G_M61772_IG04: ; offs=000021H, size=0006H, epilog, nogc, extend G_M61772_IG05: ; offs=000027H, size=001AH, gcVars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB03 [0002], gcvars, byref G_M61772_IG06: ; offs=000041H, size=0006H, epilog, nogc, extend *************** In emitJumpDistBind() Binding: IN0006: 000000 jne L_M61772_BB03 Binding L_M61772_BB03 to G_M61772_IG05 Estimate of fwd jump [7C960874/006]: 0019 -> 0027 = 000C Shrinking jump [7C960874/006] Adjusted offset of BB03 from 001F to 001B Adjusted offset of BB04 from 0021 to 001D Adjusted offset of BB05 from 0027 to 0023 Adjusted offset of BB06 from 0041 to 003D Total shrinkage = 4, min extra jump size = 4294967295 *************** Finishing PHASE Generate code *************** Starting PHASE Emit code Hot code size = 0x43 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_M61772_IG01: ; func=00, offs=000000H, size=0008H, gcVars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, nogc <-- Prolog IG IN000f: 000000 56 push rsi IN0010: 000001 4883EC30 sub rsp, 48 IN0011: 000005 488BF2 mov rsi, rdx ; byrRegs +[rsi] ;; bbWeight=1 PerfScore 1.50 G_M61772_IG02: ; func=00, offs=000008H, size=0013H, gcrefRegs=00000000 {}, byrefRegs=00000040 {rsi}, BB01 [0000], byref, isz IN0001: 000008 E800000000 call System.Runtime.RuntimeImports:RhGetOSModuleFromPointer(long):long ; gcr arg pop 0 IN0002: 00000D 488906 mov qword ptr [rsi], rax IN0003: 000010 488B0E mov rcx, qword ptr [rsi] IN0004: 000013 488BC1 mov rax, rcx IN0005: 000016 4885C0 test rax, rax IN0006: 000019 7508 jne SHORT G_M61772_IG05 ;; bbWeight=1 PerfScore 5.50 G_M61772_IG03: ; func=00, offs=00001BH, size=0002H, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB02 [0001], byref ; byrRegs -[rsi] IN0007: 00001B 33C0 xor rax, rax ; gcrRegs +[rax] ;; bbWeight=0.50 PerfScore 0.12 G_M61772_IG04: ; func=00, offs=00001DH, size=0006H, epilog, nogc, extend IN0012: 00001D 4883C430 add rsp, 48 IN0013: 000021 5E pop rsi IN0014: 000022 C3 ret ;; bbWeight=0.50 PerfScore 0.88 G_M61772_IG05: ; func=00, offs=000023H, size=001AH, gcVars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB03 [0002], gcvars, byref ; gcrRegs -[rax] IN0008: 000023 488D542428 lea rdx, [rsp+28H] IN0009: 000028 E800000000 call System.Runtime.RuntimeImports:RhGetModuleFileName(long,byref):int ; gcr arg pop 0 IN000a: 00002D 448BC0 mov r8d, eax IN000b: 000030 488B4C2428 mov rcx, qword ptr [rsp+28H] IN000c: 000035 33D2 xor edx, edx IN000d: 000037 E800000000 call System.String:.ctor(long,int,int):this ; gcrRegs +[rax] ; gcr arg pop 0 IN000e: 00003C 90 nop ;; bbWeight=0.50 PerfScore 2.12 G_M61772_IG06: ; func=00, offs=00003DH, size=0006H, epilog, nogc, extend IN0015: 00003D 4883C430 add rsp, 48 IN0016: 000041 5E pop rsi IN0017: 000042 C3 ret ;; bbWeight=0.50 PerfScore 0.88Allocated method code size = 67 , actual size = 67, unused size = 0 ; Total bytes of code 67, prolog size 5, PerfScore 17.70, instruction count 23, allocated bytes for code 67 (MethodHash=11dd0eb3) for method Internal.Runtime.Augments.RuntimeAugments:TryGetFullPathToApplicationModule(long,byref):System.String ; ============================================================ *************** After end code gen, before unwindEmit() G_M61772_IG01: ; func=00, offs=000000H, size=0008H, bbWeight=1 PerfScore 1.50, gcVars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, nogc <-- Prolog IG IN000f: 000000 push rsi IN0010: 000001 sub rsp, 48 IN0011: 000005 mov rsi, rdx G_M61772_IG02: ; offs=000008H, size=0013H, bbWeight=1 PerfScore 5.50, gcrefRegs=00000000 {}, byrefRegs=00000040 {rsi}, BB01 [0000], byref, isz IN0001: 000008 call System.Runtime.RuntimeImports:RhGetOSModuleFromPointer(long):long IN0002: 00000D mov qword ptr [rsi], rax IN0003: 000010 mov rcx, qword ptr [rsi] IN0004: 000013 mov rax, rcx IN0005: 000016 test rax, rax IN0006: 000019 jne SHORT G_M61772_IG05 G_M61772_IG03: ; offs=00001BH, size=0002H, bbWeight=0.50 PerfScore 0.12, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB02 [0001], byref IN0007: 00001B xor rax, rax G_M61772_IG04: ; offs=00001DH, size=0006H, bbWeight=0.50 PerfScore 0.88, epilog, nogc, extend IN0012: 00001D add rsp, 48 IN0013: 000021 pop rsi IN0014: 000022 ret G_M61772_IG05: ; offs=000023H, size=001AH, bbWeight=0.50 PerfScore 2.12, gcVars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB03 [0002], gcvars, byref IN0008: 000023 lea rdx, [V02 rsp+28H] IN0009: 000028 call System.Runtime.RuntimeImports:RhGetModuleFileName(long,byref):int IN000a: 00002D mov r8d, eax IN000b: 000030 mov rcx, qword ptr [V02 rsp+28H] IN000c: 000035 xor edx, edx IN000d: 000037 call System.String:.ctor(long,int,int):this IN000e: 00003C nop G_M61772_IG06: ; offs=00003DH, size=0006H, bbWeight=0.50 PerfScore 0.88, epilog, nogc, extend IN0015: 00003D add rsp, 48 IN0016: 000041 pop rsi IN0017: 000042 ret *************** Finishing PHASE Emit code *************** Starting PHASE Emit GC+EH tables Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0x000043 (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: rsi (6) allocUnwindInfo(pHotCode=0x000001F9EEE6EB48, pColdCode=0x0000000000000000, startOffset=0x0, endOffset=0x43, unwindSize=0x8, pUnwindBlock=0x000001FE79EDFAA0, funKind=0 (main function)) *************** In genIPmappingGen() IP mapping count : 9 IL offs PROLOG : 0x00000000 ( STACK_EMPTY ) IL offs 0x0000 : 0x00000008 ( STACK_EMPTY ) IL offs 0x0008 : 0x00000010 ( STACK_EMPTY ) IL offs 0x0016 : 0x0000001B ( STACK_EMPTY ) IL offs EPILOG : 0x0000001D ( STACK_EMPTY ) IL offs 0x0018 : 0x00000023 ( STACK_EMPTY ) IL offs 0x0022 : 0x00000030 ( STACK_EMPTY ) IL offs 0x002B : 0x0000003C ( STACK_EMPTY ) IL offs EPILOG : 0x0000003C ( STACK_EMPTY ) *************** In genSetScopeInfo() VarLocInfo count is 6 ; Variable debug info: 5 live ranges, 4 vars for method Internal.Runtime.Augments.RuntimeAugments:TryGetFullPathToApplicationModule(long,byref):System.String 0( UNKNOWN) : From 00000000h to 00000008h, in rcx 1( UNKNOWN) : From 00000000h to 00000008h, in rdx 1( UNKNOWN) : From 00000008h to 00000010h, in rsi 3( UNKNOWN) : From 00000030h to 00000035h, in r8 4( UNKNOWN) : From 0000003Ch to 0000003Ch, in rax VARIABLE LIVE RANGES: V00 arg0: rcx [8, 8) V01 arg1: rsi [8, 10) V03 loc1: r8 [30, 35) V04 loc2: rax [3C, 3C) *************** In gcInfoBlockHdrSave() Set code length to 67. Set ReturnKind to Object. Set Outgoing stack arg area size to 32. Register slot id for reg rsi (byref) = 0. Set state of slot 0 at instr offset 0x8 to Live. Set state of slot 0 at instr offset 0xd to Dead. Defining 3 call sites: Offset 0x8, size 5. Offset 0x28, size 5. Offset 0x37, size 5. *************** Finishing PHASE Emit GC+EH tables Method code size: 67 Allocations for Internal.Runtime.Augments.RuntimeAugments:TryGetFullPathToApplicationModule(long,byref):System.String (MethodHash=11dd0eb3) count: 918, size: 79967, max = 3072 allocateMemory: 131072, nraUsed: 85368 Alloc'd bytes by kind: kind | size | pct ---------------------+------------+-------- AssertionProp | 6684 | 8.36% ASTNode | 9280 | 11.60% InstDesc | 3960 | 4.95% ImpStack | 384 | 0.48% BasicBlock | 1720 | 2.15% fgArgInfo | 432 | 0.54% fgArgInfoPtrArr | 48 | 0.06% FlowList | 80 | 0.10% TreeStatementList | 64 | 0.08% SiScope | 0 | 0.00% DominatorMemory | 192 | 0.24% LSRA | 4808 | 6.01% LSRA_Interval | 1600 | 2.00% LSRA_RefPosition | 5696 | 7.12% Reachability | 32 | 0.04% SSA | 624 | 0.78% ValueNumber | 10428 | 13.04% LvaTable | 2244 | 2.81% UnwindInfo | 0 | 0.00% hashBv | 120 | 0.15% bitset | 104 | 0.13% FixedBitVect | 40 | 0.05% Generic | 1658 | 2.07% LocalAddressVisitor | 0 | 0.00% FieldSeqStore | 0 | 0.00% ZeroOffsetFieldMap | 80 | 0.10% ArrayInfoMap | 40 | 0.05% MemoryPhiArg | 0 | 0.00% CSE | 1192 | 1.49% GC | 2539 | 3.18% CorTailCallInfo | 0 | 0.00% Inlining | 2176 | 2.72% ArrayStack | 0 | 0.00% DebugInfo | 632 | 0.79% DebugOnly | 19785 | 24.74% Codegen | 848 | 1.06% LoopOpt | 72 | 0.09% LoopClone | 0 | 0.00% LoopHoist | 0 | 0.00% Unknown | 373 | 0.47% RangeCheck | 0 | 0.00% CopyProp | 632 | 0.79% SideEffects | 0 | 0.00% ObjectAllocator | 0 | 0.00% VariableLiveRanges | 1192 | 1.49% ClassLayout | 0 | 0.00% TailMergeThrows | 0 | 0.00% EarlyProp | 0 | 0.00% ZeroInit | 208 | 0.26% Pgo | 0 | 0.00% ****** DONE compiling Internal.Runtime.Augments.RuntimeAugments:TryGetFullPathToApplicationModule(long,byref):System.String C:\prj\runtime\artifacts\tests\coreclr\windows.x64.Checked\nativeaot\SmokeTests\Exceptions\Exceptions\native>"C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.30.30705\bin\Hostx64\x64\link.exe" @"C:\prj\runtime\artifacts\tests\coreclr\windows.x64.Checked\nativeaot\SmokeTests\Exceptions\Exceptions\native\link.rsp" Creating library C:\prj\runtime\artifacts\tests\coreclr\windows.x64.Checked\nativeaot\SmokeTests\Exceptions\Exceptions\native\Exceptions.lib and object C:\prj\runtime\artifacts\tests\coreclr\windows.x64.Checked\nativeaot\SmokeTests\Exceptions\Exceptions\native\Exceptions.exp C:\prj\runtime\artifacts\tests\coreclr\windows.x64.Checked\nativeaot\SmokeTests\Exceptions\Exceptions\native>Exceptions.exe
परिवर्तित टेक्स्ट
फ़ाइल खोलें
C:\prj\runtime\artifacts\tests\coreclr\windows.x64.Checked\nativeaot\SmokeTests\Exceptions\Exceptions\native>xcopy /s C:\Users\bogat\source\repos\ConsoleApp13\ConsoleApp4\bin\Release\net6.0\win-x64\Exceptions.dll C:\prj\runtime\artifacts\tests\coreclr\windows.x64.Checked\nativeaot\SmokeTests\Exceptions\Exceptions\ /Y C:\Users\bogat\source\repos\ConsoleApp13\ConsoleApp4\bin\Release\net6.0\win-x64\Exceptions.dll C:\Users\bogat\source\repos\ConsoleApp13\ConsoleApp4\bin\Release\net6.0\win-x64\Disasmo-v4.0.8\Exceptions.dll C:\Users\bogat\source\repos\ConsoleApp13\ConsoleApp4\bin\Release\net6.0\win-x64\ref\Exceptions.dll 3 File(s) copied C:\prj\runtime\artifacts\tests\coreclr\windows.x64.Checked\nativeaot\SmokeTests\Exceptions\Exceptions\native>C:\prj\runtime\artifacts\bin\coreclr\windows.x64.Checked\ilc\net6.0\ilc.exe @"C:\prj\runtime\artifacts\tests\coreclr\windows.x64.Checked\nativeaot\SmokeTests\Exceptions\Exceptions\native\Exceptions.ilc.rsp" --codegenopt NgenDump=TryGetFullPathToApplicationModule --codegenopt JitDiffableDasm=0 ****** START compiling Internal.Runtime.Augments.RuntimeAugments:TryGetFullPathToApplicationModule(long,byref):System.String (MethodHash=11dd0eb3) Generating code for Windows x64 OPTIONS: compCodeOpt = BLENDED_CODE OPTIONS: compDbgCode = false OPTIONS: compDbgInfo = true OPTIONS: compDbgEnC = false OPTIONS: compProcedureSplitting = false OPTIONS: compProcedureSplittingEH = false OPTIONS: Jit invoked for ngen IL to import: IL_0000 03 ldarg.1 IL_0001 02 ldarg.0 IL_0002 28 47 42 00 06 call 0x6004247 IL_0007 df stind.i IL_0008 03 ldarg.1 IL_0009 4d ldind.i IL_000a 7e b8 02 00 04 ldsfld 0x40002B8 IL_000f 28 0c 10 00 06 call 0x600100C IL_0014 2c 02 brfalse.s 2 (IL_0018) IL_0016 14 ldnull IL_0017 2a ret IL_0018 03 ldarg.1 IL_0019 4d ldind.i IL_001a 12 00 ldloca.s 0x0 IL_001c 28 52 42 00 06 call 0x6004252 IL_0021 0b stloc.1 IL_0022 06 ldloc.0 IL_0023 16 ldc.i4.0 IL_0024 07 ldloc.1 IL_0025 73 90 02 00 06 newobj 0x6000290 IL_002a 0c stloc.2 IL_002b 08 ldloc.2 IL_002c 2a ret Arg #0 passed in register(s) rcx Arg #1 passed in register(s) rdx lvaSetClass: setting class for V04 to (4000000000420888) System.String lvaGrabTemp returning 5 (V05 tmp0) (a long lifetime temp) called for OutgoingArgSpace. ; Initial local variable assignments ; ; V00 arg0 long ; V01 arg1 byref ; V02 loc0 long ; V03 loc1 int ; V04 loc2 ref class-hnd ; V05 OutArgs lclBlk <na> "OutgoingArgSpace" *************** In compInitDebuggingInfo() for Internal.Runtime.Augments.RuntimeAugments:TryGetFullPathToApplicationModule(long,byref):System.String getVars() returned cVars = 0, extendOthers = true info.compVarScopesCount = 5 VarNum LVNum Name Beg End 0: 00h 00h V00 arg0 000h 02Dh 1: 01h 01h V01 arg1 000h 02Dh 2: 02h 02h V02 loc0 000h 02Dh 3: 03h 03h V03 loc1 000h 02Dh 4: 04h 04h V04 loc2 000h 02Dh info.compStmtOffsetsCount = 0 info.compStmtOffsetsImplicit = 0007h ( STACK_EMPTY NOP CALL_SITE ) *************** In fgFindBasicBlocks() for Internal.Runtime.Augments.RuntimeAugments:TryGetFullPathToApplicationModule(long,byref):System.String weight= 16 : state 4 [ ldarg.1 ] weight= 10 : state 3 [ ldarg.0 ] weight= 79 : state 40 [ call ] weight=182 : state 164 [ stind.i ] weight= 16 : state 4 [ ldarg.1 ] weight=-110 : state 65 [ ldind.i ] weight=159 : state 112 [ ldsfld ] weight= 79 : state 40 [ call ] weight= 27 : state 44 [ brfalse.s ] weight= 7 : state 21 [ ldnull ] weight= 19 : state 42 [ ret ] weight= 16 : state 4 [ ldarg.1 ] weight=-110 : state 65 [ ldind.i ] weight= 61 : state 19 [ ldloca.s ] weight= 79 : state 40 [ call ] weight= 34 : state 12 [ stloc.1 ] weight= 12 : state 7 [ ldloc.0 ] weight= 15 : state 23 [ ldc.i4.0 ] weight= 9 : state 8 [ ldloc.1 ] weight=227 : state 103 [ newobj ] weight=-10 : state 201 [ stloc.2 -> ldloc.2 ] weight= 19 : state 42 [ ret ] Marked V03 as a single def local Marked V04 as a single def local Jump targets: IL_0018 New Basic Block BB01 [0000] created. BB01 [000..016) New Basic Block BB02 [0001] created. BB02 [016..018) New Basic Block BB03 [0002] created. BB03 [018..02D) Inline candidate callsite is hot. Multiplier increased to 3. Callsite has profile data: 1. Multiplier limited to 12.6. calleeNativeSizeEstimate=836 callsiteNativeSizeEstimate=115 benefit multiplier=12.6 threshold=1449 Native estimate for function size is within threshold for inlining 83.6 <= 144.9 (multiplier = 12.6) IL Code Size,Instr 45, 23, Basic Block count 3, Local Variable Num,Ref count 6, 10 for method Internal.Runtime.Augments.RuntimeAugments:TryGetFullPathToApplicationModule(long,byref):System.String OPTIONS: opts.MinOpts() == false Basic block list for 'Internal.Runtime.Augments.RuntimeAugments:TryGetFullPathToApplicationModule(long,byref):System.String' ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..016)-> BB03 ( cond ) BB02 [0001] 1 1 [016..018) (return) BB03 [0002] 1 1 [018..02D) (return) ----------------------------------------------------------------------------------------------------------------------------------------- *************** Starting PHASE Pre-import *************** Finishing PHASE Pre-import *************** Starting PHASE Profile incorporation BBOPT not set *************** Finishing PHASE Profile incorporation [no changes] *************** Starting PHASE Importation *************** In impImport() for Internal.Runtime.Augments.RuntimeAugments:TryGetFullPathToApplicationModule(long,byref):System.String impImportBlockPending for BB01 Importing BB01 (PC=000) of 'Internal.Runtime.Augments.RuntimeAugments:TryGetFullPathToApplicationModule(long,byref):System.String' [ 0] 0 (0x000) ldarg.1 [ 1] 1 (0x001) ldarg.0 [ 2] 2 (0x002) call 06004247 In Compiler::impImportCall: opcode is call, kind=0, callRetType is long, structSize is 0 INLINER: during 'impMarkInlineCandidate' result 'failed this callee' reason 'cannot get method info' for 'Internal.Runtime.Augments.RuntimeAugments:TryGetFullPathToApplicationModule(long,byref):System.String' calling 'System.Runtime.RuntimeImports:RhGetOSModuleFromPointer(long):long' INLINER: Marking System.Runtime.RuntimeImports:RhGetOSModuleFromPointer(long):long as NOINLINE because of cannot get method info INLINER: during 'impMarkInlineCandidate' result 'failed this callee' reason 'cannot get method info' [ 2] 7 (0x007) stind.i STMT00000 ( 0x000[E-] ... ??? ) [000004] -ACXG------- * ASG long [000003] *------N---- +--* IND long [000000] ------------ | \--* LCL_VAR byref V01 arg1 [000002] --C-G------- \--* CALL long System.Runtime.RuntimeImports.RhGetOSModuleFromPointer [000001] ------------ arg0 \--* LCL_VAR long V00 arg0 [ 0] 8 (0x008) ldarg.1 [ 1] 9 (0x009) ldind.i [ 1] 10 (0x00a) ldsfld 040002B8 [ 2] 15 (0x00f) call 0600100C In Compiler::impImportCall: opcode is call, kind=0, callRetType is bool, structSize is 0 STMT00001 ( 0x008[E-] ... ??? ) [000008] I-CXG------- * CALL int System.IntPtr.op_Equality (exactContextHnd=0x40000000004206D1) [000006] *--XG------- arg0 +--* IND long [000005] ------------ | \--* LCL_VAR byref V01 arg1 [000007] ------------ arg1 \--* CNS_INT long 0 [ 1] 20 (0x014) brfalse.s STMT00002 ( 0x008[E-] ... ??? ) [000013] --C--------- * JTRUE void [000012] --C--------- \--* EQ int [000010] --C--------- +--* CAST int <- bool <- int [000009] --C--------- | \--* RET_EXPR int (inl return expr [000008]) [000011] ------------ \--* CNS_INT int 0 impImportBlockPending for BB02 impImportBlockPending for BB03 Importing BB03 (PC=024) of 'Internal.Runtime.Augments.RuntimeAugments:TryGetFullPathToApplicationModule(long,byref):System.String' [ 0] 24 (0x018) ldarg.1 [ 1] 25 (0x019) ldind.i [ 1] 26 (0x01a) ldloca.s 0 [ 2] 28 (0x01c) call 06004252 In Compiler::impImportCall: opcode is call, kind=0, callRetType is int, structSize is 0 INLINER: during 'impMarkInlineCandidate' result 'failed this callee' reason 'cannot get method info' for 'Internal.Runtime.Augments.RuntimeAugments:TryGetFullPathToApplicationModule(long,byref):System.String' calling 'System.Runtime.RuntimeImports:RhGetModuleFileName(long,byref):int' INLINER: Marking System.Runtime.RuntimeImports:RhGetModuleFileName(long,byref):int as NOINLINE because of cannot get method info INLINER: during 'impMarkInlineCandidate' result 'failed this callee' reason 'cannot get method info' [ 1] 33 (0x021) stloc.1 STMT00003 ( 0x018[E-] ... ??? ) [000020] -ACXG------- * ASG int [000019] D------N---- +--* LCL_VAR int V03 loc1 [000018] --CXG------- \--* CALL int System.Runtime.RuntimeImports.RhGetModuleFileName [000015] *--XG------- arg0 +--* IND long [000014] ------------ | \--* LCL_VAR byref V01 arg1 [000017] ------------ arg1 \--* ADDR byref [000016] -------N---- \--* LCL_VAR long V02 loc0 [ 0] 34 (0x022) ldloc.0 [ 1] 35 (0x023) ldc.i4.0 0 [ 2] 36 (0x024) ldloc.1 [ 3] 37 (0x025) newobj 06000290 In Compiler::impImportCall: opcode is newobj, kind=0, callRetType is void, structSize is 0 [ 1] 42 (0x02a) stloc.2 lvaUpdateClass: Updating class for V04 from (4000000000420888) System.String to (4000000000420888) System.String [exact] STMT00004 ( 0x022[E-] ... ??? ) [000026] -AC-G------- * ASG ref [000025] D------N---- +--* LCL_VAR ref V04 loc2 [000024] --C-G------- \--* CALL ref System.String..ctor [000021] ------------ arg0 +--* LCL_VAR long V02 loc0 [000022] ------------ arg1 +--* CNS_INT int 0 [000023] ------------ arg2 \--* LCL_VAR int V03 loc1 [ 0] 43 (0x02b) ldloc.2 [ 1] 44 (0x02c) ret STMT00005 ( 0x02B[E-] ... ??? ) [000028] ------------ * RETURN ref [000027] ------------ \--* LCL_VAR ref V04 loc2 Importing BB02 (PC=022) of 'Internal.Runtime.Augments.RuntimeAugments:TryGetFullPathToApplicationModule(long,byref):System.String' [ 0] 22 (0x016) ldnull [ 1] 23 (0x017) ret STMT00006 ( 0x016[E-] ... ??? ) [000030] ------------ * RETURN ref [000029] ------------ \--* CNS_INT ref null *************** Finishing PHASE Importation Trees after Importation ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..016)-> BB03 ( cond ) i BB02 [0001] 1 1 [016..018) (return) i BB03 [0002] 1 1 [018..02D) (return) i newobj ----------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [000..016) -> BB03 (cond), preds={} succs={BB02,BB03} ***** BB01 STMT00000 ( 0x000[E-] ... 0x007 ) [000004] -ACXG------- * ASG long [000003] *------N---- +--* IND long [000000] ------------ | \--* LCL_VAR byref V01 arg1 [000002] --C-G------- \--* CALL long System.Runtime.RuntimeImports.RhGetOSModuleFromPointer [000001] ------------ arg0 \--* LCL_VAR long V00 arg0 ***** BB01 STMT00001 ( 0x008[E-] ... 0x014 ) [000008] I-CXG------- * CALL int System.IntPtr.op_Equality (exactContextHnd=0x40000000004206D1) [000006] *--XG------- arg0 +--* IND long [000005] ------------ | \--* LCL_VAR byref V01 arg1 [000007] ------------ arg1 \--* CNS_INT long 0 ***** BB01 STMT00002 ( 0x008[E-] ... ??? ) [000013] --C--------- * JTRUE void [000012] --C--------- \--* EQ int [000010] --C--------- +--* CAST int <- bool <- int [000009] --C--------- | \--* RET_EXPR int (inl return expr [000008]) [000011] ------------ \--* CNS_INT int 0 ------------ BB02 [016..018) (return), preds={} succs={} ***** BB02 STMT00006 ( 0x016[E-] ... 0x017 ) [000030] ------------ * RETURN ref [000029] ------------ \--* CNS_INT ref null ------------ BB03 [018..02D) (return), preds={} succs={} ***** BB03 STMT00003 ( 0x018[E-] ... 0x021 ) [000020] -ACXG------- * ASG int [000019] D------N---- +--* LCL_VAR int V03 loc1 [000018] --CXG------- \--* CALL int System.Runtime.RuntimeImports.RhGetModuleFileName [000015] *--XG------- arg0 +--* IND long [000014] ------------ | \--* LCL_VAR byref V01 arg1 [000017] ------------ arg1 \--* ADDR byref [000016] -------N---- \--* LCL_VAR long V02 loc0 ***** BB03 STMT00004 ( 0x022[E-] ... 0x02A ) [000026] -AC-G------- * ASG ref [000025] D------N---- +--* LCL_VAR ref V04 loc2 [000024] --C-G------- \--* CALL ref System.String..ctor [000021] ------------ arg0 +--* LCL_VAR long V02 loc0 [000022] ------------ arg1 +--* CNS_INT int 0 [000023] ------------ arg2 \--* LCL_VAR int V03 loc1 ***** BB03 STMT00005 ( 0x02B[E-] ... 0x02C ) [000028] ------------ * RETURN ref [000027] ------------ \--* LCL_VAR ref V04 loc2 ------------------------------------------------------------------------------------------------------------------- *************** 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 *************** Starting PHASE Morph - Init New BlockSet epoch 1, # of blocks (including unused BB00): 4, bitset array size: 1 (short) *************** In fgPostImportationCleanup *************** Finishing PHASE Morph - Init *************** In fgDebugCheckBBlist *************** Starting PHASE Morph - Inlining Expanding INLINE_CANDIDATE in statement STMT00001 in BB01: STMT00001 ( 0x008[E-] ... 0x014 ) [000008] I-CXG------- * CALL int System.IntPtr.op_Equality (exactContextHnd=0x40000000004206D1) [000006] *--XG------- arg0 +--* IND long [000005] ------------ | \--* LCL_VAR byref V01 arg1 [000007] ------------ arg1 \--* CNS_INT long 0 Argument #0: has global refs has side effects [000006] *--XG------- * IND long [000005] ------------ \--* LCL_VAR byref V01 arg1 Argument #1: is a constant [000007] ------------ * CNS_INT long 0 INLINER: inlineInfo.tokenLookupContextHandle for System.IntPtr:op_Equality(long,long):bool set to 0x40000000004206D1: Invoking compiler for the inlinee method System.IntPtr:op_Equality(long,long):bool : IL to import: IL_0000 0f 00 ldarga.s 0x0 IL_0002 7b b7 02 00 04 ldfld 0x40002B7 IL_0007 0f 01 ldarga.s 0x1 IL_0009 7b b7 02 00 04 ldfld 0x40002B7 IL_000e fe 01 ceq IL_0010 2a ret INLINER impTokenLookupContextHandle for System.IntPtr:op_Equality(long,long):bool is 0x40000000004206D1. *************** In compInitDebuggingInfo() for System.IntPtr:op_Equality(long,long):bool info.compStmtOffsetsCount = 0 info.compStmtOffsetsImplicit = 0007h ( STACK_EMPTY NOP CALL_SITE ) *************** In fgFindBasicBlocks() for System.IntPtr:op_Equality(long,long):bool weight= 19 : state 197 [ ldarga.s.normed -> ldfld ] weight= 19 : state 197 [ ldarga.s.normed -> ldfld ] weight= 20 : state 168 [ ceq ] weight= 19 : state 42 [ ret ] multiplier in methods of promotable struct increased to 3. Inline candidate is mostly loads and stores. Multiplier increased to 6. Inline candidate has const arg that feeds a conditional. Multiplier increased to 9. Inline candidate callsite is boring. Multiplier increased to 10.3. calleeNativeSizeEstimate=77 callsiteNativeSizeEstimate=115 benefit multiplier=10.3 threshold=1184 Native estimate for function size is within threshold for inlining 7.7 <= 118.4 (multiplier = 10.3) Jump targets: none New Basic Block BB04 [0003] created. BB04 [000..011) Basic block list for 'System.IntPtr:op_Equality(long,long):bool' ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB04 [0003] 1 1 [000..011) (return) ----------------------------------------------------------------------------------------------------------------------------------------- *************** Inline @[000008] Starting PHASE Pre-import *************** Inline @[000008] Finishing PHASE Pre-import *************** Inline @[000008] Starting PHASE Profile incorporation BBOPT not set Computing inlinee profile scale: ... no callee profile data, will use non-pgo weight to scale ... call site not profiled, will use non-pgo weight to scale call site count 100 callee entry count 100 scale 1 Scaling inlinee blocks *************** Inline @[000008] Finishing PHASE Profile incorporation Trees after Profile incorporation ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB04 [0003] 1 1 [000..011) (return) ----------------------------------------------------------------------------------------------------------------------------------------- ------------ BB04 [000..011) (return), preds={} succs={} ------------------------------------------------------------------------------------------------------------------- *************** Inline @[000008] Starting PHASE Importation *************** In impImport() for System.IntPtr:op_Equality(long,long):bool impImportBlockPending for BB04 Importing BB04 (PC=000) of 'System.IntPtr:op_Equality(long,long):bool' [ 0] 0 (0x000) ldarga.s 0 lvaGrabTemp returning 6 (V06 tmp1) called for Inlining Arg. [ 1] 2 (0x002) ldfld 040002B7 [ 1] 7 (0x007) ldarga.s 1 lvaGrabTemp returning 7 (V07 tmp2) called for Inlining Arg. [ 2] 9 (0x009) ldfld 040002B7 [ 2] 14 (0x00e) ceq [ 1] 16 (0x010) ret Inlinee Return expression (before normalization) => [000037] ----G------- * EQ int [000033] ----G------- +--* FIELD long _value [000032] ------------ | \--* ADDR byref [000031] -------N---- | \--* LCL_VAR long V06 tmp1 [000036] ----G------- \--* FIELD long _value [000035] ------------ \--* ADDR byref [000034] -------N---- \--* LCL_VAR long V07 tmp2 Inlinee Return expression (after normalization) => [000037] ----G------- * EQ int [000033] ----G------- +--* FIELD long _value [000032] ------------ | \--* ADDR byref [000031] -------N---- | \--* LCL_VAR long V06 tmp1 [000036] ----G------- \--* FIELD long _value [000035] ------------ \--* ADDR byref [000034] -------N---- \--* LCL_VAR long V07 tmp2 ** Note: inlinee IL was partially imported -- imported 0 of 17 bytes of method IL *************** Inline @[000008] Finishing PHASE Importation Trees after Importation ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB04 [0003] 1 1 [000..011) (return) i ----------------------------------------------------------------------------------------------------------------------------------------- ------------ BB04 [000..011) (return), preds={} succs={} ------------------------------------------------------------------------------------------------------------------- *************** Inline @[000008] Starting PHASE Expand patchpoints -- no patchpoints to transform *************** Inline @[000008] Finishing PHASE Expand patchpoints [no changes] *************** Inline @[000008] Starting PHASE Indirect call transform -- no candidates to transform *************** Inline @[000008] Finishing PHASE Indirect call transform [no changes] *************** Inline @[000008] Starting PHASE Post-import *************** In fgPostImportationCleanup *************** Inline @[000008] Finishing PHASE Post-import ----------- Statements (and blocks) added due to the inlining of call [000008] ----------- Arguments setup: STMT00007 ( 0x008[E-] ... ??? ) [000039] -A-XG------- * ASG long [000038] D------N---- +--* LCL_VAR long V06 tmp1 [000006] *--XG------- \--* IND long [000005] ------------ \--* LCL_VAR byref V01 arg1 STMT00008 ( 0x008[E-] ... ??? ) [000041] -A---------- * ASG long [000040] D------N---- +--* LCL_VAR long V07 tmp2 [000007] ------------ \--* CNS_INT long 0 Inlinee method body:fgInlineAppendStatements: no gc ref inline locals. Return expression for call at [000008] is [000037] ----G------- * EQ int [000033] ----G------- +--* FIELD long _value [000032] ------------ | \--* ADDR byref [000031] -------N---- | \--* LCL_VAR long V06 tmp1 [000036] ----G------- \--* FIELD long _value [000035] ------------ \--* ADDR byref [000034] -------N---- \--* LCL_VAR long V07 tmp2 Successfully inlined System.IntPtr:op_Equality(long,long):bool (17 IL bytes) (depth 1) [profitable inline] -------------------------------------------------------------------------------------------- INLINER: during 'fgInline' result 'success' reason 'profitable inline' for 'Internal.Runtime.Augments.RuntimeAugments:TryGetFullPathToApplicationModule(long,byref):System.String' calling 'System.IntPtr:op_Equality(long,long):bool' INLINER: during 'fgInline' result 'success' reason 'profitable inline' Replacing the return expression placeholder [000009] with [000037] [000009] --C--------- * RET_EXPR int (inl return expr [000037]) Inserting the inline return expression [000037] ----G------- * EQ int [000033] ----G------- +--* FIELD long _value [000032] ------------ | \--* ADDR byref [000031] -------N---- | \--* LCL_VAR long V06 tmp1 [000036] ----G------- \--* FIELD long _value [000035] ------------ \--* ADDR byref [000034] -------N---- \--* LCL_VAR long V07 tmp2 **************** Inline Tree Inlines into 0600600B [via ExtendedDefaultPolicy] Internal.Runtime.Augments.RuntimeAugments:TryGetFullPathToApplicationModule(long,byref):System.String: [INL00 IL=0002 TR=000002 06004247] [FAILED: callee: cannot get method info] System.Runtime.RuntimeImports:RhGetOSModuleFromPointer(long):long [INL01 IL=0015 TR=000008 0600100C] [INLINED: call site: profitable inline] System.IntPtr:op_Equality(long,long):bool [INL00 IL=0028 TR=000018 06004252] [FAILED: callee: cannot get method info] System.Runtime.RuntimeImports:RhGetModuleFileName(long,byref):int [INL00 IL=0034 TR=000024 06000290] [FAILED: call site: not inline candidate] System.String:.ctor(long,int,int):this Budget: initialTime=195, finalTime=181, initialBudget=1950, currentBudget=1950 Budget: initialSize=1157, finalSize=1119 *************** Finishing PHASE Morph - Inlining Trees after Morph - Inlining ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..016)-> BB03 ( cond ) i BB02 [0001] 1 1 [016..018) (return) i BB03 [0002] 1 1 [018..02D) (return) i newobj ----------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [000..016) -> BB03 (cond), preds={} succs={BB02,BB03} ***** BB01 STMT00000 ( 0x000[E-] ... 0x007 ) [000004] -ACXG------- * ASG long [000003] *------N---- +--* IND long [000000] ------------ | \--* LCL_VAR byref V01 arg1 [000002] --C-G------- \--* CALL long System.Runtime.RuntimeImports.RhGetOSModuleFromPointer [000001] ------------ arg0 \--* LCL_VAR long V00 arg0 ***** BB01 STMT00007 ( 0x008[E-] ... ??? ) [000039] -A-XG------- * ASG long [000038] D------N---- +--* LCL_VAR long V06 tmp1 [000006] *--XG------- \--* IND long [000005] ------------ \--* LCL_VAR byref V01 arg1 ***** BB01 STMT00008 ( 0x008[E-] ... ??? ) [000041] -A---------- * ASG long [000040] D------N---- +--* LCL_VAR long V07 tmp2 [000007] ------------ \--* CNS_INT long 0 ***** BB01 STMT00002 ( 0x008[E-] ... ??? ) [000013] --C--------- * JTRUE void [000012] --C--------- \--* EQ int [000010] --C--------- +--* CAST int <- bool <- int [000037] ----G------- | \--* EQ int [000033] ----G------- | +--* FIELD long _value [000032] ------------ | | \--* ADDR byref [000031] -------N---- | | \--* LCL_VAR long V06 tmp1 [000036] ----G------- | \--* FIELD long _value [000035] ------------ | \--* ADDR byref [000034] -------N---- | \--* LCL_VAR long V07 tmp2 [000011] ------------ \--* CNS_INT int 0 ------------ BB02 [016..018) (return), preds={} succs={} ***** BB02 STMT00006 ( 0x016[E-] ... 0x017 ) [000030] ------------ * RETURN ref [000029] ------------ \--* CNS_INT ref null ------------ BB03 [018..02D) (return), preds={} succs={} ***** BB03 STMT00003 ( 0x018[E-] ... 0x021 ) [000020] -ACXG------- * ASG int [000019] D------N---- +--* LCL_VAR int V03 loc1 [000018] --CXG------- \--* CALL int System.Runtime.RuntimeImports.RhGetModuleFileName [000015] *--XG------- arg0 +--* IND long [000014] ------------ | \--* LCL_VAR byref V01 arg1 [000017] ------------ arg1 \--* ADDR byref [000016] -------N---- \--* LCL_VAR long V02 loc0 ***** BB03 STMT00004 ( 0x022[E-] ... 0x02A ) [000026] -AC-G------- * ASG ref [000025] D------N---- +--* LCL_VAR ref V04 loc2 [000024] --C-G------- \--* CALL ref System.String..ctor [000021] ------------ arg0 +--* LCL_VAR long V02 loc0 [000022] ------------ arg1 +--* CNS_INT int 0 [000023] ------------ arg2 \--* LCL_VAR int V03 loc1 ***** BB03 STMT00005 ( 0x02B[E-] ... 0x02C ) [000028] ------------ * RETURN ref [000027] ------------ \--* LCL_VAR ref V04 loc2 ------------------------------------------------------------------------------------------------------------------- *************** Starting PHASE Allocate Objects disabled, punting *************** Finishing PHASE Allocate Objects [no changes] *************** Starting PHASE Morph - Add internal blocks *************** After fgAddInternal() ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..016)-> BB03 ( cond ) i BB02 [0001] 1 1 [016..018) (return) i BB03 [0002] 1 1 [018..02D) (return) i newobj ----------------------------------------------------------------------------------------------------------------------------------------- *************** Exception Handling table is empty *************** Finishing PHASE Morph - Add internal blocks *************** Starting PHASE Remove empty try *************** In fgRemoveEmptyTry() No EH in this method, nothing to remove. *************** Finishing PHASE Remove empty try [no changes] *************** Starting PHASE Remove empty finally No EH in this method, nothing to remove. *************** Finishing PHASE Remove empty finally [no changes] *************** Starting PHASE Merge callfinally chains No EH in this method, nothing to merge. *************** Finishing PHASE Merge callfinally chains [no changes] *************** Starting PHASE Clone finally No EH in this method, no cloning. *************** Finishing PHASE Clone finally [no changes] *************** Starting PHASE Compute preds Renumbering the basic blocks for fgComputePred *************** Before renumbering the basic blocks ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..016)-> BB03 ( cond ) i BB02 [0001] 1 1 [016..018) (return) i BB03 [0002] 1 1 [018..02D) (return) i newobj ----------------------------------------------------------------------------------------------------------------------------------------- *************** Exception Handling table is empty *************** After renumbering the basic blocks =============== No blocks renumbered! New BlockSet epoch 2, # of blocks (including unused BB00): 4, bitset array size: 1 (short) *************** In fgComputePreds() ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..016)-> BB03 ( cond ) i BB02 [0001] 1 1 [016..018) (return) i BB03 [0002] 1 1 [018..02D) (return) i newobj ----------------------------------------------------------------------------------------------------------------------------------------- Setting edge weights for BB01 -> BB03 to [0 .. 3.402823e+38] Setting edge weights for BB01 -> BB02 to [0 .. 3.402823e+38] *************** After fgComputePreds() ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..016)-> BB03 ( cond ) i BB02 [0001] 1 BB01 1 [016..018) (return) i BB03 [0002] 1 BB01 1 [018..02D) (return) i newobj ----------------------------------------------------------------------------------------------------------------------------------------- *************** Finishing PHASE Compute preds *************** Starting PHASE Merge throw blocks *************** In fgTailMergeThrows Method does not have multiple noreturn calls. *************** Finishing PHASE Merge throw blocks [no changes] *************** Starting PHASE Update flow graph early pass *************** In fgUpdateFlowGraph() Before updating the flow graph: ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..016)-> BB03 ( cond ) i BB02 [0001] 1 BB01 1 [016..018) (return) i BB03 [0002] 1 BB01 1 [018..02D) (return) i newobj ----------------------------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist *************** Finishing PHASE Update flow graph early pass *************** Starting PHASE Morph - Promote Structs *************** In fgResetImplicitByRefRefCount() *************** In fgPromoteStructs() lvaTable before fgPromoteStructs ; Initial local variable assignments ; ; V00 arg0 long ; V01 arg1 byref ; V02 loc0 long ld-addr-op ; V03 loc1 int ; V04 loc2 ref class-hnd exact ; V05 OutArgs lclBlk <na> "OutgoingArgSpace" ; V06 tmp1 long ld-addr-op "Inlining Arg" ; V07 tmp2 long ld-addr-op "Inlining Arg" lvaTable after fgPromoteStructs ; Initial local variable assignments ; ; V00 arg0 long ; V01 arg1 byref ; V02 loc0 long ld-addr-op ; V03 loc1 int ; V04 loc2 ref class-hnd exact ; V05 OutArgs lclBlk <na> "OutgoingArgSpace" ; V06 tmp1 long ld-addr-op "Inlining Arg" ; V07 tmp2 long ld-addr-op "Inlining Arg" *************** Finishing PHASE Morph - Promote Structs *************** Starting PHASE Morph - Structs/AddrExp *************** In fgMarkAddressExposedLocals() LocalAddressVisitor visiting statement: STMT00000 ( 0x000[E-] ... 0x007 ) [000004] -ACXG------- * ASG long [000003] *------N---- +--* IND long [000000] ------------ | \--* LCL_VAR byref V01 arg1 [000002] --C-G------- \--* CALL long System.Runtime.RuntimeImports.RhGetOSModuleFromPointer [000001] ------------ arg0 \--* LCL_VAR long V00 arg0 LocalAddressVisitor visiting statement: STMT00007 ( 0x008[E-] ... ??? ) [000039] -A-XG------- * ASG long [000038] D------N---- +--* LCL_VAR long V06 tmp1 [000006] *--XG------- \--* IND long [000005] ------------ \--* LCL_VAR byref V01 arg1 LocalAddressVisitor visiting statement: STMT00008 ( 0x008[E-] ... ??? ) [000041] -A---------- * ASG long [000040] D------N---- +--* LCL_VAR long V07 tmp2 [000007] ------------ \--* CNS_INT long 0 LocalAddressVisitor visiting statement: STMT00002 ( 0x008[E-] ... ??? ) [000013] --C--------- * JTRUE void [000012] --C--------- \--* EQ int [000010] --C--------- +--* CAST int <- bool <- int [000037] ----G------- | \--* EQ int [000033] ----G------- | +--* FIELD long _value [000032] ------------ | | \--* ADDR byref [000031] -------N---- | | \--* LCL_VAR long V06 tmp1 [000036] ----G------- | \--* FIELD long _value [000035] ------------ | \--* ADDR byref [000034] -------N---- | \--* LCL_VAR long V07 tmp2 [000011] ------------ \--* CNS_INT int 0 Replacing the field in normed struct with local var V06 Replacing the field in normed struct with local var V07 LocalAddressVisitor modified statement: STMT00002 ( 0x008[E-] ... ??? ) [000013] --C--------- * JTRUE void [000012] --C--------- \--* EQ int [000010] --C--------- +--* CAST int <- bool <- int [000037] ----G------- | \--* EQ int [000033] ------------ | +--* LCL_VAR long V06 tmp1 [000036] ------------ | \--* LCL_VAR long V07 tmp2 [000011] ------------ \--* CNS_INT int 0 LocalAddressVisitor visiting statement: STMT00006 ( 0x016[E-] ... 0x017 ) [000030] ------------ * RETURN ref [000029] ------------ \--* CNS_INT ref null LocalAddressVisitor visiting statement: STMT00003 ( 0x018[E-] ... 0x021 ) [000020] -ACXG------- * ASG int [000019] D------N---- +--* LCL_VAR int V03 loc1 [000018] --CXG------- \--* CALL int System.Runtime.RuntimeImports.RhGetModuleFileName [000015] *--XG------- arg0 +--* IND long [000014] ------------ | \--* LCL_VAR byref V01 arg1 [000017] ------------ arg1 \--* ADDR byref [000016] -------N---- \--* LCL_VAR long V02 loc0 Local V02 should not be enregistered because: it is address exposed LocalAddressVisitor modified statement: STMT00003 ( 0x018[E-] ... 0x021 ) [000020] -ACXG------- * ASG int [000019] D------N---- +--* LCL_VAR int V03 loc1 [000018] --CXG------- \--* CALL int System.Runtime.RuntimeImports.RhGetModuleFileName [000015] *--XG------- arg0 +--* IND long [000014] ------------ | \--* LCL_VAR byref V01 arg1 [000017] ------------ arg1 \--* LCL_VAR_ADDR byref V02 loc0 LocalAddressVisitor visiting statement: STMT00004 ( 0x022[E-] ... 0x02A ) [000026] -AC-G------- * ASG ref [000025] D------N---- +--* LCL_VAR ref V04 loc2 [000024] --C-G------- \--* CALL ref System.String..ctor [000021] ------------ arg0 +--* LCL_VAR long (AX) V02 loc0 [000022] ------------ arg1 +--* CNS_INT int 0 [000023] ------------ arg2 \--* LCL_VAR int V03 loc1 LocalAddressVisitor visiting statement: STMT00005 ( 0x02B[E-] ... 0x02C ) [000028] ------------ * RETURN ref [000027] ------------ \--* LCL_VAR ref V04 loc2 *************** Finishing PHASE Morph - Structs/AddrExp *************** Starting PHASE Forward Sub ===> BB01 [000039]: no next stmt use [000041]: [000036] is only use of [000040] (V07) -- fwd subbing [000007]; new next stmt is STMT00002 ( 0x008[E-] ... ??? ) [000013] ----G------- * JTRUE void [000012] ----G------- \--* EQ int [000010] ----G------- +--* CAST int <- bool <- int [000037] ----G------- | \--* EQ int [000033] ------------ | +--* LCL_VAR long V06 tmp1 [000007] ------------ | \--* CNS_INT long 0 [000011] ------------ \--* CNS_INT int 0 removing useless STMT00008 ( 0x008[E-] ... ??? ) [000041] -A---------- * ASG long [000040] D------N---- +--* LCL_VAR long V07 tmp2 [000007] ------------ \--* CNS_INT long 0 from BB01 [000039]: [000033] is only use of [000038] (V06) -- fwd subbing [000006]; new next stmt is STMT00002 ( 0x008[E-] ... ??? ) [000013] ---XG------- * JTRUE void [000012] ---XG------- \--* EQ int [000010] ---XG------- +--* CAST int <- bool <- int [000037] ---XG------- | \--* EQ int [000006] *--XG------- | +--* IND long [000005] ------------ | | \--* LCL_VAR byref V01 arg1 [000007] ------------ | \--* CNS_INT long 0 [000011] ------------ \--* CNS_INT int 0 removing useless STMT00007 ( 0x008[E-] ... ??? ) [000039] -A-XG------- * ASG long [000038] D------N---- +--* LCL_VAR long V06 tmp1 [000006] *--XG------- \--* IND long [000005] ------------ \--* LCL_VAR byref V01 arg1 from BB01 ===> BB02 ===> BB03 [000020]: [000023] is only use of [000019] (V03) -- fwd subbing [000018]; new next stmt is STMT00004 ( 0x022[E-] ... 0x02A ) [000026] -ACXG------- * ASG ref [000025] D------N---- +--* LCL_VAR ref V04 loc2 [000024] --CXG------- \--* CALL ref System.String..ctor [000021] ------------ arg0 +--* LCL_VAR long (AX) V02 loc0 [000022] ------------ arg1 +--* CNS_INT int 0 [000018] --CXG------- arg2 \--* CALL int System.Runtime.RuntimeImports.RhGetModuleFileName [000015] *--XG------- arg0 +--* IND long [000014] ------------ | \--* LCL_VAR byref V01 arg1 [000017] ------------ arg1 \--* LCL_VAR_ADDR byref V02 loc0 removing useless STMT00003 ( 0x018[E-] ... 0x021 ) [000020] -ACXG------- * ASG int [000019] D------N---- +--* LCL_VAR int V03 loc1 [000018] --CXG------- \--* CALL int System.Runtime.RuntimeImports.RhGetModuleFileName [000015] *--XG------- arg0 +--* IND long [000014] ------------ | \--* LCL_VAR byref V01 arg1 [000017] ------------ arg1 \--* LCL_VAR_ADDR byref V02 loc0 from BB03 [000026]: [000027] is only use of [000025] (V04) -- fwd subbing [000024]; new next stmt is STMT00005 ( 0x02B[E-] ... 0x02C ) [000028] --CXG------- * RETURN ref [000024] --CXG------- \--* CALL ref System.String..ctor [000021] ------------ arg0 +--* LCL_VAR long (AX) V02 loc0 [000022] ------------ arg1 +--* CNS_INT int 0 [000018] --CXG------- arg2 \--* CALL int System.Runtime.RuntimeImports.RhGetModuleFileName [000015] *--XG------- arg0 +--* IND long [000014] ------------ | \--* LCL_VAR byref V01 arg1 [000017] ------------ arg1 \--* LCL_VAR_ADDR byref V02 loc0 removing useless STMT00004 ( 0x022[E-] ... 0x02A ) [000026] -ACXG------- * ASG ref [000025] D------N---- +--* LCL_VAR ref V04 loc2 [000024] --CXG------- \--* CALL ref System.String..ctor [000021] ------------ arg0 +--* LCL_VAR long (AX) V02 loc0 [000022] ------------ arg1 +--* CNS_INT int 0 [000018] --CXG------- arg2 \--* CALL int System.Runtime.RuntimeImports.RhGetModuleFileName [000015] *--XG------- arg0 +--* IND long [000014] ------------ | \--* LCL_VAR byref V01 arg1 [000017] ------------ arg1 \--* LCL_VAR_ADDR byref V02 loc0 from BB03 *************** Finishing PHASE Forward Sub Trees after Forward Sub ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..016)-> BB03 ( cond ) i BB02 [0001] 1 BB01 1 [016..018) (return) i BB03 [0002] 1 BB01 1 [018..02D) (return) i newobj ----------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [000..016) -> BB03 (cond), preds={} succs={BB02,BB03} ***** BB01 STMT00000 ( 0x000[E-] ... 0x007 ) [000004] -ACXG------- * ASG long [000003] *------N---- +--* IND long [000000] ------------ | \--* LCL_VAR byref V01 arg1 [000002] --C-G------- \--* CALL long System.Runtime.RuntimeImports.RhGetOSModuleFromPointer [000001] ------------ arg0 \--* LCL_VAR long V00 arg0 ***** BB01 STMT00002 ( 0x008[E-] ... ??? ) [000013] ---XG------- * JTRUE void [000012] ---XG------- \--* EQ int [000010] ---XG------- +--* CAST int <- bool <- int [000037] ---XG------- | \--* EQ int [000006] *--XG------- | +--* IND long [000005] ------------ | | \--* LCL_VAR byref V01 arg1 [000007] ------------ | \--* CNS_INT long 0 [000011] ------------ \--* CNS_INT int 0 ------------ BB02 [016..018) (return), preds={BB01} succs={} ***** BB02 STMT00006 ( 0x016[E-] ... 0x017 ) [000030] ------------ * RETURN ref [000029] ------------ \--* CNS_INT ref null ------------ BB03 [018..02D) (return), preds={BB01} succs={} ***** BB03 STMT00005 ( 0x02B[E-] ... 0x02C ) [000028] --CXG------- * RETURN ref [000024] --CXG------- \--* CALL ref System.String..ctor [000021] ------------ arg0 +--* LCL_VAR long (AX) V02 loc0 [000022] ------------ arg1 +--* CNS_INT int 0 [000018] --CXG------- arg2 \--* CALL int System.Runtime.RuntimeImports.RhGetModuleFileName [000015] *--XG------- arg0 +--* IND long [000014] ------------ | \--* LCL_VAR byref V01 arg1 [000017] ------------ arg1 \--* LCL_VAR_ADDR byref V02 loc0 ------------------------------------------------------------------------------------------------------------------- *************** Starting PHASE Morph - ByRefs *************** In fgRetypeImplicitByRefArgs() *************** Finishing PHASE Morph - ByRefs *************** Starting PHASE Morph - Global *************** In fgMorphBlocks() Morphing BB01 of 'Internal.Runtime.Augments.RuntimeAugments:TryGetFullPathToApplicationModule(long,byref):System.String' fgMorphTree BB01, STMT00000 (before) [000004] -ACXG------- * ASG long [000003] *------N---- +--* IND long [000000] ------------ | \--* LCL_VAR byref V01 arg1 [000002] --C-G------- \--* CALL long System.Runtime.RuntimeImports.RhGetOSModuleFromPointer [000001] ------------ arg0 \--* LCL_VAR long V00 arg0 Notify VM instruction set (SSE2) must be supported. Initializing arg info for 2.CALL: ArgTable for 2.CALL after fgInitArgInfo: fgArgTabEntry[arg 0 1.LCL_VAR long (By ref), 1 reg: rcx, byteAlignment=8] Morphing args for 2.CALL: argSlots=1, preallocatedArgCount=4, nextSlotNum=4, nextSlotByteOffset=32, outgoingArgSpaceSize=32 Sorting the arguments: Deferred argument ('rcx'): [000001] -----+------ * LCL_VAR long V00 arg0 Replaced with placeholder node: [000043] ----------L- * ARGPLACE long Shuffled argument table: rcx ArgTable for 2.CALL after fgMorphArgs: fgArgTabEntry[arg 0 1.LCL_VAR long (By ref), 1 reg: rcx, byteAlignment=8, lateArgInx=0, processed] fgMorphTree BB01, STMT00000 (after) [000004] -ACXG+------ * ASG long [000003] *--X-+-N---- +--* IND long [000000] -----+------ | \--* LCL_VAR byref V01 arg1 [000002] --CXG+------ \--* CALL long System.Runtime.RuntimeImports.RhGetOSModuleFromPointer [000001] -----+------ arg0 in rcx \--* LCL_VAR long V00 arg0 fgMorphTree BB01, STMT00002 (before) [000013] ---XG------- * JTRUE void [000012] ---XG------- \--* EQ int [000010] ---XG------- +--* CAST int <- bool <- int [000037] ---XG------- | \--* EQ int [000006] *--XG------- | +--* IND long [000005] ------------ | | \--* LCL_VAR byref V01 arg1 [000007] ------------ | \--* CNS_INT long 0 [000011] ------------ \--* CNS_INT int 0 fgMorphTree BB01, STMT00002 (after) [000013] ---XG+------ * JTRUE void [000037] J--XG+-N---- \--* NE int [000006] *--XG+------ +--* IND long [000005] -----+------ | \--* LCL_VAR byref V01 arg1 [000007] -----+------ \--* CNS_INT long 0 Morphing BB02 of 'Internal.Runtime.Augments.RuntimeAugments:TryGetFullPathToApplicationModule(long,byref):System.String' fgMorphTree BB02, STMT00006 (before) [000030] ------------ * RETURN ref [000029] ------------ \--* CNS_INT ref null Morphing BB03 of 'Internal.Runtime.Augments.RuntimeAugments:TryGetFullPathToApplicationModule(long,byref):System.String' fgMorphTree BB03, STMT00005 (before) [000028] --CXG------- * RETURN ref [000024] --CXG------- \--* CALL ref System.String..ctor [000021] ------------ arg0 +--* LCL_VAR long (AX) V02 loc0 [000022] ------------ arg1 +--* CNS_INT int 0 [000018] --CXG------- arg2 \--* CALL int System.Runtime.RuntimeImports.RhGetModuleFileName [000015] *--XG------- arg0 +--* IND long [000014] ------------ | \--* LCL_VAR byref V01 arg1 [000017] ------------ arg1 \--* LCL_VAR_ADDR byref V02 loc0 Initializing arg info for 24.CALL: ArgTable for 24.CALL after fgInitArgInfo: fgArgTabEntry[arg 0 21.LCL_VAR long (By ref), 1 reg: rcx, byteAlignment=8] fgArgTabEntry[arg 1 22.CNS_INT int (By ref), 1 reg: rdx, byteAlignment=8] fgArgTabEntry[arg 2 18.CALL int (By ref), 1 reg: r8, byteAlignment=8] Morphing args for 24.CALL: Initializing arg info for 18.CALL: ArgTable for 18.CALL after fgInitArgInfo: fgArgTabEntry[arg 0 15.IND long (By ref), 1 reg: rcx, byteAlignment=8] fgArgTabEntry[arg 1 17.LCL_VAR_ADDR long (By ref), 1 reg: rdx, byteAlignment=8] Morphing args for 18.CALL: argSlots=2, preallocatedArgCount=4, nextSlotNum=4, nextSlotByteOffset=32, outgoingArgSpaceSize=32 Sorting the arguments: Deferred argument ('rcx'): ( 6, 4) [000015] *--XG------- * IND long ( 3, 2) [000014] ------------ \--* LCL_VAR byref V01 arg1 Replaced with placeholder node: [000044] ----------L- * ARGPLACE long Deferred argument ('rdx'): ( 3, 3) [000017] ------------ * LCL_VAR_ADDR long V02 loc0 Replaced with placeholder node: [000045] ----------L- * ARGPLACE long Shuffled argument table: rcx rdx ArgTable for 18.CALL after fgMorphArgs: fgArgTabEntry[arg 0 15.IND long (By ref), 1 reg: rcx, byteAlignment=8, lateArgInx=0, processed] fgArgTabEntry[arg 1 17.LCL_VAR_ADDR long (By ref), 1 reg: rdx, byteAlignment=8, lateArgInx=1, processed] argSlots=3, preallocatedArgCount=4, nextSlotNum=4, nextSlotByteOffset=32, outgoingArgSpaceSize=32 Sorting the arguments: Argument with 'side effect'... [000018] --CXG+------ * CALL int System.Runtime.RuntimeImports.RhGetModuleFileName ( 6, 4) [000015] *--XG------- arg0 in rcx +--* IND long ( 3, 2) [000014] ------------ | \--* LCL_VAR byref V01 arg1 ( 3, 3) [000017] ------------ arg1 in rdx \--* LCL_VAR_ADDR long V02 loc0 lvaGrabTemp returning 8 (V08 tmp3) called for argument with side effect. Evaluate to a temp: [000047] -ACXG-----L- * ASG int [000046] D------N---- +--* LCL_VAR int V08 tmp3 [000018] --CXG+------ \--* CALL int System.Runtime.RuntimeImports.RhGetModuleFileName ( 6, 4) [000015] *--XG------- arg0 in rcx +--* IND long ( 3, 2) [000014] ------------ | \--* LCL_VAR byref V01 arg1 ( 3, 3) [000017] ------------ arg1 in rdx \--* LCL_VAR_ADDR long V02 loc0 Argument with 'side effect'... [000021] ----G+------ * LCL_VAR long (AX) V02 loc0 lvaGrabTemp returning 9 (V09 tmp4) called for argument with side effect. Evaluate to a temp: [000050] -A--G-----L- * ASG long [000049] D------N---- +--* LCL_VAR long V09 tmp4 [000021] ----G+------ \--* LCL_VAR long (AX) V02 loc0 Deferred argument ('rdx'): [000022] -----+------ * CNS_INT int 0 Replaced with placeholder node: [000052] ----------L- * ARGPLACE int Shuffled argument table: r8 rcx rdx ArgTable for 24.CALL after fgMorphArgs: fgArgTabEntry[arg 2 48.LCL_VAR int (By ref), 1 reg: r8, byteAlignment=8, lateArgInx=0, tmpNum=V08, isTmp, processed] fgArgTabEntry[arg 0 51.LCL_VAR long (By ref), 1 reg: rcx, byteAlignment=8, lateArgInx=1, tmpNum=V09, isTmp, processed] fgArgTabEntry[arg 1 22.CNS_INT int (By ref), 1 reg: rdx, byteAlignment=8, lateArgInx=2, processed] fgMorphTree BB03, STMT00005 (after) [000028] --CXG+------ * RETURN ref [000024] --CXG+------ \--* CALL ref System.String..ctor [000050] -A--G-----L- arg0 SETUP +--* ASG long [000049] D------N---- | +--* LCL_VAR long V09 tmp4 [000021] ----G+------ | \--* LCL_VAR long (AX) V02 loc0 [000047] -ACXG-----L- arg2 SETUP +--* ASG int [000046] D------N---- | +--* LCL_VAR int V08 tmp3 [000018] --CXG+------ | \--* CALL int System.Runtime.RuntimeImports.RhGetModuleFileName ( 6, 4) [000015] *--XG------- arg0 in rcx | +--* IND long ( 3, 2) [000014] ------------ | | \--* LCL_VAR byref V01 arg1 ( 3, 3) [000017] ------------ arg1 in rdx | \--* LCL_VAR_ADDR long V02 loc0 [000048] ------------ arg2 in r8 +--* LCL_VAR int V08 tmp3 [000051] ------------ arg0 in rcx +--* LCL_VAR long V09 tmp4 [000022] -----+------ arg1 in rdx \--* CNS_INT int 0 *************** In fgMarkDemotedImplicitByRefArgs() *************** Finishing PHASE Morph - Global Trees after Morph - Global ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..016)-> BB03 ( cond ) i hascall gcsafe BB02 [0001] 1 BB01 1 [016..018) (return) i BB03 [0002] 1 BB01 1 [018..02D) (return) i hascall gcsafe newobj ----------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [000..016) -> BB03 (cond), preds={} succs={BB02,BB03} ***** BB01 STMT00000 ( 0x000[E-] ... 0x007 ) [000004] -ACXG+------ * ASG long [000003] *--X-+-N---- +--* IND long [000000] -----+------ | \--* LCL_VAR byref V01 arg1 [000002] --CXG+------ \--* CALL long System.Runtime.RuntimeImports.RhGetOSModuleFromPointer [000001] -----+------ arg0 in rcx \--* LCL_VAR long V00 arg0 ***** BB01 STMT00002 ( 0x008[E-] ... ??? ) [000013] ---XG+------ * JTRUE void [000037] J--XG+-N---- \--* NE int [000006] *--XG+------ +--* IND long [000005] -----+------ | \--* LCL_VAR byref V01 arg1 [000007] -----+------ \--* CNS_INT long 0 ------------ BB02 [016..018) (return), preds={BB01} succs={} ***** BB02 STMT00006 ( 0x016[E-] ... 0x017 ) [000030] -----+------ * RETURN ref [000029] -----+------ \--* CNS_INT ref null ------------ BB03 [018..02D) (return), preds={BB01} succs={} ***** BB03 STMT00005 ( 0x02B[E-] ... 0x02C ) [000028] --CXG+------ * RETURN ref [000024] --CXG+------ \--* CALL ref System.String..ctor [000050] -A--G-----L- arg0 SETUP +--* ASG long [000049] D------N---- | +--* LCL_VAR long V09 tmp4 [000021] ----G+------ | \--* LCL_VAR long (AX) V02 loc0 [000047] -ACXG-----L- arg2 SETUP +--* ASG int [000046] D------N---- | +--* LCL_VAR int V08 tmp3 [000018] --CXG+------ | \--* CALL int System.Runtime.RuntimeImports.RhGetModuleFileName ( 6, 4) [000015] *--XG------- arg0 in rcx | +--* IND long ( 3, 2) [000014] ------------ | | \--* LCL_VAR byref V01 arg1 ( 3, 3) [000017] ------------ arg1 in rdx | \--* LCL_VAR_ADDR long V02 loc0 [000048] ------------ arg2 in r8 +--* LCL_VAR int V08 tmp3 [000051] ------------ arg0 in rcx +--* LCL_VAR long V09 tmp4 [000022] -----+------ arg1 in rdx \--* CNS_INT int 0 ------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist *************** Starting PHASE GS Cookie No GS security needed *************** Finishing PHASE GS Cookie *************** Starting PHASE Compute edge weights (1, false) *************** In fgComputeBlockAndEdgeWeights() ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..016)-> BB03 ( cond ) i hascall gcsafe BB02 [0001] 1 BB01 1 [016..018) (return) i BB03 [0002] 1 BB01 1 [018..02D) (return) i hascall gcsafe newobj ----------------------------------------------------------------------------------------------------------------------------------------- -- no profile data, so using default called count -- not optimizing or no profile data, so not computing edge weights *************** Finishing PHASE Compute edge weights (1, false) *************** Starting PHASE Create EH funclets *************** In fgCreateFunclets() After fgCreateFunclets() ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..016)-> BB03 ( cond ) i hascall gcsafe BB02 [0001] 1 BB01 1 [016..018) (return) i BB03 [0002] 1 BB01 1 [018..02D) (return) i hascall gcsafe newobj ----------------------------------------------------------------------------------------------------------------------------------------- *************** Exception Handling table is empty *************** In fgDebugCheckBBlist *************** Finishing PHASE Create EH funclets *************** Starting PHASE Invert loops *************** Finishing PHASE Invert loops [no changes] *************** Starting PHASE Optimize layout *************** In fgUpdateFlowGraph() Before updating the flow graph: ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..016)-> BB03 ( cond ) i hascall gcsafe BB02 [0001] 1 BB01 1 [016..018) (return) i BB03 [0002] 1 BB01 1 [018..02D) (return) i hascall gcsafe newobj ----------------------------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist *************** In fgExpandRarelyRunBlocks() *************** In fgReorderBlocks() Initial BasicBlocks ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..016)-> BB03 ( cond ) i hascall gcsafe BB02 [0001] 1 BB01 1 [016..018) (return) i BB03 [0002] 1 BB01 1 [018..02D) (return) i hascall gcsafe newobj ----------------------------------------------------------------------------------------------------------------------------------------- *************** In fgUpdateFlowGraph() Before updating the flow graph: ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..016)-> BB03 ( cond ) i hascall gcsafe BB02 [0001] 1 BB01 1 [016..018) (return) i BB03 [0002] 1 BB01 1 [018..02D) (return) i hascall gcsafe newobj ----------------------------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist *************** Finishing PHASE Optimize layout Trees after Optimize layout ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..016)-> BB03 ( cond ) i hascall gcsafe BB02 [0001] 1 BB01 1 [016..018) (return) i BB03 [0002] 1 BB01 1 [018..02D) (return) i hascall gcsafe newobj ----------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [000..016) -> BB03 (cond), preds={} succs={BB02,BB03} ***** BB01 STMT00000 ( 0x000[E-] ... 0x007 ) [000004] -ACXG+------ * ASG long [000003] *--X-+-N---- +--* IND long [000000] -----+------ | \--* LCL_VAR byref V01 arg1 [000002] --CXG+------ \--* CALL long System.Runtime.RuntimeImports.RhGetOSModuleFromPointer [000001] -----+------ arg0 in rcx \--* LCL_VAR long V00 arg0 ***** BB01 STMT00002 ( 0x008[E-] ... ??? ) [000013] ---XG+------ * JTRUE void [000037] J--XG+-N---- \--* NE int [000006] *--XG+------ +--* IND long [000005] -----+------ | \--* LCL_VAR byref V01 arg1 [000007] -----+------ \--* CNS_INT long 0 ------------ BB02 [016..018) (return), preds={BB01} succs={} ***** BB02 STMT00006 ( 0x016[E-] ... 0x017 ) [000030] -----+------ * RETURN ref [000029] -----+------ \--* CNS_INT ref null ------------ BB03 [018..02D) (return), preds={BB01} succs={} ***** BB03 STMT00005 ( 0x02B[E-] ... 0x02C ) [000028] --CXG+------ * RETURN ref [000024] --CXG+------ \--* CALL ref System.String..ctor [000050] -A--G-----L- arg0 SETUP +--* ASG long [000049] D------N---- | +--* LCL_VAR long V09 tmp4 [000021] ----G+------ | \--* LCL_VAR long (AX) V02 loc0 [000047] -ACXG-----L- arg2 SETUP +--* ASG int [000046] D------N---- | +--* LCL_VAR int V08 tmp3 [000018] --CXG+------ | \--* CALL int System.Runtime.RuntimeImports.RhGetModuleFileName ( 6, 4) [000015] *--XG------- arg0 in rcx | +--* IND long ( 3, 2) [000014] ------------ | | \--* LCL_VAR byref V01 arg1 ( 3, 3) [000017] ------------ arg1 in rdx | \--* LCL_VAR_ADDR long V02 loc0 [000048] ------------ arg2 in r8 +--* LCL_VAR int V08 tmp3 [000051] ------------ arg0 in rcx +--* LCL_VAR long V09 tmp4 [000022] -----+------ arg1 in rdx \--* CNS_INT int 0 ------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist *************** Starting PHASE Compute blocks reachability *************** In fgComputeReachability *************** In fgDebugCheckBBlist Return blocks: BB03 BB02 Renumbering the basic blocks for fgComputeReachability pass #1 *************** Before renumbering the basic blocks ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..016)-> BB03 ( cond ) i hascall gcsafe BB02 [0001] 1 BB01 1 [016..018) (return) i BB03 [0002] 1 BB01 1 [018..02D) (return) i hascall gcsafe newobj ----------------------------------------------------------------------------------------------------------------------------------------- *************** Exception Handling table is empty *************** After renumbering the basic blocks =============== No blocks renumbered! Enter blocks: BB01 After computing reachability sets: ------------------------------------------------ BBnum Reachable by ------------------------------------------------ BB01 : BB01 BB02 : BB01 BB02 BB03 : BB01 BB03 After computing reachability: ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..016)-> BB03 ( cond ) i hascall gcsafe BB02 [0001] 1 BB01 1 [016..018) (return) i gcsafe BB03 [0002] 1 BB01 1 [018..02D) (return) i hascall gcsafe newobj ----------------------------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist *************** In fgComputeDoms *************** In fgDebugCheckBBlist Dominator computation start blocks (those blocks with no incoming edges): BB01 ------------------------------------------------ BBnum Dominated by ------------------------------------------------ BB01: BB01 BB02: BB02 BB01 BB03: BB03 BB01 Inside fgBuildDomTree After computing the Dominance Tree: BB01 : BB03 BB02 After numbering the dominator tree: BB01: pre=01, post=03 BB02: pre=03, post=02 BB03: pre=02, post=01 *************** Finishing PHASE Compute blocks reachability *************** Starting PHASE Set block weights After optSetBlockWeights: ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..016)-> BB03 ( cond ) i hascall gcsafe BB02 [0001] 1 BB01 0.50 [016..018) (return) i gcsafe BB03 [0002] 1 BB01 0.50 [018..02D) (return) i hascall gcsafe newobj ----------------------------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist *************** Finishing PHASE Set block weights *************** Starting PHASE Find loops *************** In optFindLoops() *************** In optMarkLoopHeads() 0 loop heads marked *************** Finishing PHASE Find loops Trees after Find loops ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..016)-> BB03 ( cond ) i hascall gcsafe BB02 [0001] 1 BB01 0.50 [016..018) (return) i gcsafe BB03 [0002] 1 BB01 0.50 [018..02D) (return) i hascall gcsafe newobj ----------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [000..016) -> BB03 (cond), preds={} succs={BB02,BB03} ***** BB01 STMT00000 ( 0x000[E-] ... 0x007 ) [000004] -ACXG+------ * ASG long [000003] *--X-+-N---- +--* IND long [000000] -----+------ | \--* LCL_VAR byref V01 arg1 [000002] --CXG+------ \--* CALL long System.Runtime.RuntimeImports.RhGetOSModuleFromPointer [000001] -----+------ arg0 in rcx \--* LCL_VAR long V00 arg0 ***** BB01 STMT00002 ( 0x008[E-] ... ??? ) [000013] ---XG+------ * JTRUE void [000037] J--XG+-N---- \--* NE int [000006] *--XG+------ +--* IND long [000005] -----+------ | \--* LCL_VAR byref V01 arg1 [000007] -----+------ \--* CNS_INT long 0 ------------ BB02 [016..018) (return), preds={BB01} succs={} ***** BB02 STMT00006 ( 0x016[E-] ... 0x017 ) [000030] -----+------ * RETURN ref [000029] -----+------ \--* CNS_INT ref null ------------ BB03 [018..02D) (return), preds={BB01} succs={} ***** BB03 STMT00005 ( 0x02B[E-] ... 0x02C ) [000028] --CXG+------ * RETURN ref [000024] --CXG+------ \--* CALL ref System.String..ctor [000050] -A--G-----L- arg0 SETUP +--* ASG long [000049] D------N---- | +--* LCL_VAR long V09 tmp4 [000021] ----G+------ | \--* LCL_VAR long (AX) V02 loc0 [000047] -ACXG-----L- arg2 SETUP +--* ASG int [000046] D------N---- | +--* LCL_VAR int V08 tmp3 [000018] --CXG+------ | \--* CALL int System.Runtime.RuntimeImports.RhGetModuleFileName ( 6, 4) [000015] *--XG------- arg0 in rcx | +--* IND long ( 3, 2) [000014] ------------ | | \--* LCL_VAR byref V01 arg1 ( 3, 3) [000017] ------------ arg1 in rdx | \--* LCL_VAR_ADDR long V02 loc0 [000048] ------------ arg2 in r8 +--* LCL_VAR int V08 tmp3 [000051] ------------ arg0 in rcx +--* LCL_VAR long V09 tmp4 [000022] -----+------ arg1 in rdx \--* CNS_INT int 0 ------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist *************** 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 Mark local vars *************** In lvaMarkLocalVars() *** lvaComputeRefCounts *** *** lvaComputeRefCounts -- explicit counts *** *** marking local variables in block BB01 (weight=1 ) STMT00000 ( 0x000[E-] ... 0x007 ) [000004] -ACXG+------ * ASG long [000003] *--X-+-N---- +--* IND long [000000] -----+------ | \--* LCL_VAR byref V01 arg1 [000002] --CXG+------ \--* CALL long System.Runtime.RuntimeImports.RhGetOSModuleFromPointer [000001] -----+------ arg0 in rcx \--* LCL_VAR long V00 arg0 New refCnts for V01: refCnt = 1, refCntWtd = 1 New refCnts for V00: refCnt = 1, refCntWtd = 1 STMT00002 ( 0x008[E-] ... ??? ) [000013] ---XG+------ * JTRUE void [000037] J--XG+-N---- \--* NE int [000006] *--XG+------ +--* IND long [000005] -----+------ | \--* LCL_VAR byref V01 arg1 [000007] -----+------ \--* CNS_INT long 0 New refCnts for V01: refCnt = 2, refCntWtd = 2 *** marking local variables in block BB02 (weight=0.50) STMT00006 ( 0x016[E-] ... 0x017 ) [000030] -----+------ * RETURN ref [000029] -----+------ \--* CNS_INT ref null *** marking local variables in block BB03 (weight=0.50) STMT00005 ( 0x02B[E-] ... 0x02C ) [000028] --CXG+------ * RETURN ref [000024] --CXG+------ \--* CALL ref System.String..ctor [000050] -A--G-----L- arg0 SETUP +--* ASG long [000049] D------N---- | +--* LCL_VAR long V09 tmp4 [000021] ----G+------ | \--* LCL_VAR long (AX) V02 loc0 [000047] -ACXG-----L- arg2 SETUP +--* ASG int [000046] D------N---- | +--* LCL_VAR int V08 tmp3 [000018] --CXG+------ | \--* CALL int System.Runtime.RuntimeImports.RhGetModuleFileName ( 6, 4) [000015] *--XG------- arg0 in rcx | +--* IND long ( 3, 2) [000014] ------------ | | \--* LCL_VAR byref V01 arg1 ( 3, 3) [000017] ------------ arg1 in rdx | \--* LCL_VAR_ADDR long V02 loc0 [000048] ------------ arg2 in r8 +--* LCL_VAR int V08 tmp3 [000051] ------------ arg0 in rcx +--* LCL_VAR long V09 tmp4 [000022] -----+------ arg1 in rdx \--* CNS_INT int 0 New refCnts for V09: refCnt = 1, refCntWtd = 1 V09 needs explicit zero init. Disqualified as a single-def register candidate. New refCnts for V02: refCnt = 1, refCntWtd = 0.50 New refCnts for V08: refCnt = 1, refCntWtd = 1 V08 needs explicit zero init. Disqualified as a single-def register candidate. New refCnts for V01: refCnt = 3, refCntWtd = 2.50 New refCnts for V02: refCnt = 2, refCntWtd = 1 New refCnts for V08: refCnt = 2, refCntWtd = 2 New refCnts for V09: refCnt = 2, refCntWtd = 2 *** lvaComputeRefCounts -- implicit counts *** New refCnts for V00: refCnt = 2, refCntWtd = 2 New refCnts for V00: refCnt = 3, refCntWtd = 3 New refCnts for V01: refCnt = 4, refCntWtd = 3.50 New refCnts for V01: refCnt = 5, refCntWtd = 4.50 *************** In optAddCopies() *************** Finishing PHASE Mark local vars *************** Starting PHASE Optimize bools *************** In optOptimizeBools() *************** In fgDebugCheckBBlist *************** Finishing PHASE Optimize bools *************** Starting PHASE Find oper order *************** In fgFindOperOrder() *************** Finishing PHASE Find oper order *************** Starting PHASE Set block order *************** In fgSetBlockOrder() The biggest BB has 17 tree nodes *************** Finishing PHASE Set block order Trees before Build SSA representation ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..016)-> BB03 ( cond ) i hascall gcsafe BB02 [0001] 1 BB01 0.50 [016..018) (return) i gcsafe BB03 [0002] 1 BB01 0.50 [018..02D) (return) i hascall gcsafe newobj ----------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [000..016) -> BB03 (cond), preds={} succs={BB02,BB03} ***** BB01 STMT00000 ( 0x000[E-] ... 0x007 ) N006 ( 19, 10) [000004] -ACXG---R--- * ASG long N005 ( 3, 2) [000003] *--X---N---- +--* IND long N004 ( 1, 1) [000000] ------------ | \--* LCL_VAR byref V01 arg1 N003 ( 15, 7) [000002] --CXG------- \--* CALL long System.Runtime.RuntimeImports.RhGetOSModuleFromPointer N002 ( 1, 1) [000001] ------------ arg0 in rcx \--* LCL_VAR long V00 arg0 ***** BB01 STMT00002 ( 0x008[E-] ... ??? ) N005 ( 7, 6) [000013] ---XG------- * JTRUE void N004 ( 5, 4) [000037] J--XG--N---- \--* NE int N002 ( 3, 2) [000006] *--XG------- +--* IND long N001 ( 1, 1) [000005] ------------ | \--* LCL_VAR byref V01 arg1 N003 ( 1, 1) [000007] ------------ \--* CNS_INT long 0 ------------ BB02 [016..018) (return), preds={BB01} succs={} ***** BB02 STMT00006 ( 0x016[E-] ... 0x017 ) N002 ( 2, 2) [000030] ------------ * RETURN ref N001 ( 1, 1) [000029] ------------ \--* CNS_INT ref null ------------ BB03 [018..02D) (return), preds={BB01} succs={} ***** BB03 STMT00005 ( 0x02B[E-] ... 0x02C ) N017 ( 59, 34) [000028] --CXG------- * RETURN ref N016 ( 58, 33) [000024] --CXG------- \--* CALL ref System.String..ctor N003 ( 7, 5) [000050] -A--G---R-L- arg0 SETUP +--* ASG long N002 ( 3, 2) [000049] D------N---- | +--* LCL_VAR long V09 tmp4 N001 ( 3, 2) [000021] ----G------- | \--* LCL_VAR long (AX) V02 loc0 N012 ( 24, 15) [000047] -ACXG---R-L- arg2 SETUP +--* ASG int N011 ( 3, 2) [000046] D------N---- | +--* LCL_VAR int V08 tmp3 N010 ( 20, 12) [000018] --CXG------- | \--* CALL int System.Runtime.RuntimeImports.RhGetModuleFileName N008 ( 3, 2) [000015] *--XG------- arg0 in rcx | +--* IND long N007 ( 1, 1) [000014] ------------ | | \--* LCL_VAR byref V01 arg1 N009 ( 3, 3) [000017] ------------ arg1 in rdx | \--* LCL_VAR_ADDR long V02 loc0 N013 ( 3, 2) [000048] ------------ arg2 in r8 +--* LCL_VAR int V08 tmp3 N014 ( 3, 2) [000051] ------------ arg0 in rcx +--* LCL_VAR long V09 tmp4 N015 ( 1, 1) [000022] ------------ arg1 in rdx \--* CNS_INT int 0 ------------------------------------------------------------------------------------------------------------------- *************** Starting PHASE Build SSA representation *************** In SsaBuilder::Build() [SsaBuilder] Max block count is 4. ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..016)-> BB03 ( cond ) i hascall gcsafe BB02 [0001] 1 BB01 0.50 [016..018) (return) i gcsafe BB03 [0002] 1 BB01 0.50 [018..02D) (return) i hascall gcsafe newobj ----------------------------------------------------------------------------------------------------------------------------------------- *************** Exception Handling table is empty [SsaBuilder] Topologically sorted the graph. [SsaBuilder::ComputeImmediateDom] Inside fgBuildDomTree After computing the Dominance Tree: BB01 : BB03 BB02 *************** In fgLocalVarLiveness() In fgLocalVarLivenessInit Tracked variable (4 out of 10) table: V01 arg1 [ byref]: refCnt = 5, refCntWtd = 4.50 V00 arg0 [ long]: refCnt = 3, refCntWtd = 3 V08 tmp3 [ int]: refCnt = 2, refCntWtd = 2 V09 tmp4 [ long]: refCnt = 2, refCntWtd = 2 *************** In fgPerBlockLocalVarLiveness() BB01 USE(2)={V01 V00} + ByrefExposed + GcHeap DEF(0)={ } + ByrefExposed* + GcHeap* BB02 USE(0)={} DEF(0)={} BB03 USE(1)={V01 } + ByrefExposed + GcHeap DEF(2)={ V08 V09} + ByrefExposed* + GcHeap* ** Memory liveness computed, GcHeap states and ByrefExposed states match *************** In fgInterBlockLocalVarLiveness() BB liveness after fgLiveVarAnalysis(): BB01 IN (2)={V01 V00} + ByrefExposed + GcHeap OUT(1)={V01 } + ByrefExposed + GcHeap BB02 IN (0)={} OUT(0)={} BB03 IN (1)={V01} + ByrefExposed + GcHeap OUT(0)={ } *************** In optRemoveRedundantZeroInits() *************** In SsaBuilder::InsertPhiFunctions() Inserting phi functions: *************** In SsaBuilder::RenameVariables() After fgSsaBuild: ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..016)-> BB03 ( cond ) i hascall gcsafe BB02 [0001] 1 BB01 0.50 [016..018) (return) i gcsafe BB03 [0002] 1 BB01 0.50 [018..02D) (return) i hascall gcsafe newobj ----------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [000..016) -> BB03 (cond), preds={} succs={BB02,BB03} ***** BB01 STMT00000 ( 0x000[E-] ... 0x007 ) N006 ( 19, 10) [000004] -ACXG---R--- * ASG long N005 ( 3, 2) [000003] *--X---N---- +--* IND long N004 ( 1, 1) [000000] ------------ | \--* LCL_VAR byref V01 arg1 u:1 N003 ( 15, 7) [000002] --CXG------- \--* CALL long System.Runtime.RuntimeImports.RhGetOSModuleFromPointer N002 ( 1, 1) [000001] ------------ arg0 in rcx \--* LCL_VAR long V00 arg0 u:1 (last use) ***** BB01 STMT00002 ( 0x008[E-] ... ??? ) N005 ( 7, 6) [000013] ---XG------- * JTRUE void N004 ( 5, 4) [000037] J--XG--N---- \--* NE int N002 ( 3, 2) [000006] *--XG------- +--* IND long N001 ( 1, 1) [000005] ------------ | \--* LCL_VAR byref V01 arg1 u:1 N003 ( 1, 1) [000007] ------------ \--* CNS_INT long 0 ------------ BB02 [016..018) (return), preds={BB01} succs={} ***** BB02 STMT00006 ( 0x016[E-] ... 0x017 ) N002 ( 2, 2) [000030] ------------ * RETURN ref N001 ( 1, 1) [000029] ------------ \--* CNS_INT ref null ------------ BB03 [018..02D) (return), preds={BB01} succs={} ***** BB03 STMT00005 ( 0x02B[E-] ... 0x02C ) N017 ( 59, 34) [000028] --CXG------- * RETURN ref N016 ( 58, 33) [000024] --CXG------- \--* CALL ref System.String..ctor N003 ( 7, 5) [000050] -A--G---R-L- arg0 SETUP +--* ASG long N002 ( 3, 2) [000049] D------N---- | +--* LCL_VAR long V09 tmp4 d:1 N001 ( 3, 2) [000021] ----G------- | \--* LCL_VAR long (AX) V02 loc0 N012 ( 24, 15) [000047] -ACXG---R-L- arg2 SETUP +--* ASG int N011 ( 3, 2) [000046] D------N---- | +--* LCL_VAR int V08 tmp3 d:1 N010 ( 20, 12) [000018] --CXG------- | \--* CALL int System.Runtime.RuntimeImports.RhGetModuleFileName N008 ( 3, 2) [000015] *--XG------- arg0 in rcx | +--* IND long N007 ( 1, 1) [000014] ------------ | | \--* LCL_VAR byref V01 arg1 u:1 (last use) N009 ( 3, 3) [000017] ------------ arg1 in rdx | \--* LCL_VAR_ADDR long V02 loc0 N013 ( 3, 2) [000048] ------------ arg2 in r8 +--* LCL_VAR int V08 tmp3 u:1 (last use) N014 ( 3, 2) [000051] ------------ arg0 in rcx +--* LCL_VAR long V09 tmp4 u:1 (last use) N015 ( 1, 1) [000022] ------------ arg1 in rdx \--* CNS_INT int 0 ------------------------------------------------------------------------------------------------------------------- *************** Finishing PHASE Build SSA representation Trees after Build SSA representation ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..016)-> BB03 ( cond ) i hascall gcsafe BB02 [0001] 1 BB01 0.50 [016..018) (return) i gcsafe BB03 [0002] 1 BB01 0.50 [018..02D) (return) i hascall gcsafe newobj ----------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [000..016) -> BB03 (cond), preds={} succs={BB02,BB03} ***** BB01 STMT00000 ( 0x000[E-] ... 0x007 ) N006 ( 19, 10) [000004] -ACXG---R--- * ASG long N005 ( 3, 2) [000003] *--X---N---- +--* IND long N004 ( 1, 1) [000000] ------------ | \--* LCL_VAR byref V01 arg1 u:1 N003 ( 15, 7) [000002] --CXG------- \--* CALL long System.Runtime.RuntimeImports.RhGetOSModuleFromPointer N002 ( 1, 1) [000001] ------------ arg0 in rcx \--* LCL_VAR long V00 arg0 u:1 (last use) ***** BB01 STMT00002 ( 0x008[E-] ... ??? ) N005 ( 7, 6) [000013] ---XG------- * JTRUE void N004 ( 5, 4) [000037] J--XG--N---- \--* NE int N002 ( 3, 2) [000006] *--XG------- +--* IND long N001 ( 1, 1) [000005] ------------ | \--* LCL_VAR byref V01 arg1 u:1 N003 ( 1, 1) [000007] ------------ \--* CNS_INT long 0 ------------ BB02 [016..018) (return), preds={BB01} succs={} ***** BB02 STMT00006 ( 0x016[E-] ... 0x017 ) N002 ( 2, 2) [000030] ------------ * RETURN ref N001 ( 1, 1) [000029] ------------ \--* CNS_INT ref null ------------ BB03 [018..02D) (return), preds={BB01} succs={} ***** BB03 STMT00005 ( 0x02B[E-] ... 0x02C ) N017 ( 59, 34) [000028] --CXG------- * RETURN ref N016 ( 58, 33) [000024] --CXG------- \--* CALL ref System.String..ctor N003 ( 7, 5) [000050] -A--G---R-L- arg0 SETUP +--* ASG long N002 ( 3, 2) [000049] D------N---- | +--* LCL_VAR long V09 tmp4 d:1 N001 ( 3, 2) [000021] ----G------- | \--* LCL_VAR long (AX) V02 loc0 N012 ( 24, 15) [000047] -ACXG---R-L- arg2 SETUP +--* ASG int N011 ( 3, 2) [000046] D------N---- | +--* LCL_VAR int V08 tmp3 d:1 N010 ( 20, 12) [000018] --CXG------- | \--* CALL int System.Runtime.RuntimeImports.RhGetModuleFileName N008 ( 3, 2) [000015] *--XG------- arg0 in rcx | +--* IND long N007 ( 1, 1) [000014] ------------ | | \--* LCL_VAR byref V01 arg1 u:1 (last use) N009 ( 3, 3) [000017] ------------ arg1 in rdx | \--* LCL_VAR_ADDR long V02 loc0 N013 ( 3, 2) [000048] ------------ arg2 in r8 +--* LCL_VAR int V08 tmp3 u:1 (last use) N014 ( 3, 2) [000051] ------------ arg0 in rcx +--* LCL_VAR long V09 tmp4 u:1 (last use) N015 ( 1, 1) [000022] ------------ arg1 in rdx \--* CNS_INT int 0 ------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist *************** Starting PHASE Early Value Propagation *************** In optEarlyProp() After optEarlyProp: ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..016)-> BB03 ( cond ) i hascall gcsafe BB02 [0001] 1 BB01 0.50 [016..018) (return) i gcsafe BB03 [0002] 1 BB01 0.50 [018..02D) (return) i hascall gcsafe newobj ----------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [000..016) -> BB03 (cond), preds={} succs={BB02,BB03} ***** BB01 STMT00000 ( 0x000[E-] ... 0x007 ) N006 ( 19, 10) [000004] -ACXG---R--- * ASG long N005 ( 3, 2) [000003] *--X---N---- +--* IND long N004 ( 1, 1) [000000] ------------ | \--* LCL_VAR byref V01 arg1 u:1 N003 ( 15, 7) [000002] --CXG------- \--* CALL long System.Runtime.RuntimeImports.RhGetOSModuleFromPointer N002 ( 1, 1) [000001] ------------ arg0 in rcx \--* LCL_VAR long V00 arg0 u:1 (last use) ***** BB01 STMT00002 ( 0x008[E-] ... ??? ) N005 ( 7, 6) [000013] ---XG------- * JTRUE void N004 ( 5, 4) [000037] J--XG--N---- \--* NE int N002 ( 3, 2) [000006] *--XG------- +--* IND long N001 ( 1, 1) [000005] ------------ | \--* LCL_VAR byref V01 arg1 u:1 N003 ( 1, 1) [000007] ------------ \--* CNS_INT long 0 ------------ BB02 [016..018) (return), preds={BB01} succs={} ***** BB02 STMT00006 ( 0x016[E-] ... 0x017 ) N002 ( 2, 2) [000030] ------------ * RETURN ref N001 ( 1, 1) [000029] ------------ \--* CNS_INT ref null ------------ BB03 [018..02D) (return), preds={BB01} succs={} ***** BB03 STMT00005 ( 0x02B[E-] ... 0x02C ) N017 ( 59, 34) [000028] --CXG------- * RETURN ref N016 ( 58, 33) [000024] --CXG------- \--* CALL ref System.String..ctor N003 ( 7, 5) [000050] -A--G---R-L- arg0 SETUP +--* ASG long N002 ( 3, 2) [000049] D------N---- | +--* LCL_VAR long V09 tmp4 d:1 N001 ( 3, 2) [000021] ----G------- | \--* LCL_VAR long (AX) V02 loc0 N012 ( 24, 15) [000047] -ACXG---R-L- arg2 SETUP +--* ASG int N011 ( 3, 2) [000046] D------N---- | +--* LCL_VAR int V08 tmp3 d:1 N010 ( 20, 12) [000018] --CXG------- | \--* CALL int System.Runtime.RuntimeImports.RhGetModuleFileName N008 ( 3, 2) [000015] *--XG------- arg0 in rcx | +--* IND long N007 ( 1, 1) [000014] ------------ | | \--* LCL_VAR byref V01 arg1 u:1 (last use) N009 ( 3, 3) [000017] ------------ arg1 in rdx | \--* LCL_VAR_ADDR long V02 loc0 N013 ( 3, 2) [000048] ------------ arg2 in r8 +--* LCL_VAR int V08 tmp3 u:1 (last use) N014 ( 3, 2) [000051] ------------ arg0 in rcx +--* LCL_VAR long V09 tmp4 u:1 (last use) N015 ( 1, 1) [000022] ------------ arg1 in rdx \--* CNS_INT int 0 ------------------------------------------------------------------------------------------------------------------- *************** Finishing PHASE Early Value Propagation *************** Starting PHASE Do value numbering *************** In fgValueNumber() Memory Initial Value in BB01 is: $100 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) N006 ( 19, 10) [000004] -ACXG---R--- * ASG long N005 ( 3, 2) [000003] *--X---N---- +--* IND long N004 ( 1, 1) [000000] ------------ | \--* LCL_VAR byref V01 arg1 u:1 N003 ( 15, 7) [000002] --CXG------- \--* CALL long System.Runtime.RuntimeImports.RhGetOSModuleFromPointer N002 ( 1, 1) [000001] ------------ arg0 in rcx \--* LCL_VAR long V00 arg0 u:1 (last use) N001 [000043] ARGPLACE => $81 {MemOpaque:NotInLoop} N002 [000001] LCL_VAR V00 arg0 u:1 (last use) => $80 {InitVal($40)} VN of ARGPLACE tree [000043] updated to $80 {InitVal($40)} fgCurMemoryVN[GcHeap] assigned for CALL at [000002] to VN: $101. N003 [000002] CALL => $82 {MemOpaque:NotInLoop} N004 [000000] LCL_VAR V01 arg1 u:1 => $c0 {InitVal($41)} fgCurMemoryVN[GcHeap] assigned for assign-of-IND at [000004] to VN: $102. N006 [000004] ASG => $VN.Void ***** BB01, STMT00000(after) N006 ( 19, 10) [000004] -ACXG---R--- * ASG long $VN.Void N005 ( 3, 2) [000003] *--X---N---- +--* IND long $82 N004 ( 1, 1) [000000] ------------ | \--* LCL_VAR byref V01 arg1 u:1 $c0 N003 ( 15, 7) [000002] --CXG------- \--* CALL long System.Runtime.RuntimeImports.RhGetOSModuleFromPointer $82 N002 ( 1, 1) [000001] ------------ arg0 in rcx \--* LCL_VAR long V00 arg0 u:1 (last use) $80 --------- ***** BB01, STMT00002(before) N005 ( 7, 6) [000013] ---XG------- * JTRUE void N004 ( 5, 4) [000037] J--XG--N---- \--* NE int N002 ( 3, 2) [000006] *--XG------- +--* IND long N001 ( 1, 1) [000005] ------------ | \--* LCL_VAR byref V01 arg1 u:1 N003 ( 1, 1) [000007] ------------ \--* CNS_INT long 0 N001 [000005] LCL_VAR V01 arg1 u:1 => $c0 {InitVal($41)} N002 [000006] IND => <l:$201 {norm=$140 {ByrefExposedLoad($43, $c0, $102)}, exc=$1c0 {NullPtrExc($c0)}}, c:$200 {norm=$83 {MemOpaque:NotInLoop}, exc=$1c0 {NullPtrExc($c0)}}> N003 [000007] CNS_INT 0 => $240 {LngCns: 0} N004 [000037] NE => <l:$283 {norm=$281 {NE($140, $240)}, exc=$1c0 {NullPtrExc($c0)}}, c:$282 {norm=$280 {NE($83, $240)}, exc=$1c0 {NullPtrExc($c0)}}> ***** BB01, STMT00002(after) N005 ( 7, 6) [000013] ---XG------- * JTRUE void N004 ( 5, 4) [000037] J--XG--N---- \--* NE int <l:$283, c:$282> N002 ( 3, 2) [000006] *--XG------- +--* IND long <l:$201, c:$200> N001 ( 1, 1) [000005] ------------ | \--* LCL_VAR byref V01 arg1 u:1 $c0 N003 ( 1, 1) [000007] ------------ \--* CNS_INT long 0 $240 finish(BB01). Succ(BB02). Not yet completed. All preds complete, adding to allDone. Succ(BB03). Not yet completed. All preds complete, adding to allDone. The SSA definition for ByrefExposed (#2) at start of BB03 is $102 {MemOpaque:NotInLoop} The SSA definition for GcHeap (#2) at start of BB03 is $102 {MemOpaque:NotInLoop} ***** BB03, STMT00005(before) N017 ( 59, 34) [000028] --CXG------- * RETURN ref N016 ( 58, 33) [000024] --CXG------- \--* CALL ref System.String..ctor N003 ( 7, 5) [000050] -A--G---R-L- arg0 SETUP +--* ASG long N002 ( 3, 2) [000049] D------N---- | +--* LCL_VAR long V09 tmp4 d:1 N001 ( 3, 2) [000021] ----G------- | \--* LCL_VAR long (AX) V02 loc0 N012 ( 24, 15) [000047] -ACXG---R-L- arg2 SETUP +--* ASG int N011 ( 3, 2) [000046] D------N---- | +--* LCL_VAR int V08 tmp3 d:1 N010 ( 20, 12) [000018] --CXG------- | \--* CALL int System.Runtime.RuntimeImports.RhGetModuleFileName N008 ( 3, 2) [000015] *--XG------- arg0 in rcx | +--* IND long N007 ( 1, 1) [000014] ------------ | | \--* LCL_VAR byref V01 arg1 u:1 (last use) N009 ( 3, 3) [000017] ------------ arg1 in rdx | \--* LCL_VAR_ADDR long V02 loc0 N013 ( 3, 2) [000048] ------------ arg2 in r8 +--* LCL_VAR int V08 tmp3 u:1 (last use) N014 ( 3, 2) [000051] ------------ arg0 in rcx +--* LCL_VAR long V09 tmp4 u:1 (last use) N015 ( 1, 1) [000022] ------------ arg1 in rdx \--* CNS_INT int 0 N001 [000021] LCL_VAR V02 loc0 => $141 {ByrefExposedLoad($43, $2c0, $102)} N002 [000049] LCL_VAR V09 tmp4 d:1 => $141 {ByrefExposedLoad($43, $2c0, $102)} N003 [000050] ASG => $141 {ByrefExposedLoad($43, $2c0, $102)} N004 [000052] ARGPLACE => $300 {MemOpaque:NotInLoop} N005 [000044] ARGPLACE => $85 {MemOpaque:NotInLoop} N006 [000045] ARGPLACE => $86 {MemOpaque:NotInLoop} N007 [000014] LCL_VAR V01 arg1 u:1 (last use) => $c0 {InitVal($41)} N008 [000015] IND => <l:$201 {norm=$140 {ByrefExposedLoad($43, $c0, $102)}, exc=$1c0 {NullPtrExc($c0)}}, c:$202 {norm=$87 {MemOpaque:NotInLoop}, exc=$1c0 {NullPtrExc($c0)}}> N009 [000017] LCL_VAR_ADDR V02 loc0 => $88 {MemOpaque:NotInLoop} VN of ARGPLACE tree [000044] updated to <l:$201 {norm=$140 {ByrefExposedLoad($43, $c0, $102)}, exc=$1c0 {NullPtrExc($c0)}}, c:$202 {norm=$87 {MemOpaque:NotInLoop}, exc=$1c0 {NullPtrExc($c0)}}> VN of ARGPLACE tree [000045] updated to $88 {MemOpaque:NotInLoop} fgCurMemoryVN[GcHeap] assigned for CALL at [000018] to VN: $103. N010 [000018] CALL => $301 {MemOpaque:NotInLoop} N011 [000046] LCL_VAR V08 tmp3 d:1 => $301 {MemOpaque:NotInLoop} N012 [000047] ASG => $301 {MemOpaque:NotInLoop} N013 [000048] LCL_VAR V08 tmp3 u:1 (last use) => $301 {MemOpaque:NotInLoop} N014 [000051] LCL_VAR V09 tmp4 u:1 (last use) => $141 {ByrefExposedLoad($43, $2c0, $102)} N015 [000022] CNS_INT 0 => $40 {IntCns 0} VN of ARGPLACE tree [000052] updated to $40 {IntCns 0} fgCurMemoryVN[GcHeap] assigned for CALL at [000024] to VN: $104. N016 [000024] CALL => $181 {MemOpaque:NotInLoop} N017 [000028] RETURN => $182 {MemOpaque:NotInLoop} ***** BB03, STMT00005(after) N017 ( 59, 34) [000028] --CXG------- * RETURN ref $182 N016 ( 58, 33) [000024] --CXG------- \--* CALL ref System.String..ctor $181 N003 ( 7, 5) [000050] -A--G---R-L- arg0 SETUP +--* ASG long $141 N002 ( 3, 2) [000049] D------N---- | +--* LCL_VAR long V09 tmp4 d:1 $141 N001 ( 3, 2) [000021] ----G------- | \--* LCL_VAR long (AX) V02 loc0 $141 N012 ( 24, 15) [000047] -ACXG---R-L- arg2 SETUP +--* ASG int $301 N011 ( 3, 2) [000046] D------N---- | +--* LCL_VAR int V08 tmp3 d:1 $301 N010 ( 20, 12) [000018] --CXG------- | \--* CALL int System.Runtime.RuntimeImports.RhGetModuleFileName $301 N008 ( 3, 2) [000015] *--XG------- arg0 in rcx | +--* IND long <l:$201, c:$202> N007 ( 1, 1) [000014] ------------ | | \--* LCL_VAR byref V01 arg1 u:1 (last use) $c0 N009 ( 3, 3) [000017] ------------ arg1 in rdx | \--* LCL_VAR_ADDR long V02 loc0 $88 N013 ( 3, 2) [000048] ------------ arg2 in r8 +--* LCL_VAR int V08 tmp3 u:1 (last use) $301 N014 ( 3, 2) [000051] ------------ arg0 in rcx +--* LCL_VAR long V09 tmp4 u:1 (last use) $141 N015 ( 1, 1) [000022] ------------ arg1 in rdx \--* CNS_INT int 0 $40 finish(BB03). The SSA definition for ByrefExposed (#2) at start of BB02 is $102 {MemOpaque:NotInLoop} The SSA definition for GcHeap (#2) at start of BB02 is $102 {MemOpaque:NotInLoop} ***** BB02, STMT00006(before) N002 ( 2, 2) [000030] ------------ * RETURN ref N001 ( 1, 1) [000029] ------------ \--* CNS_INT ref null N001 [000029] CNS_INT null => $VN.Null N002 [000030] RETURN => $183 {MemOpaque:NotInLoop} ***** BB02, STMT00006(after) N002 ( 2, 2) [000030] ------------ * RETURN ref $183 N001 ( 1, 1) [000029] ------------ \--* CNS_INT ref null $VN.Null finish(BB02). *************** Finishing PHASE Do value numbering *************** Starting PHASE Hoist loop code No loops; no hoisting *************** Finishing PHASE Hoist loop code *************** Starting PHASE VN based copy prop *************** In optVnCopyProp() Copy Assertion for BB01 curSsaName stack: { } Live vars: {V00 V01} => {V01} Copy Assertion for BB03 curSsaName stack: { 0-[000001]:V00 1-[000000]:V01 } Live vars: {V01} => {V01 V09} Live vars: {V01 V09} => {V09} Live vars: {V09} => {V08 V09} Live vars: {V08 V09} => {V09} Live vars: {V09} => {} Copy Assertion for BB02 curSsaName stack: { 0-[000001]:V00 1-[000000]:V01 } *************** Finishing PHASE VN based copy prop *************** Starting PHASE Redundant branch opts ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..016)-> BB03 ( cond ) i hascall gcsafe BB02 [0001] 1 BB01 0.50 [016..018) (return) i gcsafe BB03 [0002] 1 BB01 0.50 [018..02D) (return) i hascall gcsafe newobj ----------------------------------------------------------------------------------------------------------------------------------------- optRedundantRelop in BB01; jump tree is N005 ( 7, 6) [000013] ---XG------- * JTRUE void N004 ( 5, 4) [000037] J--XG--N---- \--* NE int <l:$283, c:$282> N002 ( 3, 2) [000006] *--XG------- +--* IND long <l:$201, c:$200> N001 ( 1, 1) [000005] ------------ | \--* LCL_VAR byref V01 arg1 u:1 $c0 N003 ( 1, 1) [000007] ------------ \--* CNS_INT long 0 $240 ... checking previous tree N006 ( 19, 10) [000004] -ACXG---R--- * ASG long $VN.Void N005 ( 3, 2) [000003] *--X---N---- +--* IND long $82 N004 ( 1, 1) [000000] ------------ | \--* LCL_VAR byref V01 arg1 u:1 $c0 N003 ( 15, 7) [000002] --CXG------- \--* CALL long System.Runtime.RuntimeImports.RhGetOSModuleFromPointer $82 N002 ( 1, 1) [000001] ------------ arg0 in rcx \--* LCL_VAR long V00 arg0 u:1 (last use) $80 -- prev tree has side effects, allowing as prev tree is immediately before jumpTree -- prev tree not ASG(LCL...) *************** Finishing PHASE Redundant branch opts [no changes] Trees before Optimize Valnum CSEs ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..016)-> BB03 ( cond ) i hascall gcsafe BB02 [0001] 1 BB01 0.50 [016..018) (return) i gcsafe BB03 [0002] 1 BB01 0.50 [018..02D) (return) i hascall gcsafe newobj ----------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [000..016) -> BB03 (cond), preds={} succs={BB02,BB03} ***** BB01 STMT00000 ( 0x000[E-] ... 0x007 ) N006 ( 19, 10) [000004] -ACXG---R--- * ASG long $VN.Void N005 ( 3, 2) [000003] *--X---N---- +--* IND long $82 N004 ( 1, 1) [000000] ------------ | \--* LCL_VAR byref V01 arg1 u:1 $c0 N003 ( 15, 7) [000002] --CXG------- \--* CALL long System.Runtime.RuntimeImports.RhGetOSModuleFromPointer $82 N002 ( 1, 1) [000001] ------------ arg0 in rcx \--* LCL_VAR long V00 arg0 u:1 (last use) $80 ***** BB01 STMT00002 ( 0x008[E-] ... ??? ) N005 ( 7, 6) [000013] ---XG------- * JTRUE void N004 ( 5, 4) [000037] J--XG--N---- \--* NE int <l:$283, c:$282> N002 ( 3, 2) [000006] *--XG------- +--* IND long <l:$201, c:$200> N001 ( 1, 1) [000005] ------------ | \--* LCL_VAR byref V01 arg1 u:1 $c0 N003 ( 1, 1) [000007] ------------ \--* CNS_INT long 0 $240 ------------ BB02 [016..018) (return), preds={BB01} succs={} ***** BB02 STMT00006 ( 0x016[E-] ... 0x017 ) N002 ( 2, 2) [000030] ------------ * RETURN ref $183 N001 ( 1, 1) [000029] ------------ \--* CNS_INT ref null $VN.Null ------------ BB03 [018..02D) (return), preds={BB01} succs={} ***** BB03 STMT00005 ( 0x02B[E-] ... 0x02C ) N017 ( 59, 34) [000028] --CXG------- * RETURN ref $182 N016 ( 58, 33) [000024] --CXG------- \--* CALL ref System.String..ctor $181 N003 ( 7, 5) [000050] -A--G---R-L- arg0 SETUP +--* ASG long $141 N002 ( 3, 2) [000049] D------N---- | +--* LCL_VAR long V09 tmp4 d:1 $141 N001 ( 3, 2) [000021] ----G------- | \--* LCL_VAR long (AX) V02 loc0 $141 N012 ( 24, 15) [000047] -ACXG---R-L- arg2 SETUP +--* ASG int $301 N011 ( 3, 2) [000046] D------N---- | +--* LCL_VAR int V08 tmp3 d:1 $301 N010 ( 20, 12) [000018] --CXG------- | \--* CALL int System.Runtime.RuntimeImports.RhGetModuleFileName $301 N008 ( 3, 2) [000015] *--XG------- arg0 in rcx | +--* IND long <l:$201, c:$202> N007 ( 1, 1) [000014] ------------ | | \--* LCL_VAR byref V01 arg1 u:1 (last use) $c0 N009 ( 3, 3) [000017] ------------ arg1 in rdx | \--* LCL_VAR_ADDR long V02 loc0 $88 N013 ( 3, 2) [000048] ------------ arg2 in r8 +--* LCL_VAR int V08 tmp3 u:1 (last use) $301 N014 ( 3, 2) [000051] ------------ arg0 in rcx +--* LCL_VAR long V09 tmp4 u:1 (last use) $141 N015 ( 1, 1) [000022] ------------ arg1 in rdx \--* CNS_INT int 0 $40 ------------------------------------------------------------------------------------------------------------------- *************** Starting PHASE Optimize Valnum CSEs CSE candidate #01, key=$140 in BB03, [cost= 3, size= 2]: N008 ( 3, 2) CSE #01 (use)[000015] *--XG------- * IND long <l:$201, c:$202> N007 ( 1, 1) [000014] ------------ \--* LCL_VAR byref V01 arg1 u:1 (last use) $c0 Blocks that generate CSE def/uses BB01 cseGen = 0000000000000003 CSE #01.c BB03 cseGen = 0000000000000001 CSE #01 Performing DataFlow for ValnumCSE's After performing DataFlow for ValnumCSE's BB01 in gen out 0000000000000000 0000000000000003 CSE #01.c 0000000000000003 CSE #01.c BB02 in gen out 0000000000000003 CSE #01.c 0000000000000000 0000000000000003 CSE #01.c BB03 in gen out 0000000000000003 CSE #01.c 0000000000000001 CSE #01 0000000000000001 CSE #01 Labeling the CSEs with Use/Def information BB01 [000006] Def of CSE #01 [weight=1 ] BB03 [000015] Use of CSE #01 [weight=0.50] ************ Trees at start of optValnumCSE_Heuristic() ------------ BB01 [000..016) -> BB03 (cond), preds={} succs={BB02,BB03} ***** BB01 STMT00000 ( 0x000[E-] ... 0x007 ) N006 ( 19, 10) [000004] -ACXG---R--- * ASG long $VN.Void N005 ( 3, 2) [000003] *--X---N---- +--* IND long $82 N004 ( 1, 1) [000000] ------------ | \--* LCL_VAR byref V01 arg1 u:1 $c0 N003 ( 15, 7) [000002] --CXG------- \--* CALL long System.Runtime.RuntimeImports.RhGetOSModuleFromPointer $82 N002 ( 1, 1) [000001] ------------ arg0 in rcx \--* LCL_VAR long V00 arg0 u:1 (last use) $80 ***** BB01 STMT00002 ( 0x008[E-] ... ??? ) N005 ( 7, 6) [000013] ---XG------- * JTRUE void N004 ( 5, 4) [000037] J--XG--N---- \--* NE int <l:$283, c:$282> N002 ( 3, 2) CSE #01 (def)[000006] *--XG------- +--* IND long <l:$201, c:$200> N001 ( 1, 1) [000005] ------------ | \--* LCL_VAR byref V01 arg1 u:1 $c0 N003 ( 1, 1) [000007] ------------ \--* CNS_INT long 0 $240 ------------ BB02 [016..018) (return), preds={BB01} succs={} ***** BB02 STMT00006 ( 0x016[E-] ... 0x017 ) N002 ( 2, 2) [000030] ------------ * RETURN ref $183 N001 ( 1, 1) [000029] ------------ \--* CNS_INT ref null $VN.Null ------------ BB03 [018..02D) (return), preds={BB01} succs={} ***** BB03 STMT00005 ( 0x02B[E-] ... 0x02C ) N017 ( 59, 34) [000028] --CXG------- * RETURN ref $182 N016 ( 58, 33) [000024] --CXG------- \--* CALL ref System.String..ctor $181 N003 ( 7, 5) [000050] -A--G---R-L- arg0 SETUP +--* ASG long $141 N002 ( 3, 2) [000049] D------N---- | +--* LCL_VAR long V09 tmp4 d:1 $141 N001 ( 3, 2) [000021] ----G------- | \--* LCL_VAR long (AX) V02 loc0 $141 N012 ( 24, 15) [000047] -ACXG---R-L- arg2 SETUP +--* ASG int $301 N011 ( 3, 2) [000046] D------N---- | +--* LCL_VAR int V08 tmp3 d:1 $301 N010 ( 20, 12) [000018] --CXG------- | \--* CALL int System.Runtime.RuntimeImports.RhGetModuleFileName $301 N008 ( 3, 2) CSE #01 (use)[000015] *--XG------- arg0 in rcx | +--* IND long <l:$201, c:$202> N007 ( 1, 1) [000014] ------------ | | \--* LCL_VAR byref V01 arg1 u:1 (last use) $c0 N009 ( 3, 3) [000017] ------------ arg1 in rdx | \--* LCL_VAR_ADDR long V02 loc0 $88 N013 ( 3, 2) [000048] ------------ arg2 in r8 +--* LCL_VAR int V08 tmp3 u:1 (last use) $301 N014 ( 3, 2) [000051] ------------ arg0 in rcx +--* LCL_VAR long V09 tmp4 u:1 (last use) $141 N015 ( 1, 1) [000022] ------------ arg1 in rdx \--* CNS_INT int 0 $40 ------------------------------------------------------------------------------------------------------------------- Aggressive CSE Promotion cutoff is 200.000000 Moderate CSE Promotion cutoff is 100.000000 enregCount is 4 Framesize estimate is 0x0008 We have a small frame Sorted CSE candidates: CSE #01, {$140, $1c0} useCnt=1: [def=100.000000, use=50.000000, cost= 3 ] :: N002 ( 3, 2) CSE #01 (def)[000006] *--XG------- * IND long <l:$201, c:$200> Considering CSE #01 {$140, $1c0} [def=100.000000, use=50.000000, cost= 3 ] CSE Expression : N002 ( 3, 2) CSE #01 (def)[000006] *--XG------- * IND long <l:$201, c:$200> N001 ( 1, 1) [000005] ------------ \--* LCL_VAR byref V01 arg1 u:1 $c0 Aggressive CSE Promotion (250.000000 >= 200.000000) cseRefCnt=250.000000, aggressiveRefCnt=200.000000, moderateRefCnt=100.000000 defCnt=100.000000, useCnt=50.000000, cost=3, size=2 def_cost=1, use_cost=1, extra_no_cost=2, extra_yes_cost=0 CSE cost savings check (152.000000 >= 150.000000) passes Promoting CSE: lvaGrabTemp returning 10 (V10 rat0) (a long lifetime temp) called for CSE - aggressive. CSE #01 is single-def, so associated CSE temp V10 will be in SSA New refCnts for V10: refCnt = 2, refCntWtd = 2 New refCnts for V10: refCnt = 3, refCntWtd = 2.50 CSE #01 def at [000006] replaced in BB01 with def of V10 optValnumCSE morphed tree: N009 ( 14, 11) [000013] -A-XG------- * JTRUE void N008 ( 12, 9) [000037] JA-XG--N---- \--* NE int <l:$283, c:$282> N006 ( 10, 7) [000056] -A-XG------- +--* COMMA long <l:$201, c:$200> N004 ( 7, 5) [000054] -A-XG---R--- | +--* ASG long $VN.Void N003 ( 3, 2) [000053] D------N---- | | +--* LCL_VAR long V10 cse0 d:1 <l:$201, c:$200> N002 ( 3, 2) [000006] *--XG------- | | \--* IND long <l:$201, c:$200> N001 ( 1, 1) [000005] ------------ | | \--* LCL_VAR byref V01 arg1 u:1 $c0 N005 ( 3, 2) [000055] ------------ | \--* LCL_VAR long V10 cse0 u:1 <l:$201, c:$200> N007 ( 1, 1) [000007] ------------ \--* CNS_INT long 0 $240 Working on the replacement of the CSE #01 use at [000015] in BB03 ReMorphing args for 24.CALL: ReMorphing args for 18.CALL: argSlots=2, preallocatedArgCount=4, nextSlotNum=4, nextSlotByteOffset=32, outgoingArgSpaceSize=32 ArgTable for 18.CALL after fgMorphArgs: fgArgTabEntry[arg 0 57.LCL_VAR long (By ref), 1 reg: rcx, byteAlignment=8, lateArgInx=0, processed] fgArgTabEntry[arg 1 17.LCL_VAR_ADDR long (By ref), 1 reg: rdx, byteAlignment=8, lateArgInx=1, processed] argSlots=3, preallocatedArgCount=4, nextSlotNum=4, nextSlotByteOffset=32, outgoingArgSpaceSize=32 ArgTable for 24.CALL after fgMorphArgs: fgArgTabEntry[arg 2 48.LCL_VAR int (By ref), 1 reg: r8, byteAlignment=8, lateArgInx=0, tmpNum=V08, isTmp, processed] fgArgTabEntry[arg 0 51.LCL_VAR long (By ref), 1 reg: rcx, byteAlignment=8, lateArgInx=1, tmpNum=V09, isTmp, processed] fgArgTabEntry[arg 1 22.CNS_INT int (By ref), 1 reg: rdx, byteAlignment=8, lateArgInx=2, processed] optValnumCSE morphed tree: N016 ( 59, 34) [000028] -ACXG------- * RETURN ref $182 N015 ( 58, 33) [000024] -ACXG------- \--* CALL ref System.String..ctor $181 N003 ( 7, 5) [000050] -A--G---R-L- arg0 SETUP +--* ASG long $141 N002 ( 3, 2) [000049] D------N---- | +--* LCL_VAR long V09 tmp4 d:1 $141 N001 ( 3, 2) [000021] ----G------- | \--* LCL_VAR long (AX) V02 loc0 $141 N011 ( 24, 15) [000047] -ACXG---R-L- arg2 SETUP +--* ASG int $301 N010 ( 3, 2) [000046] D------N---- | +--* LCL_VAR int V08 tmp3 d:1 $301 N009 ( 20, 12) [000018] --CXG------- | \--* CALL int System.Runtime.RuntimeImports.RhGetModuleFileName $301 N007 ( 3, 2) [000057] ------------ arg0 in rcx | +--* LCL_VAR long V10 cse0 u:1 <l:$140, c:$83> N008 ( 3, 3) [000017] ------------ arg1 in rdx | \--* LCL_VAR_ADDR long V02 loc0 $88 N012 ( 3, 2) [000048] ------------ arg2 in r8 +--* LCL_VAR int V08 tmp3 u:1 (last use) $301 N013 ( 3, 2) [000051] ------------ arg0 in rcx +--* LCL_VAR long V09 tmp4 u:1 (last use) $141 N014 ( 1, 1) [000022] ------------ arg1 in rdx \--* CNS_INT int 0 $40 *************** Finishing PHASE Optimize Valnum CSEs *************** Starting PHASE Assertion prop *************** In optAssertionPropMain() Blocks/Trees at start of phase ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..016)-> BB03 ( cond ) i hascall gcsafe BB02 [0001] 1 BB01 0.50 [016..018) (return) i gcsafe BB03 [0002] 1 BB01 0.50 [018..02D) (return) i hascall gcsafe newobj ----------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [000..016) -> BB03 (cond), preds={} succs={BB02,BB03} ***** BB01 STMT00000 ( 0x000[E-] ... 0x007 ) N006 ( 19, 10) [000004] -ACXG---R--- * ASG long $VN.Void N005 ( 3, 2) [000003] *--X---N---- +--* IND long $82 N004 ( 1, 1) [000000] ------------ | \--* LCL_VAR byref V01 arg1 u:1 $c0 N003 ( 15, 7) [000002] --CXG------- \--* CALL long System.Runtime.RuntimeImports.RhGetOSModuleFromPointer $82 N002 ( 1, 1) [000001] ------------ arg0 in rcx \--* LCL_VAR long V00 arg0 u:1 (last use) $80 ***** BB01 STMT00002 ( 0x008[E-] ... ??? ) N009 ( 14, 11) [000013] -A-XG------- * JTRUE void N008 ( 12, 9) [000037] JA-XG--N---- \--* NE int <l:$283, c:$282> N006 ( 10, 7) [000056] -A-XG------- +--* COMMA long <l:$201, c:$200> N004 ( 7, 5) [000054] -A-XG---R--- | +--* ASG long $VN.Void N003 ( 3, 2) [000053] D------N---- | | +--* LCL_VAR long V10 cse0 d:1 <l:$201, c:$200> N002 ( 3, 2) [000006] *--XG------- | | \--* IND long <l:$201, c:$200> N001 ( 1, 1) [000005] ------------ | | \--* LCL_VAR byref V01 arg1 u:1 $c0 N005 ( 3, 2) [000055] ------------ | \--* LCL_VAR long V10 cse0 u:1 <l:$201, c:$200> N007 ( 1, 1) [000007] ------------ \--* CNS_INT long 0 $240 ------------ BB02 [016..018) (return), preds={BB01} succs={} ***** BB02 STMT00006 ( 0x016[E-] ... 0x017 ) N002 ( 2, 2) [000030] ------------ * RETURN ref $183 N001 ( 1, 1) [000029] ------------ \--* CNS_INT ref null $VN.Null ------------ BB03 [018..02D) (return), preds={BB01} succs={} ***** BB03 STMT00005 ( 0x02B[E-] ... 0x02C ) N016 ( 59, 34) [000028] -ACXG------- * RETURN ref $182 N015 ( 58, 33) [000024] -ACXG------- \--* CALL ref System.String..ctor $181 N003 ( 7, 5) [000050] -A--G---R-L- arg0 SETUP +--* ASG long $141 N002 ( 3, 2) [000049] D------N---- | +--* LCL_VAR long V09 tmp4 d:1 $141 N001 ( 3, 2) [000021] ----G------- | \--* LCL_VAR long (AX) V02 loc0 $141 N011 ( 24, 15) [000047] -ACXG---R-L- arg2 SETUP +--* ASG int $301 N010 ( 3, 2) [000046] D------N---- | +--* LCL_VAR int V08 tmp3 d:1 $301 N009 ( 20, 12) [000018] --CXG------- | \--* CALL int System.Runtime.RuntimeImports.RhGetModuleFileName $301 N007 ( 3, 2) [000057] ------------ arg0 in rcx | +--* LCL_VAR long V10 cse0 u:1 <l:$140, c:$83> N008 ( 3, 3) [000017] ------------ arg1 in rdx | \--* LCL_VAR_ADDR long V02 loc0 $88 N012 ( 3, 2) [000048] ------------ arg2 in r8 +--* LCL_VAR int V08 tmp3 u:1 (last use) $301 N013 ( 3, 2) [000051] ------------ arg0 in rcx +--* LCL_VAR long V09 tmp4 u:1 (last use) $141 N014 ( 1, 1) [000022] ------------ arg1 in rdx \--* CNS_INT int 0 $40 ------------------------------------------------------------------------------------------------------------------- GenTreeNode creates assertion: N006 ( 19, 10) [000004] -ACXG---R--- * ASG long $VN.Void In BB01 New Global Constant Assertion: ($c0,$0) Value_Number {InitVal($41)} is not 0, index = #01 BB01 valueGen = #01 => BB03 valueGen = #01 BB02 valueGen = #NA BB03 valueGen = #NA BB01: in = #NA out = #01 BB03 = #01 BB02: in = #01 out = #01 BB03: in = #01 out = #01 Propagating #NA for BB01, stmt STMT00000, tree [000043], 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 [000000], tree -> #NA Propagating #NA for BB01, stmt STMT00000, tree [000003], tree -> #NA Propagating #NA for BB01, stmt STMT00000, tree [000004], tree -> #01 Propagating #01 for BB01, stmt STMT00002, tree [000005], tree -> #NA Propagating #01 for BB01, stmt STMT00002, tree [000006], tree -> #01 VN based non-null prop in BB01: N002 ( 3, 2) [000006] *--XG------- * IND long <l:$201, c:$200> Propagating #01 for BB01, stmt STMT00002, tree [000053], tree -> #NA Propagating #01 for BB01, stmt STMT00002, tree [000054], tree -> #NA Propagating #01 for BB01, stmt STMT00002, tree [000055], tree -> #NA Propagating #01 for BB01, stmt STMT00002, tree [000056], tree -> #NA Propagating #01 for BB01, stmt STMT00002, tree [000007], tree -> #NA Propagating #01 for BB01, stmt STMT00002, tree [000037], tree -> #NA Propagating #01 for BB01, stmt STMT00002, tree [000013], tree -> #NA Re-morphing this stmt: STMT00002 ( 0x008[E-] ... ??? ) N009 ( 14, 11) [000013] -A-XG------- * JTRUE void N008 ( 12, 9) [000037] JA-XG--N---- \--* NE int <l:$283, c:$282> N006 ( 10, 7) [000056] -A-XG------- +--* COMMA long <l:$201, c:$200> N004 ( 7, 5) [000054] -A-XG---R--- | +--* ASG long $VN.Void N003 ( 3, 2) [000053] D------N---- | | +--* LCL_VAR long V10 cse0 d:1 <l:$201, c:$200> N002 ( 3, 2) [000006] *---GO------ | | \--* IND long <l:$201, c:$200> N001 ( 1, 1) [000005] ------------ | | \--* LCL_VAR byref V01 arg1 u:1 $c0 N005 ( 3, 2) [000055] ------------ | \--* LCL_VAR long V10 cse0 u:1 <l:$201, c:$200> N007 ( 1, 1) [000007] ------------ \--* CNS_INT long 0 $240 optAssertionPropMain morphed tree: N009 ( 14, 11) [000013] -A--GO------ * JTRUE void N008 ( 12, 9) [000037] JA--GO-N---- \--* NE int <l:$283, c:$282> N006 ( 10, 7) [000056] -A--GO------ +--* COMMA long <l:$201, c:$200> N004 ( 7, 5) [000054] -A--GO--R--- | +--* ASG long $VN.Void N003 ( 3, 2) [000053] D------N---- | | +--* LCL_VAR long V10 cse0 d:1 <l:$201, c:$200> N002 ( 3, 2) [000006] *---GO------ | | \--* IND long <l:$201, c:$200> N001 ( 1, 1) [000005] ------------ | | \--* LCL_VAR byref V01 arg1 u:1 $c0 N005 ( 3, 2) [000055] ------------ | \--* LCL_VAR long V10 cse0 u:1 <l:$201, c:$200> N007 ( 1, 1) [000007] ------------ \--* CNS_INT long 0 $240 Propagating #01 for BB02, stmt STMT00006, tree [000029], tree -> #NA Propagating #01 for BB02, stmt STMT00006, tree [000030], tree -> #NA Propagating #01 for BB03, stmt STMT00005, tree [000021], tree -> #NA Propagating #01 for BB03, stmt STMT00005, tree [000049], tree -> #NA Propagating #01 for BB03, stmt STMT00005, tree [000050], tree -> #NA Propagating #01 for BB03, stmt STMT00005, tree [000052], tree -> #NA Propagating #01 for BB03, stmt STMT00005, tree [000044], tree -> #NA Propagating #01 for BB03, stmt STMT00005, tree [000045], tree -> #NA Propagating #01 for BB03, stmt STMT00005, tree [000057], tree -> #NA Propagating #01 for BB03, stmt STMT00005, tree [000017], tree -> #NA Propagating #01 for BB03, stmt STMT00005, tree [000018], tree -> #NA Propagating #01 for BB03, stmt STMT00005, tree [000046], tree -> #NA Propagating #01 for BB03, stmt STMT00005, tree [000047], tree -> #NA Propagating #01 for BB03, stmt STMT00005, tree [000048], tree -> #NA Propagating #01 for BB03, stmt STMT00005, tree [000051], tree -> #NA Propagating #01 for BB03, stmt STMT00005, tree [000022], tree -> #NA Propagating #01 for BB03, stmt STMT00005, tree [000024], tree -> #NA Propagating #01 for BB03, stmt STMT00005, tree [000028], tree -> #NA *************** In fgDebugCheckBBlist *************** Finishing PHASE Assertion prop *************** Starting PHASE Optimize index checks *************** In OptimizeRangeChecks() Blocks/trees before phase ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..016)-> BB03 ( cond ) i hascall gcsafe BB02 [0001] 1 BB01 0.50 [016..018) (return) i gcsafe BB03 [0002] 1 BB01 0.50 [018..02D) (return) i hascall gcsafe newobj ----------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [000..016) -> BB03 (cond), preds={} succs={BB02,BB03} ***** BB01 STMT00000 ( 0x000[E-] ... 0x007 ) N006 ( 19, 10) [000004] -ACXG---R--- * ASG long $VN.Void N005 ( 3, 2) [000003] *--X---N---- +--* IND long $82 N004 ( 1, 1) [000000] ------------ | \--* LCL_VAR byref V01 arg1 u:1 $c0 N003 ( 15, 7) [000002] --CXG------- \--* CALL long System.Runtime.RuntimeImports.RhGetOSModuleFromPointer $82 N002 ( 1, 1) [000001] ------------ arg0 in rcx \--* LCL_VAR long V00 arg0 u:1 (last use) $80 ***** BB01 STMT00002 ( 0x008[E-] ... ??? ) N009 ( 14, 11) [000013] -A--GO------ * JTRUE void N008 ( 12, 9) [000037] JA--GO-N---- \--* NE int <l:$283, c:$282> N006 ( 10, 7) [000056] -A--GO------ +--* COMMA long <l:$201, c:$200> N004 ( 7, 5) [000054] -A--GO--R--- | +--* ASG long $VN.Void N003 ( 3, 2) [000053] D------N---- | | +--* LCL_VAR long V10 cse0 d:1 <l:$201, c:$200> N002 ( 3, 2) [000006] *---GO------ | | \--* IND long <l:$201, c:$200> N001 ( 1, 1) [000005] ------------ | | \--* LCL_VAR byref V01 arg1 u:1 $c0 N005 ( 3, 2) [000055] ------------ | \--* LCL_VAR long V10 cse0 u:1 <l:$201, c:$200> N007 ( 1, 1) [000007] ------------ \--* CNS_INT long 0 $240 ------------ BB02 [016..018) (return), preds={BB01} succs={} ***** BB02 STMT00006 ( 0x016[E-] ... 0x017 ) N002 ( 2, 2) [000030] ------------ * RETURN ref $183 N001 ( 1, 1) [000029] ------------ \--* CNS_INT ref null $VN.Null ------------ BB03 [018..02D) (return), preds={BB01} succs={} ***** BB03 STMT00005 ( 0x02B[E-] ... 0x02C ) N016 ( 59, 34) [000028] -ACXG------- * RETURN ref $182 N015 ( 58, 33) [000024] -ACXG------- \--* CALL ref System.String..ctor $181 N003 ( 7, 5) [000050] -A--G---R-L- arg0 SETUP +--* ASG long $141 N002 ( 3, 2) [000049] D------N---- | +--* LCL_VAR long V09 tmp4 d:1 $141 N001 ( 3, 2) [000021] ----G------- | \--* LCL_VAR long (AX) V02 loc0 $141 N011 ( 24, 15) [000047] -ACXG---R-L- arg2 SETUP +--* ASG int $301 N010 ( 3, 2) [000046] D------N---- | +--* LCL_VAR int V08 tmp3 d:1 $301 N009 ( 20, 12) [000018] --CXG------- | \--* CALL int System.Runtime.RuntimeImports.RhGetModuleFileName $301 N007 ( 3, 2) [000057] ------------ arg0 in rcx | +--* LCL_VAR long V10 cse0 u:1 <l:$140, c:$83> N008 ( 3, 3) [000017] ------------ arg1 in rdx | \--* LCL_VAR_ADDR long V02 loc0 $88 N012 ( 3, 2) [000048] ------------ arg2 in r8 +--* LCL_VAR int V08 tmp3 u:1 (last use) $301 N013 ( 3, 2) [000051] ------------ arg0 in rcx +--* LCL_VAR long V09 tmp4 u:1 (last use) $141 N014 ( 1, 1) [000022] ------------ arg1 in rdx \--* CNS_INT int 0 $40 ------------------------------------------------------------------------------------------------------------------- *************** Finishing PHASE Optimize index checks *************** Starting PHASE Insert GC Polls *************** Finishing PHASE Insert GC Polls [no changes] *************** Starting PHASE Determine first cold block *************** In fgDetermineFirstColdBlock() No procedure splitting will be done for this method *************** Finishing PHASE Determine first cold block Trees before Rationalize IR ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..016)-> BB03 ( cond ) i hascall gcsafe BB02 [0001] 1 BB01 0.50 [016..018) (return) i gcsafe BB03 [0002] 1 BB01 0.50 [018..02D) (return) i hascall gcsafe newobj ----------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [000..016) -> BB03 (cond), preds={} succs={BB02,BB03} ***** BB01 STMT00000 ( 0x000[E-] ... 0x007 ) N006 ( 19, 10) [000004] -ACXG---R--- * ASG long $VN.Void N005 ( 3, 2) [000003] *--X---N---- +--* IND long $82 N004 ( 1, 1) [000000] ------------ | \--* LCL_VAR byref V01 arg1 u:1 $c0 N003 ( 15, 7) [000002] --CXG------- \--* CALL long System.Runtime.RuntimeImports.RhGetOSModuleFromPointer $82 N002 ( 1, 1) [000001] ------------ arg0 in rcx \--* LCL_VAR long V00 arg0 u:1 (last use) $80 ***** BB01 STMT00002 ( 0x008[E-] ... ??? ) N009 ( 14, 11) [000013] -A--GO------ * JTRUE void N008 ( 12, 9) [000037] JA--GO-N---- \--* NE int <l:$283, c:$282> N006 ( 10, 7) [000056] -A--GO------ +--* COMMA long <l:$201, c:$200> N004 ( 7, 5) [000054] -A--GO--R--- | +--* ASG long $VN.Void N003 ( 3, 2) [000053] D------N---- | | +--* LCL_VAR long V10 cse0 d:1 <l:$201, c:$200> N002 ( 3, 2) [000006] *---GO------ | | \--* IND long <l:$201, c:$200> N001 ( 1, 1) [000005] ------------ | | \--* LCL_VAR byref V01 arg1 u:1 $c0 N005 ( 3, 2) [000055] ------------ | \--* LCL_VAR long V10 cse0 u:1 <l:$201, c:$200> N007 ( 1, 1) [000007] ------------ \--* CNS_INT long 0 $240 ------------ BB02 [016..018) (return), preds={BB01} succs={} ***** BB02 STMT00006 ( 0x016[E-] ... 0x017 ) N002 ( 2, 2) [000030] ------------ * RETURN ref $183 N001 ( 1, 1) [000029] ------------ \--* CNS_INT ref null $VN.Null ------------ BB03 [018..02D) (return), preds={BB01} succs={} ***** BB03 STMT00005 ( 0x02B[E-] ... 0x02C ) N016 ( 59, 34) [000028] -ACXG------- * RETURN ref $182 N015 ( 58, 33) [000024] -ACXG------- \--* CALL ref System.String..ctor $181 N003 ( 7, 5) [000050] -A--G---R-L- arg0 SETUP +--* ASG long $141 N002 ( 3, 2) [000049] D------N---- | +--* LCL_VAR long V09 tmp4 d:1 $141 N001 ( 3, 2) [000021] ----G------- | \--* LCL_VAR long (AX) V02 loc0 $141 N011 ( 24, 15) [000047] -ACXG---R-L- arg2 SETUP +--* ASG int $301 N010 ( 3, 2) [000046] D------N---- | +--* LCL_VAR int V08 tmp3 d:1 $301 N009 ( 20, 12) [000018] --CXG------- | \--* CALL int System.Runtime.RuntimeImports.RhGetModuleFileName $301 N007 ( 3, 2) [000057] ------------ arg0 in rcx | +--* LCL_VAR long V10 cse0 u:1 <l:$140, c:$83> N008 ( 3, 3) [000017] ------------ arg1 in rdx | \--* LCL_VAR_ADDR long V02 loc0 $88 N012 ( 3, 2) [000048] ------------ arg2 in r8 +--* LCL_VAR int V08 tmp3 u:1 (last use) $301 N013 ( 3, 2) [000051] ------------ arg0 in rcx +--* LCL_VAR long V09 tmp4 u:1 (last use) $141 N014 ( 1, 1) [000022] ------------ arg1 in rdx \--* CNS_INT int 0 $40 ------------------------------------------------------------------------------------------------------------------- *************** Starting PHASE Rationalize IR rewriting asg(LCL_VAR, X) to STORE_LCL_VAR(X) N004 ( 7, 5) [000054] DA--GO------ * STORE_LCL_VAR long V10 cse0 d:1 rewriting asg(LCL_VAR, X) to STORE_LCL_VAR(X) N003 ( 7, 5) [000050] DA--G-----L- * STORE_LCL_VAR long V09 tmp4 d:1 rewriting asg(LCL_VAR, X) to STORE_LCL_VAR(X) N011 ( 24, 15) [000047] DACXG-----L- * STORE_LCL_VAR int V08 tmp3 d:1 *************** Finishing PHASE Rationalize IR Trees after Rationalize IR ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..016)-> BB03 ( cond ) i hascall gcsafe LIR BB02 [0001] 1 BB01 0.50 [016..018) (return) i gcsafe LIR BB03 [0002] 1 BB01 0.50 [018..02D) (return) i hascall gcsafe newobj LIR ----------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [000..016) -> BB03 (cond), preds={} succs={BB02,BB03} [000058] ------------ IL_OFFSET void INLRT @ 0x000[E-] N002 ( 1, 1) [000001] ------------ t1 = LCL_VAR long V00 arg0 u:1 (last use) $80 /--* t1 long arg0 in rcx N003 ( 15, 7) [000002] --CXG------- t2 = * CALL long System.Runtime.RuntimeImports.RhGetOSModuleFromPointer $82 N004 ( 1, 1) [000000] ------------ t0 = LCL_VAR byref V01 arg1 u:1 $c0 /--* t0 byref +--* t2 long [000059] -ACXG------- * STOREIND long [000060] ------------ IL_OFFSET void INLRT @ 0x008[E-] N001 ( 1, 1) [000005] ------------ t5 = LCL_VAR byref V01 arg1 u:1 $c0 /--* t5 byref N002 ( 3, 2) [000006] *---GO------ t6 = * IND long <l:$201, c:$200> /--* t6 long N004 ( 7, 5) [000054] DA--GO------ * STORE_LCL_VAR long V10 cse0 d:1 N005 ( 3, 2) [000055] ------------ t55 = LCL_VAR long V10 cse0 u:1 <l:$201, c:$200> N007 ( 1, 1) [000007] ------------ t7 = CNS_INT long 0 $240 /--* t55 long +--* t7 long N008 ( 12, 9) [000037] J---GO-N---- t37 = * NE int <l:$283, c:$282> /--* t37 int N009 ( 14, 11) [000013] ----GO------ * JTRUE void ------------ BB02 [016..018) (return), preds={BB01} succs={} [000061] ------------ IL_OFFSET void INLRT @ 0x016[E-] N001 ( 1, 1) [000029] ------------ t29 = CNS_INT ref null $VN.Null /--* t29 ref N002 ( 2, 2) [000030] ------------ * RETURN ref $183 ------------ BB03 [018..02D) (return), preds={BB01} succs={} [000062] ------------ IL_OFFSET void INLRT @ 0x02B[E-] N001 ( 3, 2) [000021] ------------ t21 = LCL_VAR long (AX) V02 loc0 $141 /--* t21 long N003 ( 7, 5) [000050] DA--G-----L- * STORE_LCL_VAR long V09 tmp4 d:1 N007 ( 3, 2) [000057] ------------ t57 = LCL_VAR long V10 cse0 u:1 <l:$140, c:$83> N008 ( 3, 3) [000017] ------------ t17 = LCL_VAR_ADDR long V02 loc0 $88 /--* t57 long arg0 in rcx +--* t17 long arg1 in rdx N009 ( 20, 12) [000018] --CXG------- t18 = * CALL int System.Runtime.RuntimeImports.RhGetModuleFileName $301 /--* t18 int N011 ( 24, 15) [000047] DA-XG-----L- * STORE_LCL_VAR int V08 tmp3 d:1 N012 ( 3, 2) [000048] ------------ t48 = LCL_VAR int V08 tmp3 u:1 (last use) $301 N013 ( 3, 2) [000051] ------------ t51 = LCL_VAR long V09 tmp4 u:1 (last use) $141 N014 ( 1, 1) [000022] ------------ t22 = CNS_INT int 0 $40 /--* t48 int arg2 in r8 +--* t51 long arg0 in rcx +--* t22 int arg1 in rdx N015 ( 58, 33) [000024] --CXG------- t24 = * CALL ref System.String..ctor $181 /--* t24 ref N016 ( 59, 34) [000028] ---XG------- * RETURN ref $182 ------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist *************** Starting PHASE Do 'simple' lowering Bumping outgoingArgSpaceSize from 0 to 32 for call [000002] outgoingArgSpaceSize 32 sufficient for call [000018], which needs 32 outgoingArgSpaceSize 32 sufficient for call [000024], which needs 32 *************** Finishing PHASE Do 'simple' lowering *************** In fgDebugCheckBBlist Trees before Lowering nodeinfo ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..016)-> BB03 ( cond ) i hascall gcsafe LIR BB02 [0001] 1 BB01 0.50 [016..018) (return) i gcsafe LIR BB03 [0002] 1 BB01 0.50 [018..02D) (return) i hascall gcsafe newobj LIR ----------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [000..016) -> BB03 (cond), preds={} succs={BB02,BB03} [000058] ------------ IL_OFFSET void INLRT @ 0x000[E-] N002 ( 1, 1) [000001] ------------ t1 = LCL_VAR long V00 arg0 u:1 (last use) $80 /--* t1 long arg0 in rcx N003 ( 15, 7) [000002] --CXG------- t2 = * CALL long System.Runtime.RuntimeImports.RhGetOSModuleFromPointer $82 N004 ( 1, 1) [000000] ------------ t0 = LCL_VAR byref V01 arg1 u:1 $c0 /--* t0 byref +--* t2 long [000059] -ACXG------- * STOREIND long [000060] ------------ IL_OFFSET void INLRT @ 0x008[E-] N001 ( 1, 1) [000005] ------------ t5 = LCL_VAR byref V01 arg1 u:1 $c0 /--* t5 byref N002 ( 3, 2) [000006] *---GO------ t6 = * IND long <l:$201, c:$200> /--* t6 long N004 ( 7, 5) [000054] DA--GO------ * STORE_LCL_VAR long V10 cse0 d:1 N005 ( 3, 2) [000055] ------------ t55 = LCL_VAR long V10 cse0 u:1 <l:$201, c:$200> N007 ( 1, 1) [000007] ------------ t7 = CNS_INT long 0 $240 /--* t55 long +--* t7 long N008 ( 12, 9) [000037] J---GO-N---- t37 = * NE int <l:$283, c:$282> /--* t37 int N009 ( 14, 11) [000013] ----GO------ * JTRUE void ------------ BB02 [016..018) (return), preds={BB01} succs={} [000061] ------------ IL_OFFSET void INLRT @ 0x016[E-] N001 ( 1, 1) [000029] ------------ t29 = CNS_INT ref null $VN.Null /--* t29 ref N002 ( 2, 2) [000030] ------------ * RETURN ref $183 ------------ BB03 [018..02D) (return), preds={BB01} succs={} [000062] ------------ IL_OFFSET void INLRT @ 0x02B[E-] N001 ( 3, 2) [000021] ------------ t21 = LCL_VAR long (AX) V02 loc0 $141 /--* t21 long N003 ( 7, 5) [000050] DA--G-----L- * STORE_LCL_VAR long V09 tmp4 d:1 N007 ( 3, 2) [000057] ------------ t57 = LCL_VAR long V10 cse0 u:1 <l:$140, c:$83> N008 ( 3, 3) [000017] ------------ t17 = LCL_VAR_ADDR long V02 loc0 $88 /--* t57 long arg0 in rcx +--* t17 long arg1 in rdx N009 ( 20, 12) [000018] --CXG------- t18 = * CALL int System.Runtime.RuntimeImports.RhGetModuleFileName $301 /--* t18 int N011 ( 24, 15) [000047] DA-XG-----L- * STORE_LCL_VAR int V08 tmp3 d:1 N012 ( 3, 2) [000048] ------------ t48 = LCL_VAR int V08 tmp3 u:1 (last use) $301 N013 ( 3, 2) [000051] ------------ t51 = LCL_VAR long V09 tmp4 u:1 (last use) $141 N014 ( 1, 1) [000022] ------------ t22 = CNS_INT int 0 $40 /--* t48 int arg2 in r8 +--* t51 long arg0 in rcx +--* t22 int arg1 in rdx N015 ( 58, 33) [000024] --CXG------- t24 = * CALL ref System.String..ctor $181 /--* t24 ref N016 ( 59, 34) [000028] ---XG------- * RETURN ref $182 ------------------------------------------------------------------------------------------------------------------- *************** Starting PHASE Lowering nodeinfo lowering call (before): N002 ( 1, 1) [000001] ------------ t1 = LCL_VAR long V00 arg0 u:1 (last use) $80 /--* t1 long arg0 in rcx N003 ( 15, 7) [000002] --CXG------- t2 = * CALL long System.Runtime.RuntimeImports.RhGetOSModuleFromPointer $82 objp: ====== args: ====== lowering arg : N001 ( 0, 0) [000043] ----------L- * ARGPLACE long $80 late: ====== lowering arg : N002 ( 1, 1) [000001] ------------ * LCL_VAR long V00 arg0 u:1 (last use) $80 new node is : [000063] ------------ * PUTARG_REG long REG rcx lowering call (after): N002 ( 1, 1) [000001] ------------ t1 = LCL_VAR long V00 arg0 u:1 (last use) $80 /--* t1 long [000063] ------------ t63 = * PUTARG_REG long REG rcx /--* t63 long arg0 in rcx N003 ( 15, 7) [000002] --CXG------- t2 = * CALL long System.Runtime.RuntimeImports.RhGetOSModuleFromPointer $82 Lower of StoreInd didn't mark the node as self contained for reason: oper is not supported N002 ( 1, 1) [000001] ------------ t1 = LCL_VAR long V00 arg0 u:1 (last use) $80 /--* t1 long [000063] ------------ t63 = * PUTARG_REG long REG rcx /--* t63 long arg0 in rcx N003 ( 15, 7) [000002] --CXG------- t2 = * CALL long System.Runtime.RuntimeImports.RhGetOSModuleFromPointer $82 N004 ( 1, 1) [000000] ------------ t0 = LCL_VAR byref V01 arg1 u:1 $c0 /--* t0 byref +--* t2 long [000059] -ACXG------- * STOREIND long lowering store lcl var/field (before): N001 ( 1, 1) [000005] ------------ t5 = LCL_VAR byref V01 arg1 u:1 $c0 /--* t5 byref N002 ( 3, 2) [000006] *---GO------ t6 = * IND long <l:$201, c:$200> /--* t6 long N004 ( 7, 5) [000054] DA--GO------ * STORE_LCL_VAR long V10 cse0 d:1 lowering store lcl var/field (after): N001 ( 1, 1) [000005] ------------ t5 = LCL_VAR byref V01 arg1 u:1 $c0 /--* t5 byref N002 ( 3, 2) [000006] *---GO------ t6 = * IND long <l:$201, c:$200> /--* t6 long N004 ( 7, 5) [000054] DA--GO------ * STORE_LCL_VAR long V10 cse0 d:1 lowering GT_RETURN N002 ( 2, 2) [000030] ------------ * RETURN ref $183 ============lowering store lcl var/field (before): N001 ( 3, 2) [000021] ------------ t21 = LCL_VAR long (AX) V02 loc0 $141 /--* t21 long N003 ( 7, 5) [000050] DA--G-----L- * STORE_LCL_VAR long V09 tmp4 d:1 lowering store lcl var/field (after): N001 ( 3, 2) [000021] ------------ t21 = LCL_VAR long (AX) V02 loc0 $141 /--* t21 long N003 ( 7, 5) [000050] DA--G-----L- * STORE_LCL_VAR long V09 tmp4 d:1 lowering call (before): N007 ( 3, 2) [000057] ------------ t57 = LCL_VAR long V10 cse0 u:1 <l:$140, c:$83> N008 ( 3, 3) [000017] ------------ t17 = LCL_VAR_ADDR long V02 loc0 $88 /--* t57 long arg0 in rcx +--* t17 long arg1 in rdx N009 ( 20, 12) [000018] --CXG------- t18 = * CALL int System.Runtime.RuntimeImports.RhGetModuleFileName $301 objp: ====== args: ====== lowering arg : N005 ( 0, 0) [000044] ----------L- * ARGPLACE long <l:$201, c:$202> lowering arg : N006 ( 0, 0) [000045] ----------L- * ARGPLACE long $88 late: ====== lowering arg : N007 ( 3, 2) [000057] ------------ * LCL_VAR long V10 cse0 u:1 <l:$140, c:$83> new node is : [000064] ------------ * PUTARG_REG long REG rcx lowering arg : N008 ( 3, 3) [000017] ------------ * LCL_VAR_ADDR long V02 loc0 $88 new node is : [000065] ------------ * PUTARG_REG long REG rdx lowering call (after): N007 ( 3, 2) [000057] ------------ t57 = LCL_VAR long V10 cse0 u:1 <l:$140, c:$83> /--* t57 long [000064] ------------ t64 = * PUTARG_REG long REG rcx N008 ( 3, 3) [000017] ------------ t17 = LCL_VAR_ADDR long V02 loc0 $88 /--* t17 long [000065] ------------ t65 = * PUTARG_REG long REG rdx /--* t64 long arg0 in rcx +--* t65 long arg1 in rdx N009 ( 20, 12) [000018] --CXG------- t18 = * CALL int System.Runtime.RuntimeImports.RhGetModuleFileName $301 lowering store lcl var/field (before): N007 ( 3, 2) [000057] ------------ t57 = LCL_VAR long V10 cse0 u:1 <l:$140, c:$83> /--* t57 long [000064] ------------ t64 = * PUTARG_REG long REG rcx N008 ( 3, 3) [000017] ------------ t17 = LCL_VAR_ADDR long V02 loc0 $88 /--* t17 long [000065] ------------ t65 = * PUTARG_REG long REG rdx /--* t64 long arg0 in rcx +--* t65 long arg1 in rdx N009 ( 20, 12) [000018] --CXG------- t18 = * CALL int System.Runtime.RuntimeImports.RhGetModuleFileName $301 /--* t18 int N011 ( 24, 15) [000047] DA-XG-----L- * STORE_LCL_VAR int V08 tmp3 d:1 lowering store lcl var/field (after): N007 ( 3, 2) [000057] ------------ t57 = LCL_VAR long V10 cse0 u:1 <l:$140, c:$83> /--* t57 long [000064] ------------ t64 = * PUTARG_REG long REG rcx N008 ( 3, 3) [000017] ------------ t17 = LCL_VAR_ADDR long V02 loc0 $88 /--* t17 long [000065] ------------ t65 = * PUTARG_REG long REG rdx /--* t64 long arg0 in rcx +--* t65 long arg1 in rdx N009 ( 20, 12) [000018] --CXG------- t18 = * CALL int System.Runtime.RuntimeImports.RhGetModuleFileName $301 /--* t18 int N011 ( 24, 15) [000047] DA-XG-----L- * STORE_LCL_VAR int V08 tmp3 d:1 lowering call (before): N001 ( 3, 2) [000021] ------------ t21 = LCL_VAR long (AX) V02 loc0 $141 /--* t21 long N003 ( 7, 5) [000050] DA--G-----L- * STORE_LCL_VAR long V09 tmp4 d:1 N007 ( 3, 2) [000057] ------------ t57 = LCL_VAR long V10 cse0 u:1 <l:$140, c:$83> /--* t57 long [000064] ------------ t64 = * PUTARG_REG long REG rcx N008 ( 3, 3) [000017] ------------ t17 = LCL_VAR_ADDR long V02 loc0 $88 /--* t17 long [000065] ------------ t65 = * PUTARG_REG long REG rdx /--* t64 long arg0 in rcx +--* t65 long arg1 in rdx N009 ( 20, 12) [000018] --CXG------- t18 = * CALL int System.Runtime.RuntimeImports.RhGetModuleFileName $301 /--* t18 int N011 ( 24, 15) [000047] DA-XG-----L- * STORE_LCL_VAR int V08 tmp3 d:1 N012 ( 3, 2) [000048] ------------ t48 = LCL_VAR int V08 tmp3 u:1 (last use) $301 N013 ( 3, 2) [000051] ------------ t51 = LCL_VAR long V09 tmp4 u:1 (last use) $141 N014 ( 1, 1) [000022] ------------ t22 = CNS_INT int 0 $40 /--* t48 int arg2 in r8 +--* t51 long arg0 in rcx +--* t22 int arg1 in rdx N015 ( 58, 33) [000024] --CXG------- t24 = * CALL ref System.String..ctor $181 objp: ====== args: ====== lowering arg : N003 ( 7, 5) [000050] DA--G-----L- * STORE_LCL_VAR long V09 tmp4 d:1 lowering arg : N004 ( 0, 0) [000052] ----------L- * ARGPLACE int $40 lowering arg : N011 ( 24, 15) [000047] DA-XG-----L- * STORE_LCL_VAR int V08 tmp3 d:1 late: ====== lowering arg : N012 ( 3, 2) [000048] ------------ * LCL_VAR int V08 tmp3 u:1 (last use) $301 new node is : [000066] ------------ * PUTARG_REG int REG r8 lowering arg : N013 ( 3, 2) [000051] ------------ * LCL_VAR long V09 tmp4 u:1 (last use) $141 new node is : [000067] ------------ * PUTARG_REG long REG rcx lowering arg : N014 ( 1, 1) [000022] ------------ * CNS_INT int 0 $40 new node is : [000068] ------------ * PUTARG_REG int REG rdx lowering call (after): N001 ( 3, 2) [000021] ------------ t21 = LCL_VAR long (AX) V02 loc0 $141 /--* t21 long N003 ( 7, 5) [000050] DA--G-----L- * STORE_LCL_VAR long V09 tmp4 d:1 N007 ( 3, 2) [000057] ------------ t57 = LCL_VAR long V10 cse0 u:1 <l:$140, c:$83> /--* t57 long [000064] ------------ t64 = * PUTARG_REG long REG rcx N008 ( 3, 3) [000017] ------------ t17 = LCL_VAR_ADDR long V02 loc0 $88 /--* t17 long [000065] ------------ t65 = * PUTARG_REG long REG rdx /--* t64 long arg0 in rcx +--* t65 long arg1 in rdx N009 ( 20, 12) [000018] --CXG------- t18 = * CALL int System.Runtime.RuntimeImports.RhGetModuleFileName $301 /--* t18 int N011 ( 24, 15) [000047] DA-XG-----L- * STORE_LCL_VAR int V08 tmp3 d:1 N012 ( 3, 2) [000048] ------------ t48 = LCL_VAR int V08 tmp3 u:1 (last use) $301 /--* t48 int [000066] ------------ t66 = * PUTARG_REG int REG r8 N013 ( 3, 2) [000051] ------------ t51 = LCL_VAR long V09 tmp4 u:1 (last use) $141 /--* t51 long [000067] ------------ t67 = * PUTARG_REG long REG rcx N014 ( 1, 1) [000022] ------------ t22 = CNS_INT int 0 $40 /--* t22 int [000068] ------------ t68 = * PUTARG_REG int REG rdx /--* t66 int arg2 in r8 +--* t67 long arg0 in rcx +--* t68 int arg1 in rdx N015 ( 58, 33) [000024] --CXG------- t24 = * CALL ref System.String..ctor $181 lowering GT_RETURN N016 ( 59, 34) [000028] ---XG------- * RETURN ref $182 ============Lower has completed modifying nodes. ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..016)-> BB03 ( cond ) i hascall gcsafe LIR BB02 [0001] 1 BB01 0.50 [016..018) (return) i gcsafe LIR BB03 [0002] 1 BB01 0.50 [018..02D) (return) i hascall gcsafe newobj LIR ----------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [000..016) -> BB03 (cond), preds={} succs={BB02,BB03} [000058] ------------ IL_OFFSET void INLRT @ 0x000[E-] N002 ( 1, 1) [000001] ------------ t1 = LCL_VAR long V00 arg0 u:1 (last use) $80 /--* t1 long [000063] ------------ t63 = * PUTARG_REG long REG rcx /--* t63 long arg0 in rcx N003 ( 15, 7) [000002] --CXG------- t2 = * CALL long System.Runtime.RuntimeImports.RhGetOSModuleFromPointer $82 N004 ( 1, 1) [000000] ------------ t0 = LCL_VAR byref V01 arg1 u:1 $c0 /--* t0 byref +--* t2 long [000059] -ACXG------- * STOREIND long [000060] ------------ IL_OFFSET void INLRT @ 0x008[E-] N001 ( 1, 1) [000005] ------------ t5 = LCL_VAR byref V01 arg1 u:1 $c0 /--* t5 byref N002 ( 3, 2) [000006] *---GO------ t6 = * IND long <l:$201, c:$200> /--* t6 long N004 ( 7, 5) [000054] DA--GO------ * STORE_LCL_VAR long V10 cse0 d:1 N005 ( 3, 2) [000055] ------------ t55 = LCL_VAR long V10 cse0 u:1 <l:$201, c:$200> N007 ( 1, 1) [000007] -c---------- t7 = CNS_INT long 0 $240 /--* t55 long +--* t7 long N008 ( 12, 9) [000037] J---GO-N---- * NE void <l:$283, c:$282> N009 ( 14, 11) [000013] ----GO------ * JTRUE void ------------ BB02 [016..018) (return), preds={BB01} succs={} [000061] ------------ IL_OFFSET void INLRT @ 0x016[E-] N001 ( 1, 1) [000029] ------------ t29 = CNS_INT ref null $VN.Null /--* t29 ref N002 ( 2, 2) [000030] ------------ * RETURN ref $183 ------------ BB03 [018..02D) (return), preds={BB01} succs={} [000062] ------------ IL_OFFSET void INLRT @ 0x02B[E-] N001 ( 3, 2) [000021] ------------ t21 = LCL_VAR long (AX) V02 loc0 $141 /--* t21 long N003 ( 7, 5) [000050] DA--G-----L- * STORE_LCL_VAR long V09 tmp4 d:1 N007 ( 3, 2) [000057] ------------ t57 = LCL_VAR long V10 cse0 u:1 <l:$140, c:$83> /--* t57 long [000064] ------------ t64 = * PUTARG_REG long REG rcx N008 ( 3, 3) [000017] ------------ t17 = LCL_VAR_ADDR long V02 loc0 $88 /--* t17 long [000065] ------------ t65 = * PUTARG_REG long REG rdx /--* t64 long arg0 in rcx +--* t65 long arg1 in rdx N009 ( 20, 12) [000018] --CXG------- t18 = * CALL int System.Runtime.RuntimeImports.RhGetModuleFileName $301 /--* t18 int N011 ( 24, 15) [000047] DA-XG-----L- * STORE_LCL_VAR int V08 tmp3 d:1 N012 ( 3, 2) [000048] ------------ t48 = LCL_VAR int V08 tmp3 u:1 (last use) $301 /--* t48 int [000066] ------------ t66 = * PUTARG_REG int REG r8 N013 ( 3, 2) [000051] ------------ t51 = LCL_VAR long V09 tmp4 u:1 (last use) $141 /--* t51 long [000067] ------------ t67 = * PUTARG_REG long REG rcx N014 ( 1, 1) [000022] ------------ t22 = CNS_INT int 0 $40 /--* t22 int [000068] ------------ t68 = * PUTARG_REG int REG rdx /--* t66 int arg2 in r8 +--* t67 long arg0 in rcx +--* t68 int arg1 in rdx N015 ( 58, 33) [000024] --CXG------- t24 = * CALL ref System.String..ctor $181 /--* t24 ref N016 ( 59, 34) [000028] ---XG------- * RETURN ref $182 ------------------------------------------------------------------------------------------------------------------- *** lvaComputeRefCounts *** *** lvaComputeRefCounts -- explicit counts *** New refCnts for V00: refCnt = 1, refCntWtd = 1 New refCnts for V01: refCnt = 1, refCntWtd = 1 New refCnts for V01: refCnt = 2, refCntWtd = 2 New refCnts for V10: refCnt = 1, refCntWtd = 1 New refCnts for V10: refCnt = 2, refCntWtd = 2 New refCnts for V02: refCnt = 1, refCntWtd = 0.50 New refCnts for V09: refCnt = 1, refCntWtd = 1 New refCnts for V10: refCnt = 3, refCntWtd = 2.50 New refCnts for V02: refCnt = 2, refCntWtd = 1 New refCnts for V08: refCnt = 1, refCntWtd = 1 New refCnts for V08: refCnt = 2, refCntWtd = 2 New refCnts for V09: refCnt = 2, refCntWtd = 2 *** lvaComputeRefCounts -- implicit counts *** New refCnts for V00: refCnt = 2, refCntWtd = 2 New refCnts for V00: refCnt = 3, refCntWtd = 3 New refCnts for V01: refCnt = 3, refCntWtd = 3 New refCnts for V01: refCnt = 4, refCntWtd = 4 *************** In fgLocalVarLiveness() ; Initial local variable assignments ; ; V00 arg0 long single-def ; V01 arg1 byref single-def ; V02 loc0 long do-not-enreg[X] addr-exposed ld-addr-op ; V03 loc1 int ; V04 loc2 ref class-hnd exact ; V05 OutArgs lclBlk <32> "OutgoingArgSpace" ; V06 tmp1 long ld-addr-op "Inlining Arg" ; V07 tmp2 long ld-addr-op "Inlining Arg" ; V08 tmp3 int "argument with side effect" ; V09 tmp4 long "argument with side effect" ; V10 cse0 long "CSE - aggressive" In fgLocalVarLivenessInit Tracked variable (5 out of 11) table: V01 arg1 [ byref]: refCnt = 4, refCntWtd = 4 V00 arg0 [ long]: refCnt = 3, refCntWtd = 3 V10 cse0 [ long]: refCnt = 3, refCntWtd = 2.50 V08 tmp3 [ int]: refCnt = 2, refCntWtd = 2 V09 tmp4 [ long]: refCnt = 2, refCntWtd = 2 *************** In fgPerBlockLocalVarLiveness() BB01 USE(2)={V01 V00 } + ByrefExposed + GcHeap DEF(1)={ V10} + ByrefExposed* + GcHeap* BB02 USE(0)={} DEF(0)={} BB03 USE(1)={V10 } + ByrefExposed + GcHeap DEF(2)={ V08 V09} + ByrefExposed* + GcHeap* ** Memory liveness computed, GcHeap states and ByrefExposed states match *************** In fgInterBlockLocalVarLiveness() BB liveness after fgLiveVarAnalysis(): BB01 IN (2)={V01 V00 } + ByrefExposed + GcHeap OUT(1)={ V10} + ByrefExposed + GcHeap BB02 IN (0)={} OUT(0)={} BB03 IN (1)={V10} + ByrefExposed + GcHeap OUT(0)={ } *************** In fgUpdateFlowGraph() Before updating the flow graph: ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..016)-> BB03 ( cond ) i hascall gcsafe LIR BB02 [0001] 1 BB01 0.50 [016..018) (return) i gcsafe LIR BB03 [0002] 1 BB01 0.50 [018..02D) (return) i hascall gcsafe newobj LIR ----------------------------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist *** lvaComputeRefCounts *** *** lvaComputeRefCounts -- explicit counts *** New refCnts for V00: refCnt = 1, refCntWtd = 1 New refCnts for V01: refCnt = 1, refCntWtd = 1 New refCnts for V01: refCnt = 2, refCntWtd = 2 New refCnts for V10: refCnt = 1, refCntWtd = 1 New refCnts for V10: refCnt = 2, refCntWtd = 2 New refCnts for V02: refCnt = 1, refCntWtd = 0.50 New refCnts for V09: refCnt = 1, refCntWtd = 1 New refCnts for V10: refCnt = 3, refCntWtd = 2.50 New refCnts for V02: refCnt = 2, refCntWtd = 1 New refCnts for V08: refCnt = 1, refCntWtd = 1 New refCnts for V08: refCnt = 2, refCntWtd = 2 New refCnts for V09: refCnt = 2, refCntWtd = 2 *** lvaComputeRefCounts -- implicit counts *** New refCnts for V00: refCnt = 2, refCntWtd = 2 New refCnts for V00: refCnt = 3, refCntWtd = 3 New refCnts for V01: refCnt = 3, refCntWtd = 3 New refCnts for V01: refCnt = 4, refCntWtd = 4 *************** Finishing PHASE Lowering nodeinfo Trees after Lowering nodeinfo ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..016)-> BB03 ( cond ) i hascall gcsafe LIR BB02 [0001] 1 BB01 0.50 [016..018) (return) i gcsafe LIR BB03 [0002] 1 BB01 0.50 [018..02D) (return) i hascall gcsafe newobj LIR ----------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [000..016) -> BB03 (cond), preds={} succs={BB02,BB03} [000058] ------------ IL_OFFSET void INLRT @ 0x000[E-] N002 ( 1, 1) [000001] ------------ t1 = LCL_VAR long V00 arg0 u:1 (last use) $80 /--* t1 long [000063] ------------ t63 = * PUTARG_REG long REG rcx /--* t63 long arg0 in rcx N003 ( 15, 7) [000002] --CXG------- t2 = * CALL long System.Runtime.RuntimeImports.RhGetOSModuleFromPointer $82 N004 ( 1, 1) [000000] ------------ t0 = LCL_VAR byref V01 arg1 u:1 $c0 /--* t0 byref +--* t2 long [000059] -ACXG------- * STOREIND long [000060] ------------ IL_OFFSET void INLRT @ 0x008[E-] N001 ( 1, 1) [000005] ------------ t5 = LCL_VAR byref V01 arg1 u:1 (last use) $c0 /--* t5 byref N002 ( 3, 2) [000006] *---GO------ t6 = * IND long <l:$201, c:$200> /--* t6 long N004 ( 7, 5) [000054] DA--GO------ * STORE_LCL_VAR long V10 cse0 d:1 N005 ( 3, 2) [000055] ------------ t55 = LCL_VAR long V10 cse0 u:1 <l:$201, c:$200> N007 ( 1, 1) [000007] -c---------- t7 = CNS_INT long 0 $240 /--* t55 long +--* t7 long N008 ( 12, 9) [000037] J---GO-N---- * NE void <l:$283, c:$282> N009 ( 14, 11) [000013] ----GO------ * JTRUE void ------------ BB02 [016..018) (return), preds={BB01} succs={} [000061] ------------ IL_OFFSET void INLRT @ 0x016[E-] N001 ( 1, 1) [000029] ------------ t29 = CNS_INT ref null $VN.Null /--* t29 ref N002 ( 2, 2) [000030] ------------ * RETURN ref $183 ------------ BB03 [018..02D) (return), preds={BB01} succs={} [000062] ------------ IL_OFFSET void INLRT @ 0x02B[E-] N001 ( 3, 2) [000021] ------------ t21 = LCL_VAR long (AX) V02 loc0 $141 /--* t21 long N003 ( 7, 5) [000050] DA--G-----L- * STORE_LCL_VAR long V09 tmp4 d:1 N007 ( 3, 2) [000057] ------------ t57 = LCL_VAR long V10 cse0 u:1 (last use) <l:$140, c:$83> /--* t57 long [000064] ------------ t64 = * PUTARG_REG long REG rcx N008 ( 3, 3) [000017] ------------ t17 = LCL_VAR_ADDR long V02 loc0 $88 /--* t17 long [000065] ------------ t65 = * PUTARG_REG long REG rdx /--* t64 long arg0 in rcx +--* t65 long arg1 in rdx N009 ( 20, 12) [000018] --CXG------- t18 = * CALL int System.Runtime.RuntimeImports.RhGetModuleFileName $301 /--* t18 int N011 ( 24, 15) [000047] DA-XG-----L- * STORE_LCL_VAR int V08 tmp3 d:1 N012 ( 3, 2) [000048] ------------ t48 = LCL_VAR int V08 tmp3 u:1 (last use) $301 /--* t48 int [000066] ------------ t66 = * PUTARG_REG int REG r8 N013 ( 3, 2) [000051] ------------ t51 = LCL_VAR long V09 tmp4 u:1 (last use) $141 /--* t51 long [000067] ------------ t67 = * PUTARG_REG long REG rcx N014 ( 1, 1) [000022] ------------ t22 = CNS_INT int 0 $40 /--* t22 int [000068] ------------ t68 = * PUTARG_REG int REG rdx /--* t66 int arg2 in r8 +--* t67 long arg0 in rcx +--* t68 int arg1 in rdx N015 ( 58, 33) [000024] --CXG------- t24 = * CALL ref System.String..ctor $181 /--* t24 ref N016 ( 59, 34) [000028] ---XG------- * RETURN ref $182 ------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist Trees before Calculate stack level slots ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..016)-> BB03 ( cond ) i hascall gcsafe LIR BB02 [0001] 1 BB01 0.50 [016..018) (return) i gcsafe LIR BB03 [0002] 1 BB01 0.50 [018..02D) (return) i hascall gcsafe newobj LIR ----------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [000..016) -> BB03 (cond), preds={} succs={BB02,BB03} [000058] ------------ IL_OFFSET void INLRT @ 0x000[E-] N002 ( 1, 1) [000001] ------------ t1 = LCL_VAR long V00 arg0 u:1 (last use) $80 /--* t1 long [000063] ------------ t63 = * PUTARG_REG long REG rcx /--* t63 long arg0 in rcx N003 ( 15, 7) [000002] --CXG------- t2 = * CALL long System.Runtime.RuntimeImports.RhGetOSModuleFromPointer $82 N004 ( 1, 1) [000000] ------------ t0 = LCL_VAR byref V01 arg1 u:1 $c0 /--* t0 byref +--* t2 long [000059] -ACXG------- * STOREIND long [000060] ------------ IL_OFFSET void INLRT @ 0x008[E-] N001 ( 1, 1) [000005] ------------ t5 = LCL_VAR byref V01 arg1 u:1 (last use) $c0 /--* t5 byref N002 ( 3, 2) [000006] *---GO------ t6 = * IND long <l:$201, c:$200> /--* t6 long N004 ( 7, 5) [000054] DA--GO------ * STORE_LCL_VAR long V10 cse0 d:1 N005 ( 3, 2) [000055] ------------ t55 = LCL_VAR long V10 cse0 u:1 <l:$201, c:$200> N007 ( 1, 1) [000007] -c---------- t7 = CNS_INT long 0 $240 /--* t55 long +--* t7 long N008 ( 12, 9) [000037] J---GO-N---- * NE void <l:$283, c:$282> N009 ( 14, 11) [000013] ----GO------ * JTRUE void ------------ BB02 [016..018) (return), preds={BB01} succs={} [000061] ------------ IL_OFFSET void INLRT @ 0x016[E-] N001 ( 1, 1) [000029] ------------ t29 = CNS_INT ref null $VN.Null /--* t29 ref N002 ( 2, 2) [000030] ------------ * RETURN ref $183 ------------ BB03 [018..02D) (return), preds={BB01} succs={} [000062] ------------ IL_OFFSET void INLRT @ 0x02B[E-] N001 ( 3, 2) [000021] ------------ t21 = LCL_VAR long (AX) V02 loc0 $141 /--* t21 long N003 ( 7, 5) [000050] DA--G-----L- * STORE_LCL_VAR long V09 tmp4 d:1 N007 ( 3, 2) [000057] ------------ t57 = LCL_VAR long V10 cse0 u:1 (last use) <l:$140, c:$83> /--* t57 long [000064] ------------ t64 = * PUTARG_REG long REG rcx N008 ( 3, 3) [000017] ------------ t17 = LCL_VAR_ADDR long V02 loc0 $88 /--* t17 long [000065] ------------ t65 = * PUTARG_REG long REG rdx /--* t64 long arg0 in rcx +--* t65 long arg1 in rdx N009 ( 20, 12) [000018] --CXG------- t18 = * CALL int System.Runtime.RuntimeImports.RhGetModuleFileName $301 /--* t18 int N011 ( 24, 15) [000047] DA-XG-----L- * STORE_LCL_VAR int V08 tmp3 d:1 N012 ( 3, 2) [000048] ------------ t48 = LCL_VAR int V08 tmp3 u:1 (last use) $301 /--* t48 int [000066] ------------ t66 = * PUTARG_REG int REG r8 N013 ( 3, 2) [000051] ------------ t51 = LCL_VAR long V09 tmp4 u:1 (last use) $141 /--* t51 long [000067] ------------ t67 = * PUTARG_REG long REG rcx N014 ( 1, 1) [000022] ------------ t22 = CNS_INT int 0 $40 /--* t22 int [000068] ------------ t68 = * PUTARG_REG int REG rdx /--* t66 int arg2 in r8 +--* t67 long arg0 in rcx +--* t68 int arg1 in rdx N015 ( 58, 33) [000024] --CXG------- t24 = * CALL ref System.String..ctor $181 /--* t24 ref N016 ( 59, 34) [000028] ---XG------- * RETURN ref $182 ------------------------------------------------------------------------------------------------------------------- *************** 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 {V00 V01} {V10} {V00 V01} {V10} BB02 use def in out {} {} {} {} BB03 use def in out {V10} {V08 V09} {V10} {} Interval 0: long RefPositions {} physReg:NA Preferences=[allInt] Interval 0: (V00) long RefPositions {} physReg:NA Preferences=[allInt] Interval 1: byref RefPositions {} physReg:NA Preferences=[allInt] Interval 1: (V01) byref RefPositions {} physReg:NA Preferences=[allInt] Interval 2: int RefPositions {} physReg:NA Preferences=[allInt] Interval 2: (V08) int RefPositions {} physReg:NA Preferences=[allInt] Interval 3: long RefPositions {} physReg:NA Preferences=[allInt] Interval 3: (V09) long RefPositions {} physReg:NA Preferences=[allInt] Interval 4: long RefPositions {} physReg:NA Preferences=[allInt] Interval 4: (V10) long RefPositions {} physReg:NA Preferences=[allInt] FP callee save candidate vars: None floatVarCount = 0; hasLoops = false, singleExit = false TUPLE STYLE DUMP BEFORE LSRA Start LSRA Block Sequence: Current block: BB01 Succ block: BB02, Criteria: weight, Worklist: [BB02 ] Succ block: BB03, Criteria: bbNum, Worklist: [BB02 BB03 ] Current block: BB02 Current block: BB03 Final LSRA Block Sequence: BB01( 1 ) BB02( 0.50) BB03( 0.50) BB01 [000..016) -> BB03 (cond), preds={} succs={BB02,BB03} ===== N000. IL_OFFSET INLRT @ 0x000[E-] N002. V00(t1*) N000. t63 = PUTARG_REG; t1* N003. t2 = CALL ; t63 N004. V01(t0) N000. STOREIND ; t0,t2 N000. IL_OFFSET INLRT @ 0x008[E-] N001. V01(t5*) N002. t6 = IND ; t5* N004. V10(t54); t6 N005. V10(t55) N007. CNS_INT 0 N008. NE ; t55 N009. JTRUE BB02 [016..018) (return), preds={BB01} succs={} ===== N000. IL_OFFSET INLRT @ 0x016[E-] N001. t29 = CNS_INT null N002. RETURN ; t29 BB03 [018..02D) (return), preds={BB01} succs={} ===== N000. IL_OFFSET INLRT @ 0x02B[E-] N001. t21 = V02 MEM N003. V09(t50); t21 N007. V10(t57*) N000. t64 = PUTARG_REG; t57* N008. t17 = LCL_VAR_ADDR V02 loc0 N000. t65 = PUTARG_REG; t17 N009. t18 = CALL ; t64,t65 N011. V08(t47); t18 N012. V08(t48*) N000. t66 = PUTARG_REG; t48* N013. V09(t51*) N000. t67 = PUTARG_REG; t51* N014. t22 = CNS_INT 0 N000. t68 = PUTARG_REG; t22 N015. t24 = CALL ; t66,t67,t68 N016. RETURN ; t24 buildIntervals second part ======== Int arg V01 in reg rdx <RefPosition #0 @0 RefTypeParamDef <Ivl:1 V01> BB00 regmask=[rdx] minReg=1 fixed wt=100.00> Int arg V00 in reg rcx <RefPosition #1 @0 RefTypeParamDef <Ivl:0 V00> BB00 regmask=[rcx] minReg=1 fixed wt=100.00> NEW BLOCK BB01 <RefPosition #2 @1 RefTypeBB BB01 regmask=[] minReg=1 wt=100.00> DefList: { } N003 (???,???) [000058] ------------ * IL_OFFSET void INLRT @ 0x000[E-] REG NA DefList: { } N005 ( 1, 1) [000001] ------------ * LCL_VAR long V00 arg0 u:1 NA (last use) REG NA $80 DefList: { } N007 (???,???) [000063] ------------ * PUTARG_REG long REG rcx <RefPosition #3 @7 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00> <RefPosition #4 @7 RefTypeUse <Ivl:0 V00> LCL_VAR BB01 regmask=[rcx] minReg=1 last fixed wt=300.00> Interval 5: long RefPositions {} physReg:NA Preferences=[allInt] <RefPosition #5 @8 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00> <RefPosition #6 @8 RefTypeDef <Ivl:5> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00> DefList: { N007.t63. PUTARG_REG } N009 ( 15, 7) [000002] --CXG------- * CALL long System.Runtime.RuntimeImports.RhGetOSModuleFromPointer REG NA $82 <RefPosition #7 @9 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00> <RefPosition #8 @9 RefTypeUse <Ivl:5> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00> <RefPosition #9 @10 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 wt=100.00> <RefPosition #10 @10 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00> <RefPosition #11 @10 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 wt=100.00> <RefPosition #12 @10 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 wt=100.00> <RefPosition #13 @10 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 wt=100.00> <RefPosition #14 @10 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 wt=100.00> <RefPosition #15 @10 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 wt=100.00> Interval 6: long RefPositions {} physReg:NA Preferences=[allInt] <RefPosition #16 @10 RefTypeFixedReg <Reg:rax> BB01 regmask=[rax] minReg=1 wt=100.00> <RefPosition #17 @10 RefTypeDef <Ivl:6> CALL BB01 regmask=[rax] minReg=1 fixed wt=400.00> DefList: { N009.t2. CALL } N011 ( 1, 1) [000000] ------------ * LCL_VAR byref V01 arg1 u:1 NA REG NA $c0 DefList: { N009.t2. CALL } N013 (???,???) [000059] -ACXG------- * STOREIND long REG NA <RefPosition #18 @13 RefTypeUse <Ivl:1 V01> LCL_VAR BB01 regmask=[allInt] minReg=1 last wt=400.00> <RefPosition #19 @13 RefTypeUse <Ivl:6> BB01 regmask=[allInt] minReg=1 last wt=100.00> DefList: { } N015 (???,???) [000060] ------------ * IL_OFFSET void INLRT @ 0x008[E-] REG NA DefList: { } N017 ( 1, 1) [000005] ------------ * LCL_VAR byref V01 arg1 u:1 NA (last use) REG NA $c0 DefList: { } N019 ( 3, 2) [000006] *---GO------ * IND long REG NA <l:$201, c:$200> <RefPosition #20 @19 RefTypeUse <Ivl:1 V01> LCL_VAR BB01 regmask=[allInt] minReg=1 last wt=400.00> Interval 7: long RefPositions {} physReg:NA Preferences=[allInt] <RefPosition #21 @20 RefTypeDef <Ivl:7> IND BB01 regmask=[allInt] minReg=1 wt=400.00> DefList: { N019.t6. IND } N021 ( 7, 5) [000054] DA--GO------ * STORE_LCL_VAR long V10 cse0 d:1 NA REG NA <RefPosition #22 @21 RefTypeUse <Ivl:7> BB01 regmask=[allInt] minReg=1 last wt=100.00> Assigning related <V10/L4> to <I7> <RefPosition #23 @22 RefTypeDef <Ivl:4 V10> STORE_LCL_VAR BB01 regmask=[allInt] minReg=1 last wt=250.00> DefList: { } N023 ( 3, 2) [000055] ------------ * LCL_VAR long V10 cse0 u:1 NA REG NA <l:$201, c:$200> DefList: { } N025 ( 1, 1) [000007] -c---------- * CNS_INT long 0 REG NA $240 Contained DefList: { } N027 ( 12, 9) [000037] J---GO-N---- * NE void REG NA <l:$283, c:$282> <RefPosition #24 @27 RefTypeUse <Ivl:4 V10> LCL_VAR BB01 regmask=[allInt] minReg=1 last wt=250.00> DefList: { } N029 ( 14, 11) [000013] ----GO------ * JTRUE void REG NA CHECKING LAST USES for BB01, liveout={V10} ============================== use: {V00 V01} def: {V10} NEW BLOCK BB02 Setting BB01 as the predecessor for determining incoming variable registers of BB02 <RefPosition #25 @31 RefTypeBB BB02 regmask=[] minReg=1 wt=50.00> DefList: { } N033 (???,???) [000061] ------------ * IL_OFFSET void INLRT @ 0x016[E-] REG NA DefList: { } N035 ( 1, 1) [000029] ------------ * CNS_INT ref null REG NA $VN.Null Interval 8: ref RefPositions {} physReg:NA Preferences=[allInt] <RefPosition #26 @36 RefTypeDef <Ivl:8> CNS_INT BB02 regmask=[allInt] minReg=1 wt=200.00> DefList: { N035.t29. CNS_INT } N037 ( 2, 2) [000030] ------------ * RETURN ref REG NA $183 <RefPosition #27 @37 RefTypeFixedReg <Reg:rax> BB02 regmask=[rax] minReg=1 wt=50.00> <RefPosition #28 @37 RefTypeUse <Ivl:8> BB02 regmask=[rax] minReg=1 last fixed wt=50.00> CHECKING LAST USES for BB02, liveout={} ============================== use: {} def: {} NEW BLOCK BB03 Setting BB01 as the predecessor for determining incoming variable registers of BB03 <RefPosition #29 @39 RefTypeBB BB03 regmask=[] minReg=1 wt=50.00> DefList: { } N041 (???,???) [000062] ------------ * IL_OFFSET void INLRT @ 0x02B[E-] REG NA DefList: { } N043 ( 3, 2) [000021] ------------ * LCL_VAR long (AX) V02 loc0 NA REG NA $141 Interval 9: long RefPositions {} physReg:NA Preferences=[allInt] <RefPosition #30 @44 RefTypeDef <Ivl:9> LCL_VAR BB03 regmask=[allInt] minReg=1 wt=200.00> DefList: { N043.t21. LCL_VAR } N045 ( 7, 5) [000050] DA--G-----L- * STORE_LCL_VAR long V09 tmp4 d:1 NA REG NA <RefPosition #31 @45 RefTypeUse <Ivl:9> BB03 regmask=[allInt] minReg=1 last wt=50.00> Assigning related <V09/L3> to <I9> <RefPosition #32 @46 RefTypeDef <Ivl:3 V09> STORE_LCL_VAR BB03 regmask=[allInt] minReg=1 last wt=200.00> DefList: { } N047 ( 3, 2) [000057] ------------ * LCL_VAR long V10 cse0 u:1 NA (last use) REG NA <l:$140, c:$83> DefList: { } N049 (???,???) [000064] ------------ * PUTARG_REG long REG rcx <RefPosition #33 @49 RefTypeFixedReg <Reg:rcx> BB03 regmask=[rcx] minReg=1 wt=50.00> <RefPosition #34 @49 RefTypeUse <Ivl:4 V10> LCL_VAR BB03 regmask=[rcx] minReg=1 last fixed wt=250.00> Interval 10: long RefPositions {} physReg:NA Preferences=[allInt] <RefPosition #35 @50 RefTypeFixedReg <Reg:rcx> BB03 regmask=[rcx] minReg=1 wt=50.00> <RefPosition #36 @50 RefTypeDef <Ivl:10> PUTARG_REG BB03 regmask=[rcx] minReg=1 fixed wt=200.00> DefList: { N049.t64. PUTARG_REG } N051 ( 3, 3) [000017] ------------ * LCL_VAR_ADDR long V02 loc0 NA REG NA $88 Interval 11: long RefPositions {} physReg:NA Preferences=[allInt] <RefPosition #37 @52 RefTypeDef <Ivl:11> LCL_VAR_ADDR BB03 regmask=[allInt] minReg=1 wt=200.00> DefList: { N049.t64. PUTARG_REG; N051.t17. LCL_VAR_ADDR } N053 (???,???) [000065] ------------ * PUTARG_REG long REG rdx <RefPosition #38 @53 RefTypeFixedReg <Reg:rdx> BB03 regmask=[rdx] minReg=1 wt=50.00> <RefPosition #39 @53 RefTypeUse <Ivl:11> BB03 regmask=[rdx] minReg=1 last fixed wt=50.00> Interval 12: long RefPositions {} physReg:NA Preferences=[allInt] <RefPosition #40 @54 RefTypeFixedReg <Reg:rdx> BB03 regmask=[rdx] minReg=1 wt=50.00> <RefPosition #41 @54 RefTypeDef <Ivl:12> PUTARG_REG BB03 regmask=[rdx] minReg=1 fixed wt=200.00> DefList: { N049.t64. PUTARG_REG; N053.t65. PUTARG_REG } N055 ( 20, 12) [000018] --CXG------- * CALL int System.Runtime.RuntimeImports.RhGetModuleFileName REG NA $301 <RefPosition #42 @55 RefTypeFixedReg <Reg:rcx> BB03 regmask=[rcx] minReg=1 wt=50.00> <RefPosition #43 @55 RefTypeUse <Ivl:10> BB03 regmask=[rcx] minReg=1 last fixed wt=50.00> <RefPosition #44 @55 RefTypeFixedReg <Reg:rdx> BB03 regmask=[rdx] minReg=1 wt=50.00> <RefPosition #45 @55 RefTypeUse <Ivl:12> BB03 regmask=[rdx] minReg=1 last fixed wt=50.00> <RefPosition #46 @56 RefTypeKill <Reg:rax> BB03 regmask=[rax] minReg=1 wt=50.00> <RefPosition #47 @56 RefTypeKill <Reg:rcx> BB03 regmask=[rcx] minReg=1 wt=50.00> <RefPosition #48 @56 RefTypeKill <Reg:rdx> BB03 regmask=[rdx] minReg=1 wt=50.00> <RefPosition #49 @56 RefTypeKill <Reg:r8 > BB03 regmask=[r8] minReg=1 wt=50.00> <RefPosition #50 @56 RefTypeKill <Reg:r9 > BB03 regmask=[r9] minReg=1 wt=50.00> <RefPosition #51 @56 RefTypeKill <Reg:r10> BB03 regmask=[r10] minReg=1 wt=50.00> <RefPosition #52 @56 RefTypeKill <Reg:r11> BB03 regmask=[r11] minReg=1 wt=50.00> Interval 13: int RefPositions {} physReg:NA Preferences=[allInt] <RefPosition #53 @56 RefTypeFixedReg <Reg:rax> BB03 regmask=[rax] minReg=1 wt=50.00> <RefPosition #54 @56 RefTypeDef <Ivl:13> CALL BB03 regmask=[rax] minReg=1 fixed wt=200.00> DefList: { N055.t18. CALL } N057 ( 24, 15) [000047] DA-XG-----L- * STORE_LCL_VAR int V08 tmp3 d:1 NA REG NA <RefPosition #55 @57 RefTypeUse <Ivl:13> BB03 regmask=[allInt] minReg=1 last wt=50.00> Assigning related <V08/L2> to <I13> <RefPosition #56 @58 RefTypeDef <Ivl:2 V08> STORE_LCL_VAR BB03 regmask=[allInt] minReg=1 last wt=200.00> DefList: { } N059 ( 3, 2) [000048] ------------ * LCL_VAR int V08 tmp3 u:1 NA (last use) REG NA $301 DefList: { } N061 (???,???) [000066] ------------ * PUTARG_REG int REG r8 <RefPosition #57 @61 RefTypeFixedReg <Reg:r8 > BB03 regmask=[r8] minReg=1 wt=50.00> <RefPosition #58 @61 RefTypeUse <Ivl:2 V08> LCL_VAR BB03 regmask=[r8] minReg=1 last fixed wt=200.00> Interval 14: int RefPositions {} physReg:NA Preferences=[allInt] <RefPosition #59 @62 RefTypeFixedReg <Reg:r8 > BB03 regmask=[r8] minReg=1 wt=50.00> <RefPosition #60 @62 RefTypeDef <Ivl:14> PUTARG_REG BB03 regmask=[r8] minReg=1 fixed wt=200.00> DefList: { N061.t66. PUTARG_REG } N063 ( 3, 2) [000051] ------------ * LCL_VAR long V09 tmp4 u:1 NA (last use) REG NA $141 DefList: { N061.t66. PUTARG_REG } N065 (???,???) [000067] ------------ * PUTARG_REG long REG rcx <RefPosition #61 @65 RefTypeFixedReg <Reg:rcx> BB03 regmask=[rcx] minReg=1 wt=50.00> <RefPosition #62 @65 RefTypeUse <Ivl:3 V09> LCL_VAR BB03 regmask=[rcx] minReg=1 last fixed wt=200.00> Interval 15: long RefPositions {} physReg:NA Preferences=[allInt] <RefPosition #63 @66 RefTypeFixedReg <Reg:rcx> BB03 regmask=[rcx] minReg=1 wt=50.00> <RefPosition #64 @66 RefTypeDef <Ivl:15> PUTARG_REG BB03 regmask=[rcx] minReg=1 fixed wt=200.00> DefList: { N061.t66. PUTARG_REG; N065.t67. PUTARG_REG } N067 ( 1, 1) [000022] ------------ * CNS_INT int 0 REG NA $40 Interval 16: int RefPositions {} physReg:NA Preferences=[allInt] <RefPosition #65 @68 RefTypeDef <Ivl:16> CNS_INT BB03 regmask=[allInt] minReg=1 wt=200.00> DefList: { N061.t66. PUTARG_REG; N065.t67. PUTARG_REG; N067.t22. CNS_INT } N069 (???,???) [000068] ------------ * PUTARG_REG int REG rdx <RefPosition #66 @69 RefTypeFixedReg <Reg:rdx> BB03 regmask=[rdx] minReg=1 wt=50.00> <RefPosition #67 @69 RefTypeUse <Ivl:16> BB03 regmask=[rdx] minReg=1 last fixed wt=50.00> Interval 17: int RefPositions {} physReg:NA Preferences=[allInt] <RefPosition #68 @70 RefTypeFixedReg <Reg:rdx> BB03 regmask=[rdx] minReg=1 wt=50.00> <RefPosition #69 @70 RefTypeDef <Ivl:17> PUTARG_REG BB03 regmask=[rdx] minReg=1 fixed wt=200.00> DefList: { N061.t66. PUTARG_REG; N065.t67. PUTARG_REG; N069.t68. PUTARG_REG } N071 ( 58, 33) [000024] --CXG------- * CALL ref System.String..ctor REG NA $181 <RefPosition #70 @71 RefTypeFixedReg <Reg:r8 > BB03 regmask=[r8] minReg=1 wt=50.00> <RefPosition #71 @71 RefTypeUse <Ivl:14> BB03 regmask=[r8] minReg=1 last fixed wt=50.00> <RefPosition #72 @71 RefTypeFixedReg <Reg:rcx> BB03 regmask=[rcx] minReg=1 wt=50.00> <RefPosition #73 @71 RefTypeUse <Ivl:15> BB03 regmask=[rcx] minReg=1 last fixed wt=50.00> <RefPosition #74 @71 RefTypeFixedReg <Reg:rdx> BB03 regmask=[rdx] minReg=1 wt=50.00> <RefPosition #75 @71 RefTypeUse <Ivl:17> BB03 regmask=[rdx] minReg=1 last fixed wt=50.00> <RefPosition #76 @72 RefTypeKill <Reg:rax> BB03 regmask=[rax] minReg=1 wt=50.00> <RefPosition #77 @72 RefTypeKill <Reg:rcx> BB03 regmask=[rcx] minReg=1 wt=50.00> <RefPosition #78 @72 RefTypeKill <Reg:rdx> BB03 regmask=[rdx] minReg=1 wt=50.00> <RefPosition #79 @72 RefTypeKill <Reg:r8 > BB03 regmask=[r8] minReg=1 wt=50.00> <RefPosition #80 @72 RefTypeKill <Reg:r9 > BB03 regmask=[r9] minReg=1 wt=50.00> <RefPosition #81 @72 RefTypeKill <Reg:r10> BB03 regmask=[r10] minReg=1 wt=50.00> <RefPosition #82 @72 RefTypeKill <Reg:r11> BB03 regmask=[r11] minReg=1 wt=50.00> Interval 18: ref RefPositions {} physReg:NA Preferences=[allInt] <RefPosition #83 @72 RefTypeFixedReg <Reg:rax> BB03 regmask=[rax] minReg=1 wt=50.00> <RefPosition #84 @72 RefTypeDef <Ivl:18> CALL BB03 regmask=[rax] minReg=1 fixed wt=200.00> DefList: { N071.t24. CALL } N073 ( 59, 34) [000028] ---XG------- * RETURN ref REG NA $182 <RefPosition #85 @73 RefTypeFixedReg <Reg:rax> BB03 regmask=[rax] minReg=1 wt=50.00> <RefPosition #86 @73 RefTypeUse <Ivl:18> BB03 regmask=[rax] minReg=1 last fixed wt=50.00> CHECKING LAST USES for BB03, liveout={} ============================== use: {V10} def: {V08 V09} Linear scan intervals BEFORE VALIDATING INTERVALS: Interval 0: (V00) long RefPositions {#1@0 #4@7} physReg:rcx Preferences=[rcx] Interval 1: (V01) byref RefPositions {#0@0 #18@13 #20@19} physReg:rdx Preferences=[rbx rbp rsi rdi r12-r15] Interval 2: (V08) int RefPositions {#56@58 #58@61} physReg:NA Preferences=[r8] Interval 3: (V09) long RefPositions {#32@46 #62@65} physReg:NA Preferences=[rbx rbp rsi rdi r12-r15] Interval 4: (V10) long RefPositions {#23@22 #24@27 #34@49} physReg:NA Preferences=[rcx] Interval 5: long RefPositions {#6@8 #8@9} physReg:NA Preferences=[rcx] Interval 6: long RefPositions {#17@10 #19@13} physReg:NA Preferences=[rax] Interval 7: long RefPositions {#21@20 #22@21} physReg:NA Preferences=[allInt] RelatedInterval <V10/L4> Interval 8: ref (constant) RefPositions {#26@36 #28@37} physReg:NA Preferences=[rax] Interval 9: long RefPositions {#30@44 #31@45} physReg:NA Preferences=[allInt] RelatedInterval <V09/L3> Interval 10: long RefPositions {#36@50 #43@55} physReg:NA Preferences=[rcx] Interval 11: long RefPositions {#37@52 #39@53} physReg:NA Preferences=[rdx] Interval 12: long RefPositions {#41@54 #45@55} physReg:NA Preferences=[rdx] Interval 13: int RefPositions {#54@56 #55@57} physReg:NA Preferences=[rax] RelatedInterval <V08/L2> Interval 14: int RefPositions {#60@62 #71@71} physReg:NA Preferences=[r8] Interval 15: long RefPositions {#64@66 #73@71} physReg:NA Preferences=[rcx] Interval 16: int (constant) RefPositions {#65@68 #67@69} physReg:NA Preferences=[rdx] Interval 17: int RefPositions {#69@70 #75@71} physReg:NA Preferences=[rdx] Interval 18: ref RefPositions {#84@72 #86@73} physReg:NA Preferences=[rax] ------------ REFPOSITIONS BEFORE VALIDATING INTERVALS: ------------ <RefPosition #0 @0 RefTypeParamDef <Ivl:1 V01> BB00 regmask=[rdx] minReg=1 fixed regOptional wt=100.00> <RefPosition #1 @0 RefTypeParamDef <Ivl:0 V00> BB00 regmask=[rcx] minReg=1 fixed regOptional wt=100.00> <RefPosition #2 @1 RefTypeBB BB01 regmask=[] minReg=1 wt=100.00> <RefPosition #3 @7 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00> <RefPosition #4 @7 RefTypeUse <Ivl:0 V00> LCL_VAR BB01 regmask=[rcx] minReg=1 last fixed wt=300.00> <RefPosition #5 @8 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00> <RefPosition #6 @8 RefTypeDef <Ivl:5> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00> <RefPosition #7 @9 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00> <RefPosition #8 @9 RefTypeUse <Ivl:5> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00> <RefPosition #9 @10 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 last wt=100.00> <RefPosition #10 @10 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 last wt=100.00> <RefPosition #11 @10 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 last wt=100.00> <RefPosition #12 @10 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 last wt=100.00> <RefPosition #13 @10 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 last wt=100.00> <RefPosition #14 @10 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 last wt=100.00> <RefPosition #15 @10 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 last wt=100.00> <RefPosition #16 @10 RefTypeFixedReg <Reg:rax> BB01 regmask=[rax] minReg=1 wt=100.00> <RefPosition #17 @10 RefTypeDef <Ivl:6> CALL BB01 regmask=[rax] minReg=1 fixed wt=400.00> <RefPosition #18 @13 RefTypeUse <Ivl:1 V01> LCL_VAR BB01 regmask=[allInt] minReg=1 wt=400.00> <RefPosition #19 @13 RefTypeUse <Ivl:6> BB01 regmask=[allInt] minReg=1 last wt=100.00> <RefPosition #20 @19 RefTypeUse <Ivl:1 V01> LCL_VAR BB01 regmask=[allInt] minReg=1 last wt=400.00> <RefPosition #21 @20 RefTypeDef <Ivl:7> IND BB01 regmask=[allInt] minReg=1 wt=400.00> <RefPosition #22 @21 RefTypeUse <Ivl:7> BB01 regmask=[allInt] minReg=1 last wt=100.00> <RefPosition #23 @22 RefTypeDef <Ivl:4 V10> STORE_LCL_VAR BB01 regmask=[allInt] minReg=1 wt=250.00> <RefPosition #24 @27 RefTypeUse <Ivl:4 V10> LCL_VAR BB01 regmask=[allInt] minReg=1 regOptional wt=250.00> <RefPosition #25 @31 RefTypeBB BB02 regmask=[] minReg=1 wt=50.00> <RefPosition #26 @36 RefTypeDef <Ivl:8> CNS_INT BB02 regmask=[rax] minReg=1 wt=200.00> <RefPosition #27 @37 RefTypeFixedReg <Reg:rax> BB02 regmask=[rax] minReg=1 wt=50.00> <RefPosition #28 @37 RefTypeUse <Ivl:8> BB02 regmask=[rax] minReg=1 last fixed wt=50.00> <RefPosition #29 @39 RefTypeBB BB03 regmask=[] minReg=1 wt=50.00> <RefPosition #30 @44 RefTypeDef <Ivl:9> LCL_VAR BB03 regmask=[allInt] minReg=1 wt=200.00> <RefPosition #31 @45 RefTypeUse <Ivl:9> BB03 regmask=[allInt] minReg=1 last wt=50.00> <RefPosition #32 @46 RefTypeDef <Ivl:3 V09> STORE_LCL_VAR BB03 regmask=[allInt] minReg=1 wt=200.00> <RefPosition #33 @49 RefTypeFixedReg <Reg:rcx> BB03 regmask=[rcx] minReg=1 wt=50.00> <RefPosition #34 @49 RefTypeUse <Ivl:4 V10> LCL_VAR BB03 regmask=[rcx] minReg=1 last fixed wt=250.00> <RefPosition #35 @50 RefTypeFixedReg <Reg:rcx> BB03 regmask=[rcx] minReg=1 wt=50.00> <RefPosition #36 @50 RefTypeDef <Ivl:10> PUTARG_REG BB03 regmask=[rcx] minReg=1 fixed wt=200.00> <RefPosition #37 @52 RefTypeDef <Ivl:11> LCL_VAR_ADDR BB03 regmask=[rdx] minReg=1 wt=200.00> <RefPosition #38 @53 RefTypeFixedReg <Reg:rdx> BB03 regmask=[rdx] minReg=1 wt=50.00> <RefPosition #39 @53 RefTypeUse <Ivl:11> BB03 regmask=[rdx] minReg=1 last fixed wt=50.00> <RefPosition #40 @54 RefTypeFixedReg <Reg:rdx> BB03 regmask=[rdx] minReg=1 wt=50.00> <RefPosition #41 @54 RefTypeDef <Ivl:12> PUTARG_REG BB03 regmask=[rdx] minReg=1 fixed wt=200.00> <RefPosition #42 @55 RefTypeFixedReg <Reg:rcx> BB03 regmask=[rcx] minReg=1 wt=50.00> <RefPosition #43 @55 RefTypeUse <Ivl:10> BB03 regmask=[rcx] minReg=1 last fixed wt=50.00> <RefPosition #44 @55 RefTypeFixedReg <Reg:rdx> BB03 regmask=[rdx] minReg=1 wt=50.00> <RefPosition #45 @55 RefTypeUse <Ivl:12> BB03 regmask=[rdx] minReg=1 last fixed wt=50.00> <RefPosition #46 @56 RefTypeKill <Reg:rax> BB03 regmask=[rax] minReg=1 last wt=50.00> <RefPosition #47 @56 RefTypeKill <Reg:rcx> BB03 regmask=[rcx] minReg=1 last wt=50.00> <RefPosition #48 @56 RefTypeKill <Reg:rdx> BB03 regmask=[rdx] minReg=1 last wt=50.00> <RefPosition #49 @56 RefTypeKill <Reg:r8 > BB03 regmask=[r8] minReg=1 last wt=50.00> <RefPosition #50 @56 RefTypeKill <Reg:r9 > BB03 regmask=[r9] minReg=1 last wt=50.00> <RefPosition #51 @56 RefTypeKill <Reg:r10> BB03 regmask=[r10] minReg=1 last wt=50.00> <RefPosition #52 @56 RefTypeKill <Reg:r11> BB03 regmask=[r11] minReg=1 last wt=50.00> <RefPosition #53 @56 RefTypeFixedReg <Reg:rax> BB03 regmask=[rax] minReg=1 wt=50.00> <RefPosition #54 @56 RefTypeDef <Ivl:13> CALL BB03 regmask=[rax] minReg=1 fixed wt=200.00> <RefPosition #55 @57 RefTypeUse <Ivl:13> BB03 regmask=[allInt] minReg=1 last wt=50.00> <RefPosition #56 @58 RefTypeDef <Ivl:2 V08> STORE_LCL_VAR BB03 regmask=[allInt] minReg=1 wt=200.00> <RefPosition #57 @61 RefTypeFixedReg <Reg:r8 > BB03 regmask=[r8] minReg=1 wt=50.00> <RefPosition #58 @61 RefTypeUse <Ivl:2 V08> LCL_VAR BB03 regmask=[r8] minReg=1 last fixed wt=200.00> <RefPosition #59 @62 RefTypeFixedReg <Reg:r8 > BB03 regmask=[r8] minReg=1 wt=50.00> <RefPosition #60 @62 RefTypeDef <Ivl:14> PUTARG_REG BB03 regmask=[r8] minReg=1 fixed wt=200.00> <RefPosition #61 @65 RefTypeFixedReg <Reg:rcx> BB03 regmask=[rcx] minReg=1 wt=50.00> <RefPosition #62 @65 RefTypeUse <Ivl:3 V09> LCL_VAR BB03 regmask=[rcx] minReg=1 last fixed wt=200.00> <RefPosition #63 @66 RefTypeFixedReg <Reg:rcx> BB03 regmask=[rcx] minReg=1 wt=50.00> <RefPosition #64 @66 RefTypeDef <Ivl:15> PUTARG_REG BB03 regmask=[rcx] minReg=1 fixed wt=200.00> <RefPosition #65 @68 RefTypeDef <Ivl:16> CNS_INT BB03 regmask=[rdx] minReg=1 wt=200.00> <RefPosition #66 @69 RefTypeFixedReg <Reg:rdx> BB03 regmask=[rdx] minReg=1 wt=50.00> <RefPosition #67 @69 RefTypeUse <Ivl:16> BB03 regmask=[rdx] minReg=1 last fixed wt=50.00> <RefPosition #68 @70 RefTypeFixedReg <Reg:rdx> BB03 regmask=[rdx] minReg=1 wt=50.00> <RefPosition #69 @70 RefTypeDef <Ivl:17> PUTARG_REG BB03 regmask=[rdx] minReg=1 fixed wt=200.00> <RefPosition #70 @71 RefTypeFixedReg <Reg:r8 > BB03 regmask=[r8] minReg=1 wt=50.00> <RefPosition #71 @71 RefTypeUse <Ivl:14> BB03 regmask=[r8] minReg=1 last fixed wt=50.00> <RefPosition #72 @71 RefTypeFixedReg <Reg:rcx> BB03 regmask=[rcx] minReg=1 wt=50.00> <RefPosition #73 @71 RefTypeUse <Ivl:15> BB03 regmask=[rcx] minReg=1 last fixed wt=50.00> <RefPosition #74 @71 RefTypeFixedReg <Reg:rdx> BB03 regmask=[rdx] minReg=1 wt=50.00> <RefPosition #75 @71 RefTypeUse <Ivl:17> BB03 regmask=[rdx] minReg=1 last fixed wt=50.00> <RefPosition #76 @72 RefTypeKill <Reg:rax> BB03 regmask=[rax] minReg=1 last wt=50.00> <RefPosition #77 @72 RefTypeKill <Reg:rcx> BB03 regmask=[rcx] minReg=1 last wt=50.00> <RefPosition #78 @72 RefTypeKill <Reg:rdx> BB03 regmask=[rdx] minReg=1 last wt=50.00> <RefPosition #79 @72 RefTypeKill <Reg:r8 > BB03 regmask=[r8] minReg=1 last wt=50.00> <RefPosition #80 @72 RefTypeKill <Reg:r9 > BB03 regmask=[r9] minReg=1 last wt=50.00> <RefPosition #81 @72 RefTypeKill <Reg:r10> BB03 regmask=[r10] minReg=1 last wt=50.00> <RefPosition #82 @72 RefTypeKill <Reg:r11> BB03 regmask=[r11] minReg=1 last wt=50.00> <RefPosition #83 @72 RefTypeFixedReg <Reg:rax> BB03 regmask=[rax] minReg=1 wt=50.00> <RefPosition #84 @72 RefTypeDef <Ivl:18> CALL BB03 regmask=[rax] minReg=1 fixed wt=200.00> <RefPosition #85 @73 RefTypeFixedReg <Reg:rax> BB03 regmask=[rax] minReg=1 wt=50.00> <RefPosition #86 @73 RefTypeUse <Ivl:18> BB03 regmask=[rax] minReg=1 last fixed wt=50.00> ----------------- <RefPosition #0 @0 RefTypeParamDef <Ivl:1 V01> BB00 regmask=[rdx] minReg=1 fixed regOptional wt=100.00> <RefPosition #18 @13 RefTypeUse <Ivl:1 V01> LCL_VAR BB01 regmask=[allInt] minReg=1 wt=400.00> <RefPosition #20 @19 RefTypeUse <Ivl:1 V01> LCL_VAR BB01 regmask=[allInt] minReg=1 last wt=400.00> ----------------- <RefPosition #1 @0 RefTypeParamDef <Ivl:0 V00> BB00 regmask=[rcx] minReg=1 fixed regOptional wt=100.00> <RefPosition #4 @7 RefTypeUse <Ivl:0 V00> LCL_VAR BB01 regmask=[rcx] minReg=1 last fixed wt=300.00> ----------------- <RefPosition #23 @22 RefTypeDef <Ivl:4 V10> STORE_LCL_VAR BB01 regmask=[allInt] minReg=1 wt=250.00> <RefPosition #24 @27 RefTypeUse <Ivl:4 V10> LCL_VAR BB01 regmask=[allInt] minReg=1 regOptional wt=250.00> <RefPosition #34 @49 RefTypeUse <Ivl:4 V10> LCL_VAR BB03 regmask=[rcx] minReg=1 last fixed wt=250.00> ----------------- <RefPosition #56 @58 RefTypeDef <Ivl:2 V08> STORE_LCL_VAR BB03 regmask=[allInt] minReg=1 wt=200.00> <RefPosition #58 @61 RefTypeUse <Ivl:2 V08> LCL_VAR BB03 regmask=[r8] minReg=1 last fixed wt=200.00> ----------------- <RefPosition #32 @46 RefTypeDef <Ivl:3 V09> STORE_LCL_VAR BB03 regmask=[allInt] minReg=1 wt=200.00> <RefPosition #62 @65 RefTypeUse <Ivl:3 V09> LCL_VAR BB03 regmask=[rcx] minReg=1 last fixed wt=200.00> TUPLE STYLE DUMP WITH REF POSITIONS Incoming Parameters: V01 V00 BB01 [000..016) -> BB03 (cond), preds={} succs={BB02,BB03} ===== N003. IL_OFFSET INLRT @ 0x000[E-] N005. V00(L0) N007. PUTARG_REG Use:<V00/L0>(#4) Fixed:rcx(#3) * Def:<I5>(#6) rcx N009. CALL Use:<I5>(#8) Fixed:rcx(#7) * Kill: rax rcx rdx r8 r9 r10 r11 Def:<I6>(#17) rax N011. V01(L1) N013. STOREIND Use:<V01/L1>(#18) Use:<I6>(#19) * N015. IL_OFFSET INLRT @ 0x008[E-] N017. V01(L1) N019. IND Use:<V01/L1>(#20) * Def:<I7>(#21) Pref:<V10/L4> N021. V10(L4) Use:<I7>(#22) * Def:<V10/L4>(#23) N023. V10(L4) N025. CNS_INT 0 N027. NE Use:<V10/L4>(#24) N029. JTRUE BB02 [016..018) (return), preds={BB01} succs={} ===== N033. IL_OFFSET INLRT @ 0x016[E-] N035. CNS_INT null Def:<I8>(#26) N037. RETURN Use:<I8>(#28) Fixed:rax(#27) * BB03 [018..02D) (return), preds={BB01} succs={} ===== N041. IL_OFFSET INLRT @ 0x02B[E-] N043. V02 MEM Def:<I9>(#30) Pref:<V09/L3> N045. V09(L3) Use:<I9>(#31) * Def:<V09/L3>(#32) N047. V10(L4) N049. PUTARG_REG Use:<V10/L4>(#34) Fixed:rcx(#33) * Def:<I10>(#36) rcx N051. LCL_VAR_ADDR V02 loc0 NA Def:<I11>(#37) N053. PUTARG_REG Use:<I11>(#39) Fixed:rdx(#38) * Def:<I12>(#41) rdx N055. CALL Use:<I10>(#43) Fixed:rcx(#42) * Use:<I12>(#45) Fixed:rdx(#44) * Kill: rax rcx rdx r8 r9 r10 r11 Def:<I13>(#54) rax Pref:<V08/L2> N057. V08(L2) Use:<I13>(#55) * Def:<V08/L2>(#56) N059. V08(L2) N061. PUTARG_REG Use:<V08/L2>(#58) Fixed:r8(#57) * Def:<I14>(#60) r8 N063. V09(L3) N065. PUTARG_REG Use:<V09/L3>(#62) Fixed:rcx(#61) * Def:<I15>(#64) rcx N067. CNS_INT 0 Def:<I16>(#65) N069. PUTARG_REG Use:<I16>(#67) Fixed:rdx(#66) * Def:<I17>(#69) rdx N071. CALL Use:<I14>(#71) Fixed:r8(#70) * Use:<I15>(#73) Fixed:rcx(#72) * Use:<I17>(#75) Fixed:rdx(#74) * Kill: rax rcx rdx r8 r9 r10 r11 Def:<I18>(#84) rax N073. RETURN Use:<I18>(#86) Fixed:rax(#85) * Linear scan intervals after buildIntervals: Interval 0: (V00) long RefPositions {#1@0 #4@7} physReg:rcx Preferences=[rcx] Interval 1: (V01) byref RefPositions {#0@0 #18@13 #20@19} physReg:rdx Preferences=[rbx rbp rsi rdi r12-r15] Interval 2: (V08) int RefPositions {#56@58 #58@61} physReg:NA Preferences=[r8] Interval 3: (V09) long RefPositions {#32@46 #62@65} physReg:NA Preferences=[rbx rbp rsi rdi r12-r15] Interval 4: (V10) long RefPositions {#23@22 #24@27 #34@49} physReg:NA Preferences=[rcx] Interval 5: long RefPositions {#6@8 #8@9} physReg:NA Preferences=[rcx] Interval 6: long RefPositions {#17@10 #19@13} physReg:NA Preferences=[rax] Interval 7: long RefPositions {#21@20 #22@21} physReg:NA Preferences=[allInt] RelatedInterval <V10/L4> Interval 8: ref (constant) RefPositions {#26@36 #28@37} physReg:NA Preferences=[rax] Interval 9: long RefPositions {#30@44 #31@45} physReg:NA Preferences=[allInt] RelatedInterval <V09/L3> Interval 10: long RefPositions {#36@50 #43@55} physReg:NA Preferences=[rcx] Interval 11: long RefPositions {#37@52 #39@53} physReg:NA Preferences=[rdx] Interval 12: long RefPositions {#41@54 #45@55} physReg:NA Preferences=[rdx] Interval 13: int RefPositions {#54@56 #55@57} physReg:NA Preferences=[rax] RelatedInterval <V08/L2> Interval 14: int RefPositions {#60@62 #71@71} physReg:NA Preferences=[r8] Interval 15: long RefPositions {#64@66 #73@71} physReg:NA Preferences=[rcx] Interval 16: int (constant) RefPositions {#65@68 #67@69} physReg:NA Preferences=[rdx] Interval 17: int RefPositions {#69@70 #75@71} physReg:NA Preferences=[rdx] Interval 18: ref RefPositions {#84@72 #86@73} physReg:NA Preferences=[rax] *************** In LinearScan::allocateRegisters() Linear scan intervals before allocateRegisters: Interval 0: (V00) long RefPositions {#1@0 #4@7} physReg:rcx Preferences=[rcx] Interval 1: (V01) byref RefPositions {#0@0 #18@13 #20@19} physReg:rdx Preferences=[rbx rbp rsi rdi r12-r15] Interval 2: (V08) int RefPositions {#56@58 #58@61} physReg:NA Preferences=[r8] Interval 3: (V09) long RefPositions {#32@46 #62@65} physReg:NA Preferences=[rbx rbp rsi rdi r12-r15] Interval 4: (V10) long RefPositions {#23@22 #24@27 #34@49} physReg:NA Preferences=[rcx] Interval 5: long RefPositions {#6@8 #8@9} physReg:NA Preferences=[rcx] Interval 6: long RefPositions {#17@10 #19@13} physReg:NA Preferences=[rax] Interval 7: long RefPositions {#21@20 #22@21} physReg:NA Preferences=[allInt] RelatedInterval <V10/L4> Interval 8: ref (constant) RefPositions {#26@36 #28@37} physReg:NA Preferences=[rax] Interval 9: long RefPositions {#30@44 #31@45} physReg:NA Preferences=[allInt] RelatedInterval <V09/L3> Interval 10: long RefPositions {#36@50 #43@55} physReg:NA Preferences=[rcx] Interval 11: long RefPositions {#37@52 #39@53} physReg:NA Preferences=[rdx] Interval 12: long RefPositions {#41@54 #45@55} physReg:NA Preferences=[rdx] Interval 13: int RefPositions {#54@56 #55@57} physReg:NA Preferences=[rax] RelatedInterval <V08/L2> Interval 14: int RefPositions {#60@62 #71@71} physReg:NA Preferences=[r8] Interval 15: long RefPositions {#64@66 #73@71} physReg:NA Preferences=[rcx] Interval 16: int (constant) RefPositions {#65@68 #67@69} physReg:NA Preferences=[rdx] Interval 17: int RefPositions {#69@70 #75@71} physReg:NA Preferences=[rdx] Interval 18: ref RefPositions {#84@72 #86@73} physReg:NA Preferences=[rax] ------------ REFPOSITIONS BEFORE ALLOCATION: ------------ <RefPosition #0 @0 RefTypeParamDef <Ivl:1 V01> BB00 regmask=[rdx] minReg=1 fixed regOptional wt=100.00> <RefPosition #1 @0 RefTypeParamDef <Ivl:0 V00> BB00 regmask=[rcx] minReg=1 fixed regOptional wt=100.00> <RefPosition #2 @1 RefTypeBB BB01 regmask=[] minReg=1 wt=100.00> <RefPosition #3 @7 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00> <RefPosition #4 @7 RefTypeUse <Ivl:0 V00> LCL_VAR BB01 regmask=[rcx] minReg=1 last fixed wt=300.00> <RefPosition #5 @8 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00> <RefPosition #6 @8 RefTypeDef <Ivl:5> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00> <RefPosition #7 @9 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00> <RefPosition #8 @9 RefTypeUse <Ivl:5> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00> <RefPosition #9 @10 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 last wt=100.00> <RefPosition #10 @10 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 last wt=100.00> <RefPosition #11 @10 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 last wt=100.00> <RefPosition #12 @10 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 last wt=100.00> <RefPosition #13 @10 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 last wt=100.00> <RefPosition #14 @10 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 last wt=100.00> <RefPosition #15 @10 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 last wt=100.00> <RefPosition #16 @10 RefTypeFixedReg <Reg:rax> BB01 regmask=[rax] minReg=1 wt=100.00> <RefPosition #17 @10 RefTypeDef <Ivl:6> CALL BB01 regmask=[rax] minReg=1 fixed wt=400.00> <RefPosition #18 @13 RefTypeUse <Ivl:1 V01> LCL_VAR BB01 regmask=[allInt] minReg=1 wt=400.00> <RefPosition #19 @13 RefTypeUse <Ivl:6> BB01 regmask=[allInt] minReg=1 last wt=100.00> <RefPosition #20 @19 RefTypeUse <Ivl:1 V01> LCL_VAR BB01 regmask=[allInt] minReg=1 last wt=400.00> <RefPosition #21 @20 RefTypeDef <Ivl:7> IND BB01 regmask=[allInt] minReg=1 wt=400.00> <RefPosition #22 @21 RefTypeUse <Ivl:7> BB01 regmask=[allInt] minReg=1 last wt=100.00> <RefPosition #23 @22 RefTypeDef <Ivl:4 V10> STORE_LCL_VAR BB01 regmask=[allInt] minReg=1 wt=250.00> <RefPosition #24 @27 RefTypeUse <Ivl:4 V10> LCL_VAR BB01 regmask=[allInt] minReg=1 regOptional wt=250.00> <RefPosition #25 @31 RefTypeBB BB02 regmask=[] minReg=1 wt=50.00> <RefPosition #26 @36 RefTypeDef <Ivl:8> CNS_INT BB02 regmask=[rax] minReg=1 wt=200.00> <RefPosition #27 @37 RefTypeFixedReg <Reg:rax> BB02 regmask=[rax] minReg=1 wt=50.00> <RefPosition #28 @37 RefTypeUse <Ivl:8> BB02 regmask=[rax] minReg=1 last fixed wt=50.00> <RefPosition #29 @39 RefTypeBB BB03 regmask=[] minReg=1 wt=50.00> <RefPosition #30 @44 RefTypeDef <Ivl:9> LCL_VAR BB03 regmask=[allInt] minReg=1 wt=200.00> <RefPosition #31 @45 RefTypeUse <Ivl:9> BB03 regmask=[allInt] minReg=1 last wt=50.00> <RefPosition #32 @46 RefTypeDef <Ivl:3 V09> STORE_LCL_VAR BB03 regmask=[allInt] minReg=1 wt=200.00> <RefPosition #33 @49 RefTypeFixedReg <Reg:rcx> BB03 regmask=[rcx] minReg=1 wt=50.00> <RefPosition #34 @49 RefTypeUse <Ivl:4 V10> LCL_VAR BB03 regmask=[rcx] minReg=1 last fixed wt=250.00> <RefPosition #35 @50 RefTypeFixedReg <Reg:rcx> BB03 regmask=[rcx] minReg=1 wt=50.00> <RefPosition #36 @50 RefTypeDef <Ivl:10> PUTARG_REG BB03 regmask=[rcx] minReg=1 fixed wt=200.00> <RefPosition #37 @52 RefTypeDef <Ivl:11> LCL_VAR_ADDR BB03 regmask=[rdx] minReg=1 wt=200.00> <RefPosition #38 @53 RefTypeFixedReg <Reg:rdx> BB03 regmask=[rdx] minReg=1 wt=50.00> <RefPosition #39 @53 RefTypeUse <Ivl:11> BB03 regmask=[rdx] minReg=1 last fixed wt=50.00> <RefPosition #40 @54 RefTypeFixedReg <Reg:rdx> BB03 regmask=[rdx] minReg=1 wt=50.00> <RefPosition #41 @54 RefTypeDef <Ivl:12> PUTARG_REG BB03 regmask=[rdx] minReg=1 fixed wt=200.00> <RefPosition #42 @55 RefTypeFixedReg <Reg:rcx> BB03 regmask=[rcx] minReg=1 wt=50.00> <RefPosition #43 @55 RefTypeUse <Ivl:10> BB03 regmask=[rcx] minReg=1 last fixed wt=50.00> <RefPosition #44 @55 RefTypeFixedReg <Reg:rdx> BB03 regmask=[rdx] minReg=1 wt=50.00> <RefPosition #45 @55 RefTypeUse <Ivl:12> BB03 regmask=[rdx] minReg=1 last fixed wt=50.00> <RefPosition #46 @56 RefTypeKill <Reg:rax> BB03 regmask=[rax] minReg=1 last wt=50.00> <RefPosition #47 @56 RefTypeKill <Reg:rcx> BB03 regmask=[rcx] minReg=1 last wt=50.00> <RefPosition #48 @56 RefTypeKill <Reg:rdx> BB03 regmask=[rdx] minReg=1 last wt=50.00> <RefPosition #49 @56 RefTypeKill <Reg:r8 > BB03 regmask=[r8] minReg=1 last wt=50.00> <RefPosition #50 @56 RefTypeKill <Reg:r9 > BB03 regmask=[r9] minReg=1 last wt=50.00> <RefPosition #51 @56 RefTypeKill <Reg:r10> BB03 regmask=[r10] minReg=1 last wt=50.00> <RefPosition #52 @56 RefTypeKill <Reg:r11> BB03 regmask=[r11] minReg=1 last wt=50.00> <RefPosition #53 @56 RefTypeFixedReg <Reg:rax> BB03 regmask=[rax] minReg=1 wt=50.00> <RefPosition #54 @56 RefTypeDef <Ivl:13> CALL BB03 regmask=[rax] minReg=1 fixed wt=200.00> <RefPosition #55 @57 RefTypeUse <Ivl:13> BB03 regmask=[allInt] minReg=1 last wt=50.00> <RefPosition #56 @58 RefTypeDef <Ivl:2 V08> STORE_LCL_VAR BB03 regmask=[allInt] minReg=1 wt=200.00> <RefPosition #57 @61 RefTypeFixedReg <Reg:r8 > BB03 regmask=[r8] minReg=1 wt=50.00> <RefPosition #58 @61 RefTypeUse <Ivl:2 V08> LCL_VAR BB03 regmask=[r8] minReg=1 last fixed wt=200.00> <RefPosition #59 @62 RefTypeFixedReg <Reg:r8 > BB03 regmask=[r8] minReg=1 wt=50.00> <RefPosition #60 @62 RefTypeDef <Ivl:14> PUTARG_REG BB03 regmask=[r8] minReg=1 fixed wt=200.00> <RefPosition #61 @65 RefTypeFixedReg <Reg:rcx> BB03 regmask=[rcx] minReg=1 wt=50.00> <RefPosition #62 @65 RefTypeUse <Ivl:3 V09> LCL_VAR BB03 regmask=[rcx] minReg=1 last fixed wt=200.00> <RefPosition #63 @66 RefTypeFixedReg <Reg:rcx> BB03 regmask=[rcx] minReg=1 wt=50.00> <RefPosition #64 @66 RefTypeDef <Ivl:15> PUTARG_REG BB03 regmask=[rcx] minReg=1 fixed wt=200.00> <RefPosition #65 @68 RefTypeDef <Ivl:16> CNS_INT BB03 regmask=[rdx] minReg=1 wt=200.00> <RefPosition #66 @69 RefTypeFixedReg <Reg:rdx> BB03 regmask=[rdx] minReg=1 wt=50.00> <RefPosition #67 @69 RefTypeUse <Ivl:16> BB03 regmask=[rdx] minReg=1 last fixed wt=50.00> <RefPosition #68 @70 RefTypeFixedReg <Reg:rdx> BB03 regmask=[rdx] minReg=1 wt=50.00> <RefPosition #69 @70 RefTypeDef <Ivl:17> PUTARG_REG BB03 regmask=[rdx] minReg=1 fixed wt=200.00> <RefPosition #70 @71 RefTypeFixedReg <Reg:r8 > BB03 regmask=[r8] minReg=1 wt=50.00> <RefPosition #71 @71 RefTypeUse <Ivl:14> BB03 regmask=[r8] minReg=1 last fixed wt=50.00> <RefPosition #72 @71 RefTypeFixedReg <Reg:rcx> BB03 regmask=[rcx] minReg=1 wt=50.00> <RefPosition #73 @71 RefTypeUse <Ivl:15> BB03 regmask=[rcx] minReg=1 last fixed wt=50.00> <RefPosition #74 @71 RefTypeFixedReg <Reg:rdx> BB03 regmask=[rdx] minReg=1 wt=50.00> <RefPosition #75 @71 RefTypeUse <Ivl:17> BB03 regmask=[rdx] minReg=1 last fixed wt=50.00> <RefPosition #76 @72 RefTypeKill <Reg:rax> BB03 regmask=[rax] minReg=1 last wt=50.00> <RefPosition #77 @72 RefTypeKill <Reg:rcx> BB03 regmask=[rcx] minReg=1 last wt=50.00> <RefPosition #78 @72 RefTypeKill <Reg:rdx> BB03 regmask=[rdx] minReg=1 last wt=50.00> <RefPosition #79 @72 RefTypeKill <Reg:r8 > BB03 regmask=[r8] minReg=1 last wt=50.00> <RefPosition #80 @72 RefTypeKill <Reg:r9 > BB03 regmask=[r9] minReg=1 last wt=50.00> <RefPosition #81 @72 RefTypeKill <Reg:r10> BB03 regmask=[r10] minReg=1 last wt=50.00> <RefPosition #82 @72 RefTypeKill <Reg:r11> BB03 regmask=[r11] minReg=1 last wt=50.00> <RefPosition #83 @72 RefTypeFixedReg <Reg:rax> BB03 regmask=[rax] minReg=1 wt=50.00> <RefPosition #84 @72 RefTypeDef <Ivl:18> CALL BB03 regmask=[rax] minReg=1 fixed wt=200.00> <RefPosition #85 @73 RefTypeFixedReg <Reg:rax> BB03 regmask=[rax] minReg=1 wt=50.00> <RefPosition #86 @73 RefTypeUse <Ivl:18> BB03 regmask=[rax] minReg=1 last fixed wt=50.00> VAR REFPOSITIONS BEFORE ALLOCATION --- V00 (Interval 0) <RefPosition #1 @0 RefTypeParamDef <Ivl:0 V00> BB00 regmask=[rcx] minReg=1 fixed regOptional wt=100.00> <RefPosition #4 @7 RefTypeUse <Ivl:0 V00> LCL_VAR BB01 regmask=[rcx] minReg=1 last fixed wt=300.00> --- V01 (Interval 1) <RefPosition #0 @0 RefTypeParamDef <Ivl:1 V01> BB00 regmask=[rdx] minReg=1 fixed regOptional wt=100.00> <RefPosition #18 @13 RefTypeUse <Ivl:1 V01> LCL_VAR BB01 regmask=[allInt] minReg=1 wt=400.00> <RefPosition #20 @19 RefTypeUse <Ivl:1 V01> LCL_VAR BB01 regmask=[allInt] minReg=1 last wt=400.00> --- V02 --- V03 --- V04 --- V05 --- V06 --- V07 --- V08 (Interval 2) <RefPosition #56 @58 RefTypeDef <Ivl:2 V08> STORE_LCL_VAR BB03 regmask=[allInt] minReg=1 wt=200.00> <RefPosition #58 @61 RefTypeUse <Ivl:2 V08> LCL_VAR BB03 regmask=[r8] minReg=1 last fixed wt=200.00> --- V09 (Interval 3) <RefPosition #32 @46 RefTypeDef <Ivl:3 V09> STORE_LCL_VAR BB03 regmask=[allInt] minReg=1 wt=200.00> <RefPosition #62 @65 RefTypeUse <Ivl:3 V09> LCL_VAR BB03 regmask=[rcx] minReg=1 last fixed wt=200.00> --- V10 (Interval 4) <RefPosition #23 @22 RefTypeDef <Ivl:4 V10> STORE_LCL_VAR BB01 regmask=[allInt] minReg=1 wt=250.00> <RefPosition #24 @27 RefTypeUse <Ivl:4 V10> LCL_VAR BB01 regmask=[allInt] minReg=1 regOptional wt=250.00> <RefPosition #34 @49 RefTypeUse <Ivl:4 V10> LCL_VAR BB03 regmask=[rcx] minReg=1 last fixed wt=250.00> Allocating Registers -------------------- The following table has one or more rows for each RefPosition that is handled during allocation. The first column provides the basic information about the RefPosition, with its type (e.g. Def, Use, Fixd) followed by a '*' if it is a last use, and a 'D' if it is delayRegFree, and then the action taken during allocation (e.g. Alloc a new register, or Keep an existing one). The subsequent columns show the Interval occupying each register, if any, followed by 'a' if it is active, a '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 modifed register, which may increase during allocation, in which case additional columns will appear. Registers which are not marked modified have ---- in their column. ---------------------------------+----+----+----+----+----+----+----+----+----+ LocRP# Name Type Action Reg |rax |rcx |rdx |rbx |rbp |rsi |rdi |r8 |r9 | ---------------------------------+----+----+----+----+----+----+----+----+----+ | |V0 a|V1 a| | | | | | | 0.#0 V1 Parm ORDER(A) rsi | |V0 a| | | |V1 a| | | | 0.#1 V0 Parm Keep rcx | |V0 a| | | |V1 a| | | | 1.#2 BB1 PredBB0 | |V0 a| | | |V1 a| | | | 7.#3 rcx Fixd Keep rcx | |V0 a| | | |V1 a| | | | 7.#4 V0 Use * Keep rcx | |V0 a| | | |V1 a| | | | 8.#5 rcx Fixd Keep rcx | | | | | |V1 a| | | | 8.#6 I5 Def Alloc rcx | |I5 a| | | |V1 a| | | | 9.#7 rcx Fixd Keep rcx | |I5 a| | | |V1 a| | | | 9.#8 I5 Use * Keep rcx | |I5 a| | | |V1 a| | | | 10.#9 rax Kill Keep rax | | | | | |V1 a| | | | 10.#10 rcx Kill Keep rcx | | | | | |V1 a| | | | 10.#11 rdx Kill Keep rdx | | | | | |V1 a| | | | 10.#12 r8 Kill Keep r8 | | | | | |V1 a| | | | 10.#13 r9 Kill Keep r9 | | | | | |V1 a| | | | 10.#14 r10 Kill Keep r10 | | | | | |V1 a| | | | 10.#15 r11 Kill Keep r11 | | | | | |V1 a| | | | 10.#16 rax Fixd Keep rax | | | | | |V1 a| | | | 10.#17 I6 Def Alloc rax |I6 a| | | | |V1 a| | | | 13.#18 V1 Use Keep rsi |I6 a| | | | |V1 a| | | | 13.#19 I6 Use * Keep rax |I6 a| | | | |V1 a| | | | 19.#20 V1 Use * Keep rsi | | | | | |V1 a| | | | 20.#21 I7 Def RELPR(A) rcx | |I7 a| | | | | | | | 21.#22 I7 Use * Keep rcx | |I7 a| | | | | | | | 22.#23 V10 Def COVRS(A) rcx | |V10a| | | | | | | | 27.#24 V10 Use Keep rcx | |V10a| | | | | | | | ---------------------------------+----+----+----+----+----+----+----+----+----+ LocRP# Name Type Action Reg |rax |rcx |rdx |rbx |rbp |rsi |rdi |r8 |r9 | ---------------------------------+----+----+----+----+----+----+----+----+----+ 31.#25 BB2 PredBB1 | |V10i| | | | | | | | 36.#26 C8 Def Alloc rax |C8 a|V10i| | | | | | | | 37.#27 rax Fixd Keep rax |C8 a|V10i| | | | | | | | 37.#28 C8 Use * Keep rax |C8 a|V10i| | | | | | | | ---------------------------------+----+----+----+----+----+----+----+----+----+ LocRP# Name Type Action Reg |rax |rcx |rdx |rbx |rbp |rsi |rdi |r8 |r9 | ---------------------------------+----+----+----+----+----+----+----+----+----+ 39.#29 BB3 PredBB1 | |V10a| | | | | | | | 44.#30 I9 Def ORDER(A) rsi | |V10a| | | |I9 a| | | | 45.#31 I9 Use * Keep rsi | |V10a| | | |I9 a| | | | 46.#32 V9 Def COVRS(A) rsi | |V10a| | | |V9 a| | | | 49.#33 rcx Fixd Keep rcx | |V10a| | | |V9 a| | | | 49.#34 V10 Use * Keep rcx | |V10a| | | |V9 a| | | | 50.#35 rcx Fixd Keep rcx | | | | | |V9 a| | | | 50.#36 I10 Def Alloc rcx | |I10a| | | |V9 a| | | | 52.#37 I11 Def Alloc rdx | |I10a|I11a| | |V9 a| | | | 53.#38 rdx Fixd Keep rdx | |I10a|I11a| | |V9 a| | | | 53.#39 I11 Use * Keep rdx | |I10a|I11a| | |V9 a| | | | 54.#40 rdx Fixd Keep rdx | |I10a| | | |V9 a| | | | 54.#41 I12 Def Alloc rdx | |I10a|I12a| | |V9 a| | | | 55.#42 rcx Fixd Keep rcx | |I10a|I12a| | |V9 a| | | | 55.#43 I10 Use * Keep rcx | |I10a|I12a| | |V9 a| | | | 55.#44 rdx Fixd Keep rdx | |I10a|I12a| | |V9 a| | | | 55.#45 I12 Use * Keep rdx | |I10a|I12a| | |V9 a| | | | 56.#46 rax Kill Keep rax | | | | | |V9 a| | | | 56.#47 rcx Kill Keep rcx | | | | | |V9 a| | | | 56.#48 rdx Kill Keep rdx | | | | | |V9 a| | | | 56.#49 r8 Kill Keep r8 | | | | | |V9 a| | | | 56.#50 r9 Kill Keep r9 | | | | | |V9 a| | | | 56.#51 r10 Kill Keep r10 | | | | | |V9 a| | | | 56.#52 r11 Kill Keep r11 | | | | | |V9 a| | | | 56.#53 rax Fixd Keep rax | | | | | |V9 a| | | | 56.#54 I13 Def Alloc rax |I13a| | | | |V9 a| | | | 57.#55 I13 Use * Keep rax |I13a| | | | |V9 a| | | | 58.#56 V8 Def BSFIT(A) r8 | | | | | |V9 a| |V8 a| | 61.#57 r8 Fixd Keep r8 | | | | | |V9 a| |V8 a| | 61.#58 V8 Use * Keep r8 | | | | | |V9 a| |V8 a| | 62.#59 r8 Fixd Keep r8 | | | | | |V9 a| | | | 62.#60 I14 Def Alloc r8 | | | | | |V9 a| |I14a| | 65.#61 rcx Fixd Keep rcx | | | | | |V9 a| |I14a| | 65.#62 V9 Use * Copy rcx | |V9 a| | | |V9 a| |I14a| | 66.#63 rcx Fixd Keep rcx | | | | | | | |I14a| | 66.#64 I15 Def Alloc rcx | |I15a| | | | | |I14a| | 68.#65 C16 Def Alloc rdx | |I15a|C16a| | | | |I14a| | 69.#66 rdx Fixd Keep rdx | |I15a|C16a| | | | |I14a| | 69.#67 C16 Use * Keep rdx | |I15a|C16a| | | | |I14a| | 70.#68 rdx Fixd Keep rdx | |I15a| | | | | |I14a| | 70.#69 I17 Def Alloc rdx | |I15a|I17a| | | | |I14a| | 71.#70 r8 Fixd Keep r8 | |I15a|I17a| | | | |I14a| | 71.#71 I14 Use * Keep r8 | |I15a|I17a| | | | |I14a| | 71.#72 rcx Fixd Keep rcx | |I15a|I17a| | | | |I14a| | 71.#73 I15 Use * Keep rcx | |I15a|I17a| | | | |I14a| | 71.#74 rdx Fixd Keep rdx | |I15a|I17a| | | | |I14a| | 71.#75 I17 Use * Keep rdx | |I15a|I17a| | | | |I14a| | 72.#76 rax Kill Keep rax | | | | | | | | | | 72.#77 rcx Kill Keep rcx | | | | | | | | | | 72.#78 rdx Kill Keep rdx | | | | | | | | | | 72.#79 r8 Kill Keep r8 | | | | | | | | | | 72.#80 r9 Kill Keep r9 | | | | | | | | | | 72.#81 r10 Kill Keep r10 | | | | | | | | | | 72.#82 r11 Kill Keep r11 | | | | | | | | | | 72.#83 rax Fixd Keep rax | | | | | | | | | | ---------------------------------+----+----+----+----+----+----+----+----+----+ LocRP# Name Type Action Reg |rax |rcx |rdx |rbx |rbp |rsi |rdi |r8 |r9 | ---------------------------------+----+----+----+----+----+----+----+----+----+ 72.#84 I18 Def Alloc rax |I18a| | | | | | | | | 73.#85 rax Fixd Keep rax |I18a| | | | | | | | | 73.#86 I18 Use * Keep rax | | | | | | | | | | ------------ REFPOSITIONS AFTER ALLOCATION: ------------ <RefPosition #0 @0 RefTypeParamDef <Ivl:1 V01> BB00 regmask=[rsi] minReg=1 regOptional wt=100.00> <RefPosition #1 @0 RefTypeParamDef <Ivl:0 V00> BB00 regmask=[rcx] minReg=1 fixed regOptional wt=100.00> <RefPosition #2 @1 RefTypeBB BB01 regmask=[] minReg=1 wt=100.00> <RefPosition #3 @7 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00> <RefPosition #4 @7 RefTypeUse <Ivl:0 V00> LCL_VAR BB01 regmask=[rcx] minReg=1 last fixed wt=300.00> <RefPosition #5 @8 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00> <RefPosition #6 @8 RefTypeDef <Ivl:5> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00> <RefPosition #7 @9 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00> <RefPosition #8 @9 RefTypeUse <Ivl:5> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00> <RefPosition #9 @10 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 last wt=100.00> <RefPosition #10 @10 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 last wt=100.00> <RefPosition #11 @10 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 last wt=100.00> <RefPosition #12 @10 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 last wt=100.00> <RefPosition #13 @10 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 last wt=100.00> <RefPosition #14 @10 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 last wt=100.00> <RefPosition #15 @10 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 last wt=100.00> <RefPosition #16 @10 RefTypeFixedReg <Reg:rax> BB01 regmask=[rax] minReg=1 wt=100.00> <RefPosition #17 @10 RefTypeDef <Ivl:6> CALL BB01 regmask=[rax] minReg=1 fixed wt=400.00> <RefPosition #18 @13 RefTypeUse <Ivl:1 V01> LCL_VAR BB01 regmask=[rsi] minReg=1 wt=400.00> <RefPosition #19 @13 RefTypeUse <Ivl:6> BB01 regmask=[rax] minReg=1 last wt=100.00> <RefPosition #20 @19 RefTypeUse <Ivl:1 V01> LCL_VAR BB01 regmask=[rsi] minReg=1 last wt=400.00> <RefPosition #21 @20 RefTypeDef <Ivl:7> IND BB01 regmask=[rcx] minReg=1 wt=400.00> <RefPosition #22 @21 RefTypeUse <Ivl:7> BB01 regmask=[rcx] minReg=1 last wt=100.00> <RefPosition #23 @22 RefTypeDef <Ivl:4 V10> STORE_LCL_VAR BB01 regmask=[rcx] minReg=1 wt=250.00> <RefPosition #24 @27 RefTypeUse <Ivl:4 V10> LCL_VAR BB01 regmask=[rcx] minReg=1 regOptional wt=250.00> <RefPosition #25 @31 RefTypeBB BB02 regmask=[] minReg=1 wt=50.00> <RefPosition #26 @36 RefTypeDef <Ivl:8> CNS_INT BB02 regmask=[rax] minReg=1 wt=200.00> <RefPosition #27 @37 RefTypeFixedReg <Reg:rax> BB02 regmask=[rax] minReg=1 wt=50.00> <RefPosition #28 @37 RefTypeUse <Ivl:8> BB02 regmask=[rax] minReg=1 last fixed wt=50.00> <RefPosition #29 @39 RefTypeBB BB03 regmask=[] minReg=1 wt=50.00> <RefPosition #30 @44 RefTypeDef <Ivl:9> LCL_VAR BB03 regmask=[rsi] minReg=1 wt=200.00> <RefPosition #31 @45 RefTypeUse <Ivl:9> BB03 regmask=[rsi] minReg=1 last wt=50.00> <RefPosition #32 @46 RefTypeDef <Ivl:3 V09> STORE_LCL_VAR BB03 regmask=[rsi] minReg=1 wt=200.00> <RefPosition #33 @49 RefTypeFixedReg <Reg:rcx> BB03 regmask=[rcx] minReg=1 wt=50.00> <RefPosition #34 @49 RefTypeUse <Ivl:4 V10> LCL_VAR BB03 regmask=[rcx] minReg=1 last fixed wt=250.00> <RefPosition #35 @50 RefTypeFixedReg <Reg:rcx> BB03 regmask=[rcx] minReg=1 wt=50.00> <RefPosition #36 @50 RefTypeDef <Ivl:10> PUTARG_REG BB03 regmask=[rcx] minReg=1 fixed wt=200.00> <RefPosition #37 @52 RefTypeDef <Ivl:11> LCL_VAR_ADDR BB03 regmask=[rdx] minReg=1 wt=200.00> <RefPosition #38 @53 RefTypeFixedReg <Reg:rdx> BB03 regmask=[rdx] minReg=1 wt=50.00> <RefPosition #39 @53 RefTypeUse <Ivl:11> BB03 regmask=[rdx] minReg=1 last fixed wt=50.00> <RefPosition #40 @54 RefTypeFixedReg <Reg:rdx> BB03 regmask=[rdx] minReg=1 wt=50.00> <RefPosition #41 @54 RefTypeDef <Ivl:12> PUTARG_REG BB03 regmask=[rdx] minReg=1 fixed wt=200.00> <RefPosition #42 @55 RefTypeFixedReg <Reg:rcx> BB03 regmask=[rcx] minReg=1 wt=50.00> <RefPosition #43 @55 RefTypeUse <Ivl:10> BB03 regmask=[rcx] minReg=1 last fixed wt=50.00> <RefPosition #44 @55 RefTypeFixedReg <Reg:rdx> BB03 regmask=[rdx] minReg=1 wt=50.00> <RefPosition #45 @55 RefTypeUse <Ivl:12> BB03 regmask=[rdx] minReg=1 last fixed wt=50.00> <RefPosition #46 @56 RefTypeKill <Reg:rax> BB03 regmask=[rax] minReg=1 last wt=50.00> <RefPosition #47 @56 RefTypeKill <Reg:rcx> BB03 regmask=[rcx] minReg=1 last wt=50.00> <RefPosition #48 @56 RefTypeKill <Reg:rdx> BB03 regmask=[rdx] minReg=1 last wt=50.00> <RefPosition #49 @56 RefTypeKill <Reg:r8 > BB03 regmask=[r8] minReg=1 last wt=50.00> <RefPosition #50 @56 RefTypeKill <Reg:r9 > BB03 regmask=[r9] minReg=1 last wt=50.00> <RefPosition #51 @56 RefTypeKill <Reg:r10> BB03 regmask=[r10] minReg=1 last wt=50.00> <RefPosition #52 @56 RefTypeKill <Reg:r11> BB03 regmask=[r11] minReg=1 last wt=50.00> <RefPosition #53 @56 RefTypeFixedReg <Reg:rax> BB03 regmask=[rax] minReg=1 wt=50.00> <RefPosition #54 @56 RefTypeDef <Ivl:13> CALL BB03 regmask=[rax] minReg=1 fixed wt=200.00> <RefPosition #55 @57 RefTypeUse <Ivl:13> BB03 regmask=[rax] minReg=1 last wt=50.00> <RefPosition #56 @58 RefTypeDef <Ivl:2 V08> STORE_LCL_VAR BB03 regmask=[r8] minReg=1 wt=200.00> <RefPosition #57 @61 RefTypeFixedReg <Reg:r8 > BB03 regmask=[r8] minReg=1 wt=50.00> <RefPosition #58 @61 RefTypeUse <Ivl:2 V08> LCL_VAR BB03 regmask=[r8] minReg=1 last fixed wt=200.00> <RefPosition #59 @62 RefTypeFixedReg <Reg:r8 > BB03 regmask=[r8] minReg=1 wt=50.00> <RefPosition #60 @62 RefTypeDef <Ivl:14> PUTARG_REG BB03 regmask=[r8] minReg=1 fixed wt=200.00> <RefPosition #61 @65 RefTypeFixedReg <Reg:rcx> BB03 regmask=[rcx] minReg=1 wt=50.00> <RefPosition #62 @65 RefTypeUse <Ivl:3 V09> LCL_VAR BB03 regmask=[rcx] minReg=1 last copy fixed wt=200.00> <RefPosition #63 @66 RefTypeFixedReg <Reg:rcx> BB03 regmask=[rcx] minReg=1 wt=50.00> <RefPosition #64 @66 RefTypeDef <Ivl:15> PUTARG_REG BB03 regmask=[rcx] minReg=1 fixed wt=200.00> <RefPosition #65 @68 RefTypeDef <Ivl:16> CNS_INT BB03 regmask=[rdx] minReg=1 wt=200.00> <RefPosition #66 @69 RefTypeFixedReg <Reg:rdx> BB03 regmask=[rdx] minReg=1 wt=50.00> <RefPosition #67 @69 RefTypeUse <Ivl:16> BB03 regmask=[rdx] minReg=1 last fixed wt=50.00> <RefPosition #68 @70 RefTypeFixedReg <Reg:rdx> BB03 regmask=[rdx] minReg=1 wt=50.00> <RefPosition #69 @70 RefTypeDef <Ivl:17> PUTARG_REG BB03 regmask=[rdx] minReg=1 fixed wt=200.00> <RefPosition #70 @71 RefTypeFixedReg <Reg:r8 > BB03 regmask=[r8] minReg=1 wt=50.00> <RefPosition #71 @71 RefTypeUse <Ivl:14> BB03 regmask=[r8] minReg=1 last fixed wt=50.00> <RefPosition #72 @71 RefTypeFixedReg <Reg:rcx> BB03 regmask=[rcx] minReg=1 wt=50.00> <RefPosition #73 @71 RefTypeUse <Ivl:15> BB03 regmask=[rcx] minReg=1 last fixed wt=50.00> <RefPosition #74 @71 RefTypeFixedReg <Reg:rdx> BB03 regmask=[rdx] minReg=1 wt=50.00> <RefPosition #75 @71 RefTypeUse <Ivl:17> BB03 regmask=[rdx] minReg=1 last fixed wt=50.00> <RefPosition #76 @72 RefTypeKill <Reg:rax> BB03 regmask=[rax] minReg=1 last wt=50.00> <RefPosition #77 @72 RefTypeKill <Reg:rcx> BB03 regmask=[rcx] minReg=1 last wt=50.00> <RefPosition #78 @72 RefTypeKill <Reg:rdx> BB03 regmask=[rdx] minReg=1 last wt=50.00> <RefPosition #79 @72 RefTypeKill <Reg:r8 > BB03 regmask=[r8] minReg=1 last wt=50.00> <RefPosition #80 @72 RefTypeKill <Reg:r9 > BB03 regmask=[r9] minReg=1 last wt=50.00> <RefPosition #81 @72 RefTypeKill <Reg:r10> BB03 regmask=[r10] minReg=1 last wt=50.00> <RefPosition #82 @72 RefTypeKill <Reg:r11> BB03 regmask=[r11] minReg=1 last wt=50.00> <RefPosition #83 @72 RefTypeFixedReg <Reg:rax> BB03 regmask=[rax] minReg=1 wt=50.00> <RefPosition #84 @72 RefTypeDef <Ivl:18> CALL BB03 regmask=[rax] minReg=1 fixed wt=200.00> <RefPosition #85 @73 RefTypeFixedReg <Reg:rax> BB03 regmask=[rax] minReg=1 wt=50.00> <RefPosition #86 @73 RefTypeUse <Ivl:18> BB03 regmask=[rax] minReg=1 last fixed wt=50.00> VAR REFPOSITIONS AFTER ALLOCATION --- V00 (Interval 0) <RefPosition #1 @0 RefTypeParamDef <Ivl:0 V00> BB00 regmask=[rcx] minReg=1 fixed regOptional wt=100.00> <RefPosition #4 @7 RefTypeUse <Ivl:0 V00> LCL_VAR BB01 regmask=[rcx] minReg=1 last fixed wt=300.00> --- V01 (Interval 1) <RefPosition #0 @0 RefTypeParamDef <Ivl:1 V01> BB00 regmask=[rsi] minReg=1 regOptional wt=100.00> <RefPosition #18 @13 RefTypeUse <Ivl:1 V01> LCL_VAR BB01 regmask=[rsi] minReg=1 wt=400.00> <RefPosition #20 @19 RefTypeUse <Ivl:1 V01> LCL_VAR BB01 regmask=[rsi] minReg=1 last wt=400.00> --- V02 --- V03 --- V04 --- V05 --- V06 --- V07 --- V08 (Interval 2) <RefPosition #56 @58 RefTypeDef <Ivl:2 V08> STORE_LCL_VAR BB03 regmask=[r8] minReg=1 wt=200.00> <RefPosition #58 @61 RefTypeUse <Ivl:2 V08> LCL_VAR BB03 regmask=[r8] minReg=1 last fixed wt=200.00> --- V09 (Interval 3) <RefPosition #32 @46 RefTypeDef <Ivl:3 V09> STORE_LCL_VAR BB03 regmask=[rsi] minReg=1 wt=200.00> <RefPosition #62 @65 RefTypeUse <Ivl:3 V09> LCL_VAR BB03 regmask=[rcx] minReg=1 last copy fixed wt=200.00> --- V10 (Interval 4) <RefPosition #23 @22 RefTypeDef <Ivl:4 V10> STORE_LCL_VAR BB01 regmask=[rcx] minReg=1 wt=250.00> <RefPosition #24 @27 RefTypeUse <Ivl:4 V10> LCL_VAR BB01 regmask=[rcx] minReg=1 regOptional wt=250.00> <RefPosition #34 @49 RefTypeUse <Ivl:4 V10> LCL_VAR BB03 regmask=[rcx] minReg=1 last fixed wt=250.00> Active intervals at end of allocation: ----------------------- RESOLVING BB BOUNDARIES ----------------------- Resolution Candidates: {V00 V01 V10} Has No Critical Edges Prior to Resolution BB01 use def in out {V00 V01} {V10} {V00 V01} {V10} Var=Reg beg of BB01: V01=rsi V00=rcx Var=Reg end of BB01: V10=rcx BB02 use def in out {} {} {} {} Var=Reg beg of BB02: none Var=Reg end of BB02: none BB03 use def in out {V10} {V08 V09} {V10} {} Var=Reg beg of BB03: V10=rcx Var=Reg end of BB03: none RESOLVING EDGES Set V00 argument initial register to rcx Set V01 argument initial register to rsi Trees after linear scan register allocator (LSRA) ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..016)-> BB03 ( cond ) i hascall gcsafe LIR BB02 [0001] 1 BB01 0.50 [016..018) (return) i gcsafe LIR BB03 [0002] 1 BB01 0.50 [018..02D) (return) i hascall gcsafe newobj LIR ----------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [000..016) -> BB03 (cond), preds={} succs={BB02,BB03} N003 (???,???) [000058] ------------ IL_OFFSET void INLRT @ 0x000[E-] REG NA N005 ( 1, 1) [000001] ------------ t1 = LCL_VAR long V00 arg0 u:1 rcx (last use) REG rcx $80 /--* t1 long N007 (???,???) [000063] ------------ t63 = * PUTARG_REG long REG rcx /--* t63 long arg0 in rcx N009 ( 15, 7) [000002] --CXG------- t2 = * CALL long System.Runtime.RuntimeImports.RhGetOSModuleFromPointer REG rax $82 N011 ( 1, 1) [000000] ------------ t0 = LCL_VAR byref V01 arg1 u:1 rsi REG rsi $c0 /--* t0 byref +--* t2 long N013 (???,???) [000059] -ACXG------- * STOREIND long REG NA N015 (???,???) [000060] ------------ IL_OFFSET void INLRT @ 0x008[E-] REG NA N017 ( 1, 1) [000005] ------------ t5 = LCL_VAR byref V01 arg1 u:1 rsi (last use) REG rsi $c0 /--* t5 byref N019 ( 3, 2) [000006] *---GO------ t6 = * IND long REG rcx <l:$201, c:$200> /--* t6 long N021 ( 7, 5) [000054] DA--GO------ * STORE_LCL_VAR long V10 cse0 d:1 rcx REG rcx N023 ( 3, 2) [000055] ------------ t55 = LCL_VAR long V10 cse0 u:1 rcx REG rcx <l:$201, c:$200> N025 ( 1, 1) [000007] -c---------- t7 = CNS_INT long 0 REG NA $240 /--* t55 long +--* t7 long N027 ( 12, 9) [000037] J---GO-N---- * NE void REG NA <l:$283, c:$282> N029 ( 14, 11) [000013] ----GO------ * JTRUE void REG NA ------------ BB02 [016..018) (return), preds={BB01} succs={} N033 (???,???) [000061] ------------ IL_OFFSET void INLRT @ 0x016[E-] REG NA N035 ( 1, 1) [000029] ------------ t29 = CNS_INT ref null REG rax $VN.Null /--* t29 ref N037 ( 2, 2) [000030] ------------ * RETURN ref REG NA $183 ------------ BB03 [018..02D) (return), preds={BB01} succs={} N041 (???,???) [000062] ------------ IL_OFFSET void INLRT @ 0x02B[E-] REG NA N043 ( 3, 2) [000021] ------------ t21 = LCL_VAR long (AX) V02 loc0 rsi REG rsi $141 /--* t21 long N045 ( 7, 5) [000050] DA--G-----L- * STORE_LCL_VAR long V09 tmp4 d:1 rsi REG rsi N047 ( 3, 2) [000057] ------------ t57 = LCL_VAR long V10 cse0 u:1 rcx (last use) REG rcx <l:$140, c:$83> /--* t57 long N049 (???,???) [000064] ------------ t64 = * PUTARG_REG long REG rcx N051 ( 3, 3) [000017] ------------ t17 = LCL_VAR_ADDR long V02 loc0 rdx REG rdx $88 /--* t17 long N053 (???,???) [000065] ------------ t65 = * PUTARG_REG long REG rdx /--* t64 long arg0 in rcx +--* t65 long arg1 in rdx N055 ( 20, 12) [000018] --CXG------- t18 = * CALL int System.Runtime.RuntimeImports.RhGetModuleFileName REG rax $301 /--* t18 int N057 ( 24, 15) [000047] DA-XG-----L- * STORE_LCL_VAR int V08 tmp3 d:1 r8 REG r8 N059 ( 3, 2) [000048] ------------ t48 = LCL_VAR int V08 tmp3 u:1 r8 (last use) REG r8 $301 /--* t48 int N061 (???,???) [000066] ------------ t66 = * PUTARG_REG int REG r8 N063 ( 3, 2) [000051] ------------ t51 = LCL_VAR long V09 tmp4 u:1 rsi (last use) REG rsi $141 /--* t51 long N065 (???,???) [000067] ------------ t67 = * PUTARG_REG long REG rcx N067 ( 1, 1) [000022] ------------ t22 = CNS_INT int 0 REG rdx $40 /--* t22 int N069 (???,???) [000068] ------------ t68 = * PUTARG_REG int REG rdx /--* t66 int arg2 in r8 +--* t67 long arg0 in rcx +--* t68 int arg1 in rdx N071 ( 58, 33) [000024] --CXG------- t24 = * CALL ref System.String..ctor REG rax $181 /--* t24 ref N073 ( 59, 34) [000028] ---XG------- * RETURN ref REG NA $182 ------------------------------------------------------------------------------------------------------------------- Final allocation ---------------------------------+----+----+----+----+----+----+----+----+----+ LocRP# Name Type Action Reg |rax |rcx |rdx |rbx |rbp |rsi |rdi |r8 |r9 | ---------------------------------+----+----+----+----+----+----+----+----+----+ 0.#0 V1 Parm Alloc rsi | | | | | |V1 a| | | | 0.#1 V0 Parm Alloc rcx | |V0 a| | | |V1 a| | | | 1.#2 BB1 PredBB0 | |V0 a| | | |V1 a| | | | 7.#3 rcx Fixd Keep rcx | |V0 a| | | |V1 a| | | | 7.#4 V0 Use * Keep rcx | |V0 i| | | |V1 a| | | | 8.#5 rcx Fixd Keep rcx | | | | | |V1 a| | | | 8.#6 I5 Def Alloc rcx | |I5 a| | | |V1 a| | | | 9.#7 rcx Fixd Keep rcx | |I5 a| | | |V1 a| | | | 9.#8 I5 Use * Keep rcx | |I5 i| | | |V1 a| | | | 10.#9 rax Kill Keep rax | | | | | |V1 a| | | | 10.#10 rcx Kill Keep rcx | | | | | |V1 a| | | | 10.#11 rdx Kill Keep rdx | | | | | |V1 a| | | | 10.#12 r8 Kill Keep r8 | | | | | |V1 a| | | | 10.#13 r9 Kill Keep r9 | | | | | |V1 a| | | | 10.#14 r10 Kill Keep r10 | | | | | |V1 a| | | | 10.#15 r11 Kill Keep r11 | | | | | |V1 a| | | | 10.#16 rax Fixd Keep rax | | | | | |V1 a| | | | 10.#17 I6 Def Alloc rax |I6 a| | | | |V1 a| | | | 13.#18 V1 Use Keep rsi |I6 a| | | | |V1 a| | | | 13.#19 I6 Use * Keep rax |I6 i| | | | |V1 a| | | | 19.#20 V1 Use * Keep rsi | | | | | |V1 i| | | | 20.#21 I7 Def Alloc rcx | |I7 a| | | | | | | | 21.#22 I7 Use * Keep rcx | |I7 i| | | | | | | | 22.#23 V10 Def Alloc rcx | |V10a| | | | | | | | 27.#24 V10 Use Keep rcx | |V10a| | | | | | | | ---------------------------------+----+----+----+----+----+----+----+----+----+ LocRP# Name Type Action Reg |rax |rcx |rdx |rbx |rbp |rsi |rdi |r8 |r9 | ---------------------------------+----+----+----+----+----+----+----+----+----+ 31.#25 BB2 PredBB1 | | | | | | | | | | 36.#26 C8 Def Alloc rax |C8 a| | | | | | | | | 37.#27 rax Fixd Keep rax |C8 a| | | | | | | | | 37.#28 C8 Use * Keep rax |C8 i| | | | | | | | | ---------------------------------+----+----+----+----+----+----+----+----+----+ LocRP# Name Type Action Reg |rax |rcx |rdx |rbx |rbp |rsi |rdi |r8 |r9 | ---------------------------------+----+----+----+----+----+----+----+----+----+ 39.#29 BB3 PredBB1 | |V10a| | | | | | | | 44.#30 I9 Def Alloc rsi | |V10a| | | |I9 a| | | | 45.#31 I9 Use * Keep rsi | |V10a| | | |I9 i| | | | 46.#32 V9 Def Alloc rsi | |V10a| | | |V9 a| | | | 49.#33 rcx Fixd Keep rcx | |V10a| | | |V9 a| | | | 49.#34 V10 Use * Keep rcx | |V10i| | | |V9 a| | | | 50.#35 rcx Fixd Keep rcx | | | | | |V9 a| | | | 50.#36 I10 Def Alloc rcx | |I10a| | | |V9 a| | | | 52.#37 I11 Def Alloc rdx | |I10a|I11a| | |V9 a| | | | 53.#38 rdx Fixd Keep rdx | |I10a|I11a| | |V9 a| | | | 53.#39 I11 Use * Keep rdx | |I10a|I11i| | |V9 a| | | | 54.#40 rdx Fixd Keep rdx | |I10a| | | |V9 a| | | | 54.#41 I12 Def Alloc rdx | |I10a|I12a| | |V9 a| | | | 55.#42 rcx Fixd Keep rcx | |I10a|I12a| | |V9 a| | | | 55.#43 I10 Use * Keep rcx | |I10i|I12a| | |V9 a| | | | 55.#44 rdx Fixd Keep rdx | | |I12a| | |V9 a| | | | 55.#45 I12 Use * Keep rdx | | |I12i| | |V9 a| | | | 56.#46 rax Kill Keep rax | | | | | |V9 a| | | | 56.#47 rcx Kill Keep rcx | | | | | |V9 a| | | | 56.#48 rdx Kill Keep rdx | | | | | |V9 a| | | | 56.#49 r8 Kill Keep r8 | | | | | |V9 a| | | | 56.#50 r9 Kill Keep r9 | | | | | |V9 a| | | | 56.#51 r10 Kill Keep r10 | | | | | |V9 a| | | | 56.#52 r11 Kill Keep r11 | | | | | |V9 a| | | | 56.#53 rax Fixd Keep rax | | | | | |V9 a| | | | 56.#54 I13 Def Alloc rax |I13a| | | | |V9 a| | | | 57.#55 I13 Use * Keep rax |I13i| | | | |V9 a| | | | 58.#56 V8 Def Alloc r8 | | | | | |V9 a| |V8 a| | 61.#57 r8 Fixd Keep r8 | | | | | |V9 a| |V8 a| | 61.#58 V8 Use * Keep r8 | | | | | |V9 a| |V8 i| | 62.#59 r8 Fixd Keep r8 | | | | | |V9 a| | | | 62.#60 I14 Def Alloc r8 | | | | | |V9 a| |I14a| | 65.#61 rcx Fixd Keep rcx | | | | | |V9 a| |I14a| | 65.#62 V9 Use * Copy rcx | |V9 i| | | |V9 i| |I14a| | 66.#63 rcx Fixd Keep rcx | | | | | | | |I14a| | 66.#64 I15 Def Alloc rcx | |I15a| | | | | |I14a| | 68.#65 C16 Def Alloc rdx | |I15a|C16a| | | | |I14a| | 69.#66 rdx Fixd Keep rdx | |I15a|C16a| | | | |I14a| | 69.#67 C16 Use * Keep rdx | |I15a|C16i| | | | |I14a| | 70.#68 rdx Fixd Keep rdx | |I15a| | | | | |I14a| | 70.#69 I17 Def Alloc rdx | |I15a|I17a| | | | |I14a| | 71.#70 r8 Fixd Keep r8 | |I15a|I17a| | | | |I14a| | 71.#71 I14 Use * Keep r8 | |I15a|I17a| | | | |I14i| | 71.#72 rcx Fixd Keep rcx | |I15a|I17a| | | | | | | 71.#73 I15 Use * Keep rcx | |I15i|I17a| | | | | | | 71.#74 rdx Fixd Keep rdx | | |I17a| | | | | | | 71.#75 I17 Use * Keep rdx | | |I17i| | | | | | | 72.#76 rax Kill Keep rax | | | | | | | | | | 72.#77 rcx Kill Keep rcx | | | | | | | | | | 72.#78 rdx Kill Keep rdx | | | | | | | | | | 72.#79 r8 Kill Keep r8 | | | | | | | | | | 72.#80 r9 Kill Keep r9 | | | | | | | | | | 72.#81 r10 Kill Keep r10 | | | | | | | | | | 72.#82 r11 Kill Keep r11 | | | | | | | | | | 72.#83 rax Fixd Keep rax | | | | | | | | | | 72.#84 I18 Def Alloc rax |I18a| | | | | | | | | 73.#85 rax Fixd Keep rax |I18a| | | | | | | | | 73.#86 I18 Use * Keep rax |I18i| | | | | | | | | Recording the maximum number of concurrent spills: ---------- LSRA Stats ---------- Register selection order: ABCDEFGHIJKLMNOPQ Total Tracked Vars: 5 Total Reg Cand Vars: 5 Total number of Intervals: 18 Total number of RefPositions: 86 Total Number of spill temps created: 0 .......... BB00 [ 100.00]: REG_ORDER = 1 BB01 [ 100.00]: COVERS = 1, RELATED_PREFERENCE = 1 BB03 [ 50.00]: COVERS = 1, BEST_FIT = 1, REG_ORDER = 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] : 2 Weighted: 150.000000 Total RELATED_PREFERENCE [# 7] : 1 Weighted: 100.000000 Total BEST_FIT [#11] : 1 Weighted: 50.000000 Total REG_ORDER [#13] : 2 Weighted: 150.000000 TUPLE STYLE DUMP WITH REGISTER ASSIGNMENTS Incoming Parameters: V01(rdx=>rsi) V00(rcx) BB01 [000..016) -> BB03 (cond), preds={} succs={BB02,BB03} ===== N003. IL_OFFSET INLRT @ 0x000[E-] N005. V00(rcx*) N007. rcx = PUTARG_REG; rcx* N009. rax = CALL ; rcx N011. V01(rsi) N013. STOREIND ; rsi,rax N015. IL_OFFSET INLRT @ 0x008[E-] N017. V01(rsi*) N019. rcx = IND ; rsi* * N021. V10(rcx); rcx N023. V10(rcx) N025. CNS_INT 0 N027. NE ; rcx N029. JTRUE Var=Reg end of BB01: V10=rcx BB02 [016..018) (return), preds={BB01} succs={} ===== Predecessor for variable locations: BB01 Var=Reg beg of BB02: none N033. IL_OFFSET INLRT @ 0x016[E-] N035. rax = CNS_INT null N037. RETURN ; rax Var=Reg end of BB02: none BB03 [018..02D) (return), preds={BB01} succs={} ===== Predecessor for variable locations: BB01 Var=Reg beg of BB03: V10=rcx N041. IL_OFFSET INLRT @ 0x02B[E-] N043. rsi = V02 MEM * N045. V09(rsi); rsi N047. V10(rcx*) N049. rcx = PUTARG_REG; rcx* N051. rdx = LCL_VAR_ADDR V02 loc0 rdx N053. rdx = PUTARG_REG; rdx N055. rax = CALL ; rcx,rdx * N057. V08(r8); rax N059. V08(r8*) N061. r8 = PUTARG_REG; r8* N063. V09(rsi*) N065. rcx = PUTARG_REG; rsi* N067. rdx = CNS_INT 0 N069. rdx = PUTARG_REG; rdx N071. rax = CALL ; r8,rcx,rdx N073. RETURN ; rax Var=Reg end of BB03: none *************** Finishing PHASE Linear scan register alloc *************** Starting PHASE Place 'align' instructions *************** Finishing PHASE Place 'align' instructions *************** In genGenerateCode() ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..016)-> BB03 ( cond ) i hascall gcsafe LIR BB02 [0001] 1 BB01 0.50 [016..018) (return) i gcsafe LIR BB03 [0002] 1 BB01 0.50 [018..02D) (return) i hascall gcsafe newobj LIR ----------------------------------------------------------------------------------------------------------------------------------------- *************** Starting PHASE Generate code *************** In fgDebugCheckBBlist Finalizing stack frame Recording Var Locations at start of BB01 V01(rsi) V00(rcx) Modified regs: [rax rcx rdx rsi r8-r11] Callee-saved registers pushed: 1 [rsi] *************** In lvaAssignFrameOffsets(FINAL_FRAME_LAYOUT) Assign V02 loc0, size=8, stkOffs=-0x18 Assign V05 OutArgs, size=32, stkOffs=-0x38 --- delta bump 8 for RA --- delta bump 56 for RSP frame --- virtual stack offset to actual stack offset delta is 64 -- V00 was 0, now 64 -- V01 was 8, now 72 -- V02 was -24, now 40 -- V05 was -56, now 8 ; Final local variable assignments ; ; V00 arg0 [V00,T01] ( 3, 3 ) long -> rcx single-def ; V01 arg1 [V01,T00] ( 4, 4 ) byref -> rsi single-def ; V02 loc0 [V02 ] ( 2, 1 ) long -> [rsp+28H] do-not-enreg[X] addr-exposed ld-addr-op ;* V03 loc1 [V03 ] ( 0, 0 ) int -> zero-ref ;* V04 loc2 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact ; V05 OutArgs [V05 ] ( 1, 1 ) lclBlk (32) [rsp+00H] "OutgoingArgSpace" ;* V06 tmp1 [V06 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inlining Arg" ;* V07 tmp2 [V07 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inlining Arg" ; V08 tmp3 [V08,T03] ( 2, 2 ) int -> r8 "argument with side effect" ; V09 tmp4 [V09,T04] ( 2, 2 ) long -> rsi "argument with side effect" ; V10 cse0 [V10,T02] ( 3, 2.50) long -> rcx "CSE - aggressive" ; ; Lcl frame size = 48 Mark labels for codegen BB01 : first block BB03 : branch target *************** After genMarkLabelsForCodegen() ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..016)-> BB03 ( cond ) i label hascall gcsafe LIR BB02 [0001] 1 BB01 0.50 [016..018) (return) i gcsafe LIR BB03 [0002] 1 BB01 0.50 [018..02D) (return) i label hascall gcsafe newobj LIR ----------------------------------------------------------------------------------------------------------------------------------------- Setting stack level from -572662307 to 0 =============== Generating BB01 [000..016) -> BB03 (cond), preds={} succs={BB02,BB03} flags=0x00000002.20090020: i label hascall gcsafe LIR BB01 IN (2)={V01 V00 } + ByrefExposed + GcHeap OUT(1)={ V10} + ByrefExposed + GcHeap Recording Var Locations at start of BB01 V01(rsi) V00(rcx) Change life 0000000000000000 {} -> 0000000000000003 {V00 V01} V01 in reg rsi is becoming live [------] Live regs: 00000000 {} => 00000040 {rsi} New debug range: first V00 in reg rcx is becoming live [------] Live regs: 00000040 {rsi} => 00000042 {rcx rsi} New debug range: first Live regs: (unchanged) 00000042 {rcx rsi} GC regs: (unchanged) 00000000 {} Byref regs: (unchanged) 00000040 {rsi} L_M61772_BB01: Mapped BB01 to G_M61772_IG02 Label: IG02, GCvars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000040 {rsi} Scope info: begin block BB01, IL range [000..016) Added IP mapping: 0x0000 STACK_EMPTY (G_M61772_IG02,ins#0,ofs#0) label Generating: N003 (???,???) [000058] ------------ IL_OFFSET void INLRT @ 0x000[E-] REG NA Generating: N005 ( 1, 1) [000001] ------------ t1 = LCL_VAR long V00 arg0 u:1 rcx (last use) REG rcx $80 /--* t1 long Generating: N007 (???,???) [000063] ------------ t63 = * PUTARG_REG long REG rcx V00 in reg rcx is becoming dead [000001] Live regs: 00000042 {rcx rsi} => 00000040 {rsi} Live vars: {V00 V01} => {V01} /--* t63 long arg0 in rcx Generating: N009 ( 15, 7) [000002] --CXG------- t2 = * CALL long System.Runtime.RuntimeImports.RhGetOSModuleFromPointer REG rax $82 Call: GCvars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000040 {rsi} IN0001: call System.Runtime.RuntimeImports:RhGetOSModuleFromPointer(long):long Generating: N011 ( 1, 1) [000000] ------------ t0 = LCL_VAR byref V01 arg1 u:1 rsi REG rsi $c0 /--* t0 byref +--* t2 long Generating: N013 (???,???) [000059] -ACXG------- * STOREIND long REG NA IN0002: mov qword ptr [rsi], rax Added IP mapping: 0x0008 STACK_EMPTY (G_M61772_IG02,ins#2,ofs#8) Generating: N015 (???,???) [000060] ------------ IL_OFFSET void INLRT @ 0x008[E-] REG NA Generating: N017 ( 1, 1) [000005] ------------ t5 = LCL_VAR byref V01 arg1 u:1 rsi (last use) REG rsi $c0 /--* t5 byref Generating: N019 ( 3, 2) [000006] *---GO------ t6 = * IND long REG rcx <l:$201, c:$200> V01 in reg rsi is becoming dead [000005] Live regs: 00000040 {rsi} => 00000000 {} Live vars: {V01} => {} Byref regs: 00000040 {rsi} => 00000000 {} IN0003: mov rcx, qword ptr [rsi] /--* t6 long Generating: N021 ( 7, 5) [000054] DA--GO------ * STORE_LCL_VAR long V10 cse0 d:1 rcx REG rcx V10 in reg rcx is becoming live [000054] Live regs: 00000000 {} => 00000002 {rcx} Live vars: {} => {V10} Generating: N023 ( 3, 2) [000055] ------------ t55 = LCL_VAR long V10 cse0 u:1 rcx REG rcx <l:$201, c:$200> Generating: N025 ( 1, 1) [000007] -c---------- t7 = CNS_INT long 0 REG NA $240 /--* t55 long +--* t7 long Generating: N027 ( 12, 9) [000037] J---GO-N---- * NE void REG NA <l:$283, c:$282> IN0004: test rcx, rcx Generating: N029 ( 14, 11) [000013] ----GO------ * JTRUE void REG NA IN0005: jne L_M61772_BB03 Variable Live Range History Dump for BB01 V00 arg0: rcx [(G_M61772_IG02,ins#0,ofs#0), (G_M61772_IG02,ins#0,ofs#0)] V01 arg1: rsi [(G_M61772_IG02,ins#0,ofs#0), (G_M61772_IG02,ins#2,ofs#8)] =============== Generating BB02 [016..018) (return), preds={BB01} succs={} flags=0x00000000.20080020: i gcsafe LIR BB02 IN (0)={} OUT(0)={} Recording Var Locations at start of BB02 <none> Change life 0000000000000004 {V10} -> 0000000000000000 {} V10 in reg rcx is becoming dead [------] Live regs: (unchanged) 00000000 {} Live regs: (unchanged) 00000000 {} GC regs: (unchanged) 00000000 {} Byref regs: (unchanged) 00000000 {} L_M61772_BB02: Adding label due to BB weight difference: BBJ_COND BB01 with weight 100 different from BB02 with weight 50 G_M61772_IG02: ; offs=000000H, funclet=00, bbWeight=1 Mapped BB02 to G_M61772_IG03 Label: IG03, GCvars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {} Scope info: begin block BB02, IL range [016..018) Added IP mapping: 0x0016 STACK_EMPTY (G_M61772_IG03,ins#0,ofs#0) label Generating: N033 (???,???) [000061] ------------ IL_OFFSET void INLRT @ 0x016[E-] REG NA Generating: N035 ( 1, 1) [000029] ------------ t29 = CNS_INT ref null REG rax $VN.Null IN0006: xor rax, rax GC regs: 00000000 {} => 00000001 {rax} /--* t29 ref Generating: N037 ( 2, 2) [000030] ------------ * RETURN ref REG NA $183 GC regs: 00000001 {rax} => 00000000 {} Added IP mapping: EPILOG (G_M61772_IG03,ins#1,ofs#2) label GC regs: 00000000 {} => 00000001 {rax} Extending return value GC liveness to epilog Reserving epilog IG for block BB02 G_M61772_IG03: ; offs=000014H, funclet=00, bbWeight=0.50 *************** After placeholder IG creation G_M61772_IG01: ; func=00, offs=000000H, size=0000H, gcrefRegs=00000000 {} <-- Prolog IG G_M61772_IG02: ; offs=000000H, size=0014H, gcrefRegs=00000000 {}, byrefRegs=00000040 {rsi}, BB01 [0000], byref G_M61772_IG03: ; offs=000014H, size=0002H, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB02 [0001], byref G_M61772_IG04: ; epilog placeholder, next placeholder=<END>, BB02 [0001], epilog, extend <-- First placeholder <-- Last placeholder ; PrevGCVars=0000000000000000 {}, PrevGCrefRegs=00000000 {}, PrevByrefRegs=00000040 {rsi} ; InitGCVars=0000000000000000 {}, InitGCrefRegs=00000000 {}, InitByrefRegs=00000000 {} G_M61772_IG05: ; offs=000116H, size=0000H, gcrefRegs=00000000 {} <-- Current IG Variable Live Range History Dump for BB02 ..None.. =============== Generating BB03 [018..02D) (return), preds={BB01} succs={} flags=0x00000002.20490020: i label hascall gcsafe newobj LIR BB03 IN (1)={V10} + ByrefExposed + GcHeap OUT(0)={ } Recording Var Locations at start of BB03 V10(rcx) Change life 0000000000000000 {} -> 0000000000000004 {V10} V10 in reg rcx is becoming live [------] Live regs: 00000000 {} => 00000002 {rcx} Live regs: (unchanged) 00000002 {rcx} GC regs: (unchanged) 00000000 {} Byref regs: (unchanged) 00000000 {} L_M61772_BB03: Mapped BB03 to G_M61772_IG05 Label: IG05, GCvars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {} Scope info: begin block BB03, IL range [018..02D) Added IP mapping: 0x002B STACK_EMPTY (G_M61772_IG05,ins#0,ofs#0) label Generating: N041 (???,???) [000062] ------------ IL_OFFSET void INLRT @ 0x02B[E-] REG NA Generating: N043 ( 3, 2) [000021] ------------ t21 = LCL_VAR long (AX) V02 loc0 rsi REG rsi $141 IN0007: mov rsi, qword ptr [V02 rsp+28H] /--* t21 long Generating: N045 ( 7, 5) [000050] DA--G-----L- * STORE_LCL_VAR long V09 tmp4 d:1 rsi REG rsi V09 in reg rsi is becoming live [000050] Live regs: 00000002 {rcx} => 00000042 {rcx rsi} Live vars: {V10} => {V09 V10} Generating: N047 ( 3, 2) [000057] ------------ t57 = LCL_VAR long V10 cse0 u:1 rcx (last use) REG rcx <l:$140, c:$83> /--* t57 long Generating: N049 (???,???) [000064] ------------ t64 = * PUTARG_REG long REG rcx V10 in reg rcx is becoming dead [000057] Live regs: 00000042 {rcx rsi} => 00000040 {rsi} Live vars: {V09 V10} => {V09} Generating: N051 ( 3, 3) [000017] ------------ t17 = LCL_VAR_ADDR long V02 loc0 rdx REG rdx $88 IN0008: lea rdx, [V02 rsp+28H] /--* t17 long Generating: N053 (???,???) [000065] ------------ t65 = * PUTARG_REG long REG rdx /--* t64 long arg0 in rcx +--* t65 long arg1 in rdx Generating: N055 ( 20, 12) [000018] --CXG------- t18 = * CALL int System.Runtime.RuntimeImports.RhGetModuleFileName REG rax $301 Call: GCvars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {} IN0009: call System.Runtime.RuntimeImports:RhGetModuleFileName(long,byref):int /--* t18 int Generating: N057 ( 24, 15) [000047] DA-XG-----L- * STORE_LCL_VAR int V08 tmp3 d:1 r8 REG r8 IN000a: mov r8d, eax V08 in reg r8 is becoming live [000047] Live regs: 00000040 {rsi} => 00000140 {rsi r8} Live vars: {V09} => {V08 V09} Generating: N059 ( 3, 2) [000048] ------------ t48 = LCL_VAR int V08 tmp3 u:1 r8 (last use) REG r8 $301 /--* t48 int Generating: N061 (???,???) [000066] ------------ t66 = * PUTARG_REG int REG r8 V08 in reg r8 is becoming dead [000048] Live regs: 00000140 {rsi r8} => 00000040 {rsi} Live vars: {V08 V09} => {V09} Generating: N063 ( 3, 2) [000051] ------------ t51 = LCL_VAR long V09 tmp4 u:1 rsi (last use) REG rsi $141 /--* t51 long Generating: N065 (???,???) [000067] ------------ t67 = * PUTARG_REG long REG rcx V09 in reg rsi is becoming dead [000051] Live regs: 00000040 {rsi} => 00000000 {} Live vars: {V09} => {} IN000b: mov rcx, rsi Generating: N067 ( 1, 1) [000022] ------------ t22 = CNS_INT int 0 REG rdx $40 IN000c: xor edx, edx /--* t22 int Generating: N069 (???,???) [000068] ------------ t68 = * PUTARG_REG int REG rdx /--* t66 int arg2 in r8 +--* t67 long arg0 in rcx +--* t68 int arg1 in rdx Generating: N071 ( 58, 33) [000024] --CXG------- t24 = * CALL ref System.String..ctor REG rax $181 Call: GCvars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {} IN000d: call System.String:.ctor(long,int,int):this GC regs: 00000000 {} => 00000001 {rax} /--* t24 ref Generating: N073 ( 59, 34) [000028] ---XG------- * RETURN ref REG NA $182 GC regs: 00000001 {rax} => 00000000 {} Added IP mapping: EPILOG (G_M61772_IG05,ins#7,ofs#28) label GC regs: 00000000 {} => 00000001 {rax} Extending return value GC liveness to epilog Reserving epilog IG for block BB03 IN000e: nop G_M61772_IG05: ; offs=000116H, funclet=00, bbWeight=0.50 *************** After placeholder IG creation G_M61772_IG01: ; func=00, offs=000000H, size=0000H, gcrefRegs=00000000 {} <-- Prolog IG G_M61772_IG02: ; offs=000000H, size=0014H, gcrefRegs=00000000 {}, byrefRegs=00000040 {rsi}, BB01 [0000], byref G_M61772_IG03: ; offs=000014H, size=0002H, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB02 [0001], byref G_M61772_IG04: ; epilog placeholder, next placeholder=IG06 , BB02 [0001], epilog, extend <-- First placeholder ; PrevGCVars=0000000000000000 {}, PrevGCrefRegs=00000000 {}, PrevByrefRegs=00000040 {rsi} ; InitGCVars=0000000000000000 {}, InitGCrefRegs=00000000 {}, InitByrefRegs=00000000 {} G_M61772_IG05: ; offs=000116H, size=001DH, gcVars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB03 [0002], gcvars, byref G_M61772_IG06: ; epilog placeholder, next placeholder=<END>, BB03 [0002], epilog, extend <-- Last placeholder ; PrevGCVars=0000000000000000 {}, PrevGCrefRegs=00000000 {}, PrevByrefRegs=00000040 {rsi} ; InitGCVars=0000000000000000 {}, InitGCrefRegs=00000000 {}, InitByrefRegs=00000000 {} Variable Live Range History Dump for BB03 ..None.. Liveness not changing: 0000000000000000 {} # compCycleEstimate = 94, compSizeEstimate = 57 Internal.Runtime.Augments.RuntimeAugments:TryGetFullPathToApplicationModule(long,byref):System.String ; Final local variable assignments ; ; V00 arg0 [V00,T01] ( 3, 3 ) long -> rcx single-def ; V01 arg1 [V01,T00] ( 4, 4 ) byref -> rsi single-def ; V02 loc0 [V02 ] ( 2, 1 ) long -> [rsp+28H] do-not-enreg[X] addr-exposed ld-addr-op ;* V03 loc1 [V03 ] ( 0, 0 ) int -> zero-ref ;* V04 loc2 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact ; V05 OutArgs [V05 ] ( 1, 1 ) lclBlk (32) [rsp+00H] "OutgoingArgSpace" ;* V06 tmp1 [V06 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inlining Arg" ;* V07 tmp2 [V07 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inlining Arg" ; V08 tmp3 [V08,T03] ( 2, 2 ) int -> r8 "argument with side effect" ; V09 tmp4 [V09,T04] ( 2, 2 ) long -> rsi "argument with side effect" ; V10 cse0 [V10,T02] ( 3, 2.50) long -> rcx "CSE - aggressive" ; ; Lcl frame size = 48 *************** Before prolog / epilog generation G_M61772_IG01: ; func=00, offs=000000H, size=0000H, gcrefRegs=00000000 {} <-- Prolog IG G_M61772_IG02: ; offs=000000H, size=0014H, gcrefRegs=00000000 {}, byrefRegs=00000040 {rsi}, BB01 [0000], byref G_M61772_IG03: ; offs=000014H, size=0002H, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB02 [0001], byref G_M61772_IG04: ; epilog placeholder, next placeholder=IG06 , BB02 [0001], epilog, extend <-- First placeholder ; PrevGCVars=0000000000000000 {}, PrevGCrefRegs=00000000 {}, PrevByrefRegs=00000040 {rsi} ; InitGCVars=0000000000000000 {}, InitGCrefRegs=00000000 {}, InitByrefRegs=00000000 {} G_M61772_IG05: ; offs=000116H, size=001DH, gcVars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB03 [0002], gcvars, byref G_M61772_IG06: ; epilog placeholder, next placeholder=<END>, BB03 [0002], epilog, extend <-- Last placeholder ; PrevGCVars=0000000000000000 {}, PrevGCrefRegs=00000000 {}, PrevByrefRegs=00000040 {rsi} ; InitGCVars=0000000000000000 {}, InitGCrefRegs=00000000 {}, InitByrefRegs=00000000 {} Recording Var Locations at start of BB01 V01(rsi) V00(rcx) *************** In genFnProlog() Added IP mapping to front: PROLOG (G_M61772_IG01,ins#0,ofs#0) label __prolog: New debug range: first New debug range: first IN000f: push rsi IN0010: sub rsp, 48 *************** In genFnPrologCalleeRegArgs() for int regs IN0011: mov rsi, rdx *************** In genEnregisterIncomingStackArgs() G_M61772_IG01: ; offs=000000H, funclet=00, bbWeight=1 *************** In genFnEpilog() __epilog: gcVarPtrSetCur=0000000000000000 {}, gcRegGCrefSetCur=00000000 {}, gcRegByrefSetCur=00000000 {} IN0012: add rsp, 48 IN0013: pop rsi IN0014: ret G_M61772_IG04: ; offs=000016H, funclet=00, bbWeight=0.50 *************** In genFnEpilog() __epilog: gcVarPtrSetCur=0000000000000000 {}, gcRegGCrefSetCur=00000000 {}, gcRegByrefSetCur=00000000 {} IN0015: add rsp, 48 IN0016: pop rsi IN0017: ret G_M61772_IG06: ; offs=000133H, funclet=00, bbWeight=0.50 0 prologs, 2 epilogs, 0 funclet prologs, 0 funclet epilogs *************** After prolog / epilog generation G_M61772_IG01: ; func=00, offs=000000H, size=0008H, gcVars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, nogc <-- Prolog IG G_M61772_IG02: ; offs=000008H, size=0014H, gcrefRegs=00000000 {}, byrefRegs=00000040 {rsi}, BB01 [0000], byref G_M61772_IG03: ; offs=00001CH, size=0002H, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB02 [0001], byref G_M61772_IG04: ; offs=00001EH, size=0006H, epilog, nogc, extend G_M61772_IG05: ; offs=000024H, size=001DH, gcVars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB03 [0002], gcvars, byref G_M61772_IG06: ; offs=000041H, size=0006H, epilog, nogc, extend *************** In emitJumpDistBind() Binding: IN0005: 000000 jne L_M61772_BB03 Binding L_M61772_BB03 to G_M61772_IG05 Estimate of fwd jump [5ED44404/005]: 0016 -> 0024 = 000C Shrinking jump [5ED44404/005] Adjusted offset of BB03 from 001C to 0018 Adjusted offset of BB04 from 001E to 001A Adjusted offset of BB05 from 0024 to 0020 Adjusted offset of BB06 from 0041 to 003D Total shrinkage = 4, min extra jump size = 4294967295 *************** Finishing PHASE Generate code *************** Starting PHASE Emit code Hot code size = 0x43 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_M61772_IG01: ; func=00, offs=000000H, size=0008H, gcVars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, nogc <-- Prolog IG IN000f: 000000 56 push rsi IN0010: 000001 4883EC30 sub rsp, 48 IN0011: 000005 488BF2 mov rsi, rdx ; byrRegs +[rsi] ;; bbWeight=1 PerfScore 1.50 G_M61772_IG02: ; func=00, offs=000008H, size=0010H, gcrefRegs=00000000 {}, byrefRegs=00000040 {rsi}, BB01 [0000], byref, isz IN0001: 000008 E800000000 call System.Runtime.RuntimeImports:RhGetOSModuleFromPointer(long):long ; gcr arg pop 0 IN0002: 00000D 488906 mov qword ptr [rsi], rax IN0003: 000010 488B0E mov rcx, qword ptr [rsi] IN0004: 000013 4885C9 test rcx, rcx IN0005: 000016 7508 jne SHORT G_M61772_IG05 ;; bbWeight=1 PerfScore 5.25 G_M61772_IG03: ; func=00, offs=000018H, size=0002H, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB02 [0001], byref ; byrRegs -[rsi] IN0006: 000018 33C0 xor rax, rax ; gcrRegs +[rax] ;; bbWeight=0.50 PerfScore 0.12 G_M61772_IG04: ; func=00, offs=00001AH, size=0006H, epilog, nogc, extend IN0012: 00001A 4883C430 add rsp, 48 IN0013: 00001E 5E pop rsi IN0014: 00001F C3 ret ;; bbWeight=0.50 PerfScore 0.88 G_M61772_IG05: ; func=00, offs=000020H, size=001DH, gcVars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB03 [0002], gcvars, byref ; gcrRegs -[rax] IN0007: 000020 488B742428 mov rsi, qword ptr [rsp+28H] IN0008: 000025 488D542428 lea rdx, [rsp+28H] IN0009: 00002A E800000000 call System.Runtime.RuntimeImports:RhGetModuleFileName(long,byref):int ; gcr arg pop 0 IN000a: 00002F 448BC0 mov r8d, eax IN000b: 000032 488BCE mov rcx, rsi IN000c: 000035 33D2 xor edx, edx IN000d: 000037 E800000000 call System.String:.ctor(long,int,int):this ; gcrRegs +[rax] ; gcr arg pop 0 IN000e: 00003C 90 nop ;; bbWeight=0.50 PerfScore 2.25 G_M61772_IG06: ; func=00, offs=00003DH, size=0006H, epilog, nogc, extend IN0015: 00003D 4883C430 add rsp, 48 IN0016: 000041 5E pop rsi IN0017: 000042 C3 ret ;; bbWeight=0.50 PerfScore 0.88Allocated method code size = 67 , actual size = 67, unused size = 0 ; Total bytes of code 67, prolog size 5, PerfScore 17.58, instruction count 23, allocated bytes for code 67 (MethodHash=11dd0eb3) for method Internal.Runtime.Augments.RuntimeAugments:TryGetFullPathToApplicationModule(long,byref):System.String ; ============================================================ *************** After end code gen, before unwindEmit() G_M61772_IG01: ; func=00, offs=000000H, size=0008H, bbWeight=1 PerfScore 1.50, gcVars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, nogc <-- Prolog IG IN000f: 000000 push rsi IN0010: 000001 sub rsp, 48 IN0011: 000005 mov rsi, rdx G_M61772_IG02: ; offs=000008H, size=0010H, bbWeight=1 PerfScore 5.25, gcrefRegs=00000000 {}, byrefRegs=00000040 {rsi}, BB01 [0000], byref, isz IN0001: 000008 call System.Runtime.RuntimeImports:RhGetOSModuleFromPointer(long):long IN0002: 00000D mov qword ptr [rsi], rax IN0003: 000010 mov rcx, qword ptr [rsi] IN0004: 000013 test rcx, rcx IN0005: 000016 jne SHORT G_M61772_IG05 G_M61772_IG03: ; offs=000018H, size=0002H, bbWeight=0.50 PerfScore 0.12, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB02 [0001], byref IN0006: 000018 xor rax, rax G_M61772_IG04: ; offs=00001AH, size=0006H, bbWeight=0.50 PerfScore 0.88, epilog, nogc, extend IN0012: 00001A add rsp, 48 IN0013: 00001E pop rsi IN0014: 00001F ret G_M61772_IG05: ; offs=000020H, size=001DH, bbWeight=0.50 PerfScore 2.25, gcVars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB03 [0002], gcvars, byref IN0007: 000020 mov rsi, qword ptr [V02 rsp+28H] IN0008: 000025 lea rdx, [V02 rsp+28H] IN0009: 00002A call System.Runtime.RuntimeImports:RhGetModuleFileName(long,byref):int IN000a: 00002F mov r8d, eax IN000b: 000032 mov rcx, rsi IN000c: 000035 xor edx, edx IN000d: 000037 call System.String:.ctor(long,int,int):this IN000e: 00003C nop G_M61772_IG06: ; offs=00003DH, size=0006H, bbWeight=0.50 PerfScore 0.88, epilog, nogc, extend IN0015: 00003D add rsp, 48 IN0016: 000041 pop rsi IN0017: 000042 ret *************** Finishing PHASE Emit code *************** Starting PHASE Emit GC+EH tables Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0x000043 (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: rsi (6) allocUnwindInfo(pHotCode=0x000002881067F768, pColdCode=0x0000000000000000, startOffset=0x0, endOffset=0x43, unwindSize=0x8, pUnwindBlock=0x0000028C5C3041F0, funKind=0 (main function)) *************** In genIPmappingGen() IP mapping count : 7 IL offs PROLOG : 0x00000000 ( STACK_EMPTY ) IL offs 0x0000 : 0x00000008 ( STACK_EMPTY ) IL offs 0x0008 : 0x00000010 ( STACK_EMPTY ) IL offs 0x0016 : 0x00000018 ( STACK_EMPTY ) IL offs EPILOG : 0x0000001A ( STACK_EMPTY ) IL offs 0x002B : 0x00000020 ( STACK_EMPTY ) IL offs EPILOG : 0x0000003C ( STACK_EMPTY ) *************** In genSetScopeInfo() VarLocInfo count is 4 ; Variable debug info: 3 live ranges, 2 vars for method Internal.Runtime.Augments.RuntimeAugments:TryGetFullPathToApplicationModule(long,byref):System.String 0( UNKNOWN) : From 00000000h to 00000008h, in rcx 1( UNKNOWN) : From 00000000h to 00000008h, in rdx 1( UNKNOWN) : From 00000008h to 00000010h, in rsi VARIABLE LIVE RANGES: V00 arg0: rcx [8, 8) V01 arg1: rsi [8, 10) *************** In gcInfoBlockHdrSave() Set code length to 67. Set ReturnKind to Object. Set Outgoing stack arg area size to 32. Register slot id for reg rsi (byref) = 0. Set state of slot 0 at instr offset 0x8 to Live. Set state of slot 0 at instr offset 0xd to Dead. Defining 3 call sites: Offset 0x8, size 5. Offset 0x2a, size 5. Offset 0x37, size 5. *************** Finishing PHASE Emit GC+EH tables Method code size: 67 Allocations for Internal.Runtime.Augments.RuntimeAugments:TryGetFullPathToApplicationModule(long,byref):System.String (MethodHash=11dd0eb3) count: 848, size: 75623, max = 3072 allocateMemory: 131072, nraUsed: 81024 Alloc'd bytes by kind: kind | size | pct ---------------------+------------+-------- AssertionProp | 6596 | 8.72% ASTNode | 9392 | 12.42% InstDesc | 3960 | 5.24% ImpStack | 384 | 0.51% BasicBlock | 1720 | 2.27% fgArgInfo | 432 | 0.57% fgArgInfoPtrArr | 48 | 0.06% FlowList | 80 | 0.11% TreeStatementList | 64 | 0.08% SiScope | 0 | 0.00% DominatorMemory | 192 | 0.25% LSRA | 4800 | 6.35% LSRA_Interval | 1520 | 2.01% LSRA_RefPosition | 5568 | 7.36% Reachability | 32 | 0.04% SSA | 560 | 0.74% ValueNumber | 10476 | 13.85% LvaTable | 2260 | 2.99% UnwindInfo | 0 | 0.00% hashBv | 120 | 0.16% bitset | 104 | 0.14% FixedBitVect | 40 | 0.05% Generic | 1610 | 2.13% LocalAddressVisitor | 0 | 0.00% FieldSeqStore | 0 | 0.00% ZeroOffsetFieldMap | 80 | 0.11% ArrayInfoMap | 40 | 0.05% MemoryPhiArg | 0 | 0.00% CSE | 1192 | 1.58% GC | 2539 | 3.36% CorTailCallInfo | 0 | 0.00% Inlining | 2176 | 2.88% ArrayStack | 0 | 0.00% DebugInfo | 536 | 0.71% DebugOnly | 16137 | 21.34% Codegen | 848 | 1.12% LoopOpt | 72 | 0.10% LoopClone | 0 | 0.00% LoopHoist | 0 | 0.00% Unknown | 373 | 0.49% RangeCheck | 0 | 0.00% CopyProp | 520 | 0.69% SideEffects | 0 | 0.00% ObjectAllocator | 0 | 0.00% VariableLiveRanges | 1048 | 1.39% ClassLayout | 0 | 0.00% TailMergeThrows | 0 | 0.00% EarlyProp | 0 | 0.00% ZeroInit | 104 | 0.14% Pgo | 0 | 0.00% ****** DONE compiling Internal.Runtime.Augments.RuntimeAugments:TryGetFullPathToApplicationModule(long,byref):System.String C:\prj\runtime\artifacts\tests\coreclr\windows.x64.Checked\nativeaot\SmokeTests\Exceptions\Exceptions\native>"C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.30.30705\bin\Hostx64\x64\link.exe" @"C:\prj\runtime\artifacts\tests\coreclr\windows.x64.Checked\nativeaot\SmokeTests\Exceptions\Exceptions\native\link.rsp" Creating library C:\prj\runtime\artifacts\tests\coreclr\windows.x64.Checked\nativeaot\SmokeTests\Exceptions\Exceptions\native\Exceptions.lib and object C:\prj\runtime\artifacts\tests\coreclr\windows.x64.Checked\nativeaot\SmokeTests\Exceptions\Exceptions\native\Exceptions.exp C:\prj\runtime\artifacts\tests\coreclr\windows.x64.Checked\nativeaot\SmokeTests\Exceptions\Exceptions\native>Exceptions.exe -------------------------------------------------- Debug Assertion Violation Message: did not expect to collide with a 1st-pass ExInfo during a EH stackwalk Expression: '(!(curFlags & ApplyReturnAddressAdjustment))' File: C:\prj\runtime\src\coreclr\nativeaot\Runtime\StackFrameIterator.cpp, Line: 527 --------------------------------------------------
अंतर खोजें