****** START compiling a:main():int (MethodHash=c5c023fd) Generating code for Windows x64 OPTIONS: compCodeOpt = BLENDED_CODE OPTIONS: compDbgCode = false OPTIONS: compDbgInfo = true OPTIONS: compDbgEnC = false OPTIONS: compProcedureSplitting = false OPTIONS: compProcedureSplittingEH = false IL to import: IL_0000 73 03 00 00 06 newobj 0x6000003 IL_0005 0a stloc.0 IL_0006 73 03 00 00 06 newobj 0x6000003 IL_000b 25 dup IL_000c 80 01 00 00 04 stsfld 0x4000001 IL_0011 0b stloc.1 IL_0012 12 00 ldloca.s 0x0 IL_0014 7f 01 00 00 04 ldsflda 0x4000001 IL_0019 28 01 00 00 06 call 0x6000001 IL_001e 0c stloc.2 IL_001f 08 ldloc.2 IL_0020 2a ret lvaSetClass: setting class for V00 to (00007FFF802FCD90) ctest lvaSetClass: setting class for V01 to (00007FFF802FCD90) ctest lvaGrabTemp returning 3 (V03 tmp0) (a long lifetime temp) called for OutgoingArgSpace. ; Initial local variable assignments ; ; V00 loc0 ref class-hnd ; V01 loc1 ref class-hnd ; V02 loc2 long ; V03 OutArgs lclBlk "OutgoingArgSpace" *************** In compInitDebuggingInfo() for a:main():int getVars() returned cVars = 0, extendOthers = true info.compVarScopesCount = 3 VarNum LVNum Name Beg End 0: 00h 00h V00 loc0 000h 021h 1: 01h 01h V01 loc1 000h 021h 2: 02h 02h V02 loc2 000h 021h info.compStmtOffsetsCount = 0 info.compStmtOffsetsImplicit = 0005h ( STACK_EMPTY CALL_SITE ) *************** In fgFindBasicBlocks() for a:main():int Marked V01 as a single def local Marked V02 as a single def local Jump targets: none New Basic Block BB01 [0000] created. BB01 [000..021) IL Code Size,Instr 33, 12, Basic Block count 1, Local Variable Num,Ref count 4, 5 for method a:main():int OPTIONS: opts.MinOpts() == false Basic block list for 'a:main():int' ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..021) (return) ----------------------------------------------------------------------------------------------------------------------------------------- *************** Starting PHASE Pre-import *************** Finishing PHASE Pre-import *************** Starting PHASE Importation *************** In impImport() for a:main():int impImportBlockPending for BB01 Importing BB01 (PC=000) of 'a:main():int' [ 0] 0 (0x000) newobj lvaGrabTemp returning 4 (V04 tmp1) called for NewObj constructor temp. STMT00000 (IL 0x000... ???) [000003] -A---------- * ASG ref [000002] D------N---- +--* LCL_VAR ref V04 tmp1 [000001] ------------ \--* ALLOCOBJ ref [000000] H----------- \--* CNS_INT(h) long 0x7fff802fcd90 method Marked V04 as a single def local lvaSetClass: setting class for V04 to (00007FFF802FCD90) ctest [exact] 06000003 In Compiler::impImportCall: opcode is newobj, kind=0, callRetType is void, structSize is 0 STMT00001 (IL ???... ???) [000005] I-C-G------- * CALL void ctest..ctor (exactContextHnd=0x00007FFF802FCD91) [000004] ------------ this in rcx \--* LCL_VAR ref V04 tmp1 [ 1] 5 (0x005) stloc.0 STMT00002 (IL 0x005... ???) [000008] -A---------- * ASG ref [000007] D------N---- +--* LCL_VAR ref V00 loc0 [000006] ------------ \--* LCL_VAR ref V04 tmp1 [ 0] 6 (0x006) newobj lvaGrabTemp returning 5 (V05 tmp2) called for NewObj constructor temp. STMT00003 (IL 0x006... ???) [000012] -A---------- * ASG ref [000011] D------N---- +--* LCL_VAR ref V05 tmp2 [000010] ------------ \--* ALLOCOBJ ref [000009] H----------- \--* CNS_INT(h) long 0x7fff802fcd90 method Marked V05 as a single def local lvaSetClass: setting class for V05 to (00007FFF802FCD90) ctest [exact] 06000003 In Compiler::impImportCall: opcode is newobj, kind=0, callRetType is void, structSize is 0 STMT00004 (IL ???... ???) [000014] I-C-G------- * CALL void ctest..ctor (exactContextHnd=0x00007FFF802FCD91) [000013] ------------ this in rcx \--* LCL_VAR ref V05 tmp2 [ 1] 11 (0x00b) dup [ 2] 12 (0x00c) stsfld 04000001 STMT00005 (IL 0x00B... ???) [000018] -A--G------- * ASG ref [000017] ----G--N---- +--* FIELD ref S_1 [000016] ------------ \--* LCL_VAR ref V05 tmp2 [ 1] 17 (0x011) stloc.1 lvaUpdateClass: Updating class for V01 from (00007FFF802FCD90) ctest to (00007FFF802FCD90) ctest [exact] STMT00006 (IL ???... ???) [000020] -A---------- * ASG ref [000019] D------N---- +--* LCL_VAR ref V01 loc1 [000015] ------------ \--* LCL_VAR ref V05 tmp2 [ 0] 18 (0x012) ldloca.s 0 [ 1] 20 (0x014) ldsflda 04000001 [ 2] 25 (0x019) call 06000001 In Compiler::impImportCall: opcode is call, kind=0, callRetType is long, structSize is 0 STMT00007 (IL 0x012... ???) [000024] I-C-G------- * CALL long a.byrefsubbyref (exactContextHnd=0x00007FFF801AB401) [000022] ------------ arg0 +--* ADDR byref [000021] -------N---- | \--* LCL_VAR ref V00 loc0 [000023] H----------- arg1 \--* CNS_INT(h) long 0x18290002cb8 static Fseq[S_1] [ 1] 30 (0x01e) stloc.2 STMT00008 (IL ???... ???) [000027] -AC--------- * ASG long [000026] D------N---- +--* LCL_VAR long V02 loc2 [000025] --C--------- \--* RET_EXPR long (inl return from call [000024]) [ 0] 31 (0x01f) ldloc.2 [ 1] 32 (0x020) ret STMT00009 (IL 0x01F... ???) [000030] ------------ * RETURN int [000029] ------------ \--* CAST int <- long [000028] ------------ \--* LCL_VAR long V02 loc2 *************** Finishing PHASE Importation Trees after Importation ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..021) (return) i newobj ----------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [000..021) (return), preds={} succs={} ***** BB01 STMT00000 (IL 0x000...0x005) [000003] -A---------- * ASG ref [000002] D------N---- +--* LCL_VAR ref V04 tmp1 [000001] ------------ \--* ALLOCOBJ ref [000000] H----------- \--* CNS_INT(h) long 0x7fff802fcd90 method ***** BB01 STMT00001 (IL ???... ???) [000005] I-C-G------- * CALL void ctest..ctor (exactContextHnd=0x00007FFF802FCD91) [000004] ------------ this in rcx \--* LCL_VAR ref V04 tmp1 ***** BB01 STMT00002 (IL 0x005... ???) [000008] -A---------- * ASG ref [000007] D------N---- +--* LCL_VAR ref V00 loc0 [000006] ------------ \--* LCL_VAR ref V04 tmp1 ***** BB01 STMT00003 (IL 0x006...0x00C) [000012] -A---------- * ASG ref [000011] D------N---- +--* LCL_VAR ref V05 tmp2 [000010] ------------ \--* ALLOCOBJ ref [000009] H----------- \--* CNS_INT(h) long 0x7fff802fcd90 method ***** BB01 STMT00004 (IL ???... ???) [000014] I-C-G------- * CALL void ctest..ctor (exactContextHnd=0x00007FFF802FCD91) [000013] ------------ this in rcx \--* LCL_VAR ref V05 tmp2 ***** BB01 STMT00005 (IL 0x00B... ???) [000018] -A--G------- * ASG ref [000017] ----G--N---- +--* FIELD ref S_1 [000016] ------------ \--* LCL_VAR ref V05 tmp2 ***** BB01 STMT00006 (IL ???...0x011) [000020] -A---------- * ASG ref [000019] D------N---- +--* LCL_VAR ref V01 loc1 [000015] ------------ \--* LCL_VAR ref V05 tmp2 ***** BB01 STMT00007 (IL 0x012...0x01E) [000024] I-C-G------- * CALL long a.byrefsubbyref (exactContextHnd=0x00007FFF801AB401) [000022] ------------ arg0 +--* ADDR byref [000021] -------N---- | \--* LCL_VAR ref V00 loc0 [000023] H----------- arg1 \--* CNS_INT(h) long 0x18290002cb8 static Fseq[S_1] ***** BB01 STMT00008 (IL ???... ???) [000027] -AC--------- * ASG long [000026] D------N---- +--* LCL_VAR long V02 loc2 [000025] --C--------- \--* RET_EXPR long (inl return from call [000024]) ***** BB01 STMT00009 (IL 0x01F...0x020) [000030] ------------ * RETURN int [000029] ------------ \--* CAST int <- long [000028] ------------ \--* LCL_VAR long V02 loc2 ------------------------------------------------------------------------------------------------------------------- *************** Starting PHASE Indirect call transform -- no candidates to transform *************** Finishing PHASE Indirect call transform [no changes] *************** Starting PHASE Expand patchpoints -- no patchpoints to transform *************** Finishing PHASE Expand patchpoints [no changes] *************** Starting PHASE Post-import *************** Finishing PHASE Post-import *************** Starting PHASE Morph - Init New BlockSet epoch 1, # of blocks (including unused BB00): 2, bitset array size: 1 (short) *************** In fgRemoveEmptyBlocks *************** Finishing PHASE Morph - Init *************** In fgDebugCheckBBlist *************** Starting PHASE Morph - Inlining Expanding INLINE_CANDIDATE in statement STMT00001 in BB01: STMT00001 (IL ???... ???) [000005] I-C-G------- * CALL void ctest..ctor (exactContextHnd=0x00007FFF802FCD91) [000004] ------------ this in rcx \--* LCL_VAR ref V04 tmp1 thisArg: is a local var [000004] ------------ * LCL_VAR ref V04 tmp1 INLINER: inlineInfo.tokenLookupContextHandle for ctest:.ctor():this set to 0x00007FFF802FCD91: Invoking compiler for the inlinee method ctest:.ctor():this : IL to import: IL_0000 02 ldarg.0 IL_0001 28 01 00 00 0a call 0xA000001 IL_0006 2a ret INLINER impTokenLookupContextHandle for ctest:.ctor():this is 0x00007FFF802FCD91. *************** In fgFindBasicBlocks() for ctest:.ctor():this Jump targets: none Computing inlinee profile scale: ... call site not profiled New Basic Block BB02 [0001] created. BB02 [000..007) Basic block list for 'ctest:.ctor():this' ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB02 [0001] 1 1 [000..007) (return) ----------------------------------------------------------------------------------------------------------------------------------------- *************** Inline @[000005] Starting PHASE Pre-import *************** Inline @[000005] Finishing PHASE Pre-import *************** Inline @[000005] Starting PHASE Importation *************** In impImport() for ctest:.ctor():this impImportBlockPending for BB02 Importing BB02 (PC=000) of 'ctest:.ctor():this' [ 0] 0 (0x000) ldarg.0 [ 1] 1 (0x001) call 0A000001 In Compiler::impImportCall: opcode is call, kind=0, callRetType is void, structSize is 0 [000031] I-C-G------- * CALL void System.Object..ctor (exactContextHnd=0x00007FFF7FF653B9) [000004] ------------ this in rcx \--* LCL_VAR ref V04 tmp1 [ 0] 6 (0x006) ret *************** Inline @[000005] Finishing PHASE Importation Trees after Importation ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB02 [0001] 1 1 [000..007) (return) i ----------------------------------------------------------------------------------------------------------------------------------------- ------------ BB02 [000..007) (return), preds={} succs={} ***** BB02 [000031] I-C-G------- * CALL void System.Object..ctor (exactContextHnd=0x00007FFF7FF653B9) [000004] ------------ this in rcx \--* LCL_VAR ref V04 tmp1 ------------------------------------------------------------------------------------------------------------------- *************** Inline @[000005] Starting PHASE Indirect call transform -- no candidates to transform *************** Inline @[000005] Finishing PHASE Indirect call transform [no changes] *************** Inline @[000005] Starting PHASE Expand patchpoints -- no patchpoints to transform *************** Inline @[000005] Finishing PHASE Expand patchpoints [no changes] *************** Inline @[000005] Starting PHASE Post-import *************** In fgRemoveEmptyBlocks *************** Inline @[000005] Finishing PHASE Post-import ----------- Statements (and blocks) added due to the inlining of call [000005] ----------- Arguments setup: Inlinee method body: STMT00010 (IL ???... ???) [000031] I-C-G------- * CALL void System.Object..ctor (exactContextHnd=0x00007FFF7FF653B9) [000004] ------------ this in rcx \--* LCL_VAR ref V04 tmp1 fgInlineAppendStatements: no gc ref inline locals. Successfully inlined ctest:.ctor():this (7 IL bytes) (depth 1) [below ALWAYS_INLINE size] -------------------------------------------------------------------------------------------- INLINER: during 'fgInline' result 'success' reason 'below ALWAYS_INLINE size' for 'a:main():int' calling 'ctest:.ctor():this' INLINER: during 'fgInline' result 'success' reason 'below ALWAYS_INLINE size' Expanding INLINE_CANDIDATE in statement STMT00010 in BB01: STMT00010 (IL ???... ???) [000031] I-C-G------- * CALL void System.Object..ctor (exactContextHnd=0x00007FFF7FF653B9) [000004] ------------ this in rcx \--* LCL_VAR ref V04 tmp1 thisArg: is a local var [000004] ------------ * LCL_VAR ref V04 tmp1 INLINER: inlineInfo.tokenLookupContextHandle for System.Object:.ctor():this set to 0x00007FFF7FF653B9: Invoking compiler for the inlinee method System.Object:.ctor():this : IL to import: IL_0000 2a ret INLINER impTokenLookupContextHandle for System.Object:.ctor():this is 0x00007FFF7FF653B9. *************** In fgFindBasicBlocks() for System.Object:.ctor():this Jump targets: none Computing inlinee profile scale: ... call site not profiled New Basic Block BB03 [0002] created. BB03 [000..001) Basic block list for 'System.Object:.ctor():this' ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB03 [0002] 1 1 [000..001) (return) ----------------------------------------------------------------------------------------------------------------------------------------- *************** Inline @[000031] Starting PHASE Pre-import *************** Inline @[000031] Finishing PHASE Pre-import *************** Inline @[000031] Starting PHASE Importation *************** In impImport() for System.Object:.ctor():this impImportBlockPending for BB03 Importing BB03 (PC=000) of 'System.Object:.ctor():this' [ 0] 0 (0x000) ret ** Note: inlinee IL was partially imported -- imported 0 of 1 bytes of method IL *************** Inline @[000031] Finishing PHASE Importation Trees after Importation ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB03 [0002] 1 1 [000..001) (return) i ----------------------------------------------------------------------------------------------------------------------------------------- ------------ BB03 [000..001) (return), preds={} succs={} ------------------------------------------------------------------------------------------------------------------- *************** Inline @[000031] Starting PHASE Indirect call transform -- no candidates to transform *************** Inline @[000031] Finishing PHASE Indirect call transform [no changes] *************** Inline @[000031] Starting PHASE Expand patchpoints -- no patchpoints to transform *************** Inline @[000031] Finishing PHASE Expand patchpoints [no changes] *************** Inline @[000031] Starting PHASE Post-import *************** In fgRemoveEmptyBlocks *************** Inline @[000031] Finishing PHASE Post-import ----------- Statements (and blocks) added due to the inlining of call [000031] ----------- Arguments setup: Inlinee method body:fgInlineAppendStatements: no gc ref inline locals. Successfully inlined System.Object:.ctor():this (1 IL bytes) (depth 2) [below ALWAYS_INLINE size] -------------------------------------------------------------------------------------------- INLINER: during 'fgInline' result 'success' reason 'below ALWAYS_INLINE size' for 'a:main():int' calling 'System.Object:.ctor():this' INLINER: during 'fgInline' result 'success' reason 'below ALWAYS_INLINE size' Expanding INLINE_CANDIDATE in statement STMT00004 in BB01: STMT00004 (IL ???... ???) [000014] I-C-G------- * CALL void ctest..ctor (exactContextHnd=0x00007FFF802FCD91) [000013] ------------ this in rcx \--* LCL_VAR ref V05 tmp2 thisArg: is a local var [000013] ------------ * LCL_VAR ref V05 tmp2 INLINER: inlineInfo.tokenLookupContextHandle for ctest:.ctor():this set to 0x00007FFF802FCD91: Invoking compiler for the inlinee method ctest:.ctor():this : IL to import: IL_0000 02 ldarg.0 IL_0001 28 01 00 00 0a call 0xA000001 IL_0006 2a ret INLINER impTokenLookupContextHandle for ctest:.ctor():this is 0x00007FFF802FCD91. *************** In fgFindBasicBlocks() for ctest:.ctor():this Jump targets: none Computing inlinee profile scale: ... call site not profiled New Basic Block BB04 [0003] created. BB04 [000..007) Basic block list for 'ctest:.ctor():this' ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB04 [0003] 1 1 [000..007) (return) ----------------------------------------------------------------------------------------------------------------------------------------- *************** Inline @[000014] Starting PHASE Pre-import *************** Inline @[000014] Finishing PHASE Pre-import *************** Inline @[000014] Starting PHASE Importation *************** In impImport() for ctest:.ctor():this impImportBlockPending for BB04 Importing BB04 (PC=000) of 'ctest:.ctor():this' [ 0] 0 (0x000) ldarg.0 [ 1] 1 (0x001) call 0A000001 In Compiler::impImportCall: opcode is call, kind=0, callRetType is void, structSize is 0 [000034] I-C-G------- * CALL void System.Object..ctor (exactContextHnd=0x00007FFF7FF653B9) [000013] ------------ this in rcx \--* LCL_VAR ref V05 tmp2 [ 0] 6 (0x006) ret *************** Inline @[000014] Finishing PHASE Importation Trees after Importation ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB04 [0003] 1 1 [000..007) (return) i ----------------------------------------------------------------------------------------------------------------------------------------- ------------ BB04 [000..007) (return), preds={} succs={} ***** BB04 [000034] I-C-G------- * CALL void System.Object..ctor (exactContextHnd=0x00007FFF7FF653B9) [000013] ------------ this in rcx \--* LCL_VAR ref V05 tmp2 ------------------------------------------------------------------------------------------------------------------- *************** Inline @[000014] Starting PHASE Indirect call transform -- no candidates to transform *************** Inline @[000014] Finishing PHASE Indirect call transform [no changes] *************** Inline @[000014] Starting PHASE Expand patchpoints -- no patchpoints to transform *************** Inline @[000014] Finishing PHASE Expand patchpoints [no changes] *************** Inline @[000014] Starting PHASE Post-import *************** In fgRemoveEmptyBlocks *************** Inline @[000014] Finishing PHASE Post-import ----------- Statements (and blocks) added due to the inlining of call [000014] ----------- Arguments setup: Inlinee method body: STMT00011 (IL ???... ???) [000034] I-C-G------- * CALL void System.Object..ctor (exactContextHnd=0x00007FFF7FF653B9) [000013] ------------ this in rcx \--* LCL_VAR ref V05 tmp2 fgInlineAppendStatements: no gc ref inline locals. Successfully inlined ctest:.ctor():this (7 IL bytes) (depth 1) [below ALWAYS_INLINE size] -------------------------------------------------------------------------------------------- INLINER: during 'fgInline' result 'success' reason 'below ALWAYS_INLINE size' for 'a:main():int' calling 'ctest:.ctor():this' INLINER: during 'fgInline' result 'success' reason 'below ALWAYS_INLINE size' Expanding INLINE_CANDIDATE in statement STMT00011 in BB01: STMT00011 (IL ???... ???) [000034] I-C-G------- * CALL void System.Object..ctor (exactContextHnd=0x00007FFF7FF653B9) [000013] ------------ this in rcx \--* LCL_VAR ref V05 tmp2 thisArg: is a local var [000013] ------------ * LCL_VAR ref V05 tmp2 INLINER: inlineInfo.tokenLookupContextHandle for System.Object:.ctor():this set to 0x00007FFF7FF653B9: Invoking compiler for the inlinee method System.Object:.ctor():this : IL to import: IL_0000 2a ret INLINER impTokenLookupContextHandle for System.Object:.ctor():this is 0x00007FFF7FF653B9. *************** In fgFindBasicBlocks() for System.Object:.ctor():this Jump targets: none Computing inlinee profile scale: ... call site not profiled New Basic Block BB05 [0004] created. BB05 [000..001) Basic block list for 'System.Object:.ctor():this' ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB05 [0004] 1 1 [000..001) (return) ----------------------------------------------------------------------------------------------------------------------------------------- *************** Inline @[000034] Starting PHASE Pre-import *************** Inline @[000034] Finishing PHASE Pre-import *************** Inline @[000034] Starting PHASE Importation *************** In impImport() for System.Object:.ctor():this impImportBlockPending for BB05 Importing BB05 (PC=000) of 'System.Object:.ctor():this' [ 0] 0 (0x000) ret ** Note: inlinee IL was partially imported -- imported 0 of 1 bytes of method IL *************** Inline @[000034] Finishing PHASE Importation Trees after Importation ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB05 [0004] 1 1 [000..001) (return) i ----------------------------------------------------------------------------------------------------------------------------------------- ------------ BB05 [000..001) (return), preds={} succs={} ------------------------------------------------------------------------------------------------------------------- *************** Inline @[000034] Starting PHASE Indirect call transform -- no candidates to transform *************** Inline @[000034] Finishing PHASE Indirect call transform [no changes] *************** Inline @[000034] Starting PHASE Expand patchpoints -- no patchpoints to transform *************** Inline @[000034] Finishing PHASE Expand patchpoints [no changes] *************** Inline @[000034] Starting PHASE Post-import *************** In fgRemoveEmptyBlocks *************** Inline @[000034] Finishing PHASE Post-import ----------- Statements (and blocks) added due to the inlining of call [000034] ----------- Arguments setup: Inlinee method body:fgInlineAppendStatements: no gc ref inline locals. Successfully inlined System.Object:.ctor():this (1 IL bytes) (depth 2) [below ALWAYS_INLINE size] -------------------------------------------------------------------------------------------- INLINER: during 'fgInline' result 'success' reason 'below ALWAYS_INLINE size' for 'a:main():int' calling 'System.Object:.ctor():this' INLINER: during 'fgInline' result 'success' reason 'below ALWAYS_INLINE size' Expanding INLINE_CANDIDATE in statement STMT00007 in BB01: STMT00007 (IL 0x012...0x01E) [000024] I-C-G------- * CALL long a.byrefsubbyref (exactContextHnd=0x00007FFF801AB401) [000022] ------------ arg0 +--* ADDR byref [000021] -------N---- | \--* LCL_VAR ref V00 loc0 [000023] H----------- arg1 \--* CNS_INT(h) long 0x18290002cb8 static Fseq[S_1] Argument #0: is a constant [000022] ------------ * ADDR byref [000021] -------N---- \--* LCL_VAR ref V00 loc0 Argument #1: is a constant [000023] H----------- * CNS_INT(h) long 0x18290002cb8 static Fseq[S_1] INLINER: inlineInfo.tokenLookupContextHandle for a:byrefsubbyref(byref,byref):long set to 0x00007FFF801AB401: Invoking compiler for the inlinee method a:byrefsubbyref(byref,byref):long : IL to import: IL_0000 02 ldarg.0 IL_0001 03 ldarg.1 IL_0002 59 sub IL_0003 2a ret INLINER impTokenLookupContextHandle for a:byrefsubbyref(byref,byref):long is 0x00007FFF801AB401. *************** In fgFindBasicBlocks() for a:byrefsubbyref(byref,byref):long Jump targets: none Computing inlinee profile scale: ... call site not profiled New Basic Block BB06 [0005] created. BB06 [000..004) Basic block list for 'a:byrefsubbyref(byref,byref):long' ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB06 [0005] 1 1 [000..004) (return) ----------------------------------------------------------------------------------------------------------------------------------------- *************** Inline @[000024] Starting PHASE Pre-import *************** Inline @[000024] Finishing PHASE Pre-import *************** Inline @[000024] Starting PHASE Importation *************** In impImport() for a:byrefsubbyref(byref,byref):long impImportBlockPending for BB06 Importing BB06 (PC=000) of 'a:byrefsubbyref(byref,byref):long' [ 0] 0 (0x000) ldarg.0 [ 1] 1 (0x001) ldarg.1 [ 2] 2 (0x002) sub [ 1] 3 (0x003) ret Inlinee Return expression (before normalization) => [000040] ------------ * SUB long [000037] ------------ +--* ADDR long [000038] -------N---- | \--* LCL_VAR ref V00 loc0 [000039] H----------- \--* CNS_INT(h) byref 0x18290002cb8 static Fseq[S_1] Inlinee Return expression (after normalization) => [000040] ------------ * SUB long [000037] ------------ +--* ADDR long [000038] -------N---- | \--* LCL_VAR ref V00 loc0 [000039] H----------- \--* CNS_INT(h) byref 0x18290002cb8 static Fseq[S_1] ** Note: inlinee IL was partially imported -- imported 0 of 4 bytes of method IL *************** Inline @[000024] Finishing PHASE Importation Trees after Importation ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB06 [0005] 1 1 [000..004) (return) i ----------------------------------------------------------------------------------------------------------------------------------------- ------------ BB06 [000..004) (return), preds={} succs={} ------------------------------------------------------------------------------------------------------------------- *************** Inline @[000024] Starting PHASE Indirect call transform -- no candidates to transform *************** Inline @[000024] Finishing PHASE Indirect call transform [no changes] *************** Inline @[000024] Starting PHASE Expand patchpoints -- no patchpoints to transform *************** Inline @[000024] Finishing PHASE Expand patchpoints [no changes] *************** Inline @[000024] Starting PHASE Post-import *************** In fgRemoveEmptyBlocks *************** Inline @[000024] Finishing PHASE Post-import ----------- Statements (and blocks) added due to the inlining of call [000024] ----------- Arguments setup: Inlinee method body:fgInlineAppendStatements: no gc ref inline locals. Return expression for call at [000024] is [000040] ------------ * SUB long [000037] ------------ +--* ADDR long [000038] -------N---- | \--* LCL_VAR ref V00 loc0 [000039] H----------- \--* CNS_INT(h) byref 0x18290002cb8 static Fseq[S_1] Successfully inlined a:byrefsubbyref(byref,byref):long (4 IL bytes) (depth 1) [aggressive inline attribute] -------------------------------------------------------------------------------------------- INLINER: during 'fgInline' result 'success' reason 'aggressive inline attribute' for 'a:main():int' calling 'a:byrefsubbyref(byref,byref):long' INLINER: during 'fgInline' result 'success' reason 'aggressive inline attribute' Replacing the return expression placeholder [000025] with [000040] [000025] --C--------- * RET_EXPR long (inl return from call [000040]) Inserting the inline return expression [000040] ------------ * SUB long [000037] ------------ +--* ADDR long [000038] -------N---- | \--* LCL_VAR ref V00 loc0 [000039] H----------- \--* CNS_INT(h) byref 0x18290002cb8 static Fseq[S_1] **************** Inline Tree Inlines into 06000002 a:main():int [1 IL=0000 TR=000005 06000003] [below ALWAYS_INLINE size] ctest:.ctor():this [2 IL=0001 TR=000031 0600049D] [below ALWAYS_INLINE size] System.Object:.ctor():this [3 IL=0006 TR=000014 06000003] [below ALWAYS_INLINE size] ctest:.ctor():this [4 IL=0001 TR=000034 0600049D] [below ALWAYS_INLINE size] System.Object:.ctor():this [5 IL=0025 TR=000024 06000001] [aggressive inline attribute] a:byrefsubbyref(byref,byref):long Budget: initialTime=159, finalTime=117, initialBudget=1590, currentBudget=1590 Budget: initialSize=883, finalSize=883 *************** 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..021) (return) i newobj ----------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [000..021) (return), preds={} succs={} ***** BB01 STMT00000 (IL 0x000...0x005) [000003] -A---------- * ASG ref [000002] D------N---- +--* LCL_VAR ref V04 tmp1 [000001] ------------ \--* ALLOCOBJ ref [000000] H----------- \--* CNS_INT(h) long 0x7fff802fcd90 method ***** BB01 STMT00002 (IL 0x005... ???) [000008] -A---------- * ASG ref [000007] D------N---- +--* LCL_VAR ref V00 loc0 [000006] ------------ \--* LCL_VAR ref V04 tmp1 ***** BB01 STMT00003 (IL 0x006...0x00C) [000012] -A---------- * ASG ref [000011] D------N---- +--* LCL_VAR ref V05 tmp2 [000010] ------------ \--* ALLOCOBJ ref [000009] H----------- \--* CNS_INT(h) long 0x7fff802fcd90 method ***** BB01 STMT00005 (IL 0x00B... ???) [000018] -A--G------- * ASG ref [000017] ----G--N---- +--* FIELD ref S_1 [000016] ------------ \--* LCL_VAR ref V05 tmp2 ***** BB01 STMT00006 (IL ???...0x011) [000020] -A---------- * ASG ref [000019] D------N---- +--* LCL_VAR ref V01 loc1 [000015] ------------ \--* LCL_VAR ref V05 tmp2 ***** BB01 STMT00008 (IL ???... ???) [000027] -AC--------- * ASG long [000026] D------N---- +--* LCL_VAR long V02 loc2 [000040] ------------ \--* SUB long [000037] ------------ +--* ADDR long [000038] -------N---- | \--* LCL_VAR ref V00 loc0 [000039] H----------- \--* CNS_INT(h) byref 0x18290002cb8 static Fseq[S_1] ***** BB01 STMT00009 (IL 0x01F...0x020) [000030] ------------ * RETURN int [000029] ------------ \--* CAST int <- long [000028] ------------ \--* LCL_VAR long V02 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..021) (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..021) (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): 2, 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..021) (return) i newobj ----------------------------------------------------------------------------------------------------------------------------------------- *************** After fgComputePreds() ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..021) (return) i label target 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..021) (return) i label target 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 loc0 ref ld-addr-op class-hnd ; V01 loc1 ref class-hnd exact ; V02 loc2 long ; V03 OutArgs lclBlk "OutgoingArgSpace" ; V04 tmp1 ref class-hnd exact "NewObj constructor temp" ; V05 tmp2 ref class-hnd exact "NewObj constructor temp" lvaTable after fgPromoteStructs ; Initial local variable assignments ; ; V00 loc0 ref ld-addr-op class-hnd ; V01 loc1 ref class-hnd exact ; V02 loc2 long ; V03 OutArgs lclBlk "OutgoingArgSpace" ; V04 tmp1 ref class-hnd exact "NewObj constructor temp" ; V05 tmp2 ref class-hnd exact "NewObj constructor temp" *************** Finishing PHASE Morph - Promote Structs *************** Starting PHASE Morph - Structs/AddrExp *************** In fgMarkAddressExposedLocals() LocalAddressVisitor visiting statement: STMT00000 (IL 0x000...0x005) [000003] -AC--------- * ASG ref [000002] D------N---- +--* LCL_VAR ref V04 tmp1 [000001] --C--------- \--* CALL help ref HELPER.CORINFO_HELP_NEWSFAST [000000] H----------- arg0 \--* CNS_INT(h) long 0x7fff802fcd90 method LocalAddressVisitor visiting statement: STMT00002 (IL 0x005... ???) [000008] -A---------- * ASG ref [000007] D------N---- +--* LCL_VAR ref V00 loc0 [000006] ------------ \--* LCL_VAR ref V04 tmp1 LocalAddressVisitor visiting statement: STMT00003 (IL 0x006...0x00C) [000012] -AC--------- * ASG ref [000011] D------N---- +--* LCL_VAR ref V05 tmp2 [000010] --C--------- \--* CALL help ref HELPER.CORINFO_HELP_NEWSFAST [000009] H----------- arg0 \--* CNS_INT(h) long 0x7fff802fcd90 method LocalAddressVisitor visiting statement: STMT00005 (IL 0x00B... ???) [000018] -A--G------- * ASG ref [000017] ----G--N---- +--* FIELD ref S_1 [000016] ------------ \--* LCL_VAR ref V05 tmp2 LocalAddressVisitor visiting statement: STMT00006 (IL ???...0x011) [000020] -A---------- * ASG ref [000019] D------N---- +--* LCL_VAR ref V01 loc1 [000015] ------------ \--* LCL_VAR ref V05 tmp2 LocalAddressVisitor visiting statement: STMT00008 (IL ???... ???) [000027] -AC--------- * ASG long [000026] D------N---- +--* LCL_VAR long V02 loc2 [000040] ------------ \--* SUB long [000037] ------------ +--* ADDR long [000038] -------N---- | \--* LCL_VAR ref V00 loc0 [000039] H----------- \--* CNS_INT(h) byref 0x18290002cb8 static Fseq[S_1] Local V00 should not be enregistered because: it is address exposed LocalAddressVisitor visiting statement: STMT00009 (IL 0x01F...0x020) [000030] ------------ * RETURN int [000029] ------------ \--* CAST int <- long [000028] ------------ \--* LCL_VAR long V02 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 'a:main():int' fgMorphTree BB01, STMT00000 (before) [000003] -AC--------- * ASG ref [000002] D------N---- +--* LCL_VAR ref V04 tmp1 [000001] --C--------- \--* CALL help ref HELPER.CORINFO_HELP_NEWSFAST [000000] H----------- arg0 \--* CNS_INT(h) long 0x7fff802fcd90 method Initializing arg info for 1.CALL: ArgTable for 1.CALL after fgInitArgInfo: fgArgTabEntry[arg 0 0.CNS_INT long (By ref), 1 reg: rcx, byteAlignment=8] Morphing args for 1.CALL: argSlots=1, preallocatedArgCount=4, nextSlotNum=4, nextSlotByteOffset=32, outgoingArgSpaceSize=32 Sorting the arguments: Deferred argument ('rcx'): [000000] H----+------ * CNS_INT(h) long 0x7fff802fcd90 method Replaced with placeholder node: [000042] ----------L- * ARGPLACE long Shuffled argument table: rcx ArgTable for 1.CALL after fgMorphArgs: fgArgTabEntry[arg 0 0.CNS_INT long (By ref), 1 reg: rcx, byteAlignment=8, lateArgInx=0, processed] fgMorphTree BB01, STMT00000 (after) [000003] -AC--+------ * ASG ref [000002] D----+-N---- +--* LCL_VAR ref V04 tmp1 [000001] --C--+------ \--* CALL help ref HELPER.CORINFO_HELP_NEWSFAST [000000] H----+------ arg0 in rcx \--* CNS_INT(h) long 0x7fff802fcd90 method fgMorphTree BB01, STMT00002 (before) [000008] -A---------- * ASG ref [000007] D------N---- +--* LCL_VAR ref (AX) V00 loc0 [000006] ------------ \--* LCL_VAR ref V04 tmp1 fgMorphTree BB01, STMT00003 (before) [000012] -AC--------- * ASG ref [000011] D------N---- +--* LCL_VAR ref V05 tmp2 [000010] --C--------- \--* CALL help ref HELPER.CORINFO_HELP_NEWSFAST [000009] H----------- arg0 \--* CNS_INT(h) long 0x7fff802fcd90 method Initializing arg info for 10.CALL: ArgTable for 10.CALL after fgInitArgInfo: fgArgTabEntry[arg 0 9.CNS_INT long (By ref), 1 reg: rcx, byteAlignment=8] Morphing args for 10.CALL: argSlots=1, preallocatedArgCount=4, nextSlotNum=4, nextSlotByteOffset=32, outgoingArgSpaceSize=32 Sorting the arguments: Deferred argument ('rcx'): [000009] H----+------ * CNS_INT(h) long 0x7fff802fcd90 method Replaced with placeholder node: [000043] ----------L- * ARGPLACE long Shuffled argument table: rcx ArgTable for 10.CALL after fgMorphArgs: fgArgTabEntry[arg 0 9.CNS_INT long (By ref), 1 reg: rcx, byteAlignment=8, lateArgInx=0, processed] fgMorphTree BB01, STMT00003 (after) [000012] -AC--+------ * ASG ref [000011] D----+-N---- +--* LCL_VAR ref V05 tmp2 [000010] --C--+------ \--* CALL help ref HELPER.CORINFO_HELP_NEWSFAST [000009] H----+------ arg0 in rcx \--* CNS_INT(h) long 0x7fff802fcd90 method fgMorphTree BB01, STMT00005 (before) [000018] -A--G------- * ASG ref [000017] ----G--N---- +--* FIELD ref S_1 [000016] ------------ \--* LCL_VAR ref V05 tmp2 fgMorphTree BB01, STMT00005 (after) [000018] -A--G+------ * ASG ref [000017] n---G+-N---- +--* IND ref [000044] H----+------ | \--* CNS_INT(h) long 0x18290002cb8 static Fseq[S_1] [000016] -----+------ \--* LCL_VAR ref V05 tmp2 fgMorphTree BB01, STMT00006 (before) [000020] -A---------- * ASG ref [000019] D------N---- +--* LCL_VAR ref V01 loc1 [000015] ------------ \--* LCL_VAR ref V05 tmp2 GenTreeNode creates assertion: [000020] -A---------- * ASG ref In BB01 New Local Copy Assertion: V01 == V05 index=#01, mask=0000000000000001 fgMorphTree BB01, STMT00008 (before) [000027] -AC--------- * ASG long [000026] D------N---- +--* LCL_VAR long V02 loc2 [000040] ------------ \--* SUB long [000037] ------------ +--* ADDR long [000038] -------N---- | \--* LCL_VAR ref (AX) V00 loc0 [000039] H----------- \--* CNS_INT(h) byref 0x18290002cb8 static Fseq[S_1] fgMorphTree BB01, STMT00009 (before) [000030] ------------ * RETURN int [000029] ------------ \--* CAST int <- long [000028] ------------ \--* LCL_VAR long V02 loc2 fgMorphTree BB01, STMT00009 (after) [000030] -----+------ * RETURN int [000028] C----+------ \--* LCL_VAR int V02 loc2 *************** 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..021) (return) i label target hascall newobj ----------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [000..021) (return), preds={} succs={} ***** BB01 STMT00000 (IL 0x000...0x005) [000003] -AC--+------ * ASG ref [000002] D----+-N---- +--* LCL_VAR ref V04 tmp1 [000001] --C--+------ \--* CALL help ref HELPER.CORINFO_HELP_NEWSFAST [000000] H----+------ arg0 in rcx \--* CNS_INT(h) long 0x7fff802fcd90 method ***** BB01 STMT00002 (IL 0x005... ???) [000008] -A--G+------ * ASG ref [000007] D---G+-N---- +--* LCL_VAR ref (AX) V00 loc0 [000006] -----+------ \--* LCL_VAR ref V04 tmp1 ***** BB01 STMT00003 (IL 0x006...0x00C) [000012] -AC--+------ * ASG ref [000011] D----+-N---- +--* LCL_VAR ref V05 tmp2 [000010] --C--+------ \--* CALL help ref HELPER.CORINFO_HELP_NEWSFAST [000009] H----+------ arg0 in rcx \--* CNS_INT(h) long 0x7fff802fcd90 method ***** BB01 STMT00005 (IL 0x00B... ???) [000018] -A--G+------ * ASG ref [000017] n---G+-N---- +--* IND ref [000044] H----+------ | \--* CNS_INT(h) long 0x18290002cb8 static Fseq[S_1] [000016] -----+------ \--* LCL_VAR ref V05 tmp2 ***** BB01 STMT00006 (IL ???...0x011) [000020] -A---+------ * ASG ref [000019] D----+-N---- +--* LCL_VAR ref V01 loc1 [000015] -----+------ \--* LCL_VAR ref V05 tmp2 ***** BB01 STMT00008 (IL ???... ???) [000027] -A---+------ * ASG long [000026] D----+-N---- +--* LCL_VAR long V02 loc2 [000040] -----+------ \--* SUB long [000037] -----+------ +--* ADDR long [000038] ----G+-N---- | \--* LCL_VAR ref (AX) V00 loc0 [000039] H----+------ \--* CNS_INT(h) byref 0x18290002cb8 static Fseq[S_1] ***** BB01 STMT00009 (IL 0x01F...0x020) [000030] -----+------ * RETURN int [000028] C----+------ \--* LCL_VAR int V02 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..021) (return) i label target hascall newobj ----------------------------------------------------------------------------------------------------------------------------------------- -- no profile data, so using default called count fgComputeEdgeWeights() was able to compute exact edge weights for all of the 0 edges, using 1 passes. *************** 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..021) (return) i label target hascall newobj ----------------------------------------------------------------------------------------------------------------------------------------- *************** Exception Handling table is empty *************** In fgDebugCheckBBlist *************** Finishing PHASE Create EH funclets *************** Starting PHASE Optimize layout *************** In optOptimizeLayout() *************** Exception Handling table is empty *************** In fgDebugCheckBBlist *************** 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..021) (return) i label target hascall newobj ----------------------------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist *************** 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..021) (return) i label target hascall newobj ----------------------------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist *************** Finishing PHASE Optimize layout *************** Starting PHASE Compute blocks reachability *************** In fgComputeReachability *************** In fgDebugCheckBBlist 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..021) (return) i label target hascall 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 After computing reachability: ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..021) (return) i label target hascall newobj ----------------------------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist *************** In fgComputeDoms *************** In fgDebugCheckBBlist Dominator computation start blocks (those blocks with no incoming edges): BB01 ------------------------------------------------ BBnum Dominated by ------------------------------------------------ BB01: BB01 Inside fgBuildDomTree After computing the Dominance Tree: After numbering the dominator tree: BB01: pre=01, post=01 *************** Finishing PHASE Compute blocks reachability *************** Starting PHASE Optimize loops *************** In optOptimizeLoops() *************** In fgDebugCheckBBlist *************** Finishing PHASE Optimize loops *************** Starting PHASE Clone loops *************** In optCloneLoops() *************** Finishing PHASE Clone loops *************** Starting PHASE Unroll loops *************** Finishing PHASE Unroll loops *************** Starting PHASE Mark local vars *************** In lvaMarkLocalVars() *** lvaComputeRefCounts *** *** lvaComputeRefCounts -- explicit counts *** *** marking local variables in block BB01 (weight=1 ) STMT00000 (IL 0x000...0x005) [000003] -AC--+------ * ASG ref [000002] D----+-N---- +--* LCL_VAR ref V04 tmp1 [000001] --C--+------ \--* CALL help ref HELPER.CORINFO_HELP_NEWSFAST [000000] H----+------ arg0 in rcx \--* CNS_INT(h) long 0x7fff802fcd90 method New refCnts for V04: refCnt = 1, refCntWtd = 2 STMT00002 (IL 0x005... ???) [000008] -A--G+------ * ASG ref [000007] D---G+-N---- +--* LCL_VAR ref (AX) V00 loc0 [000006] -----+------ \--* LCL_VAR ref V04 tmp1 New refCnts for V00: refCnt = 1, refCntWtd = 1 New refCnts for V04: refCnt = 2, refCntWtd = 4 STMT00003 (IL 0x006...0x00C) [000012] -AC--+------ * ASG ref [000011] D----+-N---- +--* LCL_VAR ref V05 tmp2 [000010] --C--+------ \--* CALL help ref HELPER.CORINFO_HELP_NEWSFAST [000009] H----+------ arg0 in rcx \--* CNS_INT(h) long 0x7fff802fcd90 method New refCnts for V05: refCnt = 1, refCntWtd = 2 STMT00005 (IL 0x00B... ???) [000018] -A--G+------ * ASG ref [000017] n---G+-N---- +--* IND ref [000044] H----+------ | \--* CNS_INT(h) long 0x18290002cb8 static Fseq[S_1] [000016] -----+------ \--* LCL_VAR ref V05 tmp2 New refCnts for V05: refCnt = 2, refCntWtd = 4 STMT00006 (IL ???...0x011) [000020] -A---+------ * ASG ref [000019] D----+-N---- +--* LCL_VAR ref V01 loc1 [000015] -----+------ \--* LCL_VAR ref V05 tmp2 New refCnts for V01: refCnt = 1, refCntWtd = 1 New refCnts for V05: refCnt = 3, refCntWtd = 6 STMT00008 (IL ???... ???) [000027] -A---+------ * ASG long [000026] D----+-N---- +--* LCL_VAR long V02 loc2 [000040] -----+------ \--* SUB long [000037] -----+------ +--* ADDR long [000038] ----G+-N---- | \--* LCL_VAR ref (AX) V00 loc0 [000039] H----+------ \--* CNS_INT(h) byref 0x18290002cb8 static Fseq[S_1] New refCnts for V02: refCnt = 1, refCntWtd = 1 New refCnts for V00: refCnt = 2, refCntWtd = 2 STMT00009 (IL 0x01F...0x020) [000030] -----+------ * RETURN int [000028] C----+------ \--* LCL_VAR int V02 loc2 New refCnts for V02: refCnt = 2, refCntWtd = 2 *** lvaComputeRefCounts -- implicit counts *** *************** 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 6 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..021) (return) i label target hascall newobj ----------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [000..021) (return), preds={} succs={} ***** BB01 STMT00000 (IL 0x000...0x005) N005 ( 16, 16) [000003] -AC-----R--- * ASG ref N004 ( 1, 1) [000002] D------N---- +--* LCL_VAR ref V04 tmp1 N003 ( 16, 16) [000001] --C--------- \--* CALL help ref HELPER.CORINFO_HELP_NEWSFAST N002 ( 2, 10) [000000] H----------- arg0 in rcx \--* CNS_INT(h) long 0x7fff802fcd90 method ***** BB01 STMT00002 (IL 0x005... ???) N003 ( 5, 4) [000008] -A--G---R--- * ASG ref N002 ( 3, 2) [000007] D---G--N---- +--* LCL_VAR ref (AX) V00 loc0 N001 ( 1, 1) [000006] ------------ \--* LCL_VAR ref V04 tmp1 ***** BB01 STMT00003 (IL 0x006...0x00C) N005 ( 16, 16) [000012] -AC-----R--- * ASG ref N004 ( 1, 1) [000011] D------N---- +--* LCL_VAR ref V05 tmp2 N003 ( 16, 16) [000010] --C--------- \--* CALL help ref HELPER.CORINFO_HELP_NEWSFAST N002 ( 2, 10) [000009] H----------- arg0 in rcx \--* CNS_INT(h) long 0x7fff802fcd90 method ***** BB01 STMT00005 (IL 0x00B... ???) N004 ( 6, 14) [000018] -A--G------- * ASG ref N002 ( 4, 12) [000017] n---G--N---- +--* IND ref N001 ( 2, 10) [000044] H----------- | \--* CNS_INT(h) long 0x18290002cb8 static Fseq[S_1] N003 ( 1, 1) [000016] ------------ \--* LCL_VAR ref V05 tmp2 ***** BB01 STMT00006 (IL ???...0x011) N003 ( 5, 4) [000020] -A------R--- * ASG ref N002 ( 3, 2) [000019] D------N---- +--* LCL_VAR ref V01 loc1 N001 ( 1, 1) [000015] ------------ \--* LCL_VAR ref V05 tmp2 ***** BB01 STMT00008 (IL ???... ???) N006 ( 10, 17) [000027] -A------R--- * ASG long N005 ( 3, 2) [000026] D------N---- +--* LCL_VAR long V02 loc2 N004 ( 6, 14) [000040] ------------ \--* SUB long N002 ( 3, 3) [000037] ------------ +--* ADDR long N001 ( 3, 2) [000038] ----G--N---- | \--* LCL_VAR ref (AX) V00 loc0 N003 ( 2, 10) [000039] H----------- \--* CNS_INT(h) byref 0x18290002cb8 static Fseq[S_1] ***** BB01 STMT00009 (IL 0x01F...0x020) N002 ( 4, 3) [000030] ------------ * RETURN int N001 ( 3, 2) [000028] C----------- \--* LCL_VAR int V02 loc2 ------------------------------------------------------------------------------------------------------------------- *************** Starting PHASE Build SSA representation *************** In SsaBuilder::Build() [SsaBuilder] Max block count is 2. ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..021) (return) i label target hascall newobj ----------------------------------------------------------------------------------------------------------------------------------------- *************** Exception Handling table is empty [SsaBuilder] Topologically sorted the graph. [SsaBuilder::ComputeImmediateDom] Inside fgBuildDomTree After computing the Dominance Tree: *************** In fgLocalVarLiveness() In fgLocalVarLivenessInit Tracked variable (4 out of 6) table: V05 tmp2 [ ref]: refCnt = 3, refCntWtd = 6 V04 tmp1 [ ref]: refCnt = 2, refCntWtd = 4 V02 loc2 [ long]: refCnt = 2, refCntWtd = 2 V01 loc1 [ ref]: refCnt = 1, refCntWtd = 1 *************** In fgPerBlockLocalVarLiveness() BB01 USE(0)={ } + ByrefExposed + GcHeap DEF(4)={V05 V04 V02 V01} + ByrefExposed + GcHeap ** Memory liveness computed, GcHeap states and ByrefExposed states diverge *************** In fgInterBlockLocalVarLiveness() BB liveness after fgLiveVarAnalysis(): BB01 IN (0)={} + ByrefExposed + GcHeap OUT(0)={} top level assign removing stmt with no side effects Removing statement STMT00006 (IL ???...0x011) N003 ( 5, 4) [000020] -A------R--- * ASG ref N002 ( 3, 2) [000019] D------N---- +--* LCL_VAR ref V01 loc1 N001 ( 1, 1) [000015] ------------ \--* LCL_VAR ref V05 tmp2 in BB01 as useless: *************** 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..021) (return) i label target hascall newobj ----------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [000..021) (return), preds={} succs={} ***** BB01 STMT00000 (IL 0x000...0x005) N005 ( 16, 16) [000003] -AC-----R--- * ASG ref N004 ( 1, 1) [000002] D------N---- +--* LCL_VAR ref V04 tmp1 d:2 N003 ( 16, 16) [000001] --C--------- \--* CALL help ref HELPER.CORINFO_HELP_NEWSFAST N002 ( 2, 10) [000000] H----------- arg0 in rcx \--* CNS_INT(h) long 0x7fff802fcd90 method ***** BB01 STMT00002 (IL 0x005... ???) N003 ( 5, 4) [000008] -A--G---R--- * ASG ref N002 ( 3, 2) [000007] D---G--N---- +--* LCL_VAR ref (AX) V00 loc0 N001 ( 1, 1) [000006] ------------ \--* LCL_VAR ref V04 tmp1 u:2 (last use) ***** BB01 STMT00003 (IL 0x006...0x00C) N005 ( 16, 16) [000012] -AC-----R--- * ASG ref N004 ( 1, 1) [000011] D------N---- +--* LCL_VAR ref V05 tmp2 d:2 N003 ( 16, 16) [000010] --C--------- \--* CALL help ref HELPER.CORINFO_HELP_NEWSFAST N002 ( 2, 10) [000009] H----------- arg0 in rcx \--* CNS_INT(h) long 0x7fff802fcd90 method ***** BB01 STMT00005 (IL 0x00B... ???) N004 ( 6, 14) [000018] -A--G------- * ASG ref N002 ( 4, 12) [000017] n---G--N---- +--* IND ref N001 ( 2, 10) [000044] H----------- | \--* CNS_INT(h) long 0x18290002cb8 static Fseq[S_1] N003 ( 1, 1) [000016] ------------ \--* LCL_VAR ref V05 tmp2 u:2 (last use) ***** BB01 STMT00008 (IL ???... ???) N006 ( 10, 17) [000027] -A------R--- * ASG long N005 ( 3, 2) [000026] D------N---- +--* LCL_VAR long V02 loc2 d:2 N004 ( 6, 14) [000040] ------------ \--* SUB long N002 ( 3, 3) [000037] ------------ +--* ADDR long N001 ( 3, 2) [000038] ----G--N---- | \--* LCL_VAR ref (AX) V00 loc0 N003 ( 2, 10) [000039] H----------- \--* CNS_INT(h) byref 0x18290002cb8 static Fseq[S_1] ***** BB01 STMT00009 (IL 0x01F...0x020) N002 ( 4, 3) [000030] ------------ * RETURN int N001 ( 3, 2) [000028] C----------- \--* LCL_VAR int V02 loc2 u:2 (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..021) (return) i label target hascall newobj ----------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [000..021) (return), preds={} succs={} ***** BB01 STMT00000 (IL 0x000...0x005) N005 ( 16, 16) [000003] -AC-----R--- * ASG ref N004 ( 1, 1) [000002] D------N---- +--* LCL_VAR ref V04 tmp1 d:2 N003 ( 16, 16) [000001] --C--------- \--* CALL help ref HELPER.CORINFO_HELP_NEWSFAST N002 ( 2, 10) [000000] H----------- arg0 in rcx \--* CNS_INT(h) long 0x7fff802fcd90 method ***** BB01 STMT00002 (IL 0x005... ???) N003 ( 5, 4) [000008] -A--G---R--- * ASG ref N002 ( 3, 2) [000007] D---G--N---- +--* LCL_VAR ref (AX) V00 loc0 N001 ( 1, 1) [000006] ------------ \--* LCL_VAR ref V04 tmp1 u:2 (last use) ***** BB01 STMT00003 (IL 0x006...0x00C) N005 ( 16, 16) [000012] -AC-----R--- * ASG ref N004 ( 1, 1) [000011] D------N---- +--* LCL_VAR ref V05 tmp2 d:2 N003 ( 16, 16) [000010] --C--------- \--* CALL help ref HELPER.CORINFO_HELP_NEWSFAST N002 ( 2, 10) [000009] H----------- arg0 in rcx \--* CNS_INT(h) long 0x7fff802fcd90 method ***** BB01 STMT00005 (IL 0x00B... ???) N004 ( 6, 14) [000018] -A--G------- * ASG ref N002 ( 4, 12) [000017] n---G--N---- +--* IND ref N001 ( 2, 10) [000044] H----------- | \--* CNS_INT(h) long 0x18290002cb8 static Fseq[S_1] N003 ( 1, 1) [000016] ------------ \--* LCL_VAR ref V05 tmp2 u:2 (last use) ***** BB01 STMT00008 (IL ???... ???) N006 ( 10, 17) [000027] -A------R--- * ASG long N005 ( 3, 2) [000026] D------N---- +--* LCL_VAR long V02 loc2 d:2 N004 ( 6, 14) [000040] ------------ \--* SUB long N002 ( 3, 3) [000037] ------------ +--* ADDR long N001 ( 3, 2) [000038] ----G--N---- | \--* LCL_VAR ref (AX) V00 loc0 N003 ( 2, 10) [000039] H----------- \--* CNS_INT(h) byref 0x18290002cb8 static Fseq[S_1] ***** BB01 STMT00009 (IL 0x01F...0x020) N002 ( 4, 3) [000030] ------------ * RETURN int N001 ( 3, 2) [000028] C----------- \--* LCL_VAR int V02 loc2 u:2 (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..021) (return) i label target hascall newobj ----------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [000..021) (return), preds={} succs={} ***** BB01 STMT00000 (IL 0x000...0x005) N005 ( 16, 16) [000003] -AC-----R--- * ASG ref N004 ( 1, 1) [000002] D------N---- +--* LCL_VAR ref V04 tmp1 d:2 N003 ( 16, 16) [000001] --C--------- \--* CALL help ref HELPER.CORINFO_HELP_NEWSFAST N002 ( 2, 10) [000000] H----------- arg0 in rcx \--* CNS_INT(h) long 0x7fff802fcd90 method ***** BB01 STMT00002 (IL 0x005... ???) N003 ( 5, 4) [000008] -A--G---R--- * ASG ref N002 ( 3, 2) [000007] D---G--N---- +--* LCL_VAR ref (AX) V00 loc0 N001 ( 1, 1) [000006] ------------ \--* LCL_VAR ref V04 tmp1 u:2 (last use) ***** BB01 STMT00003 (IL 0x006...0x00C) N005 ( 16, 16) [000012] -AC-----R--- * ASG ref N004 ( 1, 1) [000011] D------N---- +--* LCL_VAR ref V05 tmp2 d:2 N003 ( 16, 16) [000010] --C--------- \--* CALL help ref HELPER.CORINFO_HELP_NEWSFAST N002 ( 2, 10) [000009] H----------- arg0 in rcx \--* CNS_INT(h) long 0x7fff802fcd90 method ***** BB01 STMT00005 (IL 0x00B... ???) N004 ( 6, 14) [000018] -A--G------- * ASG ref N002 ( 4, 12) [000017] n---G--N---- +--* IND ref N001 ( 2, 10) [000044] H----------- | \--* CNS_INT(h) long 0x18290002cb8 static Fseq[S_1] N003 ( 1, 1) [000016] ------------ \--* LCL_VAR ref V05 tmp2 u:2 (last use) ***** BB01 STMT00008 (IL ???... ???) N006 ( 10, 17) [000027] -A------R--- * ASG long N005 ( 3, 2) [000026] D------N---- +--* LCL_VAR long V02 loc2 d:2 N004 ( 6, 14) [000040] ------------ \--* SUB long N002 ( 3, 3) [000037] ------------ +--* ADDR long N001 ( 3, 2) [000038] ----G--N---- | \--* LCL_VAR ref (AX) V00 loc0 N003 ( 2, 10) [000039] H----------- \--* CNS_INT(h) byref 0x18290002cb8 static Fseq[S_1] ***** BB01 STMT00009 (IL 0x01F...0x020) N002 ( 4, 3) [000030] ------------ * RETURN int N001 ( 3, 2) [000028] C----------- \--* LCL_VAR int V02 loc2 u:2 (last use) ------------------------------------------------------------------------------------------------------------------- *************** Finishing PHASE Early Value Propagation *************** Starting PHASE Do value numbering *************** In fgValueNumber() Memory Initial Value in BB01 is: $c0 The SSA definition for ByrefExposed (#1) at start of BB01 is $c0 {InitVal($80)} The SSA definition for GcHeap (#1) at start of BB01 is $c0 {InitVal($80)} ***** BB01, STMT00000(before) N005 ( 16, 16) [000003] -AC-----R--- * ASG ref N004 ( 1, 1) [000002] D------N---- +--* LCL_VAR ref V04 tmp1 d:2 N003 ( 16, 16) [000001] --C--------- \--* CALL help ref HELPER.CORINFO_HELP_NEWSFAST N002 ( 2, 10) [000000] H----------- arg0 in rcx \--* CNS_INT(h) long 0x7fff802fcd90 method N001 [000042] ARGPLACE => $100 {100} N002 [000000] CNS_INT(h) 0x7fff802fcd90 method => $140 {Hnd const: 0x00007FFF802FCD90} VN of ARGPLACE tree [000042] updated to $140 {Hnd const: 0x00007FFF802FCD90} N003 [000001] CALL help => $1c0 {JitNew($140, $180)} N004 [000002] LCL_VAR V04 tmp1 d:2 => $1c0 {JitNew($140, $180)} N005 [000003] ASG => $1c0 {JitNew($140, $180)} ***** BB01, STMT00000(after) N005 ( 16, 16) [000003] -AC-----R--- * ASG ref $1c0 N004 ( 1, 1) [000002] D------N---- +--* LCL_VAR ref V04 tmp1 d:2 $1c0 N003 ( 16, 16) [000001] --C--------- \--* CALL help ref HELPER.CORINFO_HELP_NEWSFAST $1c0 N002 ( 2, 10) [000000] H----------- arg0 in rcx \--* CNS_INT(h) long 0x7fff802fcd90 method $140 --------- ***** BB01, STMT00002(before) N003 ( 5, 4) [000008] -A--G---R--- * ASG ref N002 ( 3, 2) [000007] D---G--N---- +--* LCL_VAR ref (AX) V00 loc0 N001 ( 1, 1) [000006] ------------ \--* LCL_VAR ref V04 tmp1 u:2 (last use) N001 [000006] LCL_VAR V04 tmp1 u:2 (last use) => $1c0 {JitNew($140, $180)} fgCurMemoryVN[ByrefExposed] assigned for local assign at [000008] to VN: $200. N003 [000008] ASG => $1c0 {JitNew($140, $180)} ***** BB01, STMT00002(after) N003 ( 5, 4) [000008] -A--G---R--- * ASG ref $1c0 N002 ( 3, 2) [000007] D---G--N---- +--* LCL_VAR ref (AX) V00 loc0 N001 ( 1, 1) [000006] ------------ \--* LCL_VAR ref V04 tmp1 u:2 (last use) $1c0 --------- ***** BB01, STMT00003(before) N005 ( 16, 16) [000012] -AC-----R--- * ASG ref N004 ( 1, 1) [000011] D------N---- +--* LCL_VAR ref V05 tmp2 d:2 N003 ( 16, 16) [000010] --C--------- \--* CALL help ref HELPER.CORINFO_HELP_NEWSFAST N002 ( 2, 10) [000009] H----------- arg0 in rcx \--* CNS_INT(h) long 0x7fff802fcd90 method N001 [000043] ARGPLACE => $101 {101} N002 [000009] CNS_INT(h) 0x7fff802fcd90 method => $140 {Hnd const: 0x00007FFF802FCD90} VN of ARGPLACE tree [000043] updated to $140 {Hnd const: 0x00007FFF802FCD90} N003 [000010] CALL help => $1c1 {JitNew($140, $182)} N004 [000011] LCL_VAR V05 tmp2 d:2 => $1c1 {JitNew($140, $182)} N005 [000012] ASG => $1c1 {JitNew($140, $182)} ***** BB01, STMT00003(after) N005 ( 16, 16) [000012] -AC-----R--- * ASG ref $1c1 N004 ( 1, 1) [000011] D------N---- +--* LCL_VAR ref V05 tmp2 d:2 $1c1 N003 ( 16, 16) [000010] --C--------- \--* CALL help ref HELPER.CORINFO_HELP_NEWSFAST $1c1 N002 ( 2, 10) [000009] H----------- arg0 in rcx \--* CNS_INT(h) long 0x7fff802fcd90 method $140 --------- ***** BB01, STMT00005(before) N004 ( 6, 14) [000018] -A--G------- * ASG ref N002 ( 4, 12) [000017] n---G--N---- +--* IND ref N001 ( 2, 10) [000044] H----------- | \--* CNS_INT(h) long 0x18290002cb8 static Fseq[S_1] N003 ( 1, 1) [000016] ------------ \--* LCL_VAR ref V05 tmp2 u:2 (last use) N001 [000044] CNS_INT(h) 0x18290002cb8 static Fseq[S_1] => $141 {Hnd const: 0x0000018290002CB8} N003 [000016] LCL_VAR V05 tmp2 u:2 (last use) => $1c1 {JitNew($140, $182)} fgCurMemoryVN[GcHeap] assigned for assign-of-IND at [000018] to VN: $184. N004 [000018] ASG => $VN.Void ***** BB01, STMT00005(after) N004 ( 6, 14) [000018] -A--G------- * ASG ref $VN.Void N002 ( 4, 12) [000017] n---G--N---- +--* IND ref $1c1 N001 ( 2, 10) [000044] H----------- | \--* CNS_INT(h) long 0x18290002cb8 static Fseq[S_1] $141 N003 ( 1, 1) [000016] ------------ \--* LCL_VAR ref V05 tmp2 u:2 (last use) $1c1 --------- ***** BB01, STMT00008(before) N006 ( 10, 17) [000027] -A------R--- * ASG long N005 ( 3, 2) [000026] D------N---- +--* LCL_VAR long V02 loc2 d:2 N004 ( 6, 14) [000040] ------------ \--* SUB long N002 ( 3, 3) [000037] ------------ +--* ADDR long N001 ( 3, 2) [000038] ----G--N---- | \--* LCL_VAR ref (AX) V00 loc0 N003 ( 2, 10) [000039] H----------- \--* CNS_INT(h) byref 0x18290002cb8 static Fseq[S_1] N001 [000038] LCL_VAR V00 loc0 => $280 {ByrefExposedLoad($82, $240, $201)} N002 [000037] ADDR => $2c0 {2c0} N003 [000039] CNS_INT(h) 0x18290002cb8 static Fseq[S_1] => $141 {Hnd const: 0x0000018290002CB8} N004 [000040] SUB => $300 {SUB($2c0, $141)} N005 [000026] LCL_VAR V02 loc2 d:2 => $300 {SUB($2c0, $141)} N006 [000027] ASG => $300 {SUB($2c0, $141)} ***** BB01, STMT00008(after) N006 ( 10, 17) [000027] -A------R--- * ASG long $300 N005 ( 3, 2) [000026] D------N---- +--* LCL_VAR long V02 loc2 d:2 $300 N004 ( 6, 14) [000040] ------------ \--* SUB long $300 N002 ( 3, 3) [000037] ------------ +--* ADDR long $2c0 N001 ( 3, 2) [000038] ----G--N---- | \--* LCL_VAR ref (AX) V00 loc0 $280 N003 ( 2, 10) [000039] H----------- \--* CNS_INT(h) byref 0x18290002cb8 static Fseq[S_1] $141 --------- ***** BB01, STMT00009(before) N002 ( 4, 3) [000030] ------------ * RETURN int N001 ( 3, 2) [000028] C----------- \--* LCL_VAR int V02 loc2 u:2 (last use) VNForCastOper(int) is $83 N001 [000028] LCL_VAR V02 loc2 u:2 (last use) => $340 {Cast($300, $83)} N002 [000030] RETURN => $380 {380} ***** BB01, STMT00009(after) N002 ( 4, 3) [000030] ------------ * RETURN int $380 N001 ( 3, 2) [000028] C----------- \--* LCL_VAR int V02 loc2 u:2 (last use) $340 finish(BB01). *************** Finishing PHASE Do value numbering *************** Starting PHASE Hoist loop code *************** Finishing PHASE Hoist loop code *************** Starting PHASE VN based copy prop *************** In optVnCopyProp() Copy Assertion for BB01 curSsaName stack: { } Live vars: {} => {V04} Live vars: {V04} => {} Live vars: {} => {V05} Live vars: {V05} => {} Live vars: {} => {V02} Live vars: {V02} => {} *************** Finishing PHASE VN based copy prop *************** Starting PHASE Optimize Valnum CSEs *************** In optOptimizeCSEs() Blocks/Trees at start of optOptimizeCSE phase ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..021) (return) i label target hascall newobj ----------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [000..021) (return), preds={} succs={} ***** BB01 STMT00000 (IL 0x000...0x005) N005 ( 16, 16) [000003] -AC-----R--- * ASG ref $1c0 N004 ( 1, 1) [000002] D------N---- +--* LCL_VAR ref V04 tmp1 d:2 $1c0 N003 ( 16, 16) [000001] --C--------- \--* CALL help ref HELPER.CORINFO_HELP_NEWSFAST $1c0 N002 ( 2, 10) [000000] H----------- arg0 in rcx \--* CNS_INT(h) long 0x7fff802fcd90 method $140 ***** BB01 STMT00002 (IL 0x005... ???) N003 ( 5, 4) [000008] -A--G---R--- * ASG ref $1c0 N002 ( 3, 2) [000007] D---G--N---- +--* LCL_VAR ref (AX) V00 loc0 N001 ( 1, 1) [000006] ------------ \--* LCL_VAR ref V04 tmp1 u:2 (last use) $1c0 ***** BB01 STMT00003 (IL 0x006...0x00C) N005 ( 16, 16) [000012] -AC-----R--- * ASG ref $1c1 N004 ( 1, 1) [000011] D------N---- +--* LCL_VAR ref V05 tmp2 d:2 $1c1 N003 ( 16, 16) [000010] --C--------- \--* CALL help ref HELPER.CORINFO_HELP_NEWSFAST $1c1 N002 ( 2, 10) [000009] H----------- arg0 in rcx \--* CNS_INT(h) long 0x7fff802fcd90 method $140 ***** BB01 STMT00005 (IL 0x00B... ???) N004 ( 6, 14) [000018] -A--G------- * ASG ref $VN.Void N002 ( 4, 12) [000017] n---G--N---- +--* IND ref $1c1 N001 ( 2, 10) [000044] H----------- | \--* CNS_INT(h) long 0x18290002cb8 static Fseq[S_1] $141 N003 ( 1, 1) [000016] ------------ \--* LCL_VAR ref V05 tmp2 u:2 (last use) $1c1 ***** BB01 STMT00008 (IL ???... ???) N006 ( 10, 17) [000027] -A------R--- * ASG long $300 N005 ( 3, 2) [000026] D------N---- +--* LCL_VAR long V02 loc2 d:2 $300 N004 ( 6, 14) [000040] ------------ \--* SUB long $300 N002 ( 3, 3) [000037] ------------ +--* ADDR long $2c0 N001 ( 3, 2) [000038] ----G--N---- | \--* LCL_VAR ref (AX) V00 loc0 $280 N003 ( 2, 10) [000039] H----------- \--* CNS_INT(h) byref 0x18290002cb8 static Fseq[S_1] $141 ***** BB01 STMT00009 (IL 0x01F...0x020) N002 ( 4, 3) [000030] ------------ * RETURN int $380 N001 ( 3, 2) [000028] C----------- \--* LCL_VAR int V02 loc2 u:2 (last use) $340 ------------------------------------------------------------------------------------------------------------------- *************** In optOptimizeValnumCSEs() *************** 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..021) (return) i label target hascall newobj ----------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [000..021) (return), preds={} succs={} ***** BB01 STMT00000 (IL 0x000...0x005) N005 ( 16, 16) [000003] -AC-----R--- * ASG ref $1c0 N004 ( 1, 1) [000002] D------N---- +--* LCL_VAR ref V04 tmp1 d:2 $1c0 N003 ( 16, 16) [000001] --C--------- \--* CALL help ref HELPER.CORINFO_HELP_NEWSFAST $1c0 N002 ( 2, 10) [000000] H----------- arg0 in rcx \--* CNS_INT(h) long 0x7fff802fcd90 method $140 ***** BB01 STMT00002 (IL 0x005... ???) N003 ( 5, 4) [000008] -A--G---R--- * ASG ref $1c0 N002 ( 3, 2) [000007] D---G--N---- +--* LCL_VAR ref (AX) V00 loc0 N001 ( 1, 1) [000006] ------------ \--* LCL_VAR ref V04 tmp1 u:2 (last use) $1c0 ***** BB01 STMT00003 (IL 0x006...0x00C) N005 ( 16, 16) [000012] -AC-----R--- * ASG ref $1c1 N004 ( 1, 1) [000011] D------N---- +--* LCL_VAR ref V05 tmp2 d:2 $1c1 N003 ( 16, 16) [000010] --C--------- \--* CALL help ref HELPER.CORINFO_HELP_NEWSFAST $1c1 N002 ( 2, 10) [000009] H----------- arg0 in rcx \--* CNS_INT(h) long 0x7fff802fcd90 method $140 ***** BB01 STMT00005 (IL 0x00B... ???) N004 ( 6, 14) [000018] -A--G------- * ASG ref $VN.Void N002 ( 4, 12) [000017] n---G--N---- +--* IND ref $1c1 N001 ( 2, 10) [000044] H----------- | \--* CNS_INT(h) long 0x18290002cb8 static Fseq[S_1] $141 N003 ( 1, 1) [000016] ------------ \--* LCL_VAR ref V05 tmp2 u:2 (last use) $1c1 ***** BB01 STMT00008 (IL ???... ???) N006 ( 10, 17) [000027] -A------R--- * ASG long $300 N005 ( 3, 2) [000026] D------N---- +--* LCL_VAR long V02 loc2 d:2 $300 N004 ( 6, 14) [000040] ------------ \--* SUB long $300 N002 ( 3, 3) [000037] ------------ +--* ADDR long $2c0 N001 ( 3, 2) [000038] ----G--N---- | \--* LCL_VAR ref (AX) V00 loc0 $280 N003 ( 2, 10) [000039] H----------- \--* CNS_INT(h) byref 0x18290002cb8 static Fseq[S_1] $141 ***** BB01 STMT00009 (IL 0x01F...0x020) N002 ( 4, 3) [000030] ------------ * RETURN int $380 N001 ( 3, 2) [000028] C----------- \--* LCL_VAR int V02 loc2 u:2 (last use) $340 ------------------------------------------------------------------------------------------------------------------- *************** 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..021) (return) i label target hascall newobj ----------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [000..021) (return), preds={} succs={} ***** BB01 STMT00000 (IL 0x000...0x005) N005 ( 16, 16) [000003] -AC-----R--- * ASG ref $1c0 N004 ( 1, 1) [000002] D------N---- +--* LCL_VAR ref V04 tmp1 d:2 $1c0 N003 ( 16, 16) [000001] --C--------- \--* CALL help ref HELPER.CORINFO_HELP_NEWSFAST $1c0 N002 ( 2, 10) [000000] H----------- arg0 in rcx \--* CNS_INT(h) long 0x7fff802fcd90 method $140 ***** BB01 STMT00002 (IL 0x005... ???) N003 ( 5, 4) [000008] -A--G---R--- * ASG ref $1c0 N002 ( 3, 2) [000007] D---G--N---- +--* LCL_VAR ref (AX) V00 loc0 N001 ( 1, 1) [000006] ------------ \--* LCL_VAR ref V04 tmp1 u:2 (last use) $1c0 ***** BB01 STMT00003 (IL 0x006...0x00C) N005 ( 16, 16) [000012] -AC-----R--- * ASG ref $1c1 N004 ( 1, 1) [000011] D------N---- +--* LCL_VAR ref V05 tmp2 d:2 $1c1 N003 ( 16, 16) [000010] --C--------- \--* CALL help ref HELPER.CORINFO_HELP_NEWSFAST $1c1 N002 ( 2, 10) [000009] H----------- arg0 in rcx \--* CNS_INT(h) long 0x7fff802fcd90 method $140 ***** BB01 STMT00005 (IL 0x00B... ???) N004 ( 6, 14) [000018] -A--G------- * ASG ref $VN.Void N002 ( 4, 12) [000017] n---G--N---- +--* IND ref $1c1 N001 ( 2, 10) [000044] H----------- | \--* CNS_INT(h) long 0x18290002cb8 static Fseq[S_1] $141 N003 ( 1, 1) [000016] ------------ \--* LCL_VAR ref V05 tmp2 u:2 (last use) $1c1 ***** BB01 STMT00008 (IL ???... ???) N006 ( 10, 17) [000027] -A------R--- * ASG long $300 N005 ( 3, 2) [000026] D------N---- +--* LCL_VAR long V02 loc2 d:2 $300 N004 ( 6, 14) [000040] ------------ \--* SUB long $300 N002 ( 3, 3) [000037] ------------ +--* ADDR long $2c0 N001 ( 3, 2) [000038] ----G--N---- | \--* LCL_VAR ref (AX) V00 loc0 $280 N003 ( 2, 10) [000039] H----------- \--* CNS_INT(h) byref 0x18290002cb8 static Fseq[S_1] $141 ***** BB01 STMT00009 (IL 0x01F...0x020) N002 ( 4, 3) [000030] ------------ * RETURN int $380 N001 ( 3, 2) [000028] C----------- \--* LCL_VAR int V02 loc2 u:2 (last use) $340 ------------------------------------------------------------------------------------------------------------------- *************** 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..021) (return) i label target hascall newobj ----------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [000..021) (return), preds={} succs={} ***** BB01 STMT00000 (IL 0x000...0x005) N005 ( 16, 16) [000003] -AC-----R--- * ASG ref $1c0 N004 ( 1, 1) [000002] D------N---- +--* LCL_VAR ref V04 tmp1 d:2 $1c0 N003 ( 16, 16) [000001] --C--------- \--* CALL help ref HELPER.CORINFO_HELP_NEWSFAST $1c0 N002 ( 2, 10) [000000] H----------- arg0 in rcx \--* CNS_INT(h) long 0x7fff802fcd90 method $140 ***** BB01 STMT00002 (IL 0x005... ???) N003 ( 5, 4) [000008] -A--G---R--- * ASG ref $1c0 N002 ( 3, 2) [000007] D---G--N---- +--* LCL_VAR ref (AX) V00 loc0 N001 ( 1, 1) [000006] ------------ \--* LCL_VAR ref V04 tmp1 u:2 (last use) $1c0 ***** BB01 STMT00003 (IL 0x006...0x00C) N005 ( 16, 16) [000012] -AC-----R--- * ASG ref $1c1 N004 ( 1, 1) [000011] D------N---- +--* LCL_VAR ref V05 tmp2 d:2 $1c1 N003 ( 16, 16) [000010] --C--------- \--* CALL help ref HELPER.CORINFO_HELP_NEWSFAST $1c1 N002 ( 2, 10) [000009] H----------- arg0 in rcx \--* CNS_INT(h) long 0x7fff802fcd90 method $140 ***** BB01 STMT00005 (IL 0x00B... ???) N004 ( 6, 14) [000018] -A--G------- * ASG ref $VN.Void N002 ( 4, 12) [000017] n---G--N---- +--* IND ref $1c1 N001 ( 2, 10) [000044] H----------- | \--* CNS_INT(h) long 0x18290002cb8 static Fseq[S_1] $141 N003 ( 1, 1) [000016] ------------ \--* LCL_VAR ref V05 tmp2 u:2 (last use) $1c1 ***** BB01 STMT00008 (IL ???... ???) N006 ( 10, 17) [000027] -A------R--- * ASG long $300 N005 ( 3, 2) [000026] D------N---- +--* LCL_VAR long V02 loc2 d:2 $300 N004 ( 6, 14) [000040] ------------ \--* SUB long $300 N002 ( 3, 3) [000037] ------------ +--* ADDR long $2c0 N001 ( 3, 2) [000038] ----G--N---- | \--* LCL_VAR ref (AX) V00 loc0 $280 N003 ( 2, 10) [000039] H----------- \--* CNS_INT(h) byref 0x18290002cb8 static Fseq[S_1] $141 ***** BB01 STMT00009 (IL 0x01F...0x020) N002 ( 4, 3) [000030] ------------ * RETURN int $380 N001 ( 3, 2) [000028] C----------- \--* LCL_VAR int V02 loc2 u:2 (last use) $340 ------------------------------------------------------------------------------------------------------------------- *************** Starting PHASE Rationalize IR rewriting asg(LCL_VAR, X) to STORE_LCL_VAR(X) N005 ( 16, 16) [000003] DAC--------- * STORE_LCL_VAR ref V04 tmp1 d:2 rewriting asg(LCL_VAR, X) to STORE_LCL_VAR(X) N003 ( 5, 4) [000008] DA--G------- * STORE_LCL_VAR ref (AX) V00 loc0 rewriting asg(LCL_VAR, X) to STORE_LCL_VAR(X) N005 ( 16, 16) [000012] DAC--------- * STORE_LCL_VAR ref V05 tmp2 d:2 Rewriting GT_ADDR(GT_LCL_VAR) to GT_LCL_VAR_ADDR: N001 ( 3, 2) [000038] -------N---- t38 = LCL_VAR_ADDR byref V00 loc0 rewriting asg(LCL_VAR, X) to STORE_LCL_VAR(X) N006 ( 10, 17) [000027] DA---------- * STORE_LCL_VAR long V02 loc2 d:2 *************** 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..021) (return) i label target hascall newobj LIR ----------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [000..021) (return), preds={} succs={} [000045] ------------ IL_OFFSET void IL offset: 0x0 N002 ( 2, 10) [000000] H----------- t0 = CNS_INT(h) long 0x7fff802fcd90 method $140 /--* t0 long arg0 in rcx N003 ( 16, 16) [000001] --C--------- t1 = * CALL help ref HELPER.CORINFO_HELP_NEWSFAST $1c0 /--* t1 ref N005 ( 16, 16) [000003] DA---------- * STORE_LCL_VAR ref V04 tmp1 d:2 [000046] ------------ IL_OFFSET void IL offset: 0x5 N001 ( 1, 1) [000006] ------------ t6 = LCL_VAR ref V04 tmp1 u:2 (last use) $1c0 /--* t6 ref N003 ( 5, 4) [000008] DA--G------- * STORE_LCL_VAR ref (AX) V00 loc0 [000047] ------------ IL_OFFSET void IL offset: 0x6 N002 ( 2, 10) [000009] H----------- t9 = CNS_INT(h) long 0x7fff802fcd90 method $140 /--* t9 long arg0 in rcx N003 ( 16, 16) [000010] --C--------- t10 = * CALL help ref HELPER.CORINFO_HELP_NEWSFAST $1c1 /--* t10 ref N005 ( 16, 16) [000012] DA---------- * STORE_LCL_VAR ref V05 tmp2 d:2 [000048] ------------ IL_OFFSET void IL offset: 0xb N001 ( 2, 10) [000044] H----------- t44 = CNS_INT(h) long 0x18290002cb8 static Fseq[S_1] $141 N003 ( 1, 1) [000016] ------------ t16 = LCL_VAR ref V05 tmp2 u:2 (last use) $1c1 /--* t44 long +--* t16 ref [000049] -A--G------- * STOREIND ref N001 ( 3, 2) [000038] -------N---- t38 = LCL_VAR_ADDR byref V00 loc0 N003 ( 2, 10) [000039] H----------- t39 = CNS_INT(h) byref 0x18290002cb8 static Fseq[S_1] $141 /--* t38 byref +--* t39 byref N004 ( 6, 14) [000040] ------------ t40 = * SUB long $300 /--* t40 long N006 ( 10, 17) [000027] DA---------- * STORE_LCL_VAR long V02 loc2 d:2 [000050] ------------ IL_OFFSET void IL offset: 0x1f N001 ( 3, 2) [000028] C----------- t28 = LCL_VAR int V02 loc2 u:2 (last use) $340 /--* t28 int N002 ( 4, 3) [000030] ------------ * RETURN int $380 ------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist *************** Starting PHASE Do 'simple' lowering Bumping outgoingArgSpaceSize to 32 for call [000001] outgoingArgSpaceSize 32 sufficient for call [000010], 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..021) (return) i label target hascall newobj LIR ----------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [000..021) (return), preds={} succs={} [000045] ------------ IL_OFFSET void IL offset: 0x0 N002 ( 2, 10) [000000] H----------- t0 = CNS_INT(h) long 0x7fff802fcd90 method $140 /--* t0 long arg0 in rcx N003 ( 16, 16) [000001] --C--------- t1 = * CALL help ref HELPER.CORINFO_HELP_NEWSFAST $1c0 /--* t1 ref N005 ( 16, 16) [000003] DA---------- * STORE_LCL_VAR ref V04 tmp1 d:2 [000046] ------------ IL_OFFSET void IL offset: 0x5 N001 ( 1, 1) [000006] ------------ t6 = LCL_VAR ref V04 tmp1 u:2 (last use) $1c0 /--* t6 ref N003 ( 5, 4) [000008] DA--G------- * STORE_LCL_VAR ref (AX) V00 loc0 [000047] ------------ IL_OFFSET void IL offset: 0x6 N002 ( 2, 10) [000009] H----------- t9 = CNS_INT(h) long 0x7fff802fcd90 method $140 /--* t9 long arg0 in rcx N003 ( 16, 16) [000010] --C--------- t10 = * CALL help ref HELPER.CORINFO_HELP_NEWSFAST $1c1 /--* t10 ref N005 ( 16, 16) [000012] DA---------- * STORE_LCL_VAR ref V05 tmp2 d:2 [000048] ------------ IL_OFFSET void IL offset: 0xb N001 ( 2, 10) [000044] H----------- t44 = CNS_INT(h) long 0x18290002cb8 static Fseq[S_1] $141 N003 ( 1, 1) [000016] ------------ t16 = LCL_VAR ref V05 tmp2 u:2 (last use) $1c1 /--* t44 long +--* t16 ref [000049] -A--G------- * STOREIND ref N001 ( 3, 2) [000038] -------N---- t38 = LCL_VAR_ADDR byref V00 loc0 N003 ( 2, 10) [000039] H----------- t39 = CNS_INT(h) byref 0x18290002cb8 static Fseq[S_1] $141 /--* t38 byref +--* t39 byref N004 ( 6, 14) [000040] ------------ t40 = * SUB long $300 /--* t40 long N006 ( 10, 17) [000027] DA---------- * STORE_LCL_VAR long V02 loc2 d:2 [000050] ------------ IL_OFFSET void IL offset: 0x1f N001 ( 3, 2) [000028] C----------- t28 = LCL_VAR int V02 loc2 u:2 (last use) $340 /--* t28 int N002 ( 4, 3) [000030] ------------ * RETURN int $380 ------------------------------------------------------------------------------------------------------------------- *************** Starting PHASE Lowering nodeinfo lowering call (before): N002 ( 2, 10) [000000] H----------- t0 = CNS_INT(h) long 0x7fff802fcd90 method $140 /--* t0 long arg0 in rcx N003 ( 16, 16) [000001] --C--------- t1 = * CALL help ref HELPER.CORINFO_HELP_NEWSFAST $1c0 objp: ====== args: ====== lowering arg : N001 ( 0, 0) [000042] ----------L- * ARGPLACE long $140 late: ====== lowering arg : N002 ( 2, 10) [000000] H----------- * CNS_INT(h) long 0x7fff802fcd90 method $140 new node is : [000051] ------------ * PUTARG_REG long REG rcx lowering call (after): N002 ( 2, 10) [000000] H----------- t0 = CNS_INT(h) long 0x7fff802fcd90 method $140 /--* t0 long [000051] ------------ t51 = * PUTARG_REG long REG rcx /--* t51 long arg0 in rcx N003 ( 16, 16) [000001] --C--------- t1 = * CALL help ref HELPER.CORINFO_HELP_NEWSFAST $1c0 lowering store lcl var/field (before): N002 ( 2, 10) [000000] H----------- t0 = CNS_INT(h) long 0x7fff802fcd90 method $140 /--* t0 long [000051] ------------ t51 = * PUTARG_REG long REG rcx /--* t51 long arg0 in rcx N003 ( 16, 16) [000001] --C--------- t1 = * CALL help ref HELPER.CORINFO_HELP_NEWSFAST $1c0 /--* t1 ref N005 ( 16, 16) [000003] DA---------- * STORE_LCL_VAR ref V04 tmp1 d:2 lowering store lcl var/field (after): N002 ( 2, 10) [000000] H----------- t0 = CNS_INT(h) long 0x7fff802fcd90 method $140 /--* t0 long [000051] ------------ t51 = * PUTARG_REG long REG rcx /--* t51 long arg0 in rcx N003 ( 16, 16) [000001] --C--------- t1 = * CALL help ref HELPER.CORINFO_HELP_NEWSFAST $1c0 /--* t1 ref N005 ( 16, 16) [000003] DA---------- * STORE_LCL_VAR ref V04 tmp1 d:2 lowering store lcl var/field (before): N001 ( 1, 1) [000006] ------------ t6 = LCL_VAR ref V04 tmp1 u:2 (last use) $1c0 /--* t6 ref N003 ( 5, 4) [000008] DA--G------- * STORE_LCL_VAR ref (AX) V00 loc0 lowering store lcl var/field (after): N001 ( 1, 1) [000006] ------------ t6 = LCL_VAR ref V04 tmp1 u:2 (last use) $1c0 /--* t6 ref N003 ( 5, 4) [000008] DA--G------- * STORE_LCL_VAR ref (AX) V00 loc0 lowering call (before): N002 ( 2, 10) [000009] H----------- t9 = CNS_INT(h) long 0x7fff802fcd90 method $140 /--* t9 long arg0 in rcx N003 ( 16, 16) [000010] --C--------- t10 = * CALL help ref HELPER.CORINFO_HELP_NEWSFAST $1c1 objp: ====== args: ====== lowering arg : N001 ( 0, 0) [000043] ----------L- * ARGPLACE long $140 late: ====== lowering arg : N002 ( 2, 10) [000009] H----------- * CNS_INT(h) long 0x7fff802fcd90 method $140 new node is : [000052] ------------ * PUTARG_REG long REG rcx lowering call (after): N002 ( 2, 10) [000009] H----------- t9 = CNS_INT(h) long 0x7fff802fcd90 method $140 /--* t9 long [000052] ------------ t52 = * PUTARG_REG long REG rcx /--* t52 long arg0 in rcx N003 ( 16, 16) [000010] --C--------- t10 = * CALL help ref HELPER.CORINFO_HELP_NEWSFAST $1c1 lowering store lcl var/field (before): N002 ( 2, 10) [000009] H----------- t9 = CNS_INT(h) long 0x7fff802fcd90 method $140 /--* t9 long [000052] ------------ t52 = * PUTARG_REG long REG rcx /--* t52 long arg0 in rcx N003 ( 16, 16) [000010] --C--------- t10 = * CALL help ref HELPER.CORINFO_HELP_NEWSFAST $1c1 /--* t10 ref N005 ( 16, 16) [000012] DA---------- * STORE_LCL_VAR ref V05 tmp2 d:2 lowering store lcl var/field (after): N002 ( 2, 10) [000009] H----------- t9 = CNS_INT(h) long 0x7fff802fcd90 method $140 /--* t9 long [000052] ------------ t52 = * PUTARG_REG long REG rcx /--* t52 long arg0 in rcx N003 ( 16, 16) [000010] --C--------- t10 = * CALL help ref HELPER.CORINFO_HELP_NEWSFAST $1c1 /--* t10 ref N005 ( 16, 16) [000012] DA---------- * STORE_LCL_VAR ref V05 tmp2 d:2 lowering store lcl var/field (before): N001 ( 3, 2) [000038] -------N---- t38 = LCL_VAR_ADDR byref V00 loc0 N003 ( 2, 10) [000039] H----------- t39 = CNS_INT(h) byref 0x18290002cb8 static Fseq[S_1] $141 /--* t38 byref +--* t39 byref N004 ( 6, 14) [000040] ------------ t40 = * SUB long $300 /--* t40 long N006 ( 10, 17) [000027] DA---------- * STORE_LCL_VAR long V02 loc2 d:2 lowering store lcl var/field (after): N001 ( 3, 2) [000038] -------N---- t38 = LCL_VAR_ADDR byref V00 loc0 N003 ( 2, 10) [000039] H----------- t39 = CNS_INT(h) byref 0x18290002cb8 static Fseq[S_1] $141 /--* t38 byref +--* t39 byref N004 ( 6, 14) [000040] ------------ t40 = * SUB long $300 /--* t40 long N006 ( 10, 17) [000027] DA---------- * STORE_LCL_VAR long V02 loc2 d:2 lowering GT_RETURN N002 ( 4, 3) [000030] ------------ * RETURN int $380 ============Lower has completed modifying nodes. ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..021) (return) i label target hascall newobj LIR ----------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [000..021) (return), preds={} succs={} [000045] ------------ IL_OFFSET void IL offset: 0x0 N002 ( 2, 10) [000000] H----------- t0 = CNS_INT(h) long 0x7fff802fcd90 method $140 /--* t0 long [000051] ------------ t51 = * PUTARG_REG long REG rcx /--* t51 long arg0 in rcx N003 ( 16, 16) [000001] --C--------- t1 = * CALL help ref HELPER.CORINFO_HELP_NEWSFAST $1c0 /--* t1 ref N005 ( 16, 16) [000003] DA---------- * STORE_LCL_VAR ref V04 tmp1 d:2 [000046] ------------ IL_OFFSET void IL offset: 0x5 N001 ( 1, 1) [000006] ------------ t6 = LCL_VAR ref V04 tmp1 u:2 (last use) $1c0 /--* t6 ref N003 ( 5, 4) [000008] DA--G------- * STORE_LCL_VAR ref (AX) V00 loc0 [000047] ------------ IL_OFFSET void IL offset: 0x6 N002 ( 2, 10) [000009] H----------- t9 = CNS_INT(h) long 0x7fff802fcd90 method $140 /--* t9 long [000052] ------------ t52 = * PUTARG_REG long REG rcx /--* t52 long arg0 in rcx N003 ( 16, 16) [000010] --C--------- t10 = * CALL help ref HELPER.CORINFO_HELP_NEWSFAST $1c1 /--* t10 ref N005 ( 16, 16) [000012] DA---------- * STORE_LCL_VAR ref V05 tmp2 d:2 [000048] ------------ IL_OFFSET void IL offset: 0xb N001 ( 2, 10) [000044] H----------- t44 = CNS_INT(h) long 0x18290002cb8 static Fseq[S_1] $141 N003 ( 1, 1) [000016] ------------ t16 = LCL_VAR ref V05 tmp2 u:2 (last use) $1c1 /--* t44 long +--* t16 ref [000049] -A--G------- * STOREIND ref N001 ( 3, 2) [000038] -------N---- t38 = LCL_VAR_ADDR byref V00 loc0 N003 ( 2, 10) [000039] H----------- t39 = CNS_INT(h) byref 0x18290002cb8 static Fseq[S_1] $141 /--* t38 byref +--* t39 byref N004 ( 6, 14) [000040] ------------ t40 = * SUB long $300 /--* t40 long N006 ( 10, 17) [000027] DA---------- * STORE_LCL_VAR long V02 loc2 d:2 [000050] ------------ IL_OFFSET void IL offset: 0x1f N001 ( 3, 2) [000028] C----------- t28 = LCL_VAR int V02 loc2 u:2 (last use) $340 /--* t28 int N002 ( 4, 3) [000030] ------------ * RETURN int $380 ------------------------------------------------------------------------------------------------------------------- *** lvaComputeRefCounts *** *** lvaComputeRefCounts -- explicit counts *** New refCnts for V04: refCnt = 1, refCntWtd = 2 New refCnts for V04: refCnt = 2, refCntWtd = 4 New refCnts for V00: refCnt = 1, refCntWtd = 1 New refCnts for V05: refCnt = 1, refCntWtd = 2 New refCnts for V05: refCnt = 2, refCntWtd = 4 New refCnts for V00: refCnt = 2, refCntWtd = 2 New refCnts for V02: refCnt = 1, refCntWtd = 1 New refCnts for V02: refCnt = 2, refCntWtd = 2 *** lvaComputeRefCounts -- implicit counts *** *************** In fgLocalVarLiveness() ; Initial local variable assignments ; ; V00 loc0 ref do-not-enreg[X] addr-exposed ld-addr-op class-hnd ; V01 loc1 ref class-hnd exact ; V02 loc2 long ; V03 OutArgs lclBlk <32> "OutgoingArgSpace" ; V04 tmp1 ref class-hnd exact "NewObj constructor temp" ; V05 tmp2 ref class-hnd exact "NewObj constructor temp" In fgLocalVarLivenessInit Tracked variable (3 out of 6) table: V04 tmp1 [ ref]: refCnt = 2, refCntWtd = 4 V05 tmp2 [ ref]: refCnt = 2, refCntWtd = 4 V02 loc2 [ long]: refCnt = 2, refCntWtd = 2 *************** In fgPerBlockLocalVarLiveness() BB01 USE(0)={ } + ByrefExposed DEF(3)={V04 V05 V02} + ByrefExposed ** Memory liveness computed, GcHeap states and ByrefExposed states diverge *************** In fgInterBlockLocalVarLiveness() BB liveness after fgLiveVarAnalysis(): BB01 IN (0)={} + ByrefExposed 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..021) (return) i label target hascall newobj LIR ----------------------------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist *** lvaComputeRefCounts *** *** lvaComputeRefCounts -- explicit counts *** New refCnts for V04: refCnt = 1, refCntWtd = 2 New refCnts for V04: refCnt = 2, refCntWtd = 4 New refCnts for V00: refCnt = 1, refCntWtd = 1 New refCnts for V05: refCnt = 1, refCntWtd = 2 New refCnts for V05: refCnt = 2, refCntWtd = 4 New refCnts for V00: refCnt = 2, refCntWtd = 2 New refCnts for V02: refCnt = 1, refCntWtd = 1 New refCnts for V02: refCnt = 2, refCntWtd = 2 *** lvaComputeRefCounts -- implicit counts *** *************** 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..021) (return) i label target hascall newobj LIR ----------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [000..021) (return), preds={} succs={} [000045] ------------ IL_OFFSET void IL offset: 0x0 N002 ( 2, 10) [000000] H----------- t0 = CNS_INT(h) long 0x7fff802fcd90 method $140 /--* t0 long [000051] ------------ t51 = * PUTARG_REG long REG rcx /--* t51 long arg0 in rcx N003 ( 16, 16) [000001] --C--------- t1 = * CALL help ref HELPER.CORINFO_HELP_NEWSFAST $1c0 /--* t1 ref N005 ( 16, 16) [000003] DA---------- * STORE_LCL_VAR ref V04 tmp1 d:2 [000046] ------------ IL_OFFSET void IL offset: 0x5 N001 ( 1, 1) [000006] ------------ t6 = LCL_VAR ref V04 tmp1 u:2 (last use) $1c0 /--* t6 ref N003 ( 5, 4) [000008] DA--G------- * STORE_LCL_VAR ref (AX) V00 loc0 [000047] ------------ IL_OFFSET void IL offset: 0x6 N002 ( 2, 10) [000009] H----------- t9 = CNS_INT(h) long 0x7fff802fcd90 method $140 /--* t9 long [000052] ------------ t52 = * PUTARG_REG long REG rcx /--* t52 long arg0 in rcx N003 ( 16, 16) [000010] --C--------- t10 = * CALL help ref HELPER.CORINFO_HELP_NEWSFAST $1c1 /--* t10 ref N005 ( 16, 16) [000012] DA---------- * STORE_LCL_VAR ref V05 tmp2 d:2 [000048] ------------ IL_OFFSET void IL offset: 0xb N001 ( 2, 10) [000044] H----------- t44 = CNS_INT(h) long 0x18290002cb8 static Fseq[S_1] $141 N003 ( 1, 1) [000016] ------------ t16 = LCL_VAR ref V05 tmp2 u:2 (last use) $1c1 /--* t44 long +--* t16 ref [000049] -A--G------- * STOREIND ref N001 ( 3, 2) [000038] -------N---- t38 = LCL_VAR_ADDR byref V00 loc0 N003 ( 2, 10) [000039] H----------- t39 = CNS_INT(h) byref 0x18290002cb8 static Fseq[S_1] $141 /--* t38 byref +--* t39 byref N004 ( 6, 14) [000040] ------------ t40 = * SUB long $300 /--* t40 long N006 ( 10, 17) [000027] DA---------- * STORE_LCL_VAR long V02 loc2 d:2 [000050] ------------ IL_OFFSET void IL offset: 0x1f N001 ( 3, 2) [000028] C----------- t28 = LCL_VAR int V02 loc2 u:2 (last use) $340 /--* t28 int N002 ( 4, 3) [000030] ------------ * RETURN int $380 ------------------------------------------------------------------------------------------------------------------- *************** 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..021) (return) i label target hascall newobj LIR ----------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [000..021) (return), preds={} succs={} [000045] ------------ IL_OFFSET void IL offset: 0x0 N002 ( 2, 10) [000000] H----------- t0 = CNS_INT(h) long 0x7fff802fcd90 method $140 /--* t0 long [000051] ------------ t51 = * PUTARG_REG long REG rcx /--* t51 long arg0 in rcx N003 ( 16, 16) [000001] --C--------- t1 = * CALL help ref HELPER.CORINFO_HELP_NEWSFAST $1c0 /--* t1 ref N005 ( 16, 16) [000003] DA---------- * STORE_LCL_VAR ref V04 tmp1 d:2 [000046] ------------ IL_OFFSET void IL offset: 0x5 N001 ( 1, 1) [000006] ------------ t6 = LCL_VAR ref V04 tmp1 u:2 (last use) $1c0 /--* t6 ref N003 ( 5, 4) [000008] DA--G------- * STORE_LCL_VAR ref (AX) V00 loc0 [000047] ------------ IL_OFFSET void IL offset: 0x6 N002 ( 2, 10) [000009] H----------- t9 = CNS_INT(h) long 0x7fff802fcd90 method $140 /--* t9 long [000052] ------------ t52 = * PUTARG_REG long REG rcx /--* t52 long arg0 in rcx N003 ( 16, 16) [000010] --C--------- t10 = * CALL help ref HELPER.CORINFO_HELP_NEWSFAST $1c1 /--* t10 ref N005 ( 16, 16) [000012] DA---------- * STORE_LCL_VAR ref V05 tmp2 d:2 [000048] ------------ IL_OFFSET void IL offset: 0xb N001 ( 2, 10) [000044] H----------- t44 = CNS_INT(h) long 0x18290002cb8 static Fseq[S_1] $141 N003 ( 1, 1) [000016] ------------ t16 = LCL_VAR ref V05 tmp2 u:2 (last use) $1c1 /--* t44 long +--* t16 ref [000049] -A--G------- * STOREIND ref N001 ( 3, 2) [000038] -------N---- t38 = LCL_VAR_ADDR byref V00 loc0 N003 ( 2, 10) [000039] H----------- t39 = CNS_INT(h) byref 0x18290002cb8 static Fseq[S_1] $141 /--* t38 byref +--* t39 byref N004 ( 6, 14) [000040] ------------ t40 = * SUB long $300 /--* t40 long N006 ( 10, 17) [000027] DA---------- * STORE_LCL_VAR long V02 loc2 d:2 [000050] ------------ IL_OFFSET void IL offset: 0x1f N001 ( 3, 2) [000028] C----------- t28 = LCL_VAR int V02 loc2 u:2 (last use) $340 /--* t28 int N002 ( 4, 3) [000030] ------------ * RETURN int $380 ------------------------------------------------------------------------------------------------------------------- *************** 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 {} {V02 V04 V05} {} {} Interval 0: long RefPositions {} physReg:NA Preferences=[allInt] Interval 0: (V02) long RefPositions {} physReg:NA Preferences=[allInt] Interval 1: ref RefPositions {} physReg:NA Preferences=[allInt] Interval 1: (V04) ref RefPositions {} physReg:NA Preferences=[allInt] Interval 2: ref RefPositions {} physReg:NA Preferences=[allInt] Interval 2: (V05) ref RefPositions {} physReg:NA Preferences=[allInt] FP callee save candidate vars: None floatVarCount = 0; hasLoops = 0, singleExit = 1 TUPLE STYLE DUMP BEFORE LSRA LSRA Block Sequence: BB01( 1 ) BB01 [000..021) (return), preds={} succs={} ===== N000. IL_OFFSET IL offset: 0x0 N002. t0 = CNS_INT(h) 0x7fff802fcd90 method N000. t51 = PUTARG_REG; t0 N003. t1 = CALL help; t51 N005. V04(t3); t1 N000. IL_OFFSET IL offset: 0x5 N001. V04(t6*) N003. V00 MEM; t6* N000. IL_OFFSET IL offset: 0x6 N002. t9 = CNS_INT(h) 0x7fff802fcd90 method N000. t52 = PUTARG_REG; t9 N003. t10 = CALL help; t52 N005. V05(t12); t10 N000. IL_OFFSET IL offset: 0xb N001. t44 = CNS_INT(h) 0x18290002cb8 static Fseq[S_1] N003. V05(t16*) N000. STOREIND ; t44,t16* N001. t38 = LCL_VAR_ADDR V00 loc0 N003. t39 = CNS_INT(h) 0x18290002cb8 static Fseq[S_1] N004. t40 = SUB ; t38,t39 N006. V02(t27); t40 N000. IL_OFFSET IL offset: 0x1f N001. V02(t28*) N002. RETURN ; t28* buildIntervals second part ======== NEW BLOCK BB01 DefList: { } N003 (???,???) [000045] ------------ * IL_OFFSET void IL offset: 0x0 REG NA DefList: { } N005 ( 2, 10) [000000] H----------- * CNS_INT(h) long 0x7fff802fcd90 method REG NA $140 Interval 3: long RefPositions {} physReg:NA Preferences=[allInt] CNS_INT BB01 regmask=[allInt] minReg=1> DefList: { N005.t0. CNS_INT } N007 (???,???) [000051] ------------ * PUTARG_REG long REG rcx BB01 regmask=[rcx] minReg=1> BB01 regmask=[rcx] minReg=1 last fixed> Interval 4: long RefPositions {} physReg:NA Preferences=[allInt] BB01 regmask=[rcx] minReg=1> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed> DefList: { N007.t51. PUTARG_REG } N009 ( 16, 16) [000001] --C--------- * CALL help ref HELPER.CORINFO_HELP_NEWSFAST REG NA $1c0 BB01 regmask=[rcx] minReg=1> BB01 regmask=[rcx] minReg=1 last fixed> BB01 regmask=[rax] minReg=1> BB01 regmask=[rcx] minReg=1> BB01 regmask=[rdx] minReg=1> BB01 regmask=[r8] minReg=1> BB01 regmask=[r9] minReg=1> BB01 regmask=[r10] minReg=1> BB01 regmask=[r11] minReg=1> Interval 5: ref RefPositions {} physReg:NA Preferences=[allInt] BB01 regmask=[rax] minReg=1> CALL BB01 regmask=[rax] minReg=1 fixed> DefList: { N009.t1. CALL } N011 ( 16, 16) [000003] DA---------- * STORE_LCL_VAR ref V04 tmp1 d:2 NA REG NA BB01 regmask=[allInt] minReg=1 last> Assigning related to STORE_LCL_VAR BB01 regmask=[allInt] minReg=1 last> DefList: { } N013 (???,???) [000046] ------------ * IL_OFFSET void IL offset: 0x5 REG NA DefList: { } N015 ( 1, 1) [000006] ------------ * LCL_VAR ref V04 tmp1 u:2 NA (last use) REG NA $1c0 DefList: { } N017 ( 5, 4) [000008] DA--G------- * STORE_LCL_VAR ref (AX) V00 loc0 NA REG NA LCL_VAR BB01 regmask=[allInt] minReg=1 last> DefList: { } N019 (???,???) [000047] ------------ * IL_OFFSET void IL offset: 0x6 REG NA DefList: { } N021 ( 2, 10) [000009] H----------- * CNS_INT(h) long 0x7fff802fcd90 method REG NA $140 Interval 6: long RefPositions {} physReg:NA Preferences=[allInt] CNS_INT BB01 regmask=[allInt] minReg=1> DefList: { N021.t9. CNS_INT } N023 (???,???) [000052] ------------ * PUTARG_REG long REG rcx BB01 regmask=[rcx] minReg=1> BB01 regmask=[rcx] minReg=1 last fixed> Interval 7: long RefPositions {} physReg:NA Preferences=[allInt] BB01 regmask=[rcx] minReg=1> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed> DefList: { N023.t52. PUTARG_REG } N025 ( 16, 16) [000010] --C--------- * CALL help ref HELPER.CORINFO_HELP_NEWSFAST REG NA $1c1 BB01 regmask=[rcx] minReg=1> BB01 regmask=[rcx] minReg=1 last fixed> BB01 regmask=[rax] minReg=1> BB01 regmask=[rcx] minReg=1> BB01 regmask=[rdx] minReg=1> BB01 regmask=[r8] minReg=1> BB01 regmask=[r9] minReg=1> BB01 regmask=[r10] minReg=1> BB01 regmask=[r11] minReg=1> Interval 8: ref RefPositions {} physReg:NA Preferences=[allInt] BB01 regmask=[rax] minReg=1> CALL BB01 regmask=[rax] minReg=1 fixed> DefList: { N025.t10. CALL } N027 ( 16, 16) [000012] DA---------- * STORE_LCL_VAR ref V05 tmp2 d:2 NA REG NA BB01 regmask=[allInt] minReg=1 last> Assigning related to STORE_LCL_VAR BB01 regmask=[allInt] minReg=1 last> DefList: { } N029 (???,???) [000048] ------------ * IL_OFFSET void IL offset: 0xb REG NA DefList: { } N031 ( 2, 10) [000044] H----------- * CNS_INT(h) long 0x18290002cb8 static Fseq[S_1] REG NA $141 Interval 9: long RefPositions {} physReg:NA Preferences=[allInt] CNS_INT BB01 regmask=[allInt] minReg=1> DefList: { N031.t44. CNS_INT } N033 ( 1, 1) [000016] ------------ * LCL_VAR ref V05 tmp2 u:2 NA (last use) REG NA $1c1 DefList: { N031.t44. CNS_INT } N035 (???,???) [000049] -A--G------- * STOREIND ref REG NA BB01 regmask=[rcx] minReg=1> BB01 regmask=[rcx] minReg=1 last fixed> BB01 regmask=[rdx] minReg=1> LCL_VAR BB01 regmask=[rdx] minReg=1 last fixed> BB01 regmask=[rax] minReg=1> BB01 regmask=[rcx] minReg=1> BB01 regmask=[rdx] minReg=1> BB01 regmask=[r8] minReg=1> BB01 regmask=[r9] minReg=1> BB01 regmask=[r10] minReg=1> BB01 regmask=[r11] minReg=1> BB01 regmask=[mm0] minReg=1> BB01 regmask=[mm1] minReg=1> BB01 regmask=[mm2] minReg=1> BB01 regmask=[mm3] minReg=1> BB01 regmask=[mm4] minReg=1> BB01 regmask=[mm5] minReg=1> DefList: { } N037 ( 3, 2) [000038] -------N---- * LCL_VAR_ADDR byref V00 loc0 NA REG NA Interval 10: byref RefPositions {} physReg:NA Preferences=[allInt] LCL_VAR_ADDR BB01 regmask=[allInt] minReg=1> DefList: { N037.t38. LCL_VAR_ADDR } N039 ( 2, 10) [000039] H----------- * CNS_INT(h) byref 0x18290002cb8 static Fseq[S_1] REG NA $141 Interval 11: byref RefPositions {} physReg:NA Preferences=[allInt] CNS_INT BB01 regmask=[allInt] minReg=1> DefList: { N037.t38. LCL_VAR_ADDR; N039.t39. CNS_INT } N041 ( 6, 14) [000040] ------------ * SUB long REG NA $300 BB01 regmask=[allInt] minReg=1 last> BB01 regmask=[allInt] minReg=1 last> Interval 12: long RefPositions {} physReg:NA Preferences=[allInt] SUB BB01 regmask=[allInt] minReg=1> Assigning related to DefList: { N041.t40. SUB } N043 ( 10, 17) [000027] DA---------- * STORE_LCL_VAR long V02 loc2 d:2 NA REG NA BB01 regmask=[allInt] minReg=1 last> Assigning related to STORE_LCL_VAR BB01 regmask=[allInt] minReg=1 last> DefList: { } N045 (???,???) [000050] ------------ * IL_OFFSET void IL offset: 0x1f REG NA DefList: { } N047 ( 3, 2) [000028] C----------- * LCL_VAR int V02 loc2 u:2 NA (last use) REG NA $340 DefList: { } N049 ( 4, 3) [000030] ------------ * RETURN int REG NA $380 BB01 regmask=[rax] minReg=1> LCL_VAR BB01 regmask=[rax] minReg=1 last fixed> CHECKING LAST USES for BB01, liveout={} ============================== use: {} def: {V02 V04 V05} Linear scan intervals BEFORE VALIDATING INTERVALS: Interval 0: (V02) long RefPositions {#62@44 #64@49} physReg:NA Preferences=[rax] Interval 1: (V04) ref RefPositions {#18@12 #19@17} physReg:NA Preferences=[allInt] Interval 2: (V05) ref RefPositions {#37@28 #42@35} physReg:NA Preferences=[rdx] Interval 3: long (constant) RefPositions {#1@6 #3@7} physReg:NA Preferences=[rcx] Interval 4: long RefPositions {#5@8 #7@9} physReg:NA Preferences=[rcx] Interval 5: ref RefPositions {#16@10 #17@11} physReg:NA Preferences=[rax] RelatedInterval Interval 6: long (constant) RefPositions {#20@22 #22@23} physReg:NA Preferences=[rcx] Interval 7: long RefPositions {#24@24 #26@25} physReg:NA Preferences=[rcx] Interval 8: ref RefPositions {#35@26 #36@27} physReg:NA Preferences=[rax] RelatedInterval Interval 9: long (constant) RefPositions {#38@32 #40@35} physReg:NA Preferences=[rcx] Interval 10: byref RefPositions {#56@38 #58@41} physReg:NA Preferences=[allInt] RelatedInterval Interval 11: byref (constant) RefPositions {#57@40 #59@41} physReg:NA Preferences=[allInt] Interval 12: long (interfering uses) RefPositions {#60@42 #61@43} physReg:NA Preferences=[allInt] RelatedInterval ------------ REFPOSITIONS BEFORE VALIDATING INTERVALS: ------------ CNS_INT BB01 regmask=[rcx] minReg=1> BB01 regmask=[rcx] minReg=1> BB01 regmask=[rcx] minReg=1 last fixed> BB01 regmask=[rcx] minReg=1> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed> BB01 regmask=[rcx] minReg=1> BB01 regmask=[rcx] minReg=1 last fixed> BB01 regmask=[rax] minReg=1 last> BB01 regmask=[rcx] minReg=1 last> BB01 regmask=[rdx] minReg=1 last> BB01 regmask=[r8] minReg=1 last> BB01 regmask=[r9] minReg=1 last> BB01 regmask=[r10] minReg=1 last> BB01 regmask=[r11] minReg=1 last> BB01 regmask=[rax] minReg=1> CALL BB01 regmask=[rax] minReg=1 fixed> BB01 regmask=[allInt] minReg=1 last> STORE_LCL_VAR BB01 regmask=[allInt] minReg=1> LCL_VAR BB01 regmask=[allInt] minReg=1 last> CNS_INT BB01 regmask=[rcx] minReg=1> BB01 regmask=[rcx] minReg=1> BB01 regmask=[rcx] minReg=1 last fixed> BB01 regmask=[rcx] minReg=1> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed> BB01 regmask=[rcx] minReg=1> BB01 regmask=[rcx] minReg=1 last fixed> BB01 regmask=[rax] minReg=1 last> BB01 regmask=[rcx] minReg=1 last> BB01 regmask=[rdx] minReg=1 last> BB01 regmask=[r8] minReg=1 last> BB01 regmask=[r9] minReg=1 last> BB01 regmask=[r10] minReg=1 last> BB01 regmask=[r11] minReg=1 last> BB01 regmask=[rax] minReg=1> CALL BB01 regmask=[rax] minReg=1 fixed> BB01 regmask=[allInt] minReg=1 last> STORE_LCL_VAR BB01 regmask=[allInt] minReg=1> CNS_INT BB01 regmask=[rcx] minReg=1> BB01 regmask=[rcx] minReg=1> BB01 regmask=[rcx] minReg=1 last fixed> BB01 regmask=[rdx] minReg=1> LCL_VAR BB01 regmask=[rdx] minReg=1 last fixed> BB01 regmask=[rax] minReg=1 last> BB01 regmask=[rcx] minReg=1 last> BB01 regmask=[rdx] minReg=1 last> BB01 regmask=[r8] minReg=1 last> BB01 regmask=[r9] minReg=1 last> BB01 regmask=[r10] minReg=1 last> BB01 regmask=[r11] minReg=1 last> BB01 regmask=[mm0] minReg=1 last> BB01 regmask=[mm1] minReg=1 last> BB01 regmask=[mm2] minReg=1 last> BB01 regmask=[mm3] minReg=1 last> BB01 regmask=[mm4] minReg=1 last> BB01 regmask=[mm5] minReg=1 last> LCL_VAR_ADDR BB01 regmask=[allInt] minReg=1> CNS_INT BB01 regmask=[allInt] minReg=1> BB01 regmask=[allInt] minReg=1 last> BB01 regmask=[allInt] minReg=1 last delay regOptional> SUB BB01 regmask=[allInt] minReg=1> BB01 regmask=[allInt] minReg=1 last> STORE_LCL_VAR BB01 regmask=[allInt] minReg=1> BB01 regmask=[rax] minReg=1> LCL_VAR BB01 regmask=[rax] minReg=1 last fixed> ----------------- STORE_LCL_VAR BB01 regmask=[allInt] minReg=1> LCL_VAR BB01 regmask=[allInt] minReg=1 last> ----------------- STORE_LCL_VAR BB01 regmask=[allInt] minReg=1> LCL_VAR BB01 regmask=[rdx] minReg=1 last fixed> ----------------- STORE_LCL_VAR BB01 regmask=[allInt] minReg=1> LCL_VAR BB01 regmask=[rax] minReg=1 last fixed> TUPLE STYLE DUMP WITH REF POSITIONS Incoming Parameters: BB01 [000..021) (return), preds={} succs={} ===== N003. IL_OFFSET IL offset: 0x0 N005. CNS_INT(h) 0x7fff802fcd90 method Def:(#1) N007. PUTARG_REG Use:(#3) Fixed:rcx(#2) * Def:(#5) rcx N009. CALL help Use:(#7) Fixed:rcx(#6) * Kill: rax rcx rdx r8 r9 r10 r11 Def:(#16) rax Pref: N011. V04(L1) Use:(#17) * Def:(#18) N013. IL_OFFSET IL offset: 0x5 N015. V04(L1) N017. V00 MEM Use:(#19) * N019. IL_OFFSET IL offset: 0x6 N021. CNS_INT(h) 0x7fff802fcd90 method Def:(#20) N023. PUTARG_REG Use:(#22) Fixed:rcx(#21) * Def:(#24) rcx N025. CALL help Use:(#26) Fixed:rcx(#25) * Kill: rax rcx rdx r8 r9 r10 r11 Def:(#35) rax Pref: N027. V05(L2) Use:(#36) * Def:(#37) N029. IL_OFFSET IL offset: 0xb N031. CNS_INT(h) 0x18290002cb8 static Fseq[S_1] Def:(#38) N033. V05(L2) N035. STOREIND Use:(#40) Fixed:rcx(#39) * Use:(#42) Fixed:rdx(#41) * Kill: rax rcx rdx r8 r9 r10 r11 mm0 mm1 mm2 mm3 mm4 mm5 N037. LCL_VAR_ADDR V00 loc0 NA Def:(#56) Pref: N039. CNS_INT(h) 0x18290002cb8 static Fseq[S_1] Def:(#57) N041. SUB Use:(#58) * Use:(#59) * Def:(#60) Pref: N043. V02(L0) Use:(#61) * Def:(#62) N045. IL_OFFSET IL offset: 0x1f N047. V02(L0) N049. RETURN Use:(#64) Fixed:rax(#63) * Linear scan intervals after buildIntervals: Interval 0: (V02) long RefPositions {#62@44 #64@49} physReg:NA Preferences=[rax] Interval 1: (V04) ref RefPositions {#18@12 #19@17} physReg:NA Preferences=[allInt] Interval 2: (V05) ref RefPositions {#37@28 #42@35} physReg:NA Preferences=[rdx] Interval 3: long (constant) RefPositions {#1@6 #3@7} physReg:NA Preferences=[rcx] Interval 4: long RefPositions {#5@8 #7@9} physReg:NA Preferences=[rcx] Interval 5: ref RefPositions {#16@10 #17@11} physReg:NA Preferences=[rax] RelatedInterval Interval 6: long (constant) RefPositions {#20@22 #22@23} physReg:NA Preferences=[rcx] Interval 7: long RefPositions {#24@24 #26@25} physReg:NA Preferences=[rcx] Interval 8: ref RefPositions {#35@26 #36@27} physReg:NA Preferences=[rax] RelatedInterval Interval 9: long (constant) RefPositions {#38@32 #40@35} physReg:NA Preferences=[rcx] Interval 10: byref RefPositions {#56@38 #58@41} physReg:NA Preferences=[allInt] RelatedInterval Interval 11: byref (constant) RefPositions {#57@40 #59@41} physReg:NA Preferences=[allInt] Interval 12: long (interfering uses) RefPositions {#60@42 #61@43} physReg:NA Preferences=[allInt] RelatedInterval *************** In LinearScan::allocateRegisters() Linear scan intervals before allocateRegisters: Interval 0: (V02) long RefPositions {#62@44 #64@49} physReg:NA Preferences=[rax] Interval 1: (V04) ref RefPositions {#18@12 #19@17} physReg:NA Preferences=[allInt] Interval 2: (V05) ref RefPositions {#37@28 #42@35} physReg:NA Preferences=[rdx] Interval 3: long (constant) RefPositions {#1@6 #3@7} physReg:NA Preferences=[rcx] Interval 4: long RefPositions {#5@8 #7@9} physReg:NA Preferences=[rcx] Interval 5: ref RefPositions {#16@10 #17@11} physReg:NA Preferences=[rax] RelatedInterval Interval 6: long (constant) RefPositions {#20@22 #22@23} physReg:NA Preferences=[rcx] Interval 7: long RefPositions {#24@24 #26@25} physReg:NA Preferences=[rcx] Interval 8: ref RefPositions {#35@26 #36@27} physReg:NA Preferences=[rax] RelatedInterval Interval 9: long (constant) RefPositions {#38@32 #40@35} physReg:NA Preferences=[rcx] Interval 10: byref RefPositions {#56@38 #58@41} physReg:NA Preferences=[allInt] RelatedInterval Interval 11: byref (constant) RefPositions {#57@40 #59@41} physReg:NA Preferences=[allInt] Interval 12: long (interfering uses) RefPositions {#60@42 #61@43} physReg:NA Preferences=[allInt] RelatedInterval ------------ REFPOSITIONS BEFORE ALLOCATION: ------------ CNS_INT BB01 regmask=[rcx] minReg=1> BB01 regmask=[rcx] minReg=1> BB01 regmask=[rcx] minReg=1 last fixed> BB01 regmask=[rcx] minReg=1> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed> BB01 regmask=[rcx] minReg=1> BB01 regmask=[rcx] minReg=1 last fixed> BB01 regmask=[rax] minReg=1 last> BB01 regmask=[rcx] minReg=1 last> BB01 regmask=[rdx] minReg=1 last> BB01 regmask=[r8] minReg=1 last> BB01 regmask=[r9] minReg=1 last> BB01 regmask=[r10] minReg=1 last> BB01 regmask=[r11] minReg=1 last> BB01 regmask=[rax] minReg=1> CALL BB01 regmask=[rax] minReg=1 fixed> BB01 regmask=[allInt] minReg=1 last> STORE_LCL_VAR BB01 regmask=[allInt] minReg=1> LCL_VAR BB01 regmask=[allInt] minReg=1 last> CNS_INT BB01 regmask=[rcx] minReg=1> BB01 regmask=[rcx] minReg=1> BB01 regmask=[rcx] minReg=1 last fixed> BB01 regmask=[rcx] minReg=1> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed> BB01 regmask=[rcx] minReg=1> BB01 regmask=[rcx] minReg=1 last fixed> BB01 regmask=[rax] minReg=1 last> BB01 regmask=[rcx] minReg=1 last> BB01 regmask=[rdx] minReg=1 last> BB01 regmask=[r8] minReg=1 last> BB01 regmask=[r9] minReg=1 last> BB01 regmask=[r10] minReg=1 last> BB01 regmask=[r11] minReg=1 last> BB01 regmask=[rax] minReg=1> CALL BB01 regmask=[rax] minReg=1 fixed> BB01 regmask=[allInt] minReg=1 last> STORE_LCL_VAR BB01 regmask=[allInt] minReg=1> CNS_INT BB01 regmask=[rcx] minReg=1> BB01 regmask=[rcx] minReg=1> BB01 regmask=[rcx] minReg=1 last fixed> BB01 regmask=[rdx] minReg=1> LCL_VAR BB01 regmask=[rdx] minReg=1 last fixed> BB01 regmask=[rax] minReg=1 last> BB01 regmask=[rcx] minReg=1 last> BB01 regmask=[rdx] minReg=1 last> BB01 regmask=[r8] minReg=1 last> BB01 regmask=[r9] minReg=1 last> BB01 regmask=[r10] minReg=1 last> BB01 regmask=[r11] minReg=1 last> BB01 regmask=[mm0] minReg=1 last> BB01 regmask=[mm1] minReg=1 last> BB01 regmask=[mm2] minReg=1 last> BB01 regmask=[mm3] minReg=1 last> BB01 regmask=[mm4] minReg=1 last> BB01 regmask=[mm5] minReg=1 last> LCL_VAR_ADDR BB01 regmask=[allInt] minReg=1> CNS_INT BB01 regmask=[allInt] minReg=1> BB01 regmask=[allInt] minReg=1 last> BB01 regmask=[allInt] minReg=1 last delay regOptional> SUB BB01 regmask=[allInt] minReg=1> BB01 regmask=[allInt] minReg=1 last> STORE_LCL_VAR BB01 regmask=[allInt] minReg=1> BB01 regmask=[rax] minReg=1> LCL_VAR BB01 regmask=[rax] minReg=1 last fixed> VAR REFPOSITIONS BEFORE ALLOCATION --- V00 --- V01 --- V02 (Interval 0) STORE_LCL_VAR BB01 regmask=[allInt] minReg=1> LCL_VAR BB01 regmask=[rax] minReg=1 last fixed> --- V03 --- V04 (Interval 1) STORE_LCL_VAR BB01 regmask=[allInt] minReg=1> LCL_VAR BB01 regmask=[allInt] minReg=1 last> --- V05 (Interval 2) STORE_LCL_VAR BB01 regmask=[allInt] minReg=1> LCL_VAR BB01 regmask=[rdx] minReg=1 last fixed> 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 | ------------------------------+----+----+----+----+----+----+----+----+----+ | | | | | | | | | | 1.#0 BB1 PredBB0 | | | | | | | | | | 6.#1 C3 Def Alloc rcx | |C3 a| | | | | | | | 7.#2 rcx Fixd Keep rcx | |C3 a| | | | | | | | 7.#3 C3 Use * Keep rcx | |C3 a| | | | | | | | 8.#4 rcx Fixd Keep rcx | | | | | | | | | | 8.#5 I4 Def Alloc rcx | |I4 a| | | | | | | | 9.#6 rcx Fixd Keep rcx | |I4 a| | | | | | | | 9.#7 I4 Use * Keep rcx | |I4 a| | | | | | | | 10.#8 rax Kill Keep rax | | | | | | | | | | 10.#9 rcx Kill Keep rcx | | | | | | | | | | 10.#10 rdx Kill Keep rdx | | | | | | | | | | 10.#11 r8 Kill Keep r8 | | | | | | | | | | 10.#12 r9 Kill Keep r9 | | | | | | | | | | 10.#13 r10 Kill Keep r10 | | | | | | | | | | 10.#14 r11 Kill Keep r11 | | | | | | | | | | 10.#15 rax Fixd Keep rax | | | | | | | | | | 10.#16 I5 Def Alloc rax |I5 a| | | | | | | | | 11.#17 I5 Use * Keep rax |I5 a| | | | | | | | | 12.#18 V4 Def Alloc rax |V4 a| | | | | | | | | 17.#19 V4 Use * Keep rax |V4 a| | | | | | | | | 22.#20 C6 Def Alloc rcx | |C6 a| | | | | | | | 23.#21 rcx Fixd Keep rcx | |C6 a| | | | | | | | 23.#22 C6 Use * Keep rcx | |C6 a| | | | | | | | 24.#23 rcx Fixd Keep rcx | | | | | | | | | | 24.#24 I7 Def Alloc rcx | |I7 a| | | | | | | | 25.#25 rcx Fixd Keep rcx | |I7 a| | | | | | | | 25.#26 I7 Use * Keep rcx | |I7 a| | | | | | | | 26.#27 rax Kill Keep rax | | | | | | | | | | 26.#28 rcx Kill Keep rcx | | | | | | | | | | 26.#29 rdx Kill Keep rdx | | | | | | | | | | 26.#30 r8 Kill Keep r8 | | | | | | | | | | 26.#31 r9 Kill Keep r9 | | | | | | | | | | 26.#32 r10 Kill Keep r10 | | | | | | | | | | 26.#33 r11 Kill Keep r11 | | | | | | | | | | 26.#34 rax Fixd Keep rax | | | | | | | | | | 26.#35 I8 Def Alloc rax |I8 a| | | | | | | | | 27.#36 I8 Use * Keep rax |I8 a| | | | | | | | | 28.#37 V5 Def Alloc rax |V5 a| | | | | | | | | 32.#38 C9 Def Alloc rcx |V5 a|C9 a| | | | | | | | 35.#39 rcx Fixd Keep rcx |V5 a|C9 a| | | | | | | | 35.#40 C9 Use * Keep rcx |V5 a|C9 a| | | | | | | | 35.#41 rdx Fixd Keep rdx |V5 a|C9 a| | | | | | | | 35.#42 V5 Use * Copy rdx |V5 a|C9 a|V5 a| | | | | | | 36.#43 rax Kill Keep rax | |C9 i| | | | | | | | 36.#44 rcx Kill Keep rcx | | | | | | | | | | 36.#45 rdx Kill Keep rdx | | | | | | | | | | 36.#46 r8 Kill Keep r8 | | | | | | | | | | 36.#47 r9 Kill Keep r9 | | | | | | | | | | 36.#48 r10 Kill Keep r10 | | | | | | | | | | 36.#49 r11 Kill Keep r11 | | | | | | | | | | 36.#50 mm0 Kill Keep mm0 | | | | | | | | | | 36.#51 mm1 Kill Keep mm1 | | | | | | | | | | 36.#52 mm2 Kill Keep mm2 | | | | | | | | | | 36.#53 mm3 Kill Keep mm3 | | | | | | | | | | 36.#54 mm4 Kill Keep mm4 | | | | | | | | | | 36.#55 mm5 Kill Keep mm5 | | | | | | | | | | ------------------------------+----+----+----+----+----+----+----+----+----+ LocRP# Name Type Action Reg |rax |rcx |rdx |rbx |rbp |rsi |rdi |r8 |r9 | ------------------------------+----+----+----+----+----+----+----+----+----+ 38.#56 I10 Def Alloc rax |I10a| | | | | | | | | 40.#57 C11 Def Alloc rdx |I10a| |C11a| | | | | | | 41.#58 I10 Use * Keep rax |I10a| |C11a| | | | | | | 41.#59 C11 Use *D Keep rdx |I10a| |C11a| | | | | | | 42.#60 I12 Def Alloc rax |I12a| |C11a| | | | | | | 43.#61 I12 Use * Keep rax |I12a| |C11i| | | | | | | 44.#62 V2 Def Alloc rax |V2 a| |C11i| | | | | | | 49.#63 rax Fixd Keep rax |V2 a| |C11i| | | | | | | 49.#64 V2 Use * Keep rax | | |C11i| | | | | | | ------------ REFPOSITIONS AFTER ALLOCATION: ------------ CNS_INT BB01 regmask=[rcx] minReg=1> BB01 regmask=[rcx] minReg=1> BB01 regmask=[rcx] minReg=1 last fixed> BB01 regmask=[rcx] minReg=1> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed> BB01 regmask=[rcx] minReg=1> BB01 regmask=[rcx] minReg=1 last fixed> BB01 regmask=[rax] minReg=1 last> BB01 regmask=[rcx] minReg=1 last> BB01 regmask=[rdx] minReg=1 last> BB01 regmask=[r8] minReg=1 last> BB01 regmask=[r9] minReg=1 last> BB01 regmask=[r10] minReg=1 last> BB01 regmask=[r11] minReg=1 last> BB01 regmask=[rax] minReg=1> CALL BB01 regmask=[rax] minReg=1 fixed> BB01 regmask=[rax] minReg=1 last> STORE_LCL_VAR BB01 regmask=[rax] minReg=1> LCL_VAR BB01 regmask=[rax] minReg=1 last> CNS_INT BB01 regmask=[rcx] minReg=1> BB01 regmask=[rcx] minReg=1> BB01 regmask=[rcx] minReg=1 last fixed> BB01 regmask=[rcx] minReg=1> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed> BB01 regmask=[rcx] minReg=1> BB01 regmask=[rcx] minReg=1 last fixed> BB01 regmask=[rax] minReg=1 last> BB01 regmask=[rcx] minReg=1 last> BB01 regmask=[rdx] minReg=1 last> BB01 regmask=[r8] minReg=1 last> BB01 regmask=[r9] minReg=1 last> BB01 regmask=[r10] minReg=1 last> BB01 regmask=[r11] minReg=1 last> BB01 regmask=[rax] minReg=1> CALL BB01 regmask=[rax] minReg=1 fixed> BB01 regmask=[rax] minReg=1 last> STORE_LCL_VAR BB01 regmask=[rax] minReg=1> CNS_INT BB01 regmask=[rcx] minReg=1> BB01 regmask=[rcx] minReg=1> BB01 regmask=[rcx] minReg=1 last fixed> BB01 regmask=[rdx] minReg=1> LCL_VAR BB01 regmask=[rdx] minReg=1 last copy fixed> BB01 regmask=[rax] minReg=1 last> BB01 regmask=[rcx] minReg=1 last> BB01 regmask=[rdx] minReg=1 last> BB01 regmask=[r8] minReg=1 last> BB01 regmask=[r9] minReg=1 last> BB01 regmask=[r10] minReg=1 last> BB01 regmask=[r11] minReg=1 last> BB01 regmask=[mm0] minReg=1 last> BB01 regmask=[mm1] minReg=1 last> BB01 regmask=[mm2] minReg=1 last> BB01 regmask=[mm3] minReg=1 last> BB01 regmask=[mm4] minReg=1 last> BB01 regmask=[mm5] minReg=1 last> LCL_VAR_ADDR BB01 regmask=[rax] minReg=1> CNS_INT BB01 regmask=[rdx] minReg=1> BB01 regmask=[rax] minReg=1 last> BB01 regmask=[rdx] minReg=1 last delay regOptional> SUB BB01 regmask=[rax] minReg=1> BB01 regmask=[rax] minReg=1 last> STORE_LCL_VAR BB01 regmask=[rax] minReg=1> BB01 regmask=[rax] minReg=1> LCL_VAR BB01 regmask=[rax] minReg=1 last fixed> VAR REFPOSITIONS AFTER ALLOCATION --- V00 --- V01 --- V02 (Interval 0) STORE_LCL_VAR BB01 regmask=[rax] minReg=1> LCL_VAR BB01 regmask=[rax] minReg=1 last fixed> --- V03 --- V04 (Interval 1) STORE_LCL_VAR BB01 regmask=[rax] minReg=1> LCL_VAR BB01 regmask=[rax] minReg=1 last> --- V05 (Interval 2) STORE_LCL_VAR BB01 regmask=[rax] minReg=1> LCL_VAR BB01 regmask=[rdx] minReg=1 last copy fixed> Active intervals at end of allocation: ----------------------- RESOLVING BB BOUNDARIES ----------------------- Resolution Candidates: {} Has NoCritical Edges Prior to Resolution BB01 use def in out {} {V02 V04 V05} {} {} Var=Reg beg of BB01: none Var=Reg end of BB01: none RESOLVING EDGES 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..021) (return) i label target hascall newobj LIR ----------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [000..021) (return), preds={} succs={} N003 (???,???) [000045] ------------ IL_OFFSET void IL offset: 0x0 REG NA N005 ( 2, 10) [000000] H----------- t0 = CNS_INT(h) long 0x7fff802fcd90 method REG rcx $140 /--* t0 long N007 (???,???) [000051] ------------ t51 = * PUTARG_REG long REG rcx /--* t51 long arg0 in rcx N009 ( 16, 16) [000001] --C--------- t1 = * CALL help ref HELPER.CORINFO_HELP_NEWSFAST REG rax $1c0 /--* t1 ref N011 ( 16, 16) [000003] DA---------- * STORE_LCL_VAR ref V04 tmp1 d:2 rax REG rax N013 (???,???) [000046] ------------ IL_OFFSET void IL offset: 0x5 REG NA N015 ( 1, 1) [000006] ------------ t6 = LCL_VAR ref V04 tmp1 u:2 rax (last use) REG rax $1c0 /--* t6 ref N017 ( 5, 4) [000008] DA--G------- * STORE_LCL_VAR ref (AX) V00 loc0 NA REG NA N019 (???,???) [000047] ------------ IL_OFFSET void IL offset: 0x6 REG NA N021 ( 2, 10) [000009] H----------- t9 = CNS_INT(h) long 0x7fff802fcd90 method REG rcx $140 /--* t9 long N023 (???,???) [000052] ------------ t52 = * PUTARG_REG long REG rcx /--* t52 long arg0 in rcx N025 ( 16, 16) [000010] --C--------- t10 = * CALL help ref HELPER.CORINFO_HELP_NEWSFAST REG rax $1c1 /--* t10 ref N027 ( 16, 16) [000012] DA---------- * STORE_LCL_VAR ref V05 tmp2 d:2 rax REG rax N029 (???,???) [000048] ------------ IL_OFFSET void IL offset: 0xb REG NA N031 ( 2, 10) [000044] H----------- t44 = CNS_INT(h) long 0x18290002cb8 static Fseq[S_1] REG rcx $141 N033 ( 1, 1) [000016] ------------ t16 = LCL_VAR ref V05 tmp2 u:2 rax (last use) REG rax $1c1 /--* t44 long +--* t16 ref N035 (???,???) [000049] -A--G------- * STOREIND ref REG NA N037 ( 3, 2) [000038] -------N---- t38 = LCL_VAR_ADDR byref V00 loc0 rax REG rax N039 ( 2, 10) [000039] H----------- t39 = CNS_INT(h) byref 0x18290002cb8 static Fseq[S_1] REG rdx $141 /--* t38 byref +--* t39 byref N041 ( 6, 14) [000040] ------------ t40 = * SUB long REG rax $300 /--* t40 long N043 ( 10, 17) [000027] DA---------- * STORE_LCL_VAR long V02 loc2 d:2 rax REG rax N045 (???,???) [000050] ------------ IL_OFFSET void IL offset: 0x1f REG NA N047 ( 3, 2) [000028] C----------- t28 = LCL_VAR int V02 loc2 u:2 rax (last use) REG rax $340 /--* t28 int N049 ( 4, 3) [000030] ------------ * RETURN int REG NA $380 ------------------------------------------------------------------------------------------------------------------- Final allocation ------------------------------+----+----+----+----+----+----+----+----+----+ LocRP# Name Type Action Reg |rax |rcx |rdx |rbx |rbp |rsi |rdi |r8 |r9 | ------------------------------+----+----+----+----+----+----+----+----+----+ 1.#0 BB1 PredBB0 | | | | | | | | | | 6.#1 C3 Def Alloc rcx | |C3 a| | | | | | | | 7.#2 rcx Fixd Keep rcx | |C3 a| | | | | | | | 7.#3 C3 Use * Keep rcx | |C3 i| | | | | | | | 8.#4 rcx Fixd Keep rcx | | | | | | | | | | 8.#5 I4 Def Alloc rcx | |I4 a| | | | | | | | 9.#6 rcx Fixd Keep rcx | |I4 a| | | | | | | | 9.#7 I4 Use * Keep rcx | |I4 i| | | | | | | | 10.#8 rax Kill Keep rax | | | | | | | | | | 10.#9 rcx Kill Keep rcx | | | | | | | | | | 10.#10 rdx Kill Keep rdx | | | | | | | | | | 10.#11 r8 Kill Keep r8 | | | | | | | | | | 10.#12 r9 Kill Keep r9 | | | | | | | | | | 10.#13 r10 Kill Keep r10 | | | | | | | | | | 10.#14 r11 Kill Keep r11 | | | | | | | | | | 10.#15 rax Fixd Keep rax | | | | | | | | | | 10.#16 I5 Def Alloc rax |I5 a| | | | | | | | | 11.#17 I5 Use * Keep rax |I5 i| | | | | | | | | 12.#18 V4 Def Alloc rax |V4 a| | | | | | | | | 17.#19 V4 Use * Keep rax |V4 i| | | | | | | | | 22.#20 C6 Def Alloc rcx | |C6 a| | | | | | | | 23.#21 rcx Fixd Keep rcx | |C6 a| | | | | | | | 23.#22 C6 Use * Keep rcx | |C6 i| | | | | | | | 24.#23 rcx Fixd Keep rcx | | | | | | | | | | 24.#24 I7 Def Alloc rcx | |I7 a| | | | | | | | 25.#25 rcx Fixd Keep rcx | |I7 a| | | | | | | | 25.#26 I7 Use * Keep rcx | |I7 i| | | | | | | | 26.#27 rax Kill Keep rax | | | | | | | | | | 26.#28 rcx Kill Keep rcx | | | | | | | | | | 26.#29 rdx Kill Keep rdx | | | | | | | | | | 26.#30 r8 Kill Keep r8 | | | | | | | | | | 26.#31 r9 Kill Keep r9 | | | | | | | | | | 26.#32 r10 Kill Keep r10 | | | | | | | | | | 26.#33 r11 Kill Keep r11 | | | | | | | | | | 26.#34 rax Fixd Keep rax | | | | | | | | | | 26.#35 I8 Def Alloc rax |I8 a| | | | | | | | | 27.#36 I8 Use * Keep rax |I8 i| | | | | | | | | 28.#37 V5 Def Alloc rax |V5 a| | | | | | | | | 32.#38 C9 Def Alloc rcx |V5 a|C9 a| | | | | | | | 35.#39 rcx Fixd Keep rcx |V5 a|C9 a| | | | | | | | 35.#40 C9 Use * Keep rcx |V5 a|C9 i| | | | | | | | 35.#41 rdx Fixd Keep rdx |V5 a| | | | | | | | | 35.#42 V5 Use * Copy rdx |V5 i| |V5 i| | | | | | | 36.#43 rax Kill Keep rax | | | | | | | | | | 36.#44 rcx Kill Keep rcx | | | | | | | | | | 36.#45 rdx Kill Keep rdx | | | | | | | | | | 36.#46 r8 Kill Keep r8 | | | | | | | | | | 36.#47 r9 Kill Keep r9 | | | | | | | | | | 36.#48 r10 Kill Keep r10 | | | | | | | | | | 36.#49 r11 Kill Keep r11 | | | | | | | | | | 36.#50 mm0 Kill Keep mm0 | | | | | | | | | | 36.#51 mm1 Kill Keep mm1 | | | | | | | | | | 36.#52 mm2 Kill Keep mm2 | | | | | | | | | | 36.#53 mm3 Kill Keep mm3 | | | | | | | | | | 36.#54 mm4 Kill Keep mm4 | | | | | | | | | | 36.#55 mm5 Kill Keep mm5 | | | | | | | | | | 38.#56 I10 Def Alloc rax |I10a| | | | | | | | | 40.#57 C11 Def Alloc rdx |I10a| |C11a| | | | | | | 41.#58 I10 Use * Keep rax |I10i| |C11a| | | | | | | 41.#59 C11 Use *D Keep rdx | | |C11i| | | | | | | 42.#60 I12 Def Alloc rax |I12a| | | | | | | | | 43.#61 I12 Use * Keep rax |I12i| | | | | | | | | 44.#62 V2 Def Alloc rax |V2 a| | | | | | | | | 49.#63 rax Fixd Keep rax |V2 a| | | | | | | | | 49.#64 V2 Use * Keep rax |V2 i| | | | | | | | | Recording the maximum number of concurrent spills: ---------- LSRA Stats ---------- Total Tracked Vars: 3 Total Reg Cand Vars: 3 Total number of Intervals: 12 Total number of RefPositions: 64 Total Spill Count: 0 Weighted: 0 Total CopyReg Count: 0 Weighted: 0 Total ResolutionMov Count: 0 Weighted: 0 Total number of split edges: 0 Total Number of spill temps created: 0 TUPLE STYLE DUMP WITH REGISTER ASSIGNMENTS Incoming Parameters: BB01 [000..021) (return), preds={} succs={} ===== N003. IL_OFFSET IL offset: 0x0 N005. rcx = CNS_INT(h) 0x7fff802fcd90 method N007. rcx = PUTARG_REG; rcx N009. rax = CALL help; rcx * N011. V04(rax); rax N013. IL_OFFSET IL offset: 0x5 N015. V04(rax*) N017. V00 MEM; rax* N019. IL_OFFSET IL offset: 0x6 N021. rcx = CNS_INT(h) 0x7fff802fcd90 method N023. rcx = PUTARG_REG; rcx N025. rax = CALL help; rcx * N027. V05(rax); rax N029. IL_OFFSET IL offset: 0xb N031. rcx = CNS_INT(h) 0x18290002cb8 static Fseq[S_1] N033. V05(rax*) N035. STOREIND ; rcx,rax* N037. rax = LCL_VAR_ADDR V00 loc0 rax N039. rdx = CNS_INT(h) 0x18290002cb8 static Fseq[S_1] N041. rax = SUB ; rax,rdx * N043. V02(rax); rax N045. IL_OFFSET IL offset: 0x1f N047. V02(rax*) N049. RETURN ; rax* Var=Reg end of BB01: none *************** Finishing PHASE Linear scan register alloc *************** In genGenerateCode() ----------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags] ----------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 1 [000..021) (return) i label target hascall newobj LIR ----------------------------------------------------------------------------------------------------------------------------------------- *************** Starting PHASE Generate code *************** In fgDebugCheckBBlist Finalizing stack frame Recording Var Locations at start of BB01 Modified regs: [rax rcx rdx r8-r11 mm0-mm5] Callee-saved registers pushed: 0 [] *************** In lvaAssignFrameOffsets(FINAL_FRAME_LAYOUT) Assign V00 loc0, size=8, stkOffs=-0x10 Assign V03 OutArgs, size=32, stkOffs=-0x30 --- delta bump 8 for RA --- delta bump 40 for RSP frame --- virtual stack offset to actual stack offset delta is 48 -- V00 was -16, now 32 -- V03 was -48, now 0 ; Final local variable assignments ; ; V00 loc0 [V00 ] ( 2, 2 ) ref -> [rsp+0x20] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd ;* V01 loc1 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd exact ; V02 loc2 [V02,T02] ( 2, 2 ) long -> rax ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T00] ( 2, 4 ) ref -> rax class-hnd exact "NewObj constructor temp" ; V05 tmp2 [V05,T01] ( 2, 4 ) ref -> rax class-hnd exact "NewObj constructor temp" ; ; Lcl frame size = 40 Setting stack level from -572662307 to 0 =============== Generating BB01 [000..021) (return), preds={} succs={} flags=0x00000004.40830020: i label target hascall newobj LIR BB01 IN (0)={} + ByrefExposed OUT(0)={} Recording Var Locations at start of BB01 Liveness not changing: 0000000000000000 {} Live regs: (unchanged) 00000000 {} GC regs: (unchanged) 00000000 {} Byref regs: (unchanged) 00000000 {} L_M56322_BB01: Label: IG02, GCvars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {} Scope info: begin block BB01, IL range [000..021) Scope info: open scopes = Added IP mapping: 0x0000 STACK_EMPTY (G_M56322_IG02,ins#0,ofs#0) label Generating: N003 (???,???) [000045] ------------ IL_OFFSET void IL offset: 0x0 REG NA Generating: N005 ( 2, 10) [000000] H----------- t0 = CNS_INT(h) long 0x7fff802fcd90 method REG rcx $140 IN0001: mov rcx, 0x7FFF802FCD90 /--* t0 long Generating: N007 (???,???) [000051] ------------ t51 = * PUTARG_REG long REG rcx /--* t51 long arg0 in rcx Generating: N009 ( 16, 16) [000001] --C--------- t1 = * CALL help ref HELPER.CORINFO_HELP_NEWSFAST REG rax $1c0 Call: GCvars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {} IN0002: call CORINFO_HELP_NEWSFAST GC regs: 00000000 {} => 00000001 {rax} /--* t1 ref Generating: N011 ( 16, 16) [000003] DA---------- * STORE_LCL_VAR ref V04 tmp1 d:2 rax REG rax GC regs: 00000001 {rax} => 00000000 {} V04 in reg rax is becoming live [000003] Live regs: 00000000 {} => 00000001 {rax} Live vars: {} => {V04} GC regs: 00000000 {} => 00000001 {rax} Added IP mapping: 0x0005 (G_M56322_IG02,ins#2,ofs#15) Generating: N013 (???,???) [000046] ------------ IL_OFFSET void IL offset: 0x5 REG NA Generating: N015 ( 1, 1) [000006] ------------ t6 = LCL_VAR ref V04 tmp1 u:2 rax (last use) REG rax $1c0 /--* t6 ref Generating: N017 ( 5, 4) [000008] DA--G------- * STORE_LCL_VAR ref (AX) V00 loc0 NA REG NA V04 in reg rax is becoming dead [000006] Live regs: 00000001 {rax} => 00000000 {} Live vars: {V04} => {} GC regs: 00000001 {rax} => 00000000 {} IN0003: mov gword ptr [V00 rsp+20H], rax Added IP mapping: 0x0006 STACK_EMPTY (G_M56322_IG02,ins#3,ofs#20) Generating: N019 (???,???) [000047] ------------ IL_OFFSET void IL offset: 0x6 REG NA Generating: N021 ( 2, 10) [000009] H----------- t9 = CNS_INT(h) long 0x7fff802fcd90 method REG rcx $140 IN0004: mov rcx, 0x7FFF802FCD90 /--* t9 long Generating: N023 (???,???) [000052] ------------ t52 = * PUTARG_REG long REG rcx /--* t52 long arg0 in rcx Generating: N025 ( 16, 16) [000010] --C--------- t10 = * CALL help ref HELPER.CORINFO_HELP_NEWSFAST REG rax $1c1 Call: GCvars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {} IN0005: call CORINFO_HELP_NEWSFAST GC regs: 00000000 {} => 00000001 {rax} /--* t10 ref Generating: N027 ( 16, 16) [000012] DA---------- * STORE_LCL_VAR ref V05 tmp2 d:2 rax REG rax GC regs: 00000001 {rax} => 00000000 {} V05 in reg rax is becoming live [000012] Live regs: 00000000 {} => 00000001 {rax} Live vars: {} => {V05} GC regs: 00000000 {} => 00000001 {rax} Added IP mapping: 0x000B (G_M56322_IG02,ins#5,ofs#35) Generating: N029 (???,???) [000048] ------------ IL_OFFSET void IL offset: 0xb REG NA Generating: N031 ( 2, 10) [000044] H----------- t44 = CNS_INT(h) long 0x18290002cb8 static Fseq[S_1] REG rcx $141 IN0006: mov rcx, 0x18290002CB8 Generating: N033 ( 1, 1) [000016] ------------ t16 = LCL_VAR ref V05 tmp2 u:2 rax (last use) REG rax $1c1 /--* t44 long +--* t16 ref Generating: N035 (???,???) [000049] -A--G------- * STOREIND ref REG NA V05 in reg rax is becoming dead [000016] Live regs: 00000001 {rax} => 00000000 {} Live vars: {V05} => {} GC regs: 00000001 {rax} => 00000000 {} IN0007: mov rdx, rax NoGC Call: savedSet=0000F0E8 {rbx rbp rsi rdi r12 r13 r14 r15} Call: GCvars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {} IN0008: call CORINFO_HELP_CHECKED_ASSIGN_REF Generating: N037 ( 3, 2) [000038] -------N---- t38 = LCL_VAR_ADDR byref V00 loc0 rax REG rax IN0009: lea rax, bword ptr [V00 rsp+20H] Byref regs: 00000000 {} => 00000001 {rax} Generating: N039 ( 2, 10) [000039] H----------- t39 = CNS_INT(h) byref 0x18290002cb8 static Fseq[S_1] REG rdx $141 IN000a: mov rdx, 0x18290002CB8 Byref regs: 00000001 {rax} => 00000005 {rax rdx} /--* t38 byref +--* t39 byref Generating: N041 ( 6, 14) [000040] ------------ t40 = * SUB long REG rax $300 Byref regs: 00000005 {rax rdx} => 00000004 {rdx} Byref regs: 00000004 {rdx} => 00000000 {} IN000b: sub rax, rdx /--* t40 long Generating: N043 ( 10, 17) [000027] DA---------- * STORE_LCL_VAR long V02 loc2 d:2 rax REG rax V02 in reg rax is becoming live [000027] Live regs: 00000000 {} => 00000001 {rax} Live vars: {} => {V02} Added IP mapping: 0x001F STACK_EMPTY (G_M56322_IG02,ins#11,ofs#71) Generating: N045 (???,???) [000050] ------------ IL_OFFSET void IL offset: 0x1f REG NA Generating: N047 ( 3, 2) [000028] C----------- t28 = LCL_VAR int V02 loc2 u:2 rax (last use) REG rax $340 /--* t28 int Generating: N049 ( 4, 3) [000030] ------------ * RETURN int REG NA $380 V02 in reg rax is becoming dead [000028] Live regs: 00000001 {rax} => 00000000 {} Live vars: {V02} => {} Scope info: end block BB01, IL range [000..021) Scope info: ending scope, LVnum=0 [000..021) siEndScope: Failed to end scope for V00 Scope info: ending scope, LVnum=1 [000..021) siEndScope: Failed to end scope for V01 Scope info: ending scope, LVnum=2 [000..021) Scope info: open scopes = Added IP mapping: EPILOG STACK_EMPTY (G_M56322_IG02,ins#11,ofs#71) label Reserving epilog IG for block BB01 G_M56322_IG02: ; offs=000000H, funclet=00, bbWeight=1 *************** After placeholder IG creation G_M56322_IG01: ; func=00, offs=000000H, size=0000H, gcrefRegs=00000000 {} <-- Prolog IG G_M56322_IG02: ; offs=000000H, size=0047H, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref G_M56322_IG03: ; epilog placeholder, next placeholder=, BB01 [0000], epilog, extend <-- First placeholder <-- Last placeholder ; PrevGCVars=0000000000000000 {}, PrevGCrefRegs=00000000 {}, PrevByrefRegs=00000000 {} ; InitGCVars=0000000000000000 {}, InitGCrefRegs=00000000 {}, InitByrefRegs=00000000 {} Liveness not changing: 0000000000000000 {} # compCycleEstimate = 57, compSizeEstimate = 70 a:main():int ; Final local variable assignments ; ; V00 loc0 [V00 ] ( 2, 2 ) ref -> [rsp+0x20] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd ;* V01 loc1 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd exact ; V02 loc2 [V02,T02] ( 2, 2 ) long -> rax ; V03 OutArgs [V03 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace" ; V04 tmp1 [V04,T00] ( 2, 4 ) ref -> rax class-hnd exact "NewObj constructor temp" ; V05 tmp2 [V05,T01] ( 2, 4 ) ref -> rax class-hnd exact "NewObj constructor temp" ; ; Lcl frame size = 40 *************** Before prolog / epilog generation G_M56322_IG01: ; func=00, offs=000000H, size=0000H, gcrefRegs=00000000 {} <-- Prolog IG G_M56322_IG02: ; offs=000000H, size=0047H, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref G_M56322_IG03: ; epilog placeholder, next placeholder=, BB01 [0000], epilog, extend <-- First placeholder <-- Last placeholder ; PrevGCVars=0000000000000000 {}, PrevGCrefRegs=00000000 {}, PrevByrefRegs=00000000 {} ; InitGCVars=0000000000000000 {}, InitGCrefRegs=00000000 {}, InitByrefRegs=00000000 {} Recording Var Locations at start of BB01 *************** In genFnProlog() Added IP mapping to front: PROLOG STACK_EMPTY (G_M56322_IG01,ins#0,ofs#0) label __prolog: Found 2 lvMustInit int-sized stack slots, frame offsets -32 through -40 IN000c: sub rsp, 40 IN000d: xor rax, rax IN000e: mov qword ptr [V00 rsp+20H], rax *************** In genEnregisterIncomingStackArgs() G_M56322_IG01: ; offs=000000H, funclet=00, bbWeight=1 *************** In genFnEpilog() __epilog: gcVarPtrSetCur=0000000000000000 {}, gcRegGCrefSetCur=00000000 {}, gcRegByrefSetCur=00000000 {} IN000f: add rsp, 40 IN0010: ret G_M56322_IG03: ; offs=000047H, funclet=00, bbWeight=1 0 prologs, 1 epilogs, 0 funclet prologs, 0 funclet epilogs *************** After prolog / epilog generation G_M56322_IG01: ; func=00, offs=000000H, size=000BH, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG G_M56322_IG02: ; offs=00000BH, size=0047H, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref G_M56322_IG03: ; offs=000052H, size=0005H, epilog, nogc, extend *************** In emitJumpDistBind() *************** Finishing PHASE Generate code *************** Starting PHASE Emit code Hot code size = 0x57 bytes Cold code size = 0x0 bytes reserveUnwindInfo(isFunclet=FALSE, isColdCode=FALSE, unwindSize=0x6) *************** In emitEndCodeGen() Converting emitMaxStackDepth from bytes (0) to elements (0) *************************************************************************** Instructions as they come out of the scheduler G_M56322_IG01: ; func=00, offs=000000H, size=000BH, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG IN000c: 000000 4883EC28 sub rsp, 40 IN000d: 000004 33C0 xor rax, rax IN000e: 000006 4889442420 mov qword ptr [rsp+20H], rax ;; bbWeight=1 PerfScore 1.50 G_M56322_IG02: ; func=00, offs=00000BH, size=0047H, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref IN0001: 00000B 48B990CD2F80FF7F0000 mov rcx, 0x7FFF802FCD90 IN0002: 000015 E816E1A55F call CORINFO_HELP_NEWSFAST ; gcrRegs +[rax] ; gcr arg pop 0 IN0003: 00001A 4889442420 mov gword ptr [rsp+20H], rax IN0004: 00001F 48B990CD2F80FF7F0000 mov rcx, 0x7FFF802FCD90 IN0005: 000029 E802E1A55F call CORINFO_HELP_NEWSFAST ; gcr arg pop 0 IN0006: 00002E 48B9B82C009082010000 mov rcx, 0x18290002CB8 IN0007: 000038 488BD0 mov rdx, rax ; gcrRegs +[rdx] IN0008: 00003B E880DCA55F call CORINFO_HELP_CHECKED_ASSIGN_REF ; gcrRegs -[rax rdx] IN0009: 000040 488D442420 lea rax, bword ptr [rsp+20H] ; byrRegs +[rax] IN000a: 000045 48BAB82C009082010000 mov rdx, 0x18290002CB8 ; byrRegs +[rdx] IN000b: 00004F 482BC2 sub rax, rdx ; byrRegs -[rax] ;; bbWeight=1 PerfScore 6.00 G_M56322_IG03: ; func=00, offs=000052H, size=0005H, epilog, nogc, extend IN000f: 000052 4883C428 add rsp, 40 IN0010: 000056 C3 ret ;; bbWeight=1 PerfScore 1.25Allocated method code size = 87 , actual size = 87 ; Total bytes of code 87, prolog size 11, PerfScore 17.45, instruction count 16 (MethodHash=c5c023fd) for method a:main():int ; ============================================================ *************** After end code gen, before unwindEmit() G_M56322_IG01: ; func=00, offs=000000H, size=000BH, bbWeight=1 PerfScore 1.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG IN000c: 000000 sub rsp, 40 IN000d: 000004 xor rax, rax IN000e: 000006 mov qword ptr [V00 rsp+20H], rax G_M56322_IG02: ; offs=00000BH, size=0047H, bbWeight=1 PerfScore 6.00, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref IN0001: 00000B mov rcx, 0x7FFF802FCD90 IN0002: 000015 call CORINFO_HELP_NEWSFAST IN0003: 00001A mov gword ptr [V00 rsp+20H], rax IN0004: 00001F mov rcx, 0x7FFF802FCD90 IN0005: 000029 call CORINFO_HELP_NEWSFAST IN0006: 00002E mov rcx, 0x18290002CB8 IN0007: 000038 mov rdx, rax IN0008: 00003B call CORINFO_HELP_CHECKED_ASSIGN_REF IN0009: 000040 lea rax, bword ptr [V00 rsp+20H] IN000a: 000045 mov rdx, 0x18290002CB8 IN000b: 00004F sub rax, rdx G_M56322_IG03: ; offs=000052H, size=0005H, bbWeight=1 PerfScore 1.25, epilog, nogc, extend IN000f: 000052 add rsp, 40 IN0010: 000056 ret *************** Finishing PHASE Emit code *************** Starting PHASE Emit GC+EH tables Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0x000057 (not in unwind data) Version : 1 Flags : 0x00 SizeOfProlog : 0x04 CountOfUnwindCodes: 1 FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes : CodeOffset: 0x04 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28 allocUnwindInfo(pHotCode=0x00007FFF7FFB8F60, pColdCode=0x0000000000000000, startOffset=0x0, endOffset=0x57, unwindSize=0x6, pUnwindBlock=0x00000182EEF792D2, funKind=0 (main function)) *************** In genIPmappingGen() IP mapping count : 7 IL offs PROLOG : 0x00000000 ( STACK_EMPTY ) IL offs 0x0000 : 0x0000000B ( STACK_EMPTY ) IL offs 0x0005 : 0x0000001A IL offs 0x0006 : 0x0000001F ( STACK_EMPTY ) IL offs 0x000B : 0x0000002E IL offs 0x001F : 0x00000052 ( STACK_EMPTY ) IL offs EPILOG : 0x00000052 ( STACK_EMPTY ) *************** In genSetScopeInfo() VarLocInfo count is 0 ; Variable debug info: 0 live range(s), 0 var(s) for method a:main():int *************** In gcInfoBlockHdrSave() Set code length to 87. Set ReturnKind to Scalar. Set Outgoing stack arg area size to 32. Stack slot id for offset 32 (0x20) (sp) (untracked) = 0. Defining 2 call sites: Offset 0x15, size 5. Offset 0x29, size 5. *************** Finishing PHASE Emit GC+EH tables Method code size: 87 Allocations for a:main():int (MethodHash=c5c023fd) count: 690, size: 65888, max = 3072 allocateMemory: 131072, nraUsed: 70880 Alloc'd bytes by kind: kind | size | pct ---------------------+------------+-------- AssertionProp | 6460 | 9.80% ASTNode | 7568 | 11.49% InstDesc | 2848 | 4.32% ImpStack | 384 | 0.58% BasicBlock | 2248 | 3.41% fgArgInfo | 128 | 0.19% fgArgInfoPtrArr | 16 | 0.02% FlowList | 0 | 0.00% TreeStatementList | 0 | 0.00% SiScope | 24 | 0.04% DominatorMemory | 96 | 0.15% LSRA | 2820 | 4.28% LSRA_Interval | 1040 | 1.58% LSRA_RefPosition | 4160 | 6.31% Reachability | 16 | 0.02% SSA | 480 | 0.73% ValueNumber | 10802 | 16.39% LvaTable | 1944 | 2.95% UnwindInfo | 0 | 0.00% hashBv | 40 | 0.06% bitset | 56 | 0.08% FixedBitVect | 52 | 0.08% Generic | 2210 | 3.35% LocalAddressVisitor | 0 | 0.00% FieldSeqStore | 176 | 0.27% ZeroOffsetFieldMap | 160 | 0.24% ArrayInfoMap | 80 | 0.12% MemoryPhiArg | 0 | 0.00% CSE | 1136 | 1.72% GC | 1722 | 2.61% CorTailCallInfo | 0 | 0.00% Inlining | 3288 | 4.99% ArrayStack | 0 | 0.00% DebugInfo | 344 | 0.52% DebugOnly | 13347 | 20.26% Codegen | 1176 | 1.78% LoopOpt | 0 | 0.00% LoopHoist | 0 | 0.00% Unknown | 403 | 0.61% RangeCheck | 0 | 0.00% CopyProp | 408 | 0.62% SideEffects | 0 | 0.00% ObjectAllocator | 0 | 0.00% VariableLiveRanges | 0 | 0.00% ClassLayout | 0 | 0.00% TailMergeThrows | 0 | 0.00% EarlyProp | 0 | 0.00% ZeroInit | 256 | 0.39% ****** DONE compiling a:main():int