****** START compiling :func(int) (MethodHash=b14b112b) Generating code for Windows x86 OPTIONS: compCodeOpt = BLENDED_CODE OPTIONS: compDbgCode = false OPTIONS: compDbgInfo = true OPTIONS: compDbgEnC = false OPTIONS: compProcedureSplitting = false OPTIONS: compProcedureSplittingEH = false OPTIONS: Jit invoked for ngen IL to import: IL_0000 72 01 00 00 70 ldstr 0x70000001 IL_0005 28 06 00 00 0a call 0xA000006 IL_000a 72 0f 00 00 70 ldstr 0x7000000F IL_000f 28 06 00 00 0a call 0xA000006 IL_0014 72 21 00 00 70 ldstr 0x70000021 IL_0019 28 06 00 00 0a call 0xA000006 IL_001e dd 12 00 00 00 leave 18 (IL_0035) IL_0023 72 37 00 00 70 ldstr 0x70000037 IL_0028 28 06 00 00 0a call 0xA000006 IL_002d 73 09 00 00 0a newobj 0xA000009 IL_0032 7a throw IL_0033 2b fe br.s -2 (IL_0033) IL_0035 dd 1e 00 00 00 leave 30 (IL_0058) IL_003a 26 pop IL_003b 72 55 00 00 70 ldstr 0x70000055 IL_0040 28 06 00 00 0a call 0xA000006 IL_0045 16 ldc.i4.0 IL_0046 fe 11 endfilter IL_0048 26 pop IL_0049 72 ab 00 00 70 ldstr 0x700000AB IL_004e 28 06 00 00 0a call 0xA000006 IL_0053 dd 00 00 00 00 leave 0 (IL_0058) IL_0058 dd 1e 00 00 00 leave 30 (IL_007b) IL_005d 26 pop IL_005e 72 6d 00 00 70 ldstr 0x7000006D IL_0063 28 06 00 00 0a call 0xA000006 IL_0068 16 ldc.i4.0 IL_0069 fe 11 endfilter IL_006b 26 pop IL_006c 72 c5 00 00 70 ldstr 0x700000C5 IL_0071 28 06 00 00 0a call 0xA000006 IL_0076 dd 00 00 00 00 leave 0 (IL_007b) IL_007b 2a ret Arg #0 passed in register(s) ecx ; Initial local variable assignments ; ; V00 arg0 int *************** In compInitDebuggingInfo() for :func(int) getVars() returned cVars = 0, extendOthers = true info.compVarScopesCount = 1 VarNum LVNum Name Beg End 0: 00h 00h V00 arg0 000h 07Ch info.compStmtOffsetsCount = 0 info.compStmtOffsetsImplicit = 0007h ( STACK_EMPTY NOP CALL_SITE ) *************** In fgFindBasicBlocks() for :func(int) Jump targets: IL_0000 IL_000a IL_0014 IL_0023 IL_0033 IL_0035 IL_003a IL_0048 IL_0058 IL_005d IL_006b IL_007b New Basic Block BB01 [0000] created. BB01 [0000] [000..00A) New Basic Block BB02 [0001] created. BB02 [0001] [00A..014) New Basic Block BB03 [0002] created. BB03 [0002] [014..023) New Basic Block BB04 [0003] created. BB04 [0003] [023..033) New Basic Block BB05 [0004] created. BB05 [0004] [033..035) New Basic Block BB06 [0005] created. BB06 [0005] [035..03A) New Basic Block BB07 [0006] created. BB07 [0006] [03A..048) New Basic Block BB08 [0007] created. BB08 [0007] [048..058) New Basic Block BB09 [0008] created. BB09 [0008] [058..05D) New Basic Block BB10 [0009] created. BB10 [0009] [05D..06B) New Basic Block BB11 [0010] created. BB11 [0010] [06B..07B) New Basic Block BB12 [0011] created. BB12 [0011] [07B..07C) Setting edge weights for BB01 -> BB02 to [0 .. 3.402823e+38] setting likelihood of BB01 -> BB02 to 1 Setting edge weights for BB02 -> BB03 to [0 .. 3.402823e+38] setting likelihood of BB02 -> BB03 to 1 Setting edge weights for BB03 -> BB06 to [0 .. 3.402823e+38] setting likelihood of BB03 -> BB06 to 1 Setting edge weights for BB05 -> BB05 to [0 .. 3.402823e+38] setting likelihood of BB05 -> BB05 to 1 Setting edge weights for BB06 -> BB09 to [0 .. 3.402823e+38] setting likelihood of BB06 -> BB09 to 1 Setting edge weights for BB08 -> BB09 to [0 .. 3.402823e+38] setting likelihood of BB08 -> BB09 to 1 Setting edge weights for BB09 -> BB12 to [0 .. 3.402823e+38] setting likelihood of BB09 -> BB12 to 1 Setting edge weights for BB11 -> BB12 to [0 .. 3.402823e+38] setting likelihood of BB11 -> BB12 to 1 EH clause #0: Flags: 0x2 (finally) TryOffset: 0x14 TryLength: 0xf HandlerOffset: 0x23 HandlerLength: 0x12 ClassToken: 0x0 EH clause #1: Flags: 0x1 (filter) TryOffset: 0xa TryLength: 0x30 HandlerOffset: 0x48 HandlerLength: 0x10 FilterOffset: 0x3a Setting edge weights for BB07 -> BB08 to [0 .. 3.402823e+38] setting likelihood of BB07 -> BB08 to 1 EH clause #2: Flags: 0x1 (filter) TryOffset: 0x0 TryLength: 0x5d HandlerOffset: 0x6b HandlerLength: 0x10 FilterOffset: 0x5d Setting edge weights for BB10 -> BB11 to [0 .. 3.402823e+38] setting likelihood of BB10 -> BB11 to 1 *************** After fgFindBasicBlocks() has created the EH table *************** Exception Handling table index eTry, eHnd 0 :: 1 - Try at BB03..BB03 [014..023), Finally at BB04..BB05 [023..035) 1 :: 2 - Try at BB02..BB06 [00A..03A), Filter at BB07..BB07 [03A..048), Handler at BB08..BB08 [048..058) 2 :: - Try at BB01..BB09 [000..05D), Filter at BB10..BB10 [05D..06B), Handler at BB11..BB11 [06B..07B) *************** In fgNormalizeEH() ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 2 1 [000..00A)-> BB02 (always) T2 try { keep q BB02 [0001] 1 1 BB01 1 [00A..014)-> BB03 (always) T1 try { keep q BB03 [0002] 1 0 BB02 1 [014..023)-> BB06 (leave ) T0 try { } keep BB04 [0003] 1 1 0 0 [023..033) (throw ) T1 H0 finally { rare keep BB05 [0004] 1 1 0 BB05 1 [033..035)-> BB05 (always) T1 H0 } bwd bwd-target bwd-src BB06 [0005] 1 1 BB03 1 [035..03A)-> BB09 (leave ) T1 } BB07 [0006] 1 2 1 1 [03A..048)-> BB08 (fltret) T2 H1 filter { } keep BB08 [0007] 2 2 1 BB07 1 [048..058)-> BB09 (leave ) T2 H1 filtHnd { } keep BB09 [0008] 2 2 BB06,BB08 1 [058..05D)-> BB12 (leave ) T2 } BB10 [0009] 1 2 1 [05D..06B)-> BB11 (fltret) H2 filter { } keep BB11 [0010] 2 2 BB10 1 [06B..07B)-> BB12 (leave ) H2 filtHnd { } keep BB12 [0011] 2 BB09,BB11 1 [07B..07C) (return) ---------------------------------------------------------------------------------------------------------------------------------------------- *************** Exception Handling table index eTry, eHnd 0 :: 1 - Try at BB03..BB03 [014..023), Finally at BB04..BB05 [023..035) 1 :: 2 - Try at BB02..BB06 [00A..03A), Filter at BB07..BB07 [03A..048), Handler at BB08..BB08 [048..058) 2 :: - Try at BB01..BB09 [000..05D), Filter at BB10..BB10 [05D..06B), Handler at BB11..BB11 [06B..07B) No EH normalization performed. INLINER: during 'prejit' result 'failed this callee' reason 'has exception handling' for 'n/a' calling ':func(int)' INLINER: Marking :func(int) as NOINLINE because of has exception handling INLINER: during 'prejit' result 'failed this callee' reason 'has exception handling' IL Code Size,Instr 124, 33, Basic Block count 12, Local Variable Num,Ref count 1, 0 for method :func(int) OPTIONS: opts.MinOpts() == false Basic block list for ':func(int)' ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 2 1 [000..00A)-> BB02 (always) T2 try { keep q BB02 [0001] 1 1 BB01 1 [00A..014)-> BB03 (always) T1 try { keep q BB03 [0002] 1 0 BB02 1 [014..023)-> BB06 (leave ) T0 try { } keep BB04 [0003] 1 1 0 0 [023..033) (throw ) T1 H0 finally { rare keep BB05 [0004] 1 1 0 BB05 1 [033..035)-> BB05 (always) T1 H0 } bwd bwd-target bwd-src BB06 [0005] 1 1 BB03 1 [035..03A)-> BB09 (leave ) T1 } BB07 [0006] 1 2 1 1 [03A..048)-> BB08 (fltret) T2 H1 filter { } keep BB08 [0007] 2 2 1 BB07 1 [048..058)-> BB09 (leave ) T2 H1 filtHnd { } keep BB09 [0008] 2 2 BB06,BB08 1 [058..05D)-> BB12 (leave ) T2 } BB10 [0009] 1 2 1 [05D..06B)-> BB11 (fltret) H2 filter { } keep BB11 [0010] 2 2 BB10 1 [06B..07B)-> BB12 (leave ) H2 filtHnd { } keep BB12 [0011] 2 BB09,BB11 1 [07B..07C) (return) ---------------------------------------------------------------------------------------------------------------------------------------------- *************** Starting PHASE Pre-import *************** Finishing PHASE Pre-import Trees after Pre-import ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 2 1 [000..00A)-> BB02 (always) T2 try { keep q BB02 [0001] 1 1 BB01 1 [00A..014)-> BB03 (always) T1 try { keep q BB03 [0002] 1 0 BB02 1 [014..023)-> BB06 (leave ) T0 try { } keep BB04 [0003] 1 1 0 0 [023..033) (throw ) T1 H0 finally { rare keep BB05 [0004] 1 1 0 BB05 1 [033..035)-> BB05 (always) T1 H0 } bwd bwd-target bwd-src BB06 [0005] 1 1 BB03 1 [035..03A)-> BB09 (leave ) T1 } BB07 [0006] 1 2 1 1 [03A..048)-> BB08 (fltret) T2 H1 filter { } keep BB08 [0007] 2 2 1 BB07 1 [048..058)-> BB09 (leave ) T2 H1 filtHnd { } keep BB09 [0008] 2 2 BB06,BB08 1 [058..05D)-> BB12 (leave ) T2 } BB10 [0009] 1 2 1 [05D..06B)-> BB11 (fltret) H2 filter { } keep BB11 [0010] 2 2 BB10 1 [06B..07B)-> BB12 (leave ) H2 filtHnd { } keep BB12 [0011] 2 BB09,BB11 1 [07B..07C) (return) ---------------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [0000] [000..00A) -> BB02 (always), preds={} succs={BB02} ------------ BB02 [0001] [00A..014) -> BB03 (always), preds={BB01} succs={BB03} ------------ BB03 [0002] [014..023) -> BB06 (leave), preds={BB02} succs={BB06} ------------ BB04 [0003] [023..033) (throw), preds={} succs={} ------------ BB05 [0004] [033..035) -> BB05 (always), preds={BB05} succs={BB05} ------------ BB06 [0005] [035..03A) -> BB09 (leave), preds={BB03} succs={BB09} ------------ BB07 [0006] [03A..048) -> BB08 (fltret), preds={} succs={BB08} ------------ BB08 [0007] [048..058) -> BB09 (leave), preds={BB07} succs={BB09} ------------ BB09 [0008] [058..05D) -> BB12 (leave), preds={BB06,BB08} succs={BB12} ------------ BB10 [0009] [05D..06B) -> BB11 (fltret), preds={} succs={BB11} ------------ BB11 [0010] [06B..07B) -> BB12 (leave), preds={BB10} succs={BB12} ------------ BB12 [0011] [07B..07C) (return), preds={BB09,BB11} succs={} ------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist *************** Starting PHASE Profile incorporation BBOPT not set *************** Finishing PHASE Profile incorporation [no changes] *************** Starting PHASE Importation impImportBlockPending for BB01 impImportBlockPending for BB11 New Basic Block BB13 [0012] created. EH#2: New first block of filter: BB13 Setting edge weights for BB13 -> BB10 to [0 .. 3.402823e+38] setting likelihood of BB13 -> BB10 to 1 lvaGrabTemp returning 1 (V01 tmp0) (a long lifetime temp) called for SpillCatchArg. impImportBlockPending for BB10 Importing BB01 (PC=000) of ':func(int)' [ 0] 0 (0x000) ldstr 70000001 [ 1] 5 (0x005) call 0A000006 In Compiler::impImportCall: opcode is call, kind=0, callRetType is void, structSize is 0 INLINER: during 'impMarkInlineCandidate' result 'failed this callee' reason 'noinline per IL/cached result' for ':func(int)' calling 'System.Console:WriteLine(System.String)' INLINER: during 'impMarkInlineCandidate' result 'failed this callee' reason 'noinline per IL/cached result' STMT00001 ( 0x000[E-] ... ??? ) [000007] --C-G------ * CALL void System.Console:WriteLine(System.String) [000006] ----------- arg0 \--* CNS_STR ref impImportBlockPending for BB02 impImportBlockPending for BB08 New Basic Block BB14 [0013] created. EH#1: New first block of filter: BB14 Setting edge weights for BB14 -> BB07 to [0 .. 3.402823e+38] setting likelihood of BB14 -> BB07 to 1 lvaGrabTemp returning 2 (V02 tmp1) (a long lifetime temp) called for SpillCatchArg. impImportBlockPending for BB07 Importing BB02 (PC=010) of ':func(int)' [ 0] 10 (0x00a) ldstr 7000000F [ 1] 15 (0x00f) call 0A000006 In Compiler::impImportCall: opcode is call, kind=0, callRetType is void, structSize is 0 INLINER: during 'impMarkInlineCandidate' result 'failed this callee' reason 'noinline per IL/cached result' for ':func(int)' calling 'System.Console:WriteLine(System.String)' INLINER: during 'impMarkInlineCandidate' result 'failed this callee' reason 'noinline per IL/cached result' STMT00003 ( 0x00A[E-] ... ??? ) [000015] --C-G------ * CALL void System.Console:WriteLine(System.String) [000014] ----------- arg0 \--* CNS_STR ref impImportBlockPending for BB03 impImportBlockPending for BB04 Importing BB03 (PC=020) of ':func(int)' [ 0] 20 (0x014) ldstr 70000021 [ 1] 25 (0x019) call 0A000006 In Compiler::impImportCall: opcode is call, kind=0, callRetType is void, structSize is 0 INLINER: during 'impMarkInlineCandidate' result 'failed this callee' reason 'noinline per IL/cached result' for ':func(int)' calling 'System.Console:WriteLine(System.String)' INLINER: during 'impMarkInlineCandidate' result 'failed this callee' reason 'noinline per IL/cached result' STMT00004 ( 0x014[E-] ... ??? ) [000017] --C-G------ * CALL void System.Console:WriteLine(System.String) [000016] ----------- arg0 \--* CNS_STR ref [ 0] 30 (0x01e) leave 0035 Before import CEE_LEAVE in BB03 (targeting BB06): ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 2 1 [000..00A)-> BB02 (always) T2 try { i keep q BB02 [0001] 1 1 BB01 1 [00A..014)-> BB03 (always) T1 try { i keep q BB03 [0002] 1 0 BB02 1 [014..023)-> BB06 (leave ) T0 try { } keep BB04 [0003] 1 1 0 0 [023..033) (throw ) T1 H0 finally { rare keep BB05 [0004] 1 1 0 BB05 1 [033..035)-> BB05 (always) T1 H0 } bwd bwd-target bwd-src BB06 [0005] 1 1 BB03 1 [035..03A)-> BB09 (leave ) T1 } BB14 [0013] 1 2 1 1 [03A..???)-> BB07 (always) T2 H1 filter { i keep internal q BB07 [0006] 1 2 1 BB14 1 [03A..048)-> BB08 (fltret) T2 H1 } keep BB08 [0007] 2 2 1 BB07 1 [048..058)-> BB09 (leave ) T2 H1 filtHnd { } keep BB09 [0008] 2 2 BB06,BB08 1 [058..05D)-> BB12 (leave ) T2 } BB13 [0012] 1 2 1 [05D..???)-> BB10 (always) H2 filter { i keep internal q BB10 [0009] 1 2 BB13 1 [05D..06B)-> BB11 (fltret) H2 } keep BB11 [0010] 2 2 BB10 1 [06B..07B)-> BB12 (leave ) H2 filtHnd { } keep BB12 [0011] 2 BB09,BB11 1 [07B..07C) (return) ---------------------------------------------------------------------------------------------------------------------------------------------- *************** Exception Handling table index eTry, eHnd 0 :: 1 - Try at BB03..BB03 [014..023), Finally at BB04..BB05 [023..035) 1 :: 2 - Try at BB02..BB06 [00A..03A), Filter at BB14..BB07 [03A..048), Handler at BB08..BB08 [048..058) 2 :: - Try at BB01..BB09 [000..05D), Filter at BB13..BB10 [05D..06B), Handler at BB11..BB11 [06B..07B) impImportLeave - jumping out of a finally-protected try (EH#0), convert block BB03 to BBJ_CALLFINALLY block New Basic Block BB15 [0014] created. EH#0: New last block of try: BB15 impImportLeave - jumping out of a finally-protected try (EH#0), created step (BBJ_CALLFINALLYRET) block BB15 Setting edge weights for BB15 -> BB06 to [0 .. 3.402823e+38] setting likelihood of BB15 -> BB06 to 1 impImportLeave - final destination of step blocks set to BB06 impImportBlockPending for BB06 After import CEE_LEAVE: ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 2 1 [000..00A)-> BB02 (always) T2 try { i keep q BB02 [0001] 1 1 BB01 1 [00A..014)-> BB03 (always) T1 try { i keep q BB03 [0002] 1 0 BB02 1 [014..023)-> BB04 (callf ) T0 try { keep BB15 [0014] 0 0 1 [???..???)-> BB06 (callfr) T0 } i internal BB04 [0003] 2 1 0 BB03 0 [023..033) (throw ) T1 H0 finally { rare keep BB05 [0004] 1 1 0 BB05 1 [033..035)-> BB05 (always) T1 H0 } bwd bwd-target bwd-src BB06 [0005] 1 1 BB15 1 [035..03A)-> BB09 (leave ) T1 } BB14 [0013] 1 2 1 1 [03A..???)-> BB07 (always) T2 H1 filter { i keep internal q BB07 [0006] 1 2 1 BB14 1 [03A..048)-> BB08 (fltret) T2 H1 } keep BB08 [0007] 2 2 1 BB07 1 [048..058)-> BB09 (leave ) T2 H1 filtHnd { } keep BB09 [0008] 2 2 BB06,BB08 1 [058..05D)-> BB12 (leave ) T2 } BB13 [0012] 1 2 1 [05D..???)-> BB10 (always) H2 filter { i keep internal q BB10 [0009] 1 2 BB13 1 [05D..06B)-> BB11 (fltret) H2 } keep BB11 [0010] 2 2 BB10 1 [06B..07B)-> BB12 (leave ) H2 filtHnd { } keep BB12 [0011] 2 BB09,BB11 1 [07B..07C) (return) ---------------------------------------------------------------------------------------------------------------------------------------------- *************** Exception Handling table index eTry, eHnd 0 :: 1 - Try at BB03..BB15 [014..023), Finally at BB04..BB05 [023..035) 1 :: 2 - Try at BB02..BB06 [00A..03A), Filter at BB14..BB07 [03A..048), Handler at BB08..BB08 [048..058) 2 :: - Try at BB01..BB09 [000..05D), Filter at BB13..BB10 [05D..06B), Handler at BB11..BB11 [06B..07B) impImportBlockPending for BB04 Importing BB06 (PC=053) of ':func(int)' [ 0] 53 (0x035) leave 0058 Before import CEE_LEAVE in BB06 (targeting BB09): ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 2 1 [000..00A)-> BB02 (always) T2 try { i keep q BB02 [0001] 1 1 BB01 1 [00A..014)-> BB03 (always) T1 try { i keep q BB03 [0002] 1 0 BB02 1 [014..023)-> BB04 (callf ) T0 try { i keep BB15 [0014] 0 0 1 [???..???)-> BB06 (callfr) T0 } i internal BB04 [0003] 2 1 0 BB03 0 [023..033) (throw ) T1 H0 finally { rare keep BB05 [0004] 1 1 0 BB05 1 [033..035)-> BB05 (always) T1 H0 } bwd bwd-target bwd-src BB06 [0005] 1 1 BB15 1 [035..03A)-> BB09 (leave ) T1 } BB14 [0013] 1 2 1 1 [03A..???)-> BB07 (always) T2 H1 filter { i keep internal q BB07 [0006] 1 2 1 BB14 1 [03A..048)-> BB08 (fltret) T2 H1 } keep BB08 [0007] 2 2 1 BB07 1 [048..058)-> BB09 (leave ) T2 H1 filtHnd { } keep BB09 [0008] 2 2 BB06,BB08 1 [058..05D)-> BB12 (leave ) T2 } BB13 [0012] 1 2 1 [05D..???)-> BB10 (always) H2 filter { i keep internal q BB10 [0009] 1 2 BB13 1 [05D..06B)-> BB11 (fltret) H2 } keep BB11 [0010] 2 2 BB10 1 [06B..07B)-> BB12 (leave ) H2 filtHnd { } keep BB12 [0011] 2 BB09,BB11 1 [07B..07C) (return) ---------------------------------------------------------------------------------------------------------------------------------------------- *************** Exception Handling table index eTry, eHnd 0 :: 1 - Try at BB03..BB15 [014..023), Finally at BB04..BB05 [023..035) 1 :: 2 - Try at BB02..BB06 [00A..03A), Filter at BB14..BB07 [03A..048), Handler at BB08..BB08 [048..058) 2 :: - Try at BB01..BB09 [000..05D), Filter at BB13..BB10 [05D..06B), Handler at BB11..BB11 [06B..07B) impImportLeave - no enclosing finally-protected try blocks or catch handlers; convert CEE_LEAVE block BB06 to BBJ_ALWAYS After import CEE_LEAVE: ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 2 1 [000..00A)-> BB02 (always) T2 try { i keep q BB02 [0001] 1 1 BB01 1 [00A..014)-> BB03 (always) T1 try { i keep q BB03 [0002] 1 0 BB02 1 [014..023)-> BB04 (callf ) T0 try { i keep BB15 [0014] 0 0 1 [???..???)-> BB06 (callfr) T0 } i internal BB04 [0003] 2 1 0 BB03 0 [023..033) (throw ) T1 H0 finally { rare keep BB05 [0004] 1 1 0 BB05 1 [033..035)-> BB05 (always) T1 H0 } bwd bwd-target bwd-src BB06 [0005] 1 1 BB15 1 [035..03A)-> BB09 (always) T1 } BB14 [0013] 1 2 1 1 [03A..???)-> BB07 (always) T2 H1 filter { i keep internal q BB07 [0006] 1 2 1 BB14 1 [03A..048)-> BB08 (fltret) T2 H1 } keep BB08 [0007] 2 2 1 BB07 1 [048..058)-> BB09 (leave ) T2 H1 filtHnd { } keep BB09 [0008] 2 2 BB06,BB08 1 [058..05D)-> BB12 (leave ) T2 } BB13 [0012] 1 2 1 [05D..???)-> BB10 (always) H2 filter { i keep internal q BB10 [0009] 1 2 BB13 1 [05D..06B)-> BB11 (fltret) H2 } keep BB11 [0010] 2 2 BB10 1 [06B..07B)-> BB12 (leave ) H2 filtHnd { } keep BB12 [0011] 2 BB09,BB11 1 [07B..07C) (return) ---------------------------------------------------------------------------------------------------------------------------------------------- *************** Exception Handling table index eTry, eHnd 0 :: 1 - Try at BB03..BB15 [014..023), Finally at BB04..BB05 [023..035) 1 :: 2 - Try at BB02..BB06 [00A..03A), Filter at BB14..BB07 [03A..048), Handler at BB08..BB08 [048..058) 2 :: - Try at BB01..BB09 [000..05D), Filter at BB13..BB10 [05D..06B), Handler at BB11..BB11 [06B..07B) impImportBlockPending for BB09 Importing BB09 (PC=088) of ':func(int)' [ 0] 88 (0x058) leave 007B Before import CEE_LEAVE in BB09 (targeting BB12): ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 2 1 [000..00A)-> BB02 (always) T2 try { i keep q BB02 [0001] 1 1 BB01 1 [00A..014)-> BB03 (always) T1 try { i keep q BB03 [0002] 1 0 BB02 1 [014..023)-> BB04 (callf ) T0 try { i keep BB15 [0014] 0 0 1 [???..???)-> BB06 (callfr) T0 } i internal BB04 [0003] 2 1 0 BB03 0 [023..033) (throw ) T1 H0 finally { rare keep BB05 [0004] 1 1 0 BB05 1 [033..035)-> BB05 (always) T1 H0 } bwd bwd-target bwd-src BB06 [0005] 1 1 BB15 1 [035..03A)-> BB09 (always) T1 } i BB14 [0013] 1 2 1 1 [03A..???)-> BB07 (always) T2 H1 filter { i keep internal q BB07 [0006] 1 2 1 BB14 1 [03A..048)-> BB08 (fltret) T2 H1 } keep BB08 [0007] 2 2 1 BB07 1 [048..058)-> BB09 (leave ) T2 H1 filtHnd { } keep BB09 [0008] 2 2 BB06,BB08 1 [058..05D)-> BB12 (leave ) T2 } BB13 [0012] 1 2 1 [05D..???)-> BB10 (always) H2 filter { i keep internal q BB10 [0009] 1 2 BB13 1 [05D..06B)-> BB11 (fltret) H2 } keep BB11 [0010] 2 2 BB10 1 [06B..07B)-> BB12 (leave ) H2 filtHnd { } keep BB12 [0011] 2 BB09,BB11 1 [07B..07C) (return) ---------------------------------------------------------------------------------------------------------------------------------------------- *************** Exception Handling table index eTry, eHnd 0 :: 1 - Try at BB03..BB15 [014..023), Finally at BB04..BB05 [023..035) 1 :: 2 - Try at BB02..BB06 [00A..03A), Filter at BB14..BB07 [03A..048), Handler at BB08..BB08 [048..058) 2 :: - Try at BB01..BB09 [000..05D), Filter at BB13..BB10 [05D..06B), Handler at BB11..BB11 [06B..07B) impImportLeave - no enclosing finally-protected try blocks or catch handlers; convert CEE_LEAVE block BB09 to BBJ_ALWAYS After import CEE_LEAVE: ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 2 1 [000..00A)-> BB02 (always) T2 try { i keep q BB02 [0001] 1 1 BB01 1 [00A..014)-> BB03 (always) T1 try { i keep q BB03 [0002] 1 0 BB02 1 [014..023)-> BB04 (callf ) T0 try { i keep BB15 [0014] 0 0 1 [???..???)-> BB06 (callfr) T0 } i internal BB04 [0003] 2 1 0 BB03 0 [023..033) (throw ) T1 H0 finally { rare keep BB05 [0004] 1 1 0 BB05 1 [033..035)-> BB05 (always) T1 H0 } bwd bwd-target bwd-src BB06 [0005] 1 1 BB15 1 [035..03A)-> BB09 (always) T1 } i BB14 [0013] 1 2 1 1 [03A..???)-> BB07 (always) T2 H1 filter { i keep internal q BB07 [0006] 1 2 1 BB14 1 [03A..048)-> BB08 (fltret) T2 H1 } keep BB08 [0007] 2 2 1 BB07 1 [048..058)-> BB09 (leave ) T2 H1 filtHnd { } keep BB09 [0008] 2 2 BB06,BB08 1 [058..05D)-> BB12 (always) T2 } BB13 [0012] 1 2 1 [05D..???)-> BB10 (always) H2 filter { i keep internal q BB10 [0009] 1 2 BB13 1 [05D..06B)-> BB11 (fltret) H2 } keep BB11 [0010] 2 2 BB10 1 [06B..07B)-> BB12 (leave ) H2 filtHnd { } keep BB12 [0011] 2 BB09,BB11 1 [07B..07C) (return) ---------------------------------------------------------------------------------------------------------------------------------------------- *************** Exception Handling table index eTry, eHnd 0 :: 1 - Try at BB03..BB15 [014..023), Finally at BB04..BB05 [023..035) 1 :: 2 - Try at BB02..BB06 [00A..03A), Filter at BB14..BB07 [03A..048), Handler at BB08..BB08 [048..058) 2 :: - Try at BB01..BB09 [000..05D), Filter at BB13..BB10 [05D..06B), Handler at BB11..BB11 [06B..07B) impImportBlockPending for BB12 Importing BB12 (PC=123) of ':func(int)' [ 0] 123 (0x07b) ret STMT00005 ( 0x07B[E-] ... ??? ) [000018] ----------- * RETURN void Importing BB04 (PC=035) of ':func(int)' [ 0] 35 (0x023) ldstr 70000037 [ 1] 40 (0x028) call 0A000006 In Compiler::impImportCall: opcode is call, kind=0, callRetType is void, structSize is 0 INLINER: during 'impMarkInlineCandidate' result 'failed this callee' reason 'noinline per IL/cached result' for ':func(int)' calling 'System.Console:WriteLine(System.String)' INLINER: during 'impMarkInlineCandidate' result 'failed this callee' reason 'noinline per IL/cached result' STMT00006 ( 0x023[E-] ... ??? ) [000020] --C-G------ * CALL void System.Console:WriteLine(System.String) [000019] ----------- arg0 \--* CNS_STR ref [ 0] 45 (0x02d) newobj lvaGrabTemp returning 3 (V03 tmp2) called for NewObj constructor temp. STMT00007 ( 0x02D[E-] ... ??? ) [000023] DA--------- * STORE_LCL_VAR ref V03 tmp2 [000022] ----------- \--* ALLOCOBJ ref [000021] H---------- \--* CNS_INT(h) int 0x425450 class Marked V03 as a single def local lvaSetClass: setting class for V03 to (4000000000425438) System.Exception [exact] 0A000009 In Compiler::impImportCall: opcode is newobj, kind=0, callRetType is void, structSize is 0 CheckCanInline: fetching method info for inline candidate .ctor -- context 4000000000425439 Class context: System.Exception INLINER: during 'impMarkInlineCandidate' result 'failed this callee' reason 'too many il bytes' for ':func(int)' calling 'System.Exception:.ctor():this' INLINER: Marking System.Exception:.ctor():this as NOINLINE because of too many il bytes INLINER: during 'impMarkInlineCandidate' result 'failed this callee' reason 'too many il bytes' STMT00008 ( ??? ... ??? ) [000025] --C-G------ * CALL void System.Exception:.ctor():this [000024] ----------- this \--* LCL_VAR ref V03 tmp2 [ 1] 50 (0x032) throw STMT00009 ( 0x032[--] ... ??? ) [000027] --CXG------ * CALL help void CORINFO_HELP_THROW [000026] ----------- arg0 \--* LCL_VAR ref V03 tmp2 Importing BB07 (PC=058) of ':func(int)' [ 1] 58 (0x03a) pop [ 0] 59 (0x03b) ldstr 70000055 [ 1] 64 (0x040) call 0A000006 In Compiler::impImportCall: opcode is call, kind=0, callRetType is void, structSize is 0 Will not inline blocks that are in the filter region INLINER: during 'impMarkInlineCandidate' result 'failed this call site' reason 'within filter region' for ':func(int)' calling 'System.Console:WriteLine(System.String)' INLINER: during 'impMarkInlineCandidate' result 'failed this call site' reason 'within filter region' STMT00010 ( 0x03B[E-] ... ??? ) [000029] --C-G------ * CALL void System.Console:WriteLine(System.String) [000028] ----------- arg0 \--* CNS_STR ref [ 0] 69 (0x045) ldc.i4.0 0 [ 1] 70 (0x046) endfilter STMT00011 ( 0x045[E-] ... ??? ) [000031] ----------- * RETFILT int [000030] ----------- \--* CNS_INT int 0 Importing BB08 (PC=072) of ':func(int)' lvaGrabTemp returning 4 (V04 tmp3) called for impSpillSpecialSideEff. STMT00012 ( 0x048[--] ... ??? ) [000032] DA---O----- * STORE_LCL_VAR ref V04 tmp3 [000009] -----O----- \--* CATCH_ARG ref Marked V04 as a single def temp lvaSetClass: setting class for V04 to (4000000000420938) System.Object [ 1] 72 (0x048) pop [ 0] 73 (0x049) ldstr 700000AB [ 1] 78 (0x04e) call 0A000006 In Compiler::impImportCall: opcode is call, kind=0, callRetType is void, structSize is 0 Will not inline blocks that are in the catch handler region INLINER: during 'impMarkInlineCandidate' result 'failed this call site' reason 'within catch region' for ':func(int)' calling 'System.Console:WriteLine(System.String)' INLINER: during 'impMarkInlineCandidate' result 'failed this call site' reason 'within catch region' STMT00013 ( 0x049[E-] ... ??? ) [000035] --C-G------ * CALL void System.Console:WriteLine(System.String) [000034] ----------- arg0 \--* CNS_STR ref [ 0] 83 (0x053) leave 0058 Before import CEE_LEAVE in BB08 (targeting BB09): ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 2 1 [000..00A)-> BB02 (always) T2 try { i keep q BB02 [0001] 1 1 BB01 1 [00A..014)-> BB03 (always) T1 try { i keep q BB03 [0002] 1 0 BB02 1 [014..023)-> BB04 (callf ) T0 try { i keep BB15 [0014] 0 0 1 [???..???)-> BB06 (callfr) T0 } i internal BB04 [0003] 2 1 0 BB03 0 [023..033) (throw ) T1 H0 finally { i rare keep newobj BB05 [0004] 1 1 0 BB05 1 [033..035)-> BB05 (always) T1 H0 } bwd bwd-target bwd-src BB06 [0005] 1 1 BB15 1 [035..03A)-> BB09 (always) T1 } i BB14 [0013] 1 2 1 1 [03A..???)-> BB07 (always) T2 H1 filter { i keep internal q BB07 [0006] 1 2 1 BB14 0 [03A..048)-> BB08 (fltret) T2 H1 } i rare keep BB08 [0007] 2 2 1 BB07 1 [048..058)-> BB09 (leave ) T2 H1 filtHnd { } keep BB09 [0008] 2 2 BB06,BB08 1 [058..05D)-> BB12 (always) T2 } i BB13 [0012] 1 2 1 [05D..???)-> BB10 (always) H2 filter { i keep internal q BB10 [0009] 1 2 BB13 1 [05D..06B)-> BB11 (fltret) H2 } keep BB11 [0010] 2 2 BB10 1 [06B..07B)-> BB12 (leave ) H2 filtHnd { } keep BB12 [0011] 2 BB09,BB11 1 [07B..07C) (return) i ---------------------------------------------------------------------------------------------------------------------------------------------- *************** Exception Handling table index eTry, eHnd 0 :: 1 - Try at BB03..BB15 [014..023), Finally at BB04..BB05 [023..035) 1 :: 2 - Try at BB02..BB06 [00A..03A), Filter at BB14..BB07 [03A..048), Handler at BB08..BB08 [048..058) 2 :: - Try at BB01..BB09 [000..05D), Filter at BB13..BB10 [05D..06B), Handler at BB11..BB11 [06B..07B) impImportLeave - jumping out of a catch (EH#1), convert block BB08 to BBJ_EHCATCHRET block impImportLeave - final destination of step blocks set to BB09 impImportBlockPending for BB09 After import CEE_LEAVE: ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 2 1 [000..00A)-> BB02 (always) T2 try { i keep q BB02 [0001] 1 1 BB01 1 [00A..014)-> BB03 (always) T1 try { i keep q BB03 [0002] 1 0 BB02 1 [014..023)-> BB04 (callf ) T0 try { i keep BB15 [0014] 0 0 1 [???..???)-> BB06 (callfr) T0 } i internal BB04 [0003] 2 1 0 BB03 0 [023..033) (throw ) T1 H0 finally { i rare keep newobj BB05 [0004] 1 1 0 BB05 1 [033..035)-> BB05 (always) T1 H0 } bwd bwd-target bwd-src BB06 [0005] 1 1 BB15 1 [035..03A)-> BB09 (always) T1 } i BB14 [0013] 1 2 1 1 [03A..???)-> BB07 (always) T2 H1 filter { i keep internal q BB07 [0006] 1 2 1 BB14 0 [03A..048)-> BB08 (fltret) T2 H1 } i rare keep BB08 [0007] 2 2 1 BB07 1 [048..058)-> BB09 ( cret ) T2 H1 filtHnd { } keep BB09 [0008] 2 2 BB06,BB08 1 [058..05D)-> BB12 (always) T2 } i BB13 [0012] 1 2 1 [05D..???)-> BB10 (always) H2 filter { i keep internal q BB10 [0009] 1 2 BB13 1 [05D..06B)-> BB11 (fltret) H2 } keep BB11 [0010] 2 2 BB10 1 [06B..07B)-> BB12 (leave ) H2 filtHnd { } keep BB12 [0011] 2 BB09,BB11 1 [07B..07C) (return) i ---------------------------------------------------------------------------------------------------------------------------------------------- *************** Exception Handling table index eTry, eHnd 0 :: 1 - Try at BB03..BB15 [014..023), Finally at BB04..BB05 [023..035) 1 :: 2 - Try at BB02..BB06 [00A..03A), Filter at BB14..BB07 [03A..048), Handler at BB08..BB08 [048..058) 2 :: - Try at BB01..BB09 [000..05D), Filter at BB13..BB10 [05D..06B), Handler at BB11..BB11 [06B..07B) impImportBlockPending for BB09 Importing BB10 (PC=093) of ':func(int)' [ 1] 93 (0x05d) pop [ 0] 94 (0x05e) ldstr 7000006D [ 1] 99 (0x063) call 0A000006 In Compiler::impImportCall: opcode is call, kind=0, callRetType is void, structSize is 0 Will not inline blocks that are in the filter region INLINER: during 'impMarkInlineCandidate' result 'failed this call site' reason 'within filter region' for ':func(int)' calling 'System.Console:WriteLine(System.String)' INLINER: during 'impMarkInlineCandidate' result 'failed this call site' reason 'within filter region' STMT00014 ( 0x05E[E-] ... ??? ) [000037] --C-G------ * CALL void System.Console:WriteLine(System.String) [000036] ----------- arg0 \--* CNS_STR ref [ 0] 104 (0x068) ldc.i4.0 0 [ 1] 105 (0x069) endfilter STMT00015 ( 0x068[E-] ... ??? ) [000039] ----------- * RETFILT int [000038] ----------- \--* CNS_INT int 0 Importing BB11 (PC=107) of ':func(int)' lvaGrabTemp returning 5 (V05 tmp4) called for impSpillSpecialSideEff. STMT00016 ( 0x06B[--] ... ??? ) [000040] DA---O----- * STORE_LCL_VAR ref V05 tmp4 [000001] -----O----- \--* CATCH_ARG ref Marked V05 as a single def temp lvaSetClass: setting class for V05 to (4000000000420938) System.Object [ 1] 107 (0x06b) pop [ 0] 108 (0x06c) ldstr 700000C5 [ 1] 113 (0x071) call 0A000006 In Compiler::impImportCall: opcode is call, kind=0, callRetType is void, structSize is 0 Will not inline blocks that are in the catch handler region INLINER: during 'impMarkInlineCandidate' result 'failed this call site' reason 'within catch region' for ':func(int)' calling 'System.Console:WriteLine(System.String)' INLINER: during 'impMarkInlineCandidate' result 'failed this call site' reason 'within catch region' STMT00017 ( 0x06C[E-] ... ??? ) [000043] --C-G------ * CALL void System.Console:WriteLine(System.String) [000042] ----------- arg0 \--* CNS_STR ref [ 0] 118 (0x076) leave 007B Before import CEE_LEAVE in BB11 (targeting BB12): ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 2 1 [000..00A)-> BB02 (always) T2 try { i keep q BB02 [0001] 1 1 BB01 1 [00A..014)-> BB03 (always) T1 try { i keep q BB03 [0002] 1 0 BB02 1 [014..023)-> BB04 (callf ) T0 try { i keep BB15 [0014] 0 0 1 [???..???)-> BB06 (callfr) T0 } i internal BB04 [0003] 2 1 0 BB03 0 [023..033) (throw ) T1 H0 finally { i rare keep newobj BB05 [0004] 1 1 0 BB05 1 [033..035)-> BB05 (always) T1 H0 } bwd bwd-target bwd-src BB06 [0005] 1 1 BB15 1 [035..03A)-> BB09 (always) T1 } i BB14 [0013] 1 2 1 1 [03A..???)-> BB07 (always) T2 H1 filter { i keep internal q BB07 [0006] 1 2 1 BB14 0 [03A..048)-> BB08 (fltret) T2 H1 } i rare keep BB08 [0007] 2 2 1 BB07 1 [048..058)-> BB09 ( cret ) T2 H1 filtHnd { } i keep BB09 [0008] 2 2 BB06,BB08 1 [058..05D)-> BB12 (always) T2 } i BB13 [0012] 1 2 1 [05D..???)-> BB10 (always) H2 filter { i keep internal q BB10 [0009] 1 2 BB13 0 [05D..06B)-> BB11 (fltret) H2 } i rare keep BB11 [0010] 2 2 BB10 1 [06B..07B)-> BB12 (leave ) H2 filtHnd { } keep BB12 [0011] 2 BB09,BB11 1 [07B..07C) (return) i ---------------------------------------------------------------------------------------------------------------------------------------------- *************** Exception Handling table index eTry, eHnd 0 :: 1 - Try at BB03..BB15 [014..023), Finally at BB04..BB05 [023..035) 1 :: 2 - Try at BB02..BB06 [00A..03A), Filter at BB14..BB07 [03A..048), Handler at BB08..BB08 [048..058) 2 :: - Try at BB01..BB09 [000..05D), Filter at BB13..BB10 [05D..06B), Handler at BB11..BB11 [06B..07B) impImportLeave - jumping out of a catch (EH#2), convert block BB11 to BBJ_EHCATCHRET block impImportLeave - final destination of step blocks set to BB12 impImportBlockPending for BB12 After import CEE_LEAVE: ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 2 1 [000..00A)-> BB02 (always) T2 try { i keep q BB02 [0001] 1 1 BB01 1 [00A..014)-> BB03 (always) T1 try { i keep q BB03 [0002] 1 0 BB02 1 [014..023)-> BB04 (callf ) T0 try { i keep BB15 [0014] 0 0 1 [???..???)-> BB06 (callfr) T0 } i internal BB04 [0003] 2 1 0 BB03 0 [023..033) (throw ) T1 H0 finally { i rare keep newobj BB05 [0004] 1 1 0 BB05 1 [033..035)-> BB05 (always) T1 H0 } bwd bwd-target bwd-src BB06 [0005] 1 1 BB15 1 [035..03A)-> BB09 (always) T1 } i BB14 [0013] 1 2 1 1 [03A..???)-> BB07 (always) T2 H1 filter { i keep internal q BB07 [0006] 1 2 1 BB14 0 [03A..048)-> BB08 (fltret) T2 H1 } i rare keep BB08 [0007] 2 2 1 BB07 1 [048..058)-> BB09 ( cret ) T2 H1 filtHnd { } i keep BB09 [0008] 2 2 BB06,BB08 1 [058..05D)-> BB12 (always) T2 } i BB13 [0012] 1 2 1 [05D..???)-> BB10 (always) H2 filter { i keep internal q BB10 [0009] 1 2 BB13 0 [05D..06B)-> BB11 (fltret) H2 } i rare keep BB11 [0010] 2 2 BB10 1 [06B..07B)-> BB12 ( cret ) H2 filtHnd { } keep BB12 [0011] 2 BB09,BB11 1 [07B..07C) (return) i ---------------------------------------------------------------------------------------------------------------------------------------------- *************** Exception Handling table index eTry, eHnd 0 :: 1 - Try at BB03..BB15 [014..023), Finally at BB04..BB05 [023..035) 1 :: 2 - Try at BB02..BB06 [00A..03A), Filter at BB14..BB07 [03A..048), Handler at BB08..BB08 [048..058) 2 :: - Try at BB01..BB09 [000..05D), Filter at BB13..BB10 [05D..06B), Handler at BB11..BB11 [06B..07B) impImportBlockPending for BB12 After impImport() added blocks for try,catch,finally ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 2 1 [000..00A)-> BB02 (always) T2 try { i keep q BB02 [0001] 1 1 BB01 1 [00A..014)-> BB03 (always) T1 try { i keep q BB03 [0002] 1 0 BB02 1 [014..023)-> BB04 (callf ) T0 try { i keep BB15 [0014] 0 0 1 [???..???)-> BB06 (callfr) T0 } i internal BB04 [0003] 2 1 0 BB03 0 [023..033) (throw ) T1 H0 finally { i rare keep newobj BB05 [0004] 1 1 0 BB05 1 [033..035)-> BB05 (always) T1 H0 } bwd bwd-target bwd-src BB06 [0005] 1 1 BB15 1 [035..03A)-> BB09 (always) T1 } i BB14 [0013] 1 2 1 1 [03A..???)-> BB07 (always) T2 H1 filter { i keep internal q BB07 [0006] 1 2 1 BB14 0 [03A..048)-> BB08 (fltret) T2 H1 } i rare keep BB08 [0007] 2 2 1 BB07 1 [048..058)-> BB09 ( cret ) T2 H1 filtHnd { } i keep BB09 [0008] 2 2 BB06,BB08 1 [058..05D)-> BB12 (always) T2 } i BB13 [0012] 1 2 1 [05D..???)-> BB10 (always) H2 filter { i keep internal q BB10 [0009] 1 2 BB13 0 [05D..06B)-> BB11 (fltret) H2 } i rare keep BB11 [0010] 2 2 BB10 1 [06B..07B)-> BB12 ( cret ) H2 filtHnd { } i keep BB12 [0011] 2 BB09,BB11 1 [07B..07C) (return) i ---------------------------------------------------------------------------------------------------------------------------------------------- ** Note: root method IL was partially imported -- imported 112 of 124 bytes of method IL *************** Finishing PHASE Importation Trees after Importation ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 2 1 [000..00A)-> BB02 (always) T2 try { i keep q BB02 [0001] 1 1 BB01 1 [00A..014)-> BB03 (always) T1 try { i keep q BB03 [0002] 1 0 BB02 1 [014..023)-> BB04 (callf ) T0 try { i keep BB15 [0014] 0 0 1 [???..???)-> BB06 (callfr) T0 } i internal BB04 [0003] 2 1 0 BB03 0 [023..033) (throw ) T1 H0 finally { i rare keep newobj BB05 [0004] 1 1 0 BB05 1 [033..035)-> BB05 (always) T1 H0 } bwd bwd-target bwd-src BB06 [0005] 1 1 BB15 1 [035..03A)-> BB09 (always) T1 } i BB14 [0013] 1 2 1 1 [03A..???)-> BB07 (always) T2 H1 filter { i keep internal q BB07 [0006] 1 2 1 BB14 0 [03A..048)-> BB08 (fltret) T2 H1 } i rare keep BB08 [0007] 2 2 1 BB07 1 [048..058)-> BB09 ( cret ) T2 H1 filtHnd { } i keep BB09 [0008] 2 2 BB06,BB08 1 [058..05D)-> BB12 (always) T2 } i BB13 [0012] 1 2 1 [05D..???)-> BB10 (always) H2 filter { i keep internal q BB10 [0009] 1 2 BB13 0 [05D..06B)-> BB11 (fltret) H2 } i rare keep BB11 [0010] 2 2 BB10 1 [06B..07B)-> BB12 ( cret ) H2 filtHnd { } i keep BB12 [0011] 2 BB09,BB11 1 [07B..07C) (return) i ---------------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [0000] [000..00A) -> BB02 (always), preds={} succs={BB02} ***** BB01 [0000] STMT00001 ( 0x000[E-] ... 0x005 ) [000007] --C-G------ * CALL void System.Console:WriteLine(System.String) [000006] ----------- arg0 \--* CNS_STR ref ------------ BB02 [0001] [00A..014) -> BB03 (always), preds={BB01} succs={BB03} ***** BB02 [0001] STMT00003 ( 0x00A[E-] ... 0x00F ) [000015] --C-G------ * CALL void System.Console:WriteLine(System.String) [000014] ----------- arg0 \--* CNS_STR ref ------------ BB03 [0002] [014..023) -> BB04 (callf), preds={BB02} succs={BB04} ***** BB03 [0002] STMT00004 ( 0x014[E-] ... 0x01E ) [000017] --C-G------ * CALL void System.Console:WriteLine(System.String) [000016] ----------- arg0 \--* CNS_STR ref ------------ BB15 [0014] [???..???) -> BB06 (callfr), preds={} succs={BB06} ------------ BB04 [0003] [023..033) (throw), preds={BB03} succs={} ***** BB04 [0003] STMT00006 ( 0x023[E-] ... 0x032 ) [000020] --C-G------ * CALL void System.Console:WriteLine(System.String) [000019] ----------- arg0 \--* CNS_STR ref ***** BB04 [0003] STMT00007 ( 0x02D[E-] ... ??? ) [000023] DA--------- * STORE_LCL_VAR ref V03 tmp2 [000022] ----------- \--* ALLOCOBJ ref [000021] H---------- \--* CNS_INT(h) int 0x425450 class ***** BB04 [0003] STMT00008 ( ??? ... ??? ) [000025] --C-G------ * CALL void System.Exception:.ctor():this [000024] ----------- this \--* LCL_VAR ref V03 tmp2 ***** BB04 [0003] STMT00009 ( 0x032[--] ... ??? ) [000027] --CXG------ * CALL help void CORINFO_HELP_THROW [000026] ----------- arg0 \--* LCL_VAR ref V03 tmp2 ------------ BB05 [0004] [033..035) -> BB05 (always), preds={BB05} succs={BB05} ------------ BB06 [0005] [035..03A) -> BB09 (always), preds={BB15} succs={BB09} ------------ BB14 [0013] [03A..???) -> BB07 (always), preds={} succs={BB07} ***** BB14 [0013] STMT00002 ( 0x03A[--] ... ??? ) [000011] DA---O----- * STORE_LCL_VAR ref V02 tmp1 [000010] -----O----- \--* CATCH_ARG ref ------------ BB07 [0006] [03A..048) -> BB08 (fltret), preds={BB14} succs={BB08} ***** BB07 [0006] STMT00010 ( 0x03B[E-] ... 0x047 ) [000029] --C-G------ * CALL void System.Console:WriteLine(System.String) [000028] ----------- arg0 \--* CNS_STR ref ***** BB07 [0006] STMT00011 ( 0x045[E-] ... ??? ) [000031] ----------- * RETFILT int [000030] ----------- \--* CNS_INT int 0 ------------ BB08 [0007] [048..058) -> BB09 (cret), preds={BB07} succs={BB09} ***** BB08 [0007] STMT00012 ( 0x048[--] ... 0x053 ) [000032] DA---O----- * STORE_LCL_VAR ref V04 tmp3 [000009] -----O----- \--* CATCH_ARG ref ***** BB08 [0007] STMT00013 ( 0x049[E-] ... ??? ) [000035] --C-G------ * CALL void System.Console:WriteLine(System.String) [000034] ----------- arg0 \--* CNS_STR ref ------------ BB09 [0008] [058..05D) -> BB12 (always), preds={BB06,BB08} succs={BB12} ------------ BB13 [0012] [05D..???) -> BB10 (always), preds={} succs={BB10} ***** BB13 [0012] STMT00000 ( 0x05D[--] ... ??? ) [000003] DA---O----- * STORE_LCL_VAR ref V01 tmp0 [000002] -----O----- \--* CATCH_ARG ref ------------ BB10 [0009] [05D..06B) -> BB11 (fltret), preds={BB13} succs={BB11} ***** BB10 [0009] STMT00014 ( 0x05E[E-] ... 0x06A ) [000037] --C-G------ * CALL void System.Console:WriteLine(System.String) [000036] ----------- arg0 \--* CNS_STR ref ***** BB10 [0009] STMT00015 ( 0x068[E-] ... ??? ) [000039] ----------- * RETFILT int [000038] ----------- \--* CNS_INT int 0 ------------ BB11 [0010] [06B..07B) -> BB12 (cret), preds={BB10} succs={BB12} ***** BB11 [0010] STMT00016 ( 0x06B[--] ... 0x076 ) [000040] DA---O----- * STORE_LCL_VAR ref V05 tmp4 [000001] -----O----- \--* CATCH_ARG ref ***** BB11 [0010] STMT00017 ( 0x06C[E-] ... ??? ) [000043] --C-G------ * CALL void System.Console:WriteLine(System.String) [000042] ----------- arg0 \--* CNS_STR ref ------------ BB12 [0011] [07B..07C) (return), preds={BB09,BB11} succs={} ***** BB12 [0011] STMT00005 ( 0x07B[E-] ... 0x07B ) [000018] ----------- * RETURN void ------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist Checking Profile Weights (flags:0x16) No blocks were profiled, so nothing to check *************** Starting PHASE Expand patchpoints -- no patchpoints to transform *************** Finishing PHASE Expand patchpoints [no changes] *************** Starting PHASE Indirect call transform -- no candidates to transform *************** Finishing PHASE Indirect call transform [no changes] *************** Starting PHASE Post-import BB05 was not imported, marking as removed (0) EH#0: New last block of handler: BB04 Renumbering the basic blocks for fgPostImportationCleanup *************** Before renumbering the basic blocks ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 2 1 [000..00A)-> BB02 (always) T2 try { i keep q BB02 [0001] 1 1 BB01 1 [00A..014)-> BB03 (always) T1 try { i keep q BB03 [0002] 1 0 BB02 1 [014..023)-> BB04 (callf ) T0 try { i keep BB15 [0014] 0 0 1 [???..???)-> BB06 (callfr) T0 } i internal BB04 [0003] 2 1 0 BB03 0 [023..033) (throw ) T1 H0 finally { } i rare keep newobj BB06 [0005] 1 1 BB15 1 [035..03A)-> BB09 (always) T1 } i BB14 [0013] 1 2 1 1 [03A..???)-> BB07 (always) T2 H1 filter { i keep internal q BB07 [0006] 1 2 1 BB14 0 [03A..048)-> BB08 (fltret) T2 H1 } i rare keep BB08 [0007] 2 2 1 BB07 1 [048..058)-> BB09 ( cret ) T2 H1 filtHnd { } i keep BB09 [0008] 2 2 BB06,BB08 1 [058..05D)-> BB12 (always) T2 } i BB13 [0012] 1 2 1 [05D..???)-> BB10 (always) H2 filter { i keep internal q BB10 [0009] 1 2 BB13 0 [05D..06B)-> BB11 (fltret) H2 } i rare keep BB11 [0010] 2 2 BB10 1 [06B..07B)-> BB12 ( cret ) H2 filtHnd { } i keep BB12 [0011] 2 BB09,BB11 1 [07B..07C) (return) i ---------------------------------------------------------------------------------------------------------------------------------------------- *************** Exception Handling table index eTry, eHnd 0 :: 1 - Try at BB03..BB15 [014..023), Finally at BB04..BB04 [023..035) 1 :: 2 - Try at BB02..BB06 [00A..03A), Filter at BB14..BB07 [03A..048), Handler at BB08..BB08 [048..058) 2 :: - Try at BB01..BB09 [000..05D), Filter at BB13..BB10 [05D..06B), Handler at BB11..BB11 [06B..07B) Renumber BB15 to BB04 Renumber BB04 to BB05 Renumber BB14 to BB07 Renumber BB07 to BB08 Renumber BB08 to BB09 Renumber BB09 to BB10 Renumber BB13 to BB11 Renumber BB10 to BB12 Renumber BB11 to BB13 Renumber BB12 to BB14 *************** After renumbering the basic blocks ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 2 1 [000..00A)-> BB02 (always) T2 try { i keep q BB02 [0001] 1 1 BB01 1 [00A..014)-> BB03 (always) T1 try { i keep q BB03 [0002] 1 0 BB02 1 [014..023)-> BB05 (callf ) T0 try { i keep BB04 [0014] 0 0 1 [???..???)-> BB06 (callfr) T0 } i internal BB05 [0003] 2 1 0 BB03 0 [023..033) (throw ) T1 H0 finally { } i rare keep newobj BB06 [0005] 1 1 BB04 1 [035..03A)-> BB10 (always) T1 } i BB07 [0013] 1 2 1 1 [03A..???)-> BB08 (always) T2 H1 filter { i keep internal q BB08 [0006] 1 2 1 BB07 0 [03A..048)-> BB09 (fltret) T2 H1 } i rare keep BB09 [0007] 2 2 1 BB08 1 [048..058)-> BB10 ( cret ) T2 H1 filtHnd { } i keep BB10 [0008] 2 2 BB06,BB09 1 [058..05D)-> BB14 (always) T2 } i BB11 [0012] 1 2 1 [05D..???)-> BB12 (always) H2 filter { i keep internal q BB12 [0009] 1 2 BB11 0 [05D..06B)-> BB13 (fltret) H2 } i rare keep BB13 [0010] 2 2 BB12 1 [06B..07B)-> BB14 ( cret ) H2 filtHnd { } i keep BB14 [0011] 2 BB10,BB13 1 [07B..07C) (return) i ---------------------------------------------------------------------------------------------------------------------------------------------- *************** Exception Handling table index eTry, eHnd 0 :: 1 - Try at BB03..BB04 [014..023), Finally at BB05..BB05 [023..035) 1 :: 2 - Try at BB02..BB06 [00A..03A), Filter at BB07..BB08 [03A..048), Handler at BB09..BB09 [048..058) 2 :: - Try at BB01..BB10 [000..05D), Filter at BB11..BB12 [05D..06B), Handler at BB13..BB13 [06B..07B) New BlockSet epoch 1, # of blocks (including unused BB00): 15, bitset array size: 1 (short) *************** Finishing PHASE Post-import Trees after Post-import ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 2 1 [000..00A)-> BB02 (always) T2 try { i keep q BB02 [0001] 1 1 BB01 1 [00A..014)-> BB03 (always) T1 try { i keep q BB03 [0002] 1 0 BB02 1 [014..023)-> BB05 (callf ) T0 try { i keep BB04 [0014] 0 0 1 [???..???)-> BB06 (callfr) T0 } i internal BB05 [0003] 2 1 0 BB03 0 [023..033) (throw ) T1 H0 finally { } i rare keep newobj BB06 [0005] 1 1 BB04 1 [035..03A)-> BB10 (always) T1 } i BB07 [0013] 1 2 1 1 [03A..???)-> BB08 (always) T2 H1 filter { i keep internal q BB08 [0006] 1 2 1 BB07 0 [03A..048)-> BB09 (fltret) T2 H1 } i rare keep BB09 [0007] 2 2 1 BB08 1 [048..058)-> BB10 ( cret ) T2 H1 filtHnd { } i keep BB10 [0008] 2 2 BB06,BB09 1 [058..05D)-> BB14 (always) T2 } i BB11 [0012] 1 2 1 [05D..???)-> BB12 (always) H2 filter { i keep internal q BB12 [0009] 1 2 BB11 0 [05D..06B)-> BB13 (fltret) H2 } i rare keep BB13 [0010] 2 2 BB12 1 [06B..07B)-> BB14 ( cret ) H2 filtHnd { } i keep BB14 [0011] 2 BB10,BB13 1 [07B..07C) (return) i ---------------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [0000] [000..00A) -> BB02 (always), preds={} succs={BB02} ***** BB01 [0000] STMT00001 ( 0x000[E-] ... 0x005 ) [000007] --C-G------ * CALL void System.Console:WriteLine(System.String) [000006] ----------- arg0 \--* CNS_STR ref ------------ BB02 [0001] [00A..014) -> BB03 (always), preds={BB01} succs={BB03} ***** BB02 [0001] STMT00003 ( 0x00A[E-] ... 0x00F ) [000015] --C-G------ * CALL void System.Console:WriteLine(System.String) [000014] ----------- arg0 \--* CNS_STR ref ------------ BB03 [0002] [014..023) -> BB05 (callf), preds={BB02} succs={BB05} ***** BB03 [0002] STMT00004 ( 0x014[E-] ... 0x01E ) [000017] --C-G------ * CALL void System.Console:WriteLine(System.String) [000016] ----------- arg0 \--* CNS_STR ref ------------ BB04 [0014] [???..???) -> BB06 (callfr), preds={} succs={BB06} ------------ BB05 [0003] [023..033) (throw), preds={BB03} succs={} ***** BB05 [0003] STMT00006 ( 0x023[E-] ... 0x032 ) [000020] --C-G------ * CALL void System.Console:WriteLine(System.String) [000019] ----------- arg0 \--* CNS_STR ref ***** BB05 [0003] STMT00007 ( 0x02D[E-] ... ??? ) [000023] DA--------- * STORE_LCL_VAR ref V03 tmp2 [000022] ----------- \--* ALLOCOBJ ref [000021] H---------- \--* CNS_INT(h) int 0x425450 class ***** BB05 [0003] STMT00008 ( ??? ... ??? ) [000025] --C-G------ * CALL void System.Exception:.ctor():this [000024] ----------- this \--* LCL_VAR ref V03 tmp2 ***** BB05 [0003] STMT00009 ( 0x032[--] ... ??? ) [000027] --CXG------ * CALL help void CORINFO_HELP_THROW [000026] ----------- arg0 \--* LCL_VAR ref V03 tmp2 ------------ BB06 [0005] [035..03A) -> BB10 (always), preds={BB04} succs={BB10} ------------ BB07 [0013] [03A..???) -> BB08 (always), preds={} succs={BB08} ***** BB07 [0013] STMT00002 ( 0x03A[--] ... ??? ) [000011] DA---O----- * STORE_LCL_VAR ref V02 tmp1 [000010] -----O----- \--* CATCH_ARG ref ------------ BB08 [0006] [03A..048) -> BB09 (fltret), preds={BB07} succs={BB09} ***** BB08 [0006] STMT00010 ( 0x03B[E-] ... 0x047 ) [000029] --C-G------ * CALL void System.Console:WriteLine(System.String) [000028] ----------- arg0 \--* CNS_STR ref ***** BB08 [0006] STMT00011 ( 0x045[E-] ... ??? ) [000031] ----------- * RETFILT int [000030] ----------- \--* CNS_INT int 0 ------------ BB09 [0007] [048..058) -> BB10 (cret), preds={BB08} succs={BB10} ***** BB09 [0007] STMT00012 ( 0x048[--] ... 0x053 ) [000032] DA---O----- * STORE_LCL_VAR ref V04 tmp3 [000009] -----O----- \--* CATCH_ARG ref ***** BB09 [0007] STMT00013 ( 0x049[E-] ... ??? ) [000035] --C-G------ * CALL void System.Console:WriteLine(System.String) [000034] ----------- arg0 \--* CNS_STR ref ------------ BB10 [0008] [058..05D) -> BB14 (always), preds={BB06,BB09} succs={BB14} ------------ BB11 [0012] [05D..???) -> BB12 (always), preds={} succs={BB12} ***** BB11 [0012] STMT00000 ( 0x05D[--] ... ??? ) [000003] DA---O----- * STORE_LCL_VAR ref V01 tmp0 [000002] -----O----- \--* CATCH_ARG ref ------------ BB12 [0009] [05D..06B) -> BB13 (fltret), preds={BB11} succs={BB13} ***** BB12 [0009] STMT00014 ( 0x05E[E-] ... 0x06A ) [000037] --C-G------ * CALL void System.Console:WriteLine(System.String) [000036] ----------- arg0 \--* CNS_STR ref ***** BB12 [0009] STMT00015 ( 0x068[E-] ... ??? ) [000039] ----------- * RETFILT int [000038] ----------- \--* CNS_INT int 0 ------------ BB13 [0010] [06B..07B) -> BB14 (cret), preds={BB12} succs={BB14} ***** BB13 [0010] STMT00016 ( 0x06B[--] ... 0x076 ) [000040] DA---O----- * STORE_LCL_VAR ref V05 tmp4 [000001] -----O----- \--* CATCH_ARG ref ***** BB13 [0010] STMT00017 ( 0x06C[E-] ... ??? ) [000043] --C-G------ * CALL void System.Console:WriteLine(System.String) [000042] ----------- arg0 \--* CNS_STR ref ------------ BB14 [0011] [07B..07C) (return), preds={BB10,BB13} succs={} ***** BB14 [0011] STMT00005 ( 0x07B[E-] ... 0x07B ) [000018] ----------- * RETURN void ------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist Checking Profile Weights (flags:0x16) No blocks were profiled, so nothing to check *************** Starting PHASE Morph - Init New BlockSet epoch 2, # of blocks (including unused BB00): 15, bitset array size: 1 (short) *************** Finishing PHASE Morph - Init [no changes] *************** Starting PHASE Morph - Inlining INLINER: during 'fgNoteNonInlineCandidate' result 'failed this callee' reason 'noinline per IL/cached result' for ':func(int)' calling 'System.Console:WriteLine(System.String)' INLINER: during 'fgNoteNonInlineCandidate' result 'failed this callee' reason 'noinline per IL/cached result' INLINER: during 'fgNoteNonInlineCandidate' result 'failed this callee' reason 'noinline per IL/cached result' for ':func(int)' calling 'System.Console:WriteLine(System.String)' INLINER: during 'fgNoteNonInlineCandidate' result 'failed this callee' reason 'noinline per IL/cached result' INLINER: during 'fgNoteNonInlineCandidate' result 'failed this callee' reason 'noinline per IL/cached result' for ':func(int)' calling 'System.Console:WriteLine(System.String)' INLINER: during 'fgNoteNonInlineCandidate' result 'failed this callee' reason 'noinline per IL/cached result' INLINER: during 'fgNoteNonInlineCandidate' result 'failed this callee' reason 'noinline per IL/cached result' for ':func(int)' calling 'System.Console:WriteLine(System.String)' INLINER: during 'fgNoteNonInlineCandidate' result 'failed this callee' reason 'noinline per IL/cached result' INLINER: during 'fgNoteNonInlineCandidate' result 'failed this callee' reason 'too many il bytes' for ':func(int)' calling 'System.Exception:.ctor():this' INLINER: Marking System.Exception:.ctor():this as NOINLINE because of too many il bytes INLINER: during 'fgNoteNonInlineCandidate' result 'failed this callee' reason 'too many il bytes' INLINER: during 'fgNoteNonInlineCandidate' result 'failed this call site' reason 'target is helper' for ':func(int)' calling 'n/a' INLINER: during 'fgNoteNonInlineCandidate' result 'failed this call site' reason 'target is helper' INLINER: during 'fgNoteNonInlineCandidate' result 'failed this call site' reason 'within filter region' for ':func(int)' calling 'System.Console:WriteLine(System.String)' INLINER: during 'fgNoteNonInlineCandidate' result 'failed this call site' reason 'within filter region' INLINER: during 'fgNoteNonInlineCandidate' result 'failed this call site' reason 'within catch region' for ':func(int)' calling 'System.Console:WriteLine(System.String)' INLINER: during 'fgNoteNonInlineCandidate' result 'failed this call site' reason 'within catch region' INLINER: during 'fgNoteNonInlineCandidate' result 'failed this call site' reason 'within filter region' for ':func(int)' calling 'System.Console:WriteLine(System.String)' INLINER: during 'fgNoteNonInlineCandidate' result 'failed this call site' reason 'within filter region' INLINER: during 'fgNoteNonInlineCandidate' result 'failed this call site' reason 'within catch region' for ':func(int)' calling 'System.Console:WriteLine(System.String)' INLINER: during 'fgNoteNonInlineCandidate' result 'failed this call site' reason 'within catch region' **************** Inline Tree Inlines into 06000001 [via ExtendedDefaultPolicy] :func(int): [INL00 IL=0005 TR=000007 06000092] [FAILED: callee: noinline per IL/cached result] System.Console:WriteLine(System.String) [INL00 IL=0015 TR=000015 06000092] [FAILED: callee: noinline per IL/cached result] System.Console:WriteLine(System.String) [INL00 IL=0025 TR=000017 06000092] [FAILED: callee: noinline per IL/cached result] System.Console:WriteLine(System.String) [INL00 IL=0040 TR=000020 06000092] [FAILED: callee: noinline per IL/cached result] System.Console:WriteLine(System.String) [INL00 IL=0045 TR=000025 060004ED] [FAILED: callee: too many il bytes] System.Exception:.ctor():this [INL00 IL=0064 TR=000029 06000092] [FAILED: call site: within filter region] System.Console:WriteLine(System.String) [INL00 IL=0078 TR=000035 06000092] [FAILED: call site: within catch region] System.Console:WriteLine(System.String) [INL00 IL=0099 TR=000037 06000092] [FAILED: call site: within filter region] System.Console:WriteLine(System.String) [INL00 IL=0113 TR=000043 06000092] [FAILED: call site: within catch region] System.Console:WriteLine(System.String) Budget: initialTime=432, finalTime=432, initialBudget=4320, currentBudget=4320 Budget: initialSize=2958, finalSize=2958 *************** Before renumbering the basic blocks ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 2 1 [000..00A)-> BB02 (always) T2 try { i keep q BB02 [0001] 1 1 BB01 1 [00A..014)-> BB03 (always) T1 try { i keep q BB03 [0002] 1 0 BB02 1 [014..023)-> BB05 (callf ) T0 try { i keep BB04 [0014] 0 0 1 [???..???)-> BB06 (callfr) T0 } i internal BB05 [0003] 2 1 0 BB03 0 [023..033) (throw ) T1 H0 finally { } i rare keep newobj BB06 [0005] 1 1 BB04 1 [035..03A)-> BB10 (always) T1 } i BB07 [0013] 1 2 1 1 [03A..???)-> BB08 (always) T2 H1 filter { i keep internal q BB08 [0006] 1 2 1 BB07 0 [03A..048)-> BB09 (fltret) T2 H1 } i rare keep BB09 [0007] 2 2 1 BB08 1 [048..058)-> BB10 ( cret ) T2 H1 filtHnd { } i keep BB10 [0008] 2 2 BB06,BB09 1 [058..05D)-> BB14 (always) T2 } i BB11 [0012] 1 2 1 [05D..???)-> BB12 (always) H2 filter { i keep internal q BB12 [0009] 1 2 BB11 0 [05D..06B)-> BB13 (fltret) H2 } i rare keep BB13 [0010] 2 2 BB12 1 [06B..07B)-> BB14 ( cret ) H2 filtHnd { } i keep BB14 [0011] 2 BB10,BB13 1 [07B..07C) (return) i ---------------------------------------------------------------------------------------------------------------------------------------------- *************** Exception Handling table index eTry, eHnd 0 :: 1 - Try at BB03..BB04 [014..023), Finally at BB05..BB05 [023..035) 1 :: 2 - Try at BB02..BB06 [00A..03A), Filter at BB07..BB08 [03A..048), Handler at BB09..BB09 [048..058) 2 :: - Try at BB01..BB10 [000..05D), Filter at BB11..BB12 [05D..06B), Handler at BB13..BB13 [06B..07B) =============== No blocks renumbered! *************** Finishing PHASE Morph - Inlining Trees after Morph - Inlining ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 2 1 [000..00A)-> BB02 (always) T2 try { i keep q BB02 [0001] 1 1 BB01 1 [00A..014)-> BB03 (always) T1 try { i keep q BB03 [0002] 1 0 BB02 1 [014..023)-> BB05 (callf ) T0 try { i keep BB04 [0014] 0 0 1 [???..???)-> BB06 (callfr) T0 } i internal BB05 [0003] 2 1 0 BB03 0 [023..033) (throw ) T1 H0 finally { } i rare keep newobj BB06 [0005] 1 1 BB04 1 [035..03A)-> BB10 (always) T1 } i BB07 [0013] 1 2 1 1 [03A..???)-> BB08 (always) T2 H1 filter { i keep internal q BB08 [0006] 1 2 1 BB07 0 [03A..048)-> BB09 (fltret) T2 H1 } i rare keep BB09 [0007] 2 2 1 BB08 1 [048..058)-> BB10 ( cret ) T2 H1 filtHnd { } i keep BB10 [0008] 2 2 BB06,BB09 1 [058..05D)-> BB14 (always) T2 } i BB11 [0012] 1 2 1 [05D..???)-> BB12 (always) H2 filter { i keep internal q BB12 [0009] 1 2 BB11 0 [05D..06B)-> BB13 (fltret) H2 } i rare keep BB13 [0010] 2 2 BB12 1 [06B..07B)-> BB14 ( cret ) H2 filtHnd { } i keep BB14 [0011] 2 BB10,BB13 1 [07B..07C) (return) i ---------------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [0000] [000..00A) -> BB02 (always), preds={} succs={BB02} ***** BB01 [0000] STMT00001 ( 0x000[E-] ... 0x005 ) [000007] --C-G------ * CALL void System.Console:WriteLine(System.String) [000006] ----------- arg0 \--* CNS_STR ref ------------ BB02 [0001] [00A..014) -> BB03 (always), preds={BB01} succs={BB03} ***** BB02 [0001] STMT00003 ( 0x00A[E-] ... 0x00F ) [000015] --C-G------ * CALL void System.Console:WriteLine(System.String) [000014] ----------- arg0 \--* CNS_STR ref ------------ BB03 [0002] [014..023) -> BB05 (callf), preds={BB02} succs={BB05} ***** BB03 [0002] STMT00004 ( 0x014[E-] ... 0x01E ) [000017] --C-G------ * CALL void System.Console:WriteLine(System.String) [000016] ----------- arg0 \--* CNS_STR ref ------------ BB04 [0014] [???..???) -> BB06 (callfr), preds={} succs={BB06} ------------ BB05 [0003] [023..033) (throw), preds={BB03} succs={} ***** BB05 [0003] STMT00006 ( 0x023[E-] ... 0x032 ) [000020] --C-G------ * CALL void System.Console:WriteLine(System.String) [000019] ----------- arg0 \--* CNS_STR ref ***** BB05 [0003] STMT00007 ( 0x02D[E-] ... ??? ) [000023] DA--------- * STORE_LCL_VAR ref V03 tmp2 [000022] ----------- \--* ALLOCOBJ ref [000021] H---------- \--* CNS_INT(h) int 0x425450 class ***** BB05 [0003] STMT00008 ( ??? ... ??? ) [000025] --C-G------ * CALL void System.Exception:.ctor():this [000024] ----------- this \--* LCL_VAR ref V03 tmp2 ***** BB05 [0003] STMT00009 ( 0x032[--] ... ??? ) [000027] --CXG------ * CALL help void CORINFO_HELP_THROW [000026] ----------- arg0 \--* LCL_VAR ref V03 tmp2 ------------ BB06 [0005] [035..03A) -> BB10 (always), preds={BB04} succs={BB10} ------------ BB07 [0013] [03A..???) -> BB08 (always), preds={} succs={BB08} ***** BB07 [0013] STMT00002 ( 0x03A[--] ... ??? ) [000011] DA---O----- * STORE_LCL_VAR ref V02 tmp1 [000010] -----O----- \--* CATCH_ARG ref ------------ BB08 [0006] [03A..048) -> BB09 (fltret), preds={BB07} succs={BB09} ***** BB08 [0006] STMT00010 ( 0x03B[E-] ... 0x047 ) [000029] --C-G------ * CALL void System.Console:WriteLine(System.String) [000028] ----------- arg0 \--* CNS_STR ref ***** BB08 [0006] STMT00011 ( 0x045[E-] ... ??? ) [000031] ----------- * RETFILT int [000030] ----------- \--* CNS_INT int 0 ------------ BB09 [0007] [048..058) -> BB10 (cret), preds={BB08} succs={BB10} ***** BB09 [0007] STMT00012 ( 0x048[--] ... 0x053 ) [000032] DA---O----- * STORE_LCL_VAR ref V04 tmp3 [000009] -----O----- \--* CATCH_ARG ref ***** BB09 [0007] STMT00013 ( 0x049[E-] ... ??? ) [000035] --C-G------ * CALL void System.Console:WriteLine(System.String) [000034] ----------- arg0 \--* CNS_STR ref ------------ BB10 [0008] [058..05D) -> BB14 (always), preds={BB06,BB09} succs={BB14} ------------ BB11 [0012] [05D..???) -> BB12 (always), preds={} succs={BB12} ***** BB11 [0012] STMT00000 ( 0x05D[--] ... ??? ) [000003] DA---O----- * STORE_LCL_VAR ref V01 tmp0 [000002] -----O----- \--* CATCH_ARG ref ------------ BB12 [0009] [05D..06B) -> BB13 (fltret), preds={BB11} succs={BB13} ***** BB12 [0009] STMT00014 ( 0x05E[E-] ... 0x06A ) [000037] --C-G------ * CALL void System.Console:WriteLine(System.String) [000036] ----------- arg0 \--* CNS_STR ref ***** BB12 [0009] STMT00015 ( 0x068[E-] ... ??? ) [000039] ----------- * RETFILT int [000038] ----------- \--* CNS_INT int 0 ------------ BB13 [0010] [06B..07B) -> BB14 (cret), preds={BB12} succs={BB14} ***** BB13 [0010] STMT00016 ( 0x06B[--] ... 0x076 ) [000040] DA---O----- * STORE_LCL_VAR ref V05 tmp4 [000001] -----O----- \--* CATCH_ARG ref ***** BB13 [0010] STMT00017 ( 0x06C[E-] ... ??? ) [000043] --C-G------ * CALL void System.Console:WriteLine(System.String) [000042] ----------- arg0 \--* CNS_STR ref ------------ BB14 [0011] [07B..07C) (return), preds={BB10,BB13} succs={} ***** BB14 [0011] STMT00005 ( 0x07B[E-] ... 0x07B ) [000018] ----------- * RETURN void ------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist Checking Profile Weights (flags:0x16) No blocks were profiled, so nothing to check *************** 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 preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 2 1 [000..00A)-> BB02 (always) T2 try { i keep q BB02 [0001] 1 1 BB01 1 [00A..014)-> BB03 (always) T1 try { i keep q BB03 [0002] 1 0 BB02 1 [014..023)-> BB05 (callf ) T0 try { i keep BB04 [0014] 0 0 1 [???..???)-> BB06 (callfr) T0 } i internal BB05 [0003] 2 1 0 BB03 0 [023..033) (throw ) T1 H0 finally { } i rare keep newobj BB06 [0005] 1 1 BB04 1 [035..03A)-> BB10 (always) T1 } i BB07 [0013] 1 2 1 1 [03A..???)-> BB08 (always) T2 H1 filter { i keep internal q BB08 [0006] 1 2 1 BB07 0 [03A..048)-> BB09 (fltret) T2 H1 } i rare keep BB09 [0007] 2 2 1 BB08 1 [048..058)-> BB10 ( cret ) T2 H1 filtHnd { } i keep BB10 [0008] 2 2 BB06,BB09 1 [058..05D)-> BB14 (always) T2 } i BB11 [0012] 1 2 1 [05D..???)-> BB12 (always) H2 filter { i keep internal q BB12 [0009] 1 2 BB11 0 [05D..06B)-> BB13 (fltret) H2 } i rare keep BB13 [0010] 2 2 BB12 1 [06B..07B)-> BB14 ( cret ) H2 filtHnd { } i keep BB14 [0011] 2 BB10,BB13 1 [07B..07C) (return) i ---------------------------------------------------------------------------------------------------------------------------------------------- *************** Exception Handling table index eTry, eHnd 0 :: 1 - Try at BB03..BB04 [014..023), Finally at BB05..BB05 [023..035) 1 :: 2 - Try at BB02..BB06 [00A..03A), Filter at BB07..BB08 [03A..048), Handler at BB09..BB09 [048..058) 2 :: - Try at BB01..BB10 [000..05D), Filter at BB11..BB12 [05D..06B), Handler at BB13..BB13 [06B..07B) *************** Finishing PHASE Morph - Add internal blocks [no changes] *************** Starting PHASE Remove empty try *************** In fgRemoveEmptyTry() *************** Before fgRemoveEmptyTry() ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 2 1 [000..00A)-> BB02 (always) T2 try { i keep q BB02 [0001] 1 1 BB01 1 [00A..014)-> BB03 (always) T1 try { i keep q BB03 [0002] 1 0 BB02 1 [014..023)-> BB05 (callf ) T0 try { i keep BB04 [0014] 0 0 1 [???..???)-> BB06 (callfr) T0 } i internal BB05 [0003] 2 1 0 BB03 0 [023..033) (throw ) T1 H0 finally { } i rare keep newobj BB06 [0005] 1 1 BB04 1 [035..03A)-> BB10 (always) T1 } i BB07 [0013] 1 2 1 1 [03A..???)-> BB08 (always) T2 H1 filter { i keep internal q BB08 [0006] 1 2 1 BB07 0 [03A..048)-> BB09 (fltret) T2 H1 } i rare keep BB09 [0007] 2 2 1 BB08 1 [048..058)-> BB10 ( cret ) T2 H1 filtHnd { } i keep BB10 [0008] 2 2 BB06,BB09 1 [058..05D)-> BB14 (always) T2 } i BB11 [0012] 1 2 1 [05D..???)-> BB12 (always) H2 filter { i keep internal q BB12 [0009] 1 2 BB11 0 [05D..06B)-> BB13 (fltret) H2 } i rare keep BB13 [0010] 2 2 BB12 1 [06B..07B)-> BB14 ( cret ) H2 filtHnd { } i keep BB14 [0011] 2 BB10,BB13 1 [07B..07C) (return) i ---------------------------------------------------------------------------------------------------------------------------------------------- *************** Exception Handling table index eTry, eHnd 0 :: 1 - Try at BB03..BB04 [014..023), Finally at BB05..BB05 [023..035) 1 :: 2 - Try at BB02..BB06 [00A..03A), Filter at BB07..BB08 [03A..048), Handler at BB09..BB09 [048..058) 2 :: - Try at BB01..BB10 [000..05D), Filter at BB11..BB12 [05D..06B), Handler at BB13..BB13 [06B..07B) EH#0 first try block BB03 not empty; skipping. EH#1 is not a try-finally; skipping. EH#2 is not a try-finally; skipping. *************** Finishing PHASE Remove empty try [no changes] *************** Starting PHASE Remove empty finally *************** Before fgRemoveEmptyFinally() ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 2 1 [000..00A)-> BB02 (always) T2 try { i keep q BB02 [0001] 1 1 BB01 1 [00A..014)-> BB03 (always) T1 try { i keep q BB03 [0002] 1 0 BB02 1 [014..023)-> BB05 (callf ) T0 try { i keep BB04 [0014] 0 0 1 [???..???)-> BB06 (callfr) T0 } i internal BB05 [0003] 2 1 0 BB03 0 [023..033) (throw ) T1 H0 finally { } i rare keep newobj BB06 [0005] 1 1 BB04 1 [035..03A)-> BB10 (always) T1 } i BB07 [0013] 1 2 1 1 [03A..???)-> BB08 (always) T2 H1 filter { i keep internal q BB08 [0006] 1 2 1 BB07 0 [03A..048)-> BB09 (fltret) T2 H1 } i rare keep BB09 [0007] 2 2 1 BB08 1 [048..058)-> BB10 ( cret ) T2 H1 filtHnd { } i keep BB10 [0008] 2 2 BB06,BB09 1 [058..05D)-> BB14 (always) T2 } i BB11 [0012] 1 2 1 [05D..???)-> BB12 (always) H2 filter { i keep internal q BB12 [0009] 1 2 BB11 0 [05D..06B)-> BB13 (fltret) H2 } i rare keep BB13 [0010] 2 2 BB12 1 [06B..07B)-> BB14 ( cret ) H2 filtHnd { } i keep BB14 [0011] 2 BB10,BB13 1 [07B..07C) (return) i ---------------------------------------------------------------------------------------------------------------------------------------------- *************** Exception Handling table index eTry, eHnd 0 :: 1 - Try at BB03..BB04 [014..023), Finally at BB05..BB05 [023..035) 1 :: 2 - Try at BB02..BB06 [00A..03A), Filter at BB07..BB08 [03A..048), Handler at BB09..BB09 [048..058) 2 :: - Try at BB01..BB10 [000..05D), Filter at BB11..BB12 [05D..06B), Handler at BB13..BB13 [06B..07B) EH#0 finally is not empty; skipping. EH#1 is not a try-finally; skipping. EH#2 is not a try-finally; skipping. *************** Finishing PHASE Remove empty finally [no changes] *************** Starting PHASE Merge callfinally chains EH using non-callfinally thunk model; merging not yet implemented. fgMergeFinallyChains disabled *************** Finishing PHASE Merge callfinally chains [no changes] *************** Starting PHASE Clone finally ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 2 1 [000..00A)-> BB02 (always) T2 try { i keep q BB02 [0001] 1 1 BB01 1 [00A..014)-> BB03 (always) T1 try { i keep q BB03 [0002] 1 0 BB02 1 [014..023)-> BB05 (callf ) T0 try { i keep BB04 [0014] 0 0 1 [???..???)-> BB06 (callfr) T0 } i internal BB05 [0003] 2 1 0 BB03 0 [023..033) (throw ) T1 H0 finally { } i rare keep newobj BB06 [0005] 1 1 BB04 1 [035..03A)-> BB10 (always) T1 } i BB07 [0013] 1 2 1 1 [03A..???)-> BB08 (always) T2 H1 filter { i keep internal q BB08 [0006] 1 2 1 BB07 0 [03A..048)-> BB09 (fltret) T2 H1 } i rare keep BB09 [0007] 2 2 1 BB08 1 [048..058)-> BB10 ( cret ) T2 H1 filtHnd { } i keep BB10 [0008] 2 2 BB06,BB09 1 [058..05D)-> BB14 (always) T2 } i BB11 [0012] 1 2 1 [05D..???)-> BB12 (always) H2 filter { i keep internal q BB12 [0009] 1 2 BB11 0 [05D..06B)-> BB13 (fltret) H2 } i rare keep BB13 [0010] 2 2 BB12 1 [06B..07B)-> BB14 ( cret ) H2 filtHnd { } i keep BB14 [0011] 2 BB10,BB13 1 [07B..07C) (return) i ---------------------------------------------------------------------------------------------------------------------------------------------- *************** Exception Handling table index eTry, eHnd 0 :: 1 - Try at BB03..BB04 [014..023), Finally at BB05..BB05 [023..035) 1 :: 2 - Try at BB02..BB06 [00A..03A), Filter at BB07..BB08 [03A..048), Handler at BB09..BB09 [048..058) 2 :: - Try at BB01..BB10 [000..05D), Filter at BB11..BB12 [05D..06B), Handler at BB13..BB13 [06B..07B) Finally in EH#0 does not return; skipping. EH#1 is not a try-finally; skipping. EH#2 is not a try-finally; skipping. *************** Finishing PHASE Clone finally [no changes] *************** Starting PHASE Head and tail merge *************** Finishing PHASE Head and tail merge Trees after Head and tail merge ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 2 1 [000..00A)-> BB02 (always) T2 try { i keep q BB02 [0001] 1 1 BB01 1 [00A..014)-> BB03 (always) T1 try { i keep q BB03 [0002] 1 0 BB02 1 [014..023)-> BB05 (callf ) T0 try { i keep BB04 [0014] 0 0 1 [???..???)-> BB06 (callfr) T0 } i internal BB05 [0003] 2 1 0 BB03 0 [023..033) (throw ) T1 H0 finally { } i rare keep newobj BB06 [0005] 1 1 BB04 1 [035..03A)-> BB10 (always) T1 } i BB07 [0013] 1 2 1 1 [03A..???)-> BB08 (always) T2 H1 filter { i keep internal q BB08 [0006] 1 2 1 BB07 0 [03A..048)-> BB09 (fltret) T2 H1 } i rare keep BB09 [0007] 2 2 1 BB08 1 [048..058)-> BB10 ( cret ) T2 H1 filtHnd { } i keep BB10 [0008] 2 2 BB06,BB09 1 [058..05D)-> BB14 (always) T2 } i BB11 [0012] 1 2 1 [05D..???)-> BB12 (always) H2 filter { i keep internal q BB12 [0009] 1 2 BB11 0 [05D..06B)-> BB13 (fltret) H2 } i rare keep BB13 [0010] 2 2 BB12 1 [06B..07B)-> BB14 ( cret ) H2 filtHnd { } i keep BB14 [0011] 2 BB10,BB13 1 [07B..07C) (return) i ---------------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [0000] [000..00A) -> BB02 (always), preds={} succs={BB02} ***** BB01 [0000] STMT00001 ( 0x000[E-] ... 0x005 ) [000007] --C-G------ * CALL void System.Console:WriteLine(System.String) [000006] ----------- arg0 \--* CNS_STR ref ------------ BB02 [0001] [00A..014) -> BB03 (always), preds={BB01} succs={BB03} ***** BB02 [0001] STMT00003 ( 0x00A[E-] ... 0x00F ) [000015] --C-G------ * CALL void System.Console:WriteLine(System.String) [000014] ----------- arg0 \--* CNS_STR ref ------------ BB03 [0002] [014..023) -> BB05 (callf), preds={BB02} succs={BB05} ***** BB03 [0002] STMT00004 ( 0x014[E-] ... 0x01E ) [000017] --C-G------ * CALL void System.Console:WriteLine(System.String) [000016] ----------- arg0 \--* CNS_STR ref ------------ BB04 [0014] [???..???) -> BB06 (callfr), preds={} succs={BB06} ------------ BB05 [0003] [023..033) (throw), preds={BB03} succs={} ***** BB05 [0003] STMT00006 ( 0x023[E-] ... 0x032 ) [000020] --C-G------ * CALL void System.Console:WriteLine(System.String) [000019] ----------- arg0 \--* CNS_STR ref ***** BB05 [0003] STMT00007 ( 0x02D[E-] ... ??? ) [000023] DAC-------- * STORE_LCL_VAR ref V03 tmp2 [000022] --C-------- \--* CALL help ref CORINFO_HELP_NEWSFAST [000021] H---------- arg0 \--* CNS_INT(h) int 0x425450 class ***** BB05 [0003] STMT00008 ( ??? ... ??? ) [000025] --C-G------ * CALL void System.Exception:.ctor():this [000024] ----------- this \--* LCL_VAR ref V03 tmp2 ***** BB05 [0003] STMT00009 ( 0x032[--] ... ??? ) [000027] --CXG------ * CALL help void CORINFO_HELP_THROW [000026] ----------- arg0 \--* LCL_VAR ref V03 tmp2 ------------ BB06 [0005] [035..03A) -> BB10 (always), preds={BB04} succs={BB10} ------------ BB07 [0013] [03A..???) -> BB08 (always), preds={} succs={BB08} ***** BB07 [0013] STMT00002 ( 0x03A[--] ... ??? ) [000011] DA---O----- * STORE_LCL_VAR ref V02 tmp1 [000010] -----O----- \--* CATCH_ARG ref ------------ BB08 [0006] [03A..048) -> BB09 (fltret), preds={BB07} succs={BB09} ***** BB08 [0006] STMT00010 ( 0x03B[E-] ... 0x047 ) [000029] --C-G------ * CALL void System.Console:WriteLine(System.String) [000028] ----------- arg0 \--* CNS_STR ref ***** BB08 [0006] STMT00011 ( 0x045[E-] ... ??? ) [000031] ----------- * RETFILT int [000030] ----------- \--* CNS_INT int 0 ------------ BB09 [0007] [048..058) -> BB10 (cret), preds={BB08} succs={BB10} ***** BB09 [0007] STMT00012 ( 0x048[--] ... 0x053 ) [000032] DA---O----- * STORE_LCL_VAR ref V04 tmp3 [000009] -----O----- \--* CATCH_ARG ref ***** BB09 [0007] STMT00013 ( 0x049[E-] ... ??? ) [000035] --C-G------ * CALL void System.Console:WriteLine(System.String) [000034] ----------- arg0 \--* CNS_STR ref ------------ BB10 [0008] [058..05D) -> BB14 (always), preds={BB06,BB09} succs={BB14} ------------ BB11 [0012] [05D..???) -> BB12 (always), preds={} succs={BB12} ***** BB11 [0012] STMT00000 ( 0x05D[--] ... ??? ) [000003] DA---O----- * STORE_LCL_VAR ref V01 tmp0 [000002] -----O----- \--* CATCH_ARG ref ------------ BB12 [0009] [05D..06B) -> BB13 (fltret), preds={BB11} succs={BB13} ***** BB12 [0009] STMT00014 ( 0x05E[E-] ... 0x06A ) [000037] --C-G------ * CALL void System.Console:WriteLine(System.String) [000036] ----------- arg0 \--* CNS_STR ref ***** BB12 [0009] STMT00015 ( 0x068[E-] ... ??? ) [000039] ----------- * RETFILT int [000038] ----------- \--* CNS_INT int 0 ------------ BB13 [0010] [06B..07B) -> BB14 (cret), preds={BB12} succs={BB14} ***** BB13 [0010] STMT00016 ( 0x06B[--] ... 0x076 ) [000040] DA---O----- * STORE_LCL_VAR ref V05 tmp4 [000001] -----O----- \--* CATCH_ARG ref ***** BB13 [0010] STMT00017 ( 0x06C[E-] ... ??? ) [000043] --C-G------ * CALL void System.Console:WriteLine(System.String) [000042] ----------- arg0 \--* CNS_STR ref ------------ BB14 [0011] [07B..07C) (return), preds={BB10,BB13} succs={} ***** BB14 [0011] STMT00005 ( 0x07B[E-] ... 0x07B ) [000018] ----------- * RETURN void ------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist Checking Profile Weights (flags:0x16) No blocks were profiled, so nothing to check *************** 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 fgRemoveBlock BB04, unreachable=true Removing unreachable BB04 EH#0: New last block of try: BB03 fgRemoveBlock BB06, unreachable=true Removing unreachable BB06 EH#1: New last block of try: BB05 Keeping empty block BB10 - it is the target of a catch return *************** Finishing PHASE Update flow graph early pass Trees after Update flow graph early pass ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 2 1 [000..00A)-> BB02 (always) T2 try { i keep q BB02 [0001] 1 1 BB01 1 [00A..014)-> BB03 (always) T1 try { i keep q BB03 [0002] 1 0 BB02 1 [014..023)-> BB05 (callf ) T0 try { } i keep retless BB05 [0003] 2 1 0 BB03 0 [023..033) (throw ) T1 H0 finally { } } i rare keep newobj BB07 [0013] 1 2 1 1 [03A..???)-> BB08 (always) T2 H1 filter { i keep internal q BB08 [0006] 1 2 1 BB07 0 [03A..048)-> BB09 (fltret) T2 H1 } i rare keep BB09 [0007] 2 2 1 BB08 1 [048..058)-> BB10 ( cret ) T2 H1 filtHnd { } i keep BB10 [0008] 1 2 BB09 1 [058..05D)-> BB14 (always) T2 } i BB11 [0012] 1 2 1 [05D..???)-> BB12 (always) H2 filter { i keep internal q BB12 [0009] 1 2 BB11 0 [05D..06B)-> BB13 (fltret) H2 } i rare keep BB13 [0010] 2 2 BB12 1 [06B..07B)-> BB14 ( cret ) H2 filtHnd { } i keep BB14 [0011] 2 BB10,BB13 1 [07B..07C) (return) i ---------------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [0000] [000..00A) -> BB02 (always), preds={} succs={BB02} ***** BB01 [0000] STMT00001 ( 0x000[E-] ... 0x005 ) [000007] --C-G------ * CALL void System.Console:WriteLine(System.String) [000006] ----------- arg0 \--* CNS_STR ref ------------ BB02 [0001] [00A..014) -> BB03 (always), preds={BB01} succs={BB03} ***** BB02 [0001] STMT00003 ( 0x00A[E-] ... 0x00F ) [000015] --C-G------ * CALL void System.Console:WriteLine(System.String) [000014] ----------- arg0 \--* CNS_STR ref ------------ BB03 [0002] [014..023) -> BB05 (callf), preds={BB02} succs={BB05} ***** BB03 [0002] STMT00004 ( 0x014[E-] ... 0x01E ) [000017] --C-G------ * CALL void System.Console:WriteLine(System.String) [000016] ----------- arg0 \--* CNS_STR ref ------------ BB05 [0003] [023..033) (throw), preds={BB03} succs={} ***** BB05 [0003] STMT00006 ( 0x023[E-] ... 0x032 ) [000020] --C-G------ * CALL void System.Console:WriteLine(System.String) [000019] ----------- arg0 \--* CNS_STR ref ***** BB05 [0003] STMT00007 ( 0x02D[E-] ... ??? ) [000023] DAC-------- * STORE_LCL_VAR ref V03 tmp2 [000022] --C-------- \--* CALL help ref CORINFO_HELP_NEWSFAST [000021] H---------- arg0 \--* CNS_INT(h) int 0x425450 class ***** BB05 [0003] STMT00008 ( ??? ... ??? ) [000025] --C-G------ * CALL void System.Exception:.ctor():this [000024] ----------- this \--* LCL_VAR ref V03 tmp2 ***** BB05 [0003] STMT00009 ( 0x032[--] ... ??? ) [000027] --CXG------ * CALL help void CORINFO_HELP_THROW [000026] ----------- arg0 \--* LCL_VAR ref V03 tmp2 ------------ BB07 [0013] [03A..???) -> BB08 (always), preds={} succs={BB08} ***** BB07 [0013] STMT00002 ( 0x03A[--] ... ??? ) [000011] DA---O----- * STORE_LCL_VAR ref V02 tmp1 [000010] -----O----- \--* CATCH_ARG ref ------------ BB08 [0006] [03A..048) -> BB09 (fltret), preds={BB07} succs={BB09} ***** BB08 [0006] STMT00010 ( 0x03B[E-] ... 0x047 ) [000029] --C-G------ * CALL void System.Console:WriteLine(System.String) [000028] ----------- arg0 \--* CNS_STR ref ***** BB08 [0006] STMT00011 ( 0x045[E-] ... ??? ) [000031] ----------- * RETFILT int [000030] ----------- \--* CNS_INT int 0 ------------ BB09 [0007] [048..058) -> BB10 (cret), preds={BB08} succs={BB10} ***** BB09 [0007] STMT00012 ( 0x048[--] ... 0x053 ) [000032] DA---O----- * STORE_LCL_VAR ref V04 tmp3 [000009] -----O----- \--* CATCH_ARG ref ***** BB09 [0007] STMT00013 ( 0x049[E-] ... ??? ) [000035] --C-G------ * CALL void System.Console:WriteLine(System.String) [000034] ----------- arg0 \--* CNS_STR ref ------------ BB10 [0008] [058..05D) -> BB14 (always), preds={BB09} succs={BB14} ***** BB10 [0008] STMT00018 ( ??? ... ??? ) ( 1, 1) [000044] ----------- * NO_OP void ------------ BB11 [0012] [05D..???) -> BB12 (always), preds={} succs={BB12} ***** BB11 [0012] STMT00000 ( 0x05D[--] ... ??? ) [000003] DA---O----- * STORE_LCL_VAR ref V01 tmp0 [000002] -----O----- \--* CATCH_ARG ref ------------ BB12 [0009] [05D..06B) -> BB13 (fltret), preds={BB11} succs={BB13} ***** BB12 [0009] STMT00014 ( 0x05E[E-] ... 0x06A ) [000037] --C-G------ * CALL void System.Console:WriteLine(System.String) [000036] ----------- arg0 \--* CNS_STR ref ***** BB12 [0009] STMT00015 ( 0x068[E-] ... ??? ) [000039] ----------- * RETFILT int [000038] ----------- \--* CNS_INT int 0 ------------ BB13 [0010] [06B..07B) -> BB14 (cret), preds={BB12} succs={BB14} ***** BB13 [0010] STMT00016 ( 0x06B[--] ... 0x076 ) [000040] DA---O----- * STORE_LCL_VAR ref V05 tmp4 [000001] -----O----- \--* CATCH_ARG ref ***** BB13 [0010] STMT00017 ( 0x06C[E-] ... ??? ) [000043] --C-G------ * CALL void System.Console:WriteLine(System.String) [000042] ----------- arg0 \--* CNS_STR ref ------------ BB14 [0011] [07B..07C) (return), preds={BB10,BB13} succs={} ***** BB14 [0011] STMT00005 ( 0x07B[E-] ... 0x07B ) [000018] ----------- * RETURN void ------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist Checking Profile Weights (flags:0x16) No blocks were profiled, so nothing to check *************** Starting PHASE Morph - Promote Structs lvaTable before fgPromoteStructs ; Initial local variable assignments ; ; V00 arg0 int ; V01 tmp0 ref "SpillCatchArg" ; V02 tmp1 ref "SpillCatchArg" ; V03 tmp2 ref class-hnd exact "NewObj constructor temp" ; V04 tmp3 ref class-hnd "impSpillSpecialSideEff" ; V05 tmp4 ref class-hnd "impSpillSpecialSideEff" *************** Finishing PHASE Morph - Promote Structs [no changes] *************** Starting PHASE Morph - Structs/AddrExp LocalAddressVisitor visiting statement: STMT00001 ( 0x000[E-] ... 0x005 ) [000007] --C-G------ * CALL void System.Console:WriteLine(System.String) [000006] ----------- arg0 \--* CNS_STR ref LocalAddressVisitor visiting statement: STMT00003 ( 0x00A[E-] ... 0x00F ) [000015] --C-G------ * CALL void System.Console:WriteLine(System.String) [000014] ----------- arg0 \--* CNS_STR ref LocalAddressVisitor visiting statement: STMT00004 ( 0x014[E-] ... 0x01E ) [000017] --C-G------ * CALL void System.Console:WriteLine(System.String) [000016] ----------- arg0 \--* CNS_STR ref LocalAddressVisitor visiting statement: STMT00006 ( 0x023[E-] ... 0x032 ) [000020] --C-G------ * CALL void System.Console:WriteLine(System.String) [000019] ----------- arg0 \--* CNS_STR ref LocalAddressVisitor visiting statement: STMT00007 ( 0x02D[E-] ... ??? ) [000023] DAC-------- * STORE_LCL_VAR ref V03 tmp2 [000022] --C-------- \--* CALL help ref CORINFO_HELP_NEWSFAST [000021] H---------- arg0 \--* CNS_INT(h) int 0x425450 class LocalAddressVisitor visiting statement: STMT00008 ( ??? ... ??? ) [000025] --C-G------ * CALL void System.Exception:.ctor():this [000024] ----------- this \--* LCL_VAR ref V03 tmp2 LocalAddressVisitor visiting statement: STMT00009 ( 0x032[--] ... ??? ) [000027] --CXG------ * CALL help void CORINFO_HELP_THROW [000026] ----------- arg0 \--* LCL_VAR ref V03 tmp2 LocalAddressVisitor visiting statement: STMT00002 ( 0x03A[--] ... ??? ) [000011] DA---O----- * STORE_LCL_VAR ref V02 tmp1 [000010] -----O----- \--* CATCH_ARG ref LocalAddressVisitor visiting statement: STMT00010 ( 0x03B[E-] ... 0x047 ) [000029] --C-G------ * CALL void System.Console:WriteLine(System.String) [000028] ----------- arg0 \--* CNS_STR ref LocalAddressVisitor visiting statement: STMT00011 ( 0x045[E-] ... ??? ) [000031] ----------- * RETFILT int [000030] ----------- \--* CNS_INT int 0 LocalAddressVisitor visiting statement: STMT00012 ( 0x048[--] ... 0x053 ) [000032] DA---O----- * STORE_LCL_VAR ref V04 tmp3 [000009] -----O----- \--* CATCH_ARG ref LocalAddressVisitor visiting statement: STMT00013 ( 0x049[E-] ... ??? ) [000035] --C-G------ * CALL void System.Console:WriteLine(System.String) [000034] ----------- arg0 \--* CNS_STR ref LocalAddressVisitor visiting statement: STMT00018 ( ??? ... ??? ) ( 1, 1) [000044] ----------- * NO_OP void LocalAddressVisitor visiting statement: STMT00000 ( 0x05D[--] ... ??? ) [000003] DA---O----- * STORE_LCL_VAR ref V01 tmp0 [000002] -----O----- \--* CATCH_ARG ref LocalAddressVisitor visiting statement: STMT00014 ( 0x05E[E-] ... 0x06A ) [000037] --C-G------ * CALL void System.Console:WriteLine(System.String) [000036] ----------- arg0 \--* CNS_STR ref LocalAddressVisitor visiting statement: STMT00015 ( 0x068[E-] ... ??? ) [000039] ----------- * RETFILT int [000038] ----------- \--* CNS_INT int 0 LocalAddressVisitor visiting statement: STMT00016 ( 0x06B[--] ... 0x076 ) [000040] DA---O----- * STORE_LCL_VAR ref V05 tmp4 [000001] -----O----- \--* CATCH_ARG ref LocalAddressVisitor visiting statement: STMT00017 ( 0x06C[E-] ... ??? ) [000043] --C-G------ * CALL void System.Console:WriteLine(System.String) [000042] ----------- arg0 \--* CNS_STR ref LocalAddressVisitor visiting statement: STMT00005 ( 0x07B[E-] ... 0x07B ) [000018] ----------- * RETURN void *************** Finishing PHASE Morph - Structs/AddrExp [no changes] *************** Starting PHASE Early liveness Tracked variable (5 out of 6) table: V01 tmp0 [ ref]: refCnt = 1, refCntWtd = 0 V02 tmp1 [ ref]: refCnt = 1, refCntWtd = 0 V03 tmp2 [ ref]: refCnt = 3, refCntWtd = 0 V04 tmp3 [ ref]: refCnt = 1, refCntWtd = 0 V05 tmp4 [ ref]: refCnt = 1, refCntWtd = 0 *************** In fgPerBlockLocalVarLiveness() BB01 USE(0)={} DEF(0)={} BB02 USE(0)={} DEF(0)={} BB03 USE(0)={} DEF(0)={} BB05 USE(0)={ } DEF(1)={V03} BB07 USE(0)={ } DEF(1)={V02} BB08 USE(0)={} DEF(0)={} BB09 USE(0)={ } DEF(1)={V04} BB10 USE(0)={} DEF(0)={} BB11 USE(0)={ } DEF(1)={V01} BB12 USE(0)={} DEF(0)={} BB13 USE(0)={ } DEF(1)={V05} BB14 USE(0)={} DEF(0)={} ** Memory liveness computed, GcHeap states and ByrefExposed states match *************** In fgInterBlockLocalVarLiveness() BB liveness after fgLiveVarAnalysis(): BB01 IN (0)={} OUT(0)={} BB02 IN (0)={} OUT(0)={} BB03 IN (0)={} OUT(0)={} BB05 IN (0)={} OUT(0)={} BB07 IN (0)={} OUT(0)={} BB08 IN (0)={} OUT(0)={} BB09 IN (0)={} OUT(0)={} BB10 IN (0)={} OUT(0)={} BB11 IN (0)={} OUT(0)={} BB12 IN (0)={} OUT(0)={} BB13 IN (0)={} OUT(0)={} BB14 IN (0)={} OUT(0)={} Store [000011] is dead and has no side effects, removing statement removing useless STMT00002 ( 0x03A[--] ... ??? ) [000011] DA---O----- * STORE_LCL_VAR ref V02 tmp1 [000010] -----O----- \--* CATCH_ARG ref from BB07 BB07 becomes empty Store [000032] is dead and has no side effects, removing statement removing useless STMT00012 ( 0x048[--] ... 0x053 ) [000032] DA---O----- * STORE_LCL_VAR ref V04 tmp3 [000009] -----O----- \--* CATCH_ARG ref from BB09 Store [000003] is dead and has no side effects, removing statement removing useless STMT00000 ( 0x05D[--] ... ??? ) [000003] DA---O----- * STORE_LCL_VAR ref V01 tmp0 [000002] -----O----- \--* CATCH_ARG ref from BB11 BB11 becomes empty Store [000040] is dead and has no side effects, removing statement removing useless STMT00016 ( 0x06B[--] ... 0x076 ) [000040] DA---O----- * STORE_LCL_VAR ref V05 tmp4 [000001] -----O----- \--* CATCH_ARG ref from BB13 *************** Finishing PHASE Early liveness Trees after Early liveness ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 2 1 [000..00A)-> BB02 (always) T2 try { i keep q BB02 [0001] 1 1 BB01 1 [00A..014)-> BB03 (always) T1 try { i keep q BB03 [0002] 1 0 BB02 1 [014..023)-> BB05 (callf ) T0 try { } i keep retless BB05 [0003] 2 1 0 BB03 0 [023..033) (throw ) T1 H0 finally { } } i rare keep newobj BB07 [0013] 1 2 1 1 [03A..???)-> BB08 (always) T2 H1 filter { i keep internal q BB08 [0006] 1 2 1 BB07 0 [03A..048)-> BB09 (fltret) T2 H1 } i rare keep BB09 [0007] 2 2 1 BB08 1 [048..058)-> BB10 ( cret ) T2 H1 filtHnd { } i keep BB10 [0008] 1 2 BB09 1 [058..05D)-> BB14 (always) T2 } i BB11 [0012] 1 2 1 [05D..???)-> BB12 (always) H2 filter { i keep internal q BB12 [0009] 1 2 BB11 0 [05D..06B)-> BB13 (fltret) H2 } i rare keep BB13 [0010] 2 2 BB12 1 [06B..07B)-> BB14 ( cret ) H2 filtHnd { } i keep BB14 [0011] 2 BB10,BB13 1 [07B..07C) (return) i ---------------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [0000] [000..00A) -> BB02 (always), preds={} succs={BB02} ***** BB01 [0000] STMT00001 ( 0x000[E-] ... 0x005 ) [000007] --C-G------ * CALL void System.Console:WriteLine(System.String) [000006] ----------- arg0 \--* CNS_STR ref ------------ BB02 [0001] [00A..014) -> BB03 (always), preds={BB01} succs={BB03} ***** BB02 [0001] STMT00003 ( 0x00A[E-] ... 0x00F ) [000015] --C-G------ * CALL void System.Console:WriteLine(System.String) [000014] ----------- arg0 \--* CNS_STR ref ------------ BB03 [0002] [014..023) -> BB05 (callf), preds={BB02} succs={BB05} ***** BB03 [0002] STMT00004 ( 0x014[E-] ... 0x01E ) [000017] --C-G------ * CALL void System.Console:WriteLine(System.String) [000016] ----------- arg0 \--* CNS_STR ref ------------ BB05 [0003] [023..033) (throw), preds={BB03} succs={} ***** BB05 [0003] STMT00006 ( 0x023[E-] ... 0x032 ) [000020] --C-G------ * CALL void System.Console:WriteLine(System.String) [000019] ----------- arg0 \--* CNS_STR ref ***** BB05 [0003] STMT00007 ( 0x02D[E-] ... ??? ) [000023] DAC-------- * STORE_LCL_VAR ref V03 tmp2 [000022] --C-------- \--* CALL help ref CORINFO_HELP_NEWSFAST [000021] H---------- arg0 \--* CNS_INT(h) int 0x425450 class ***** BB05 [0003] STMT00008 ( ??? ... ??? ) [000025] --C-G------ * CALL void System.Exception:.ctor():this [000024] ----------- this \--* LCL_VAR ref V03 tmp2 ***** BB05 [0003] STMT00009 ( 0x032[--] ... ??? ) [000027] --CXG------ * CALL help void CORINFO_HELP_THROW [000026] ----------- arg0 \--* LCL_VAR ref V03 tmp2 (last use) ------------ BB07 [0013] [03A..???) -> BB08 (always), preds={} succs={BB08} ------------ BB08 [0006] [03A..048) -> BB09 (fltret), preds={BB07} succs={BB09} ***** BB08 [0006] STMT00010 ( 0x03B[E-] ... 0x047 ) [000029] --C-G------ * CALL void System.Console:WriteLine(System.String) [000028] ----------- arg0 \--* CNS_STR ref ***** BB08 [0006] STMT00011 ( 0x045[E-] ... ??? ) [000031] ----------- * RETFILT int [000030] ----------- \--* CNS_INT int 0 ------------ BB09 [0007] [048..058) -> BB10 (cret), preds={BB08} succs={BB10} ***** BB09 [0007] STMT00013 ( 0x049[E-] ... ??? ) [000035] --C-G------ * CALL void System.Console:WriteLine(System.String) [000034] ----------- arg0 \--* CNS_STR ref ------------ BB10 [0008] [058..05D) -> BB14 (always), preds={BB09} succs={BB14} ***** BB10 [0008] STMT00018 ( ??? ... ??? ) ( 1, 1) [000044] ----------- * NO_OP void ------------ BB11 [0012] [05D..???) -> BB12 (always), preds={} succs={BB12} ------------ BB12 [0009] [05D..06B) -> BB13 (fltret), preds={BB11} succs={BB13} ***** BB12 [0009] STMT00014 ( 0x05E[E-] ... 0x06A ) [000037] --C-G------ * CALL void System.Console:WriteLine(System.String) [000036] ----------- arg0 \--* CNS_STR ref ***** BB12 [0009] STMT00015 ( 0x068[E-] ... ??? ) [000039] ----------- * RETFILT int [000038] ----------- \--* CNS_INT int 0 ------------ BB13 [0010] [06B..07B) -> BB14 (cret), preds={BB12} succs={BB14} ***** BB13 [0010] STMT00017 ( 0x06C[E-] ... ??? ) [000043] --C-G------ * CALL void System.Console:WriteLine(System.String) [000042] ----------- arg0 \--* CNS_STR ref ------------ BB14 [0011] [07B..07C) (return), preds={BB10,BB13} succs={} ***** BB14 [0011] STMT00005 ( 0x07B[E-] ... 0x07B ) [000018] ----------- * RETURN void ------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist Checking Profile Weights (flags:0x16) No blocks were profiled, so nothing to check *************** Starting PHASE Forward Substitution ===> BB01 ===> BB02 ===> BB03 ===> BB05 [000023]: next stmt has non-last use ===> BB07 ===> BB08 ===> BB09 ===> BB10 ===> BB11 ===> BB12 ===> BB13 ===> BB14 *************** Finishing PHASE Forward Substitution [no changes] *************** Starting PHASE Physical promotion *************** Finishing PHASE Physical promotion [no changes] *************** Starting PHASE Identify candidates for implicit byref copy omission *************** Finishing PHASE Identify candidates for implicit byref copy omission [no changes] *************** Starting PHASE Morph - ByRefs *************** Finishing PHASE Morph - ByRefs [no changes] *************** Starting PHASE DFS blocks and remove dead code *************** Finishing PHASE DFS blocks and remove dead code [no changes] *************** Starting PHASE Morph - Global Morphing BB01 Assertions in: #NA fgMorphTree BB01, STMT00001 (before) [000007] --C-G------ * CALL void System.Console:WriteLine(System.String) [000006] ----------- arg0 \--* CNS_STR ref Initializing arg info for 7.CALL: Args for call [000007] CALL after AddFinalArgsAndDetermineABIInfo: CallArg[[000006].CNS_STR ref (By value), 1 reg: ecx, byteAlignment=4] Morphing args for 7.CALL: Sorting the arguments: Deferred argument ('ecx'): [000045] H----+----- * CNS_INT(h) ref '"in try"' Moved to late list Register placement order: ecx Args for [000007].CALL after fgMorphArgs: CallArg[[000045].CNS_INT ref (By value), 1 reg: ecx, byteAlignment=4, isLate, processed] OutgoingArgsStackSize is 0 fgMorphTree BB01, STMT00001 (after) [000007] --CXG+----- * CALL void System.Console:WriteLine(System.String) [000045] H----+----- arg0 in ecx \--* CNS_INT(h) ref '"in try"' Morphing BB02 Assertions in: #NA fgMorphTree BB02, STMT00003 (before) [000015] --C-G------ * CALL void System.Console:WriteLine(System.String) [000014] ----------- arg0 \--* CNS_STR ref Initializing arg info for 15.CALL: Args for call [000015] CALL after AddFinalArgsAndDetermineABIInfo: CallArg[[000014].CNS_STR ref (By value), 1 reg: ecx, byteAlignment=4] Morphing args for 15.CALL: Sorting the arguments: Deferred argument ('ecx'): [000046] H----+----- * CNS_INT(h) ref '" in try"' Moved to late list Register placement order: ecx Args for [000015].CALL after fgMorphArgs: CallArg[[000046].CNS_INT ref (By value), 1 reg: ecx, byteAlignment=4, isLate, processed] OutgoingArgsStackSize is 0 fgMorphTree BB02, STMT00003 (after) [000015] --CXG+----- * CALL void System.Console:WriteLine(System.String) [000046] H----+----- arg0 in ecx \--* CNS_INT(h) ref '" in try"' Morphing BB03 Assertions in: #NA fgMorphTree BB03, STMT00004 (before) [000017] --C-G------ * CALL void System.Console:WriteLine(System.String) [000016] ----------- arg0 \--* CNS_STR ref Initializing arg info for 17.CALL: Args for call [000017] CALL after AddFinalArgsAndDetermineABIInfo: CallArg[[000016].CNS_STR ref (By value), 1 reg: ecx, byteAlignment=4] Morphing args for 17.CALL: Sorting the arguments: Deferred argument ('ecx'): [000047] H----+----- * CNS_INT(h) ref '" in try"' Moved to late list Register placement order: ecx Args for [000017].CALL after fgMorphArgs: CallArg[[000047].CNS_INT ref (By value), 1 reg: ecx, byteAlignment=4, isLate, processed] OutgoingArgsStackSize is 0 fgMorphTree BB03, STMT00004 (after) [000017] --CXG+----- * CALL void System.Console:WriteLine(System.String) [000047] H----+----- arg0 in ecx \--* CNS_INT(h) ref '" in try"' Morphing BB05 BB05 ineligible for cross-block Assertions in: #NA fgMorphTree BB05, STMT00006 (before) [000020] --C-G------ * CALL void System.Console:WriteLine(System.String) [000019] ----------- arg0 \--* CNS_STR ref Initializing arg info for 20.CALL: Args for call [000020] CALL after AddFinalArgsAndDetermineABIInfo: CallArg[[000019].CNS_STR ref (By value), 1 reg: ecx, byteAlignment=4] Morphing args for 20.CALL: Sorting the arguments: Deferred argument ('ecx'): [000048] H----+----- * CNS_INT(h) ref '" in finally"' Moved to late list Register placement order: ecx Args for [000020].CALL after fgMorphArgs: CallArg[[000048].CNS_INT ref (By value), 1 reg: ecx, byteAlignment=4, isLate, processed] OutgoingArgsStackSize is 0 fgMorphTree BB05, STMT00006 (after) [000020] --CXG+----- * CALL void System.Console:WriteLine(System.String) [000048] H----+----- arg0 in ecx \--* CNS_INT(h) ref '" in finally"' fgMorphTree BB05, STMT00007 (before) [000023] DAC-------- * STORE_LCL_VAR ref V03 tmp2 [000022] --C-------- \--* CALL help ref CORINFO_HELP_NEWSFAST [000021] H---------- arg0 \--* CNS_INT(h) int 0x425450 class Initializing arg info for 22.CALL: Args for call [000022] CALL after AddFinalArgsAndDetermineABIInfo: CallArg[[000021].CNS_INT int (By value), 1 reg: ecx, byteAlignment=4] Morphing args for 22.CALL: Sorting the arguments: Deferred argument ('ecx'): [000021] H----+----- * CNS_INT(h) int 0x425450 class Moved to late list Register placement order: ecx Args for [000022].CALL after fgMorphArgs: CallArg[[000021].CNS_INT int (By value), 1 reg: ecx, byteAlignment=4, isLate, processed] OutgoingArgsStackSize is 0 fgMorphTree BB05, STMT00008 (before) [000025] --C-G------ * CALL void System.Exception:.ctor():this [000024] ----------- this \--* LCL_VAR ref V03 tmp2 Initializing arg info for 25.CALL: Args for call [000025] CALL after AddFinalArgsAndDetermineABIInfo: CallArg[[000024].LCL_VAR ref (By value), 1 reg: ecx, byteAlignment=4, wellKnown[ThisPointer]] Morphing args for 25.CALL: Sorting the arguments: Deferred argument ('ecx'): [000024] -----+----- * LCL_VAR ref V03 tmp2 Moved to late list Register placement order: ecx Args for [000025].CALL after fgMorphArgs: CallArg[[000024].LCL_VAR ref (By value), 1 reg: ecx, byteAlignment=4, isLate, processed, wellKnown[ThisPointer]] OutgoingArgsStackSize is 0 fgMorphTree BB05, STMT00009 (before) [000027] --CXG------ * CALL help void CORINFO_HELP_THROW [000026] ----------- arg0 \--* LCL_VAR ref V03 tmp2 (last use) Initializing arg info for 27.CALL: Args for call [000027] CALL after AddFinalArgsAndDetermineABIInfo: CallArg[[000026].LCL_VAR ref (By value), 1 reg: ecx, byteAlignment=4] Morphing args for 27.CALL: Sorting the arguments: Deferred argument ('ecx'): [000026] -----+----- * LCL_VAR ref V03 tmp2 (last use) Moved to late list Register placement order: ecx Args for [000027].CALL after fgMorphArgs: CallArg[[000026].LCL_VAR ref (By value), 1 reg: ecx, byteAlignment=4, isLate, processed] OutgoingArgsStackSize is 0 Morphing BB07 BB07 ineligible for cross-block Assertions in: #NA Morphing BB08 Assertions in: #NA fgMorphTree BB08, STMT00010 (before) [000029] --C-G------ * CALL void System.Console:WriteLine(System.String) [000028] ----------- arg0 \--* CNS_STR ref Initializing arg info for 29.CALL: Args for call [000029] CALL after AddFinalArgsAndDetermineABIInfo: CallArg[[000028].CNS_STR ref (By value), 1 reg: ecx, byteAlignment=4] Morphing args for 29.CALL: Sorting the arguments: Deferred argument ('ecx'): [000049] H----+----- * CNS_INT(h) ref '" in filter"' Moved to late list Register placement order: ecx Args for [000029].CALL after fgMorphArgs: CallArg[[000049].CNS_INT ref (By value), 1 reg: ecx, byteAlignment=4, isLate, processed] OutgoingArgsStackSize is 0 fgMorphTree BB08, STMT00010 (after) [000029] --CXG+----- * CALL void System.Console:WriteLine(System.String) [000049] H----+----- arg0 in ecx \--* CNS_INT(h) ref '" in filter"' fgMorphTree BB08, STMT00011 (before) [000031] ----------- * RETFILT int [000030] ----------- \--* CNS_INT int 0 Morphing BB09 BB09 ineligible for cross-block Assertions in: #NA fgMorphTree BB09, STMT00013 (before) [000035] --C-G------ * CALL void System.Console:WriteLine(System.String) [000034] ----------- arg0 \--* CNS_STR ref Initializing arg info for 35.CALL: Args for call [000035] CALL after AddFinalArgsAndDetermineABIInfo: CallArg[[000034].CNS_STR ref (By value), 1 reg: ecx, byteAlignment=4] Morphing args for 35.CALL: Sorting the arguments: Deferred argument ('ecx'): [000050] H----+----- * CNS_INT(h) ref '" in handler"' Moved to late list Register placement order: ecx Args for [000035].CALL after fgMorphArgs: CallArg[[000050].CNS_INT ref (By value), 1 reg: ecx, byteAlignment=4, isLate, processed] OutgoingArgsStackSize is 0 fgMorphTree BB09, STMT00013 (after) [000035] --CXG+----- * CALL void System.Console:WriteLine(System.String) [000050] H----+----- arg0 in ecx \--* CNS_INT(h) ref '" in handler"' Morphing BB10 Assertions in: #NA fgMorphTree BB10, STMT00018 (before) ( 1, 1) [000044] ----------- * NO_OP void Morphing BB11 BB11 ineligible for cross-block Assertions in: #NA Morphing BB12 Assertions in: #NA fgMorphTree BB12, STMT00014 (before) [000037] --C-G------ * CALL void System.Console:WriteLine(System.String) [000036] ----------- arg0 \--* CNS_STR ref Initializing arg info for 37.CALL: Args for call [000037] CALL after AddFinalArgsAndDetermineABIInfo: CallArg[[000036].CNS_STR ref (By value), 1 reg: ecx, byteAlignment=4] Morphing args for 37.CALL: Sorting the arguments: Deferred argument ('ecx'): [000051] H----+----- * CNS_INT(h) ref '"in filter"' Moved to late list Register placement order: ecx Args for [000037].CALL after fgMorphArgs: CallArg[[000051].CNS_INT ref (By value), 1 reg: ecx, byteAlignment=4, isLate, processed] OutgoingArgsStackSize is 0 fgMorphTree BB12, STMT00014 (after) [000037] --CXG+----- * CALL void System.Console:WriteLine(System.String) [000051] H----+----- arg0 in ecx \--* CNS_INT(h) ref '"in filter"' fgMorphTree BB12, STMT00015 (before) [000039] ----------- * RETFILT int [000038] ----------- \--* CNS_INT int 0 Morphing BB13 BB13 ineligible for cross-block Assertions in: #NA fgMorphTree BB13, STMT00017 (before) [000043] --C-G------ * CALL void System.Console:WriteLine(System.String) [000042] ----------- arg0 \--* CNS_STR ref Initializing arg info for 43.CALL: Args for call [000043] CALL after AddFinalArgsAndDetermineABIInfo: CallArg[[000042].CNS_STR ref (By value), 1 reg: ecx, byteAlignment=4] Morphing args for 43.CALL: Sorting the arguments: Deferred argument ('ecx'): [000052] H----+----- * CNS_INT(h) ref '"in handler"' Moved to late list Register placement order: ecx Args for [000043].CALL after fgMorphArgs: CallArg[[000052].CNS_INT ref (By value), 1 reg: ecx, byteAlignment=4, isLate, processed] OutgoingArgsStackSize is 0 fgMorphTree BB13, STMT00017 (after) [000043] --CXG+----- * CALL void System.Console:WriteLine(System.String) [000052] H----+----- arg0 in ecx \--* CNS_INT(h) ref '"in handler"' Morphing BB14 Assertions in: #NA fgMorphTree BB14, STMT00005 (before) [000018] ----------- * RETURN void morph assertion stats: 64 table size, 0 assertions, 0 dropped *************** Finishing PHASE Morph - Global Trees after Morph - Global ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 2 1 [000..00A)-> BB02 (always) T2 try { i keep hascall gcsafe q BB02 [0001] 1 1 BB01 1 [00A..014)-> BB03 (always) T1 try { i keep hascall gcsafe q BB03 [0002] 1 0 BB02 1 [014..023)-> BB05 (callf ) T0 try { } i keep hascall gcsafe retless BB05 [0003] 2 1 0 BB03 0 [023..033) (throw ) T1 H0 finally { } } i rare keep hascall gcsafe newobj BB07 [0013] 1 2 1 1 [03A..???)-> BB08 (always) T2 H1 filter { i keep internal q BB08 [0006] 1 2 1 BB07 0 [03A..048)-> BB09 (fltret) T2 H1 } i rare keep hascall gcsafe BB09 [0007] 2 2 1 BB08 1 [048..058)-> BB10 ( cret ) T2 H1 filtHnd { } i keep hascall gcsafe BB10 [0008] 1 2 BB09 1 [058..05D)-> BB14 (always) T2 } i BB11 [0012] 1 2 1 [05D..???)-> BB12 (always) H2 filter { i keep internal q BB12 [0009] 1 2 BB11 0 [05D..06B)-> BB13 (fltret) H2 } i rare keep hascall gcsafe BB13 [0010] 2 2 BB12 1 [06B..07B)-> BB14 ( cret ) H2 filtHnd { } i keep hascall gcsafe BB14 [0011] 2 BB10,BB13 1 [07B..07C) (return) i ---------------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [0000] [000..00A) -> BB02 (always), preds={} succs={BB02} ***** BB01 [0000] STMT00001 ( 0x000[E-] ... 0x005 ) [000007] --CXG+----- * CALL void System.Console:WriteLine(System.String) [000045] H----+----- arg0 in ecx \--* CNS_INT(h) ref '"in try"' ------------ BB02 [0001] [00A..014) -> BB03 (always), preds={BB01} succs={BB03} ***** BB02 [0001] STMT00003 ( 0x00A[E-] ... 0x00F ) [000015] --CXG+----- * CALL void System.Console:WriteLine(System.String) [000046] H----+----- arg0 in ecx \--* CNS_INT(h) ref '" in try"' ------------ BB03 [0002] [014..023) -> BB05 (callf), preds={BB02} succs={BB05} ***** BB03 [0002] STMT00004 ( 0x014[E-] ... 0x01E ) [000017] --CXG+----- * CALL void System.Console:WriteLine(System.String) [000047] H----+----- arg0 in ecx \--* CNS_INT(h) ref '" in try"' ------------ BB05 [0003] [023..033) (throw), preds={BB03} succs={} ***** BB05 [0003] STMT00006 ( 0x023[E-] ... 0x032 ) [000020] --CXG+----- * CALL void System.Console:WriteLine(System.String) [000048] H----+----- arg0 in ecx \--* CNS_INT(h) ref '" in finally"' ***** BB05 [0003] STMT00007 ( 0x02D[E-] ... ??? ) [000023] DAC--+----- * STORE_LCL_VAR ref V03 tmp2 [000022] --C--+----- \--* CALL help ref CORINFO_HELP_NEWSFAST [000021] H----+----- arg0 in ecx \--* CNS_INT(h) int 0x425450 class ***** BB05 [0003] STMT00008 ( ??? ... ??? ) [000025] --CXG+----- * CALL void System.Exception:.ctor():this [000024] -----+----- this in ecx \--* LCL_VAR ref V03 tmp2 ***** BB05 [0003] STMT00009 ( 0x032[--] ... ??? ) [000027] --CXG+----- * CALL help void CORINFO_HELP_THROW [000026] -----+----- arg0 in ecx \--* LCL_VAR ref V03 tmp2 (last use) ------------ BB07 [0013] [03A..???) -> BB08 (always), preds={} succs={BB08} ------------ BB08 [0006] [03A..048) -> BB09 (fltret), preds={BB07} succs={BB09} ***** BB08 [0006] STMT00010 ( 0x03B[E-] ... 0x047 ) [000029] --CXG+----- * CALL void System.Console:WriteLine(System.String) [000049] H----+----- arg0 in ecx \--* CNS_INT(h) ref '" in filter"' ***** BB08 [0006] STMT00011 ( 0x045[E-] ... ??? ) [000031] -----+----- * RETFILT int [000030] -----+----- \--* CNS_INT int 0 ------------ BB09 [0007] [048..058) -> BB10 (cret), preds={BB08} succs={BB10} ***** BB09 [0007] STMT00013 ( 0x049[E-] ... ??? ) [000035] --CXG+----- * CALL void System.Console:WriteLine(System.String) [000050] H----+----- arg0 in ecx \--* CNS_INT(h) ref '" in handler"' ------------ BB10 [0008] [058..05D) -> BB14 (always), preds={BB09} succs={BB14} ***** BB10 [0008] STMT00018 ( ??? ... ??? ) ( 1, 1) [000044] -----+----- * NO_OP void ------------ BB11 [0012] [05D..???) -> BB12 (always), preds={} succs={BB12} ------------ BB12 [0009] [05D..06B) -> BB13 (fltret), preds={BB11} succs={BB13} ***** BB12 [0009] STMT00014 ( 0x05E[E-] ... 0x06A ) [000037] --CXG+----- * CALL void System.Console:WriteLine(System.String) [000051] H----+----- arg0 in ecx \--* CNS_INT(h) ref '"in filter"' ***** BB12 [0009] STMT00015 ( 0x068[E-] ... ??? ) [000039] -----+----- * RETFILT int [000038] -----+----- \--* CNS_INT int 0 ------------ BB13 [0010] [06B..07B) -> BB14 (cret), preds={BB12} succs={BB14} ***** BB13 [0010] STMT00017 ( 0x06C[E-] ... ??? ) [000043] --CXG+----- * CALL void System.Console:WriteLine(System.String) [000052] H----+----- arg0 in ecx \--* CNS_INT(h) ref '"in handler"' ------------ BB14 [0011] [07B..07C) (return), preds={BB10,BB13} succs={} ***** BB14 [0011] STMT00005 ( 0x07B[E-] ... 0x07B ) [000018] -----+----- * RETURN void ------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist Checking Profile Weights (flags:0x16) No blocks were profiled, so nothing to check *************** Starting PHASE Post-Morph *************** In fgMarkDemotedImplicitByRefArgs() *************** Finishing PHASE Post-Morph Trees after Post-Morph ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 2 1 [000..00A)-> BB02 (always) T2 try { i keep hascall gcsafe q BB02 [0001] 1 1 BB01 1 [00A..014)-> BB03 (always) T1 try { i keep hascall gcsafe q BB03 [0002] 1 0 BB02 1 [014..023)-> BB05 (callf ) T0 try { } i keep hascall gcsafe retless BB05 [0003] 2 1 0 BB03 0 [023..033) (throw ) T1 H0 finally { } } i rare keep hascall gcsafe newobj BB07 [0013] 1 2 1 1 [03A..???)-> BB08 (always) T2 H1 filter { i keep internal q BB08 [0006] 1 2 1 BB07 0 [03A..048)-> BB09 (fltret) T2 H1 } i rare keep hascall gcsafe BB09 [0007] 2 2 1 BB08 1 [048..058)-> BB10 ( cret ) T2 H1 filtHnd { } i keep hascall gcsafe BB10 [0008] 1 2 BB09 1 [058..05D)-> BB14 (always) T2 } i BB11 [0012] 1 2 1 [05D..???)-> BB12 (always) H2 filter { i keep internal q BB12 [0009] 1 2 BB11 0 [05D..06B)-> BB13 (fltret) H2 } i rare keep hascall gcsafe BB13 [0010] 2 2 BB12 1 [06B..07B)-> BB14 ( cret ) H2 filtHnd { } i keep hascall gcsafe BB14 [0011] 2 BB10,BB13 1 [07B..07C) (return) i ---------------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [0000] [000..00A) -> BB02 (always), preds={} succs={BB02} ***** BB01 [0000] STMT00001 ( 0x000[E-] ... 0x005 ) [000007] --CXG+----- * CALL void System.Console:WriteLine(System.String) [000045] H----+----- arg0 in ecx \--* CNS_INT(h) ref '"in try"' ------------ BB02 [0001] [00A..014) -> BB03 (always), preds={BB01} succs={BB03} ***** BB02 [0001] STMT00003 ( 0x00A[E-] ... 0x00F ) [000015] --CXG+----- * CALL void System.Console:WriteLine(System.String) [000046] H----+----- arg0 in ecx \--* CNS_INT(h) ref '" in try"' ------------ BB03 [0002] [014..023) -> BB05 (callf), preds={BB02} succs={BB05} ***** BB03 [0002] STMT00004 ( 0x014[E-] ... 0x01E ) [000017] --CXG+----- * CALL void System.Console:WriteLine(System.String) [000047] H----+----- arg0 in ecx \--* CNS_INT(h) ref '" in try"' ------------ BB05 [0003] [023..033) (throw), preds={BB03} succs={} ***** BB05 [0003] STMT00006 ( 0x023[E-] ... 0x032 ) [000020] --CXG+----- * CALL void System.Console:WriteLine(System.String) [000048] H----+----- arg0 in ecx \--* CNS_INT(h) ref '" in finally"' ***** BB05 [0003] STMT00007 ( 0x02D[E-] ... ??? ) [000023] DAC--+----- * STORE_LCL_VAR ref V03 tmp2 [000022] --C--+----- \--* CALL help ref CORINFO_HELP_NEWSFAST [000021] H----+----- arg0 in ecx \--* CNS_INT(h) int 0x425450 class ***** BB05 [0003] STMT00008 ( ??? ... ??? ) [000025] --CXG+----- * CALL void System.Exception:.ctor():this [000024] -----+----- this in ecx \--* LCL_VAR ref V03 tmp2 ***** BB05 [0003] STMT00009 ( 0x032[--] ... ??? ) [000027] --CXG+----- * CALL help void CORINFO_HELP_THROW [000026] -----+----- arg0 in ecx \--* LCL_VAR ref V03 tmp2 ------------ BB07 [0013] [03A..???) -> BB08 (always), preds={} succs={BB08} ------------ BB08 [0006] [03A..048) -> BB09 (fltret), preds={BB07} succs={BB09} ***** BB08 [0006] STMT00010 ( 0x03B[E-] ... 0x047 ) [000029] --CXG+----- * CALL void System.Console:WriteLine(System.String) [000049] H----+----- arg0 in ecx \--* CNS_INT(h) ref '" in filter"' ***** BB08 [0006] STMT00011 ( 0x045[E-] ... ??? ) [000031] -----+----- * RETFILT int [000030] -----+----- \--* CNS_INT int 0 ------------ BB09 [0007] [048..058) -> BB10 (cret), preds={BB08} succs={BB10} ***** BB09 [0007] STMT00013 ( 0x049[E-] ... ??? ) [000035] --CXG+----- * CALL void System.Console:WriteLine(System.String) [000050] H----+----- arg0 in ecx \--* CNS_INT(h) ref '" in handler"' ------------ BB10 [0008] [058..05D) -> BB14 (always), preds={BB09} succs={BB14} ***** BB10 [0008] STMT00018 ( ??? ... ??? ) ( 1, 1) [000044] -----+----- * NO_OP void ------------ BB11 [0012] [05D..???) -> BB12 (always), preds={} succs={BB12} ------------ BB12 [0009] [05D..06B) -> BB13 (fltret), preds={BB11} succs={BB13} ***** BB12 [0009] STMT00014 ( 0x05E[E-] ... 0x06A ) [000037] --CXG+----- * CALL void System.Console:WriteLine(System.String) [000051] H----+----- arg0 in ecx \--* CNS_INT(h) ref '"in filter"' ***** BB12 [0009] STMT00015 ( 0x068[E-] ... ??? ) [000039] -----+----- * RETFILT int [000038] -----+----- \--* CNS_INT int 0 ------------ BB13 [0010] [06B..07B) -> BB14 (cret), preds={BB12} succs={BB14} ***** BB13 [0010] STMT00017 ( 0x06C[E-] ... ??? ) [000043] --CXG+----- * CALL void System.Console:WriteLine(System.String) [000052] H----+----- arg0 in ecx \--* CNS_INT(h) ref '"in handler"' ------------ BB14 [0011] [07B..07C) (return), preds={BB10,BB13} succs={} ***** BB14 [0011] STMT00005 ( 0x07B[E-] ... 0x07B ) [000018] -----+----- * RETURN void ------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist Checking Profile Weights (flags:0x16) No blocks were profiled, so nothing to check *************** Starting PHASE GS Cookie No GS security needed *************** Finishing PHASE GS Cookie [no changes] *************** Starting PHASE Compute edge weights (1, false) ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 2 1 [000..00A)-> BB02 (always) T2 try { i keep hascall gcsafe q BB02 [0001] 1 1 BB01 1 [00A..014)-> BB03 (always) T1 try { i keep hascall gcsafe q BB03 [0002] 1 0 BB02 1 [014..023)-> BB05 (callf ) T0 try { } i keep hascall gcsafe retless BB05 [0003] 2 1 0 BB03 0 [023..033) (throw ) T1 H0 finally { } } i rare keep hascall gcsafe newobj BB07 [0013] 1 2 1 1 [03A..???)-> BB08 (always) T2 H1 filter { i keep internal q BB08 [0006] 1 2 1 BB07 0 [03A..048)-> BB09 (fltret) T2 H1 } i rare keep hascall gcsafe BB09 [0007] 2 2 1 BB08 1 [048..058)-> BB10 ( cret ) T2 H1 filtHnd { } i keep hascall gcsafe BB10 [0008] 1 2 BB09 1 [058..05D)-> BB14 (always) T2 } i BB11 [0012] 1 2 1 [05D..???)-> BB12 (always) H2 filter { i keep internal q BB12 [0009] 1 2 BB11 0 [05D..06B)-> BB13 (fltret) H2 } i rare keep hascall gcsafe BB13 [0010] 2 2 BB12 1 [06B..07B)-> BB14 ( cret ) H2 filtHnd { } i keep hascall gcsafe BB14 [0011] 2 BB10,BB13 1 [07B..07C) (return) i ---------------------------------------------------------------------------------------------------------------------------------------------- -- no profile data, so using default called count -- not optimizing or no profile data, so not computing edge weights *************** Finishing PHASE Compute edge weights (1, false) [no changes] *************** Starting PHASE Create EH funclets Relocating handler range BB05..BB05 (EH#0) to end of BBlist ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 2 1 [000..00A)-> BB02 (always) T2 try { i keep hascall gcsafe q BB02 [0001] 1 1 BB01 1 [00A..014)-> BB03 (always) T1 try { i keep hascall gcsafe q BB03 [0002] 1 0 BB02 1 [014..023)-> BB05 (callf ) T0 try { } i keep hascall gcsafe retless BB05 [0003] 2 1 0 BB03 0 [023..033) (throw ) T1 H0 finally { } } i rare keep hascall gcsafe newobj BB07 [0013] 1 2 1 1 [03A..???)-> BB08 (always) T2 H1 filter { i keep internal q BB08 [0006] 1 2 1 BB07 0 [03A..048)-> BB09 (fltret) T2 H1 } i rare keep hascall gcsafe BB09 [0007] 2 2 1 BB08 1 [048..058)-> BB10 ( cret ) T2 H1 filtHnd { } i keep hascall gcsafe BB10 [0008] 1 2 BB09 1 [058..05D)-> BB14 (always) T2 } i BB11 [0012] 1 2 1 [05D..???)-> BB12 (always) H2 filter { i keep internal q BB12 [0009] 1 2 BB11 0 [05D..06B)-> BB13 (fltret) H2 } i rare keep hascall gcsafe BB13 [0010] 2 2 BB12 1 [06B..07B)-> BB14 ( cret ) H2 filtHnd { } i keep hascall gcsafe BB14 [0011] 2 BB10,BB13 1 [07B..07C) (return) i ---------------------------------------------------------------------------------------------------------------------------------------------- *************** Exception Handling table index eTry, eHnd 0 :: 1 - Try at BB03..BB03 [014..023), Finally at BB05..BB05 [023..035) 1 :: 2 - Try at BB02..BB05 [00A..03A), Filter at BB07..BB08 [03A..048), Handler at BB09..BB09 [048..058) 2 :: - Try at BB01..BB10 [000..05D), Filter at BB11..BB12 [05D..06B), Handler at BB13..BB13 [06B..07B) EH#1: New last block of try: BB03 Relocated block [BB05..BB05] inserted after BB14 at the end of method Create funclets: moved region *************** Exception Handling table index eTry, eHnd 0 :: 1 - Try at BB03..BB03 [014..023), Finally at BB05..BB05 [023..035) 1 :: 2 - Try at BB02..BB03 [00A..03A), Filter at BB07..BB08 [03A..048), Handler at BB09..BB09 [048..058) 2 :: - Try at BB01..BB10 [000..05D), Filter at BB11..BB12 [05D..06B), Handler at BB13..BB13 [06B..07B) Relocating handler range BB07..BB09 (EH#1) to end of BBlist ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 2 1 [000..00A)-> BB02 (always) T2 try { i keep hascall gcsafe q BB02 [0001] 1 1 BB01 1 [00A..014)-> BB03 (always) T1 try { i keep hascall gcsafe q BB03 [0002] 1 0 BB02 1 [014..023)-> BB05 (callf ) T0 try { } } i keep hascall gcsafe retless BB07 [0013] 1 2 1 1 [03A..???)-> BB08 (always) T2 H1 filter { i keep internal q BB08 [0006] 1 2 1 BB07 0 [03A..048)-> BB09 (fltret) T2 H1 } i rare keep hascall gcsafe BB09 [0007] 2 2 1 BB08 1 [048..058)-> BB10 ( cret ) T2 H1 filtHnd { } i keep hascall gcsafe BB10 [0008] 1 2 BB09 1 [058..05D)-> BB14 (always) T2 } i BB11 [0012] 1 2 1 [05D..???)-> BB12 (always) H2 filter { i keep internal q BB12 [0009] 1 2 BB11 0 [05D..06B)-> BB13 (fltret) H2 } i rare keep hascall gcsafe BB13 [0010] 2 2 BB12 1 [06B..07B)-> BB14 ( cret ) H2 filtHnd { } i keep hascall gcsafe BB14 [0011] 2 BB10,BB13 1 [07B..07C) (return) i ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ funclets follow BB05 [0003] 2 1 0 BB03 0 [023..033) (throw ) T1 H0 F finally { } i rare keep hascall gcsafe flet newobj ---------------------------------------------------------------------------------------------------------------------------------------------- *************** Exception Handling table index eTry, eHnd 0 :: 1 - Try at BB03..BB03 [014..023), Finally at BB05..BB05 [023..035) 1 :: 2 - Try at BB02..BB03 [00A..03A), Filter at BB07..BB08 [03A..048), Handler at BB09..BB09 [048..058) 2 :: - Try at BB01..BB10 [000..05D), Filter at BB11..BB12 [05D..06B), Handler at BB13..BB13 [06B..07B) Relocated blocks [BB07..BB09] inserted after BB05 at the end of method Create funclets: moved region *************** Exception Handling table index eTry, eHnd 0 :: 1 - Try at BB03..BB03 [014..023), Finally at BB05..BB05 [023..035) 1 :: 2 - Try at BB02..BB03 [00A..03A), Filter at BB07..BB08 [03A..048), Handler at BB09..BB09 [048..058) 2 :: - Try at BB01..BB10 [000..05D), Filter at BB11..BB12 [05D..06B), Handler at BB13..BB13 [06B..07B) Relocating handler range BB11..BB13 (EH#2) to end of BBlist ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 2 1 [000..00A)-> BB02 (always) T2 try { i keep hascall gcsafe q BB02 [0001] 1 1 BB01 1 [00A..014)-> BB03 (always) T1 try { i keep hascall gcsafe q BB03 [0002] 1 0 BB02 1 [014..023)-> BB05 (callf ) T0 try { } } i keep hascall gcsafe retless BB10 [0008] 1 2 BB09 1 [058..05D)-> BB14 (always) T2 } i BB11 [0012] 1 2 1 [05D..???)-> BB12 (always) H2 filter { i keep internal q BB12 [0009] 1 2 BB11 0 [05D..06B)-> BB13 (fltret) H2 } i rare keep hascall gcsafe BB13 [0010] 2 2 BB12 1 [06B..07B)-> BB14 ( cret ) H2 filtHnd { } i keep hascall gcsafe BB14 [0011] 2 BB10,BB13 1 [07B..07C) (return) i ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ funclets follow BB05 [0003] 2 1 0 BB03 0 [023..033) (throw ) T1 H0 F finally { } i rare keep hascall gcsafe flet newobj BB07 [0013] 1 2 1 1 [03A..???)-> BB08 (always) T2 H1 F filter { i keep internal flet q BB08 [0006] 1 2 1 BB07 0 [03A..048)-> BB09 (fltret) T2 H1 } i rare keep hascall gcsafe BB09 [0007] 2 2 1 BB08 1 [048..058)-> BB10 ( cret ) T2 H1 F filtHnd { } i keep hascall gcsafe flet ---------------------------------------------------------------------------------------------------------------------------------------------- *************** Exception Handling table index eTry, eHnd 0 :: 1 - Try at BB03..BB03 [014..023), Finally at BB05..BB05 [023..035) 1 :: 2 - Try at BB02..BB03 [00A..03A), Filter at BB07..BB08 [03A..048), Handler at BB09..BB09 [048..058) 2 :: - Try at BB01..BB10 [000..05D), Filter at BB11..BB12 [05D..06B), Handler at BB13..BB13 [06B..07B) Relocated blocks [BB11..BB13] inserted after BB09 at the end of method Create funclets: moved region *************** Exception Handling table index eTry, eHnd 0 :: 1 - Try at BB03..BB03 [014..023), Finally at BB05..BB05 [023..035) 1 :: 2 - Try at BB02..BB03 [00A..03A), Filter at BB07..BB08 [03A..048), Handler at BB09..BB09 [048..058) 2 :: - Try at BB01..BB10 [000..05D), Filter at BB11..BB12 [05D..06B), Handler at BB13..BB13 [06B..07B) *************** Finishing PHASE Create EH funclets Trees after Create EH funclets ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 2 1 [000..00A)-> BB02 (always) T2 try { i keep hascall gcsafe q BB02 [0001] 1 1 BB01 1 [00A..014)-> BB03 (always) T1 try { i keep hascall gcsafe q BB03 [0002] 1 0 BB02 1 [014..023)-> BB05 (callf ) T0 try { } } i keep hascall gcsafe retless BB10 [0008] 1 2 BB09 1 [058..05D)-> BB14 (always) T2 } i BB14 [0011] 2 BB10,BB13 1 [07B..07C) (return) i ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ funclets follow BB05 [0003] 2 1 0 BB03 0 [023..033) (throw ) T1 H0 F finally { } i rare keep hascall gcsafe flet newobj BB07 [0013] 1 2 1 1 [03A..???)-> BB08 (always) T2 H1 F filter { i keep internal flet q BB08 [0006] 1 2 1 BB07 0 [03A..048)-> BB09 (fltret) T2 H1 } i rare keep hascall gcsafe BB09 [0007] 2 2 1 BB08 1 [048..058)-> BB10 ( cret ) T2 H1 F filtHnd { } i keep hascall gcsafe flet BB11 [0012] 1 2 1 [05D..???)-> BB12 (always) H2 F filter { i keep internal flet q BB12 [0009] 1 2 BB11 0 [05D..06B)-> BB13 (fltret) H2 } i rare keep hascall gcsafe BB13 [0010] 2 2 BB12 1 [06B..07B)-> BB14 ( cret ) H2 F filtHnd { } i keep hascall gcsafe flet ---------------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [0000] [000..00A) -> BB02 (always), preds={} succs={BB02} ***** BB01 [0000] STMT00001 ( 0x000[E-] ... 0x005 ) [000007] --CXG+----- * CALL void System.Console:WriteLine(System.String) [000045] H----+----- arg0 in ecx \--* CNS_INT(h) ref '"in try"' ------------ BB02 [0001] [00A..014) -> BB03 (always), preds={BB01} succs={BB03} ***** BB02 [0001] STMT00003 ( 0x00A[E-] ... 0x00F ) [000015] --CXG+----- * CALL void System.Console:WriteLine(System.String) [000046] H----+----- arg0 in ecx \--* CNS_INT(h) ref '" in try"' ------------ BB03 [0002] [014..023) -> BB05 (callf), preds={BB02} succs={BB05} ***** BB03 [0002] STMT00004 ( 0x014[E-] ... 0x01E ) [000017] --CXG+----- * CALL void System.Console:WriteLine(System.String) [000047] H----+----- arg0 in ecx \--* CNS_INT(h) ref '" in try"' ------------ BB10 [0008] [058..05D) -> BB14 (always), preds={BB09} succs={BB14} ***** BB10 [0008] STMT00018 ( ??? ... ??? ) ( 1, 1) [000044] -----+----- * NO_OP void ------------ BB14 [0011] [07B..07C) (return), preds={BB10,BB13} succs={} ***** BB14 [0011] STMT00005 ( 0x07B[E-] ... 0x07B ) [000018] -----+----- * RETURN void ------------ BB05 [0003] [023..033) (throw), preds={BB03} succs={} ***** BB05 [0003] STMT00006 ( 0x023[E-] ... 0x032 ) [000020] --CXG+----- * CALL void System.Console:WriteLine(System.String) [000048] H----+----- arg0 in ecx \--* CNS_INT(h) ref '" in finally"' ***** BB05 [0003] STMT00007 ( 0x02D[E-] ... ??? ) [000023] DAC--+----- * STORE_LCL_VAR ref V03 tmp2 [000022] --C--+----- \--* CALL help ref CORINFO_HELP_NEWSFAST [000021] H----+----- arg0 in ecx \--* CNS_INT(h) int 0x425450 class ***** BB05 [0003] STMT00008 ( ??? ... ??? ) [000025] --CXG+----- * CALL void System.Exception:.ctor():this [000024] -----+----- this in ecx \--* LCL_VAR ref V03 tmp2 ***** BB05 [0003] STMT00009 ( 0x032[--] ... ??? ) [000027] --CXG+----- * CALL help void CORINFO_HELP_THROW [000026] -----+----- arg0 in ecx \--* LCL_VAR ref V03 tmp2 ------------ BB07 [0013] [03A..???) -> BB08 (always), preds={} succs={BB08} ------------ BB08 [0006] [03A..048) -> BB09 (fltret), preds={BB07} succs={BB09} ***** BB08 [0006] STMT00010 ( 0x03B[E-] ... 0x047 ) [000029] --CXG+----- * CALL void System.Console:WriteLine(System.String) [000049] H----+----- arg0 in ecx \--* CNS_INT(h) ref '" in filter"' ***** BB08 [0006] STMT00011 ( 0x045[E-] ... ??? ) [000031] -----+----- * RETFILT int [000030] -----+----- \--* CNS_INT int 0 ------------ BB09 [0007] [048..058) -> BB10 (cret), preds={BB08} succs={BB10} ***** BB09 [0007] STMT00013 ( 0x049[E-] ... ??? ) [000035] --CXG+----- * CALL void System.Console:WriteLine(System.String) [000050] H----+----- arg0 in ecx \--* CNS_INT(h) ref '" in handler"' ------------ BB11 [0012] [05D..???) -> BB12 (always), preds={} succs={BB12} ------------ BB12 [0009] [05D..06B) -> BB13 (fltret), preds={BB11} succs={BB13} ***** BB12 [0009] STMT00014 ( 0x05E[E-] ... 0x06A ) [000037] --CXG+----- * CALL void System.Console:WriteLine(System.String) [000051] H----+----- arg0 in ecx \--* CNS_INT(h) ref '"in filter"' ***** BB12 [0009] STMT00015 ( 0x068[E-] ... ??? ) [000039] -----+----- * RETFILT int [000038] -----+----- \--* CNS_INT int 0 ------------ BB13 [0010] [06B..07B) -> BB14 (cret), preds={BB12} succs={BB14} ***** BB13 [0010] STMT00017 ( 0x06C[E-] ... ??? ) [000043] --CXG+----- * CALL void System.Console:WriteLine(System.String) [000052] H----+----- arg0 in ecx \--* CNS_INT(h) ref '"in handler"' ------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist Checking Profile Weights (flags:0x16) No blocks were profiled, so nothing to check *************** Starting PHASE Invert loops *************** Before renumbering the basic blocks ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 2 1 [000..00A)-> BB02 (always) T2 try { i keep hascall gcsafe q BB02 [0001] 1 1 BB01 1 [00A..014)-> BB03 (always) T1 try { i keep hascall gcsafe q BB03 [0002] 1 0 BB02 1 [014..023)-> BB05 (callf ) T0 try { } } i keep hascall gcsafe retless BB10 [0008] 1 2 BB09 1 [058..05D)-> BB14 (always) T2 } i BB14 [0011] 2 BB10,BB13 1 [07B..07C) (return) i ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ funclets follow BB05 [0003] 2 1 0 BB03 0 [023..033) (throw ) T1 H0 F finally { } i rare keep hascall gcsafe flet newobj BB07 [0013] 1 2 1 1 [03A..???)-> BB08 (always) T2 H1 F filter { i keep internal flet q BB08 [0006] 1 2 1 BB07 0 [03A..048)-> BB09 (fltret) T2 H1 } i rare keep hascall gcsafe BB09 [0007] 2 2 1 BB08 1 [048..058)-> BB10 ( cret ) T2 H1 F filtHnd { } i keep hascall gcsafe flet BB11 [0012] 1 2 1 [05D..???)-> BB12 (always) H2 F filter { i keep internal flet q BB12 [0009] 1 2 BB11 0 [05D..06B)-> BB13 (fltret) H2 } i rare keep hascall gcsafe BB13 [0010] 2 2 BB12 1 [06B..07B)-> BB14 ( cret ) H2 F filtHnd { } i keep hascall gcsafe flet ---------------------------------------------------------------------------------------------------------------------------------------------- *************** Exception Handling table index eTry, eHnd 0 :: 1 - Try at BB03..BB03 [014..023), Finally at BB05..BB05 [023..035) 1 :: 2 - Try at BB02..BB03 [00A..03A), Filter at BB07..BB08 [03A..048), Handler at BB09..BB09 [048..058) 2 :: - Try at BB01..BB10 [000..05D), Filter at BB11..BB12 [05D..06B), Handler at BB13..BB13 [06B..07B) Renumber BB10 to BB04 Renumber BB14 to BB05 Renumber BB05 to BB06 Renumber BB11 to BB10 Renumber BB12 to BB11 Renumber BB13 to BB12 *************** After renumbering the basic blocks ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 2 1 [000..00A)-> BB02 (always) T2 try { i keep hascall gcsafe q BB02 [0001] 1 1 BB01 1 [00A..014)-> BB03 (always) T1 try { i keep hascall gcsafe q BB03 [0002] 1 0 BB02 1 [014..023)-> BB06 (callf ) T0 try { } } i keep hascall gcsafe retless BB04 [0008] 1 2 BB09 1 [058..05D)-> BB05 (always) T2 } i BB05 [0011] 2 BB04,BB12 1 [07B..07C) (return) i ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ funclets follow BB06 [0003] 2 1 0 BB03 0 [023..033) (throw ) T1 H0 F finally { } i rare keep hascall gcsafe flet newobj BB07 [0013] 1 2 1 1 [03A..???)-> BB08 (always) T2 H1 F filter { i keep internal flet q BB08 [0006] 1 2 1 BB07 0 [03A..048)-> BB09 (fltret) T2 H1 } i rare keep hascall gcsafe BB09 [0007] 2 2 1 BB08 1 [048..058)-> BB04 ( cret ) T2 H1 F filtHnd { } i keep hascall gcsafe flet BB10 [0012] 1 2 1 [05D..???)-> BB11 (always) H2 F filter { i keep internal flet q BB11 [0009] 1 2 BB10 0 [05D..06B)-> BB12 (fltret) H2 } i rare keep hascall gcsafe BB12 [0010] 2 2 BB11 1 [06B..07B)-> BB05 ( cret ) H2 F filtHnd { } i keep hascall gcsafe flet ---------------------------------------------------------------------------------------------------------------------------------------------- *************** Exception Handling table index eTry, eHnd 0 :: 1 - Try at BB03..BB03 [014..023), Finally at BB06..BB06 [023..035) 1 :: 2 - Try at BB02..BB03 [00A..03A), Filter at BB07..BB08 [03A..048), Handler at BB09..BB09 [048..058) 2 :: - Try at BB01..BB04 [000..05D), Filter at BB10..BB11 [05D..06B), Handler at BB12..BB12 [06B..07B) New BlockSet epoch 3, # of blocks (including unused BB00): 13, bitset array size: 1 (short) *************** Finishing PHASE Invert loops Trees after Invert loops ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 2 1 [000..00A)-> BB02 (always) T2 try { i keep hascall gcsafe q BB02 [0001] 1 1 BB01 1 [00A..014)-> BB03 (always) T1 try { i keep hascall gcsafe q BB03 [0002] 1 0 BB02 1 [014..023)-> BB06 (callf ) T0 try { } } i keep hascall gcsafe retless BB04 [0008] 1 2 BB09 1 [058..05D)-> BB05 (always) T2 } i BB05 [0011] 2 BB04,BB12 1 [07B..07C) (return) i ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ funclets follow BB06 [0003] 2 1 0 BB03 0 [023..033) (throw ) T1 H0 F finally { } i rare keep hascall gcsafe flet newobj BB07 [0013] 1 2 1 1 [03A..???)-> BB08 (always) T2 H1 F filter { i keep internal flet q BB08 [0006] 1 2 1 BB07 0 [03A..048)-> BB09 (fltret) T2 H1 } i rare keep hascall gcsafe BB09 [0007] 2 2 1 BB08 1 [048..058)-> BB04 ( cret ) T2 H1 F filtHnd { } i keep hascall gcsafe flet BB10 [0012] 1 2 1 [05D..???)-> BB11 (always) H2 F filter { i keep internal flet q BB11 [0009] 1 2 BB10 0 [05D..06B)-> BB12 (fltret) H2 } i rare keep hascall gcsafe BB12 [0010] 2 2 BB11 1 [06B..07B)-> BB05 ( cret ) H2 F filtHnd { } i keep hascall gcsafe flet ---------------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [0000] [000..00A) -> BB02 (always), preds={} succs={BB02} ***** BB01 [0000] STMT00001 ( 0x000[E-] ... 0x005 ) [000007] --CXG+----- * CALL void System.Console:WriteLine(System.String) [000045] H----+----- arg0 in ecx \--* CNS_INT(h) ref '"in try"' ------------ BB02 [0001] [00A..014) -> BB03 (always), preds={BB01} succs={BB03} ***** BB02 [0001] STMT00003 ( 0x00A[E-] ... 0x00F ) [000015] --CXG+----- * CALL void System.Console:WriteLine(System.String) [000046] H----+----- arg0 in ecx \--* CNS_INT(h) ref '" in try"' ------------ BB03 [0002] [014..023) -> BB06 (callf), preds={BB02} succs={BB06} ***** BB03 [0002] STMT00004 ( 0x014[E-] ... 0x01E ) [000017] --CXG+----- * CALL void System.Console:WriteLine(System.String) [000047] H----+----- arg0 in ecx \--* CNS_INT(h) ref '" in try"' ------------ BB04 [0008] [058..05D) -> BB05 (always), preds={BB09} succs={BB05} ***** BB04 [0008] STMT00018 ( ??? ... ??? ) ( 1, 1) [000044] -----+----- * NO_OP void ------------ BB05 [0011] [07B..07C) (return), preds={BB04,BB12} succs={} ***** BB05 [0011] STMT00005 ( 0x07B[E-] ... 0x07B ) [000018] -----+----- * RETURN void ------------ BB06 [0003] [023..033) (throw), preds={BB03} succs={} ***** BB06 [0003] STMT00006 ( 0x023[E-] ... 0x032 ) [000020] --CXG+----- * CALL void System.Console:WriteLine(System.String) [000048] H----+----- arg0 in ecx \--* CNS_INT(h) ref '" in finally"' ***** BB06 [0003] STMT00007 ( 0x02D[E-] ... ??? ) [000023] DAC--+----- * STORE_LCL_VAR ref V03 tmp2 [000022] --C--+----- \--* CALL help ref CORINFO_HELP_NEWSFAST [000021] H----+----- arg0 in ecx \--* CNS_INT(h) int 0x425450 class ***** BB06 [0003] STMT00008 ( ??? ... ??? ) [000025] --CXG+----- * CALL void System.Exception:.ctor():this [000024] -----+----- this in ecx \--* LCL_VAR ref V03 tmp2 ***** BB06 [0003] STMT00009 ( 0x032[--] ... ??? ) [000027] --CXG+----- * CALL help void CORINFO_HELP_THROW [000026] -----+----- arg0 in ecx \--* LCL_VAR ref V03 tmp2 ------------ BB07 [0013] [03A..???) -> BB08 (always), preds={} succs={BB08} ------------ BB08 [0006] [03A..048) -> BB09 (fltret), preds={BB07} succs={BB09} ***** BB08 [0006] STMT00010 ( 0x03B[E-] ... 0x047 ) [000029] --CXG+----- * CALL void System.Console:WriteLine(System.String) [000049] H----+----- arg0 in ecx \--* CNS_INT(h) ref '" in filter"' ***** BB08 [0006] STMT00011 ( 0x045[E-] ... ??? ) [000031] -----+----- * RETFILT int [000030] -----+----- \--* CNS_INT int 0 ------------ BB09 [0007] [048..058) -> BB04 (cret), preds={BB08} succs={BB04} ***** BB09 [0007] STMT00013 ( 0x049[E-] ... ??? ) [000035] --CXG+----- * CALL void System.Console:WriteLine(System.String) [000050] H----+----- arg0 in ecx \--* CNS_INT(h) ref '" in handler"' ------------ BB10 [0012] [05D..???) -> BB11 (always), preds={} succs={BB11} ------------ BB11 [0009] [05D..06B) -> BB12 (fltret), preds={BB10} succs={BB12} ***** BB11 [0009] STMT00014 ( 0x05E[E-] ... 0x06A ) [000037] --CXG+----- * CALL void System.Console:WriteLine(System.String) [000051] H----+----- arg0 in ecx \--* CNS_INT(h) ref '"in filter"' ***** BB11 [0009] STMT00015 ( 0x068[E-] ... ??? ) [000039] -----+----- * RETFILT int [000038] -----+----- \--* CNS_INT int 0 ------------ BB12 [0010] [06B..07B) -> BB05 (cret), preds={BB11} succs={BB05} ***** BB12 [0010] STMT00017 ( 0x06C[E-] ... ??? ) [000043] --CXG+----- * CALL void System.Console:WriteLine(System.String) [000052] H----+----- arg0 in ecx \--* CNS_INT(h) ref '"in handler"' ------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist Checking Profile Weights (flags:0x16) No blocks were profiled, so nothing to check *************** Starting PHASE Optimize control flow *************** In fgUpdateFlowGraph() Before updating the flow graph: ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 2 1 [000..00A)-> BB02 (always) T2 try { i keep hascall gcsafe q BB02 [0001] 1 1 BB01 1 [00A..014)-> BB03 (always) T1 try { i keep hascall gcsafe q BB03 [0002] 1 0 BB02 1 [014..023)-> BB06 (callf ) T0 try { } } i keep hascall gcsafe retless BB04 [0008] 1 2 BB09 1 [058..05D)-> BB05 (always) T2 } i BB05 [0011] 2 BB04,BB12 1 [07B..07C) (return) i ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ funclets follow BB06 [0003] 2 1 0 BB03 0 [023..033) (throw ) T1 H0 F finally { } i rare keep hascall gcsafe flet newobj BB07 [0013] 1 2 1 1 [03A..???)-> BB08 (always) T2 H1 F filter { i keep internal flet q BB08 [0006] 1 2 1 BB07 0 [03A..048)-> BB09 (fltret) T2 H1 } i rare keep hascall gcsafe BB09 [0007] 2 2 1 BB08 1 [048..058)-> BB04 ( cret ) T2 H1 F filtHnd { } i keep hascall gcsafe flet BB10 [0012] 1 2 1 [05D..???)-> BB11 (always) H2 F filter { i keep internal flet q BB11 [0009] 1 2 BB10 0 [05D..06B)-> BB12 (fltret) H2 } i rare keep hascall gcsafe BB12 [0010] 2 2 BB11 1 [06B..07B)-> BB05 ( cret ) H2 F filtHnd { } i keep hascall gcsafe flet ---------------------------------------------------------------------------------------------------------------------------------------------- Considering uncond to cond BB01 -> BB02 Considering uncond to cond BB02 -> BB03 Considering uncond to cond BB04 -> BB05 Considering uncond to cond BB07 -> BB08 Considering uncond to cond BB10 -> BB11 *************** In fgDebugCheckBBlist *************** In fgExpandRarelyRunBlocks() Unconditional jump to a rarely run block, marking BB07 as rarely run Unconditional jump to a rarely run block, marking BB10 as rarely run *************** In fgReorderBlocks() Initial BasicBlocks ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 2 1 [000..00A)-> BB02 (always) T2 try { i keep hascall gcsafe q BB02 [0001] 1 1 BB01 1 [00A..014)-> BB03 (always) T1 try { i keep hascall gcsafe q BB03 [0002] 1 0 BB02 1 [014..023)-> BB06 (callf ) T0 try { } } i keep hascall gcsafe retless BB04 [0008] 1 2 BB09 1 [058..05D)-> BB05 (always) T2 } i q BB05 [0011] 2 BB04,BB12 1 [07B..07C) (return) i ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ funclets follow BB06 [0003] 2 1 0 BB03 0 [023..033) (throw ) T1 H0 F finally { } i rare keep hascall gcsafe flet newobj BB07 [0013] 1 2 1 0 [03A..???)-> BB08 (always) T2 H1 F filter { i rare keep internal flet q BB08 [0006] 1 2 1 BB07 0 [03A..048)-> BB09 (fltret) T2 H1 } i rare keep hascall gcsafe BB09 [0007] 2 2 1 BB08 1 [048..058)-> BB04 ( cret ) T2 H1 F filtHnd { } i keep hascall gcsafe flet BB10 [0012] 1 2 0 [05D..???)-> BB11 (always) H2 F filter { i rare keep internal flet q BB11 [0009] 1 2 BB10 0 [05D..06B)-> BB12 (fltret) H2 } i rare keep hascall gcsafe BB12 [0010] 2 2 BB11 1 [06B..07B)-> BB05 ( cret ) H2 F filtHnd { } i keep hascall gcsafe flet ---------------------------------------------------------------------------------------------------------------------------------------------- *************** Finishing PHASE Optimize control flow Trees after Optimize control flow ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 2 1 [000..00A)-> BB02 (always) T2 try { i keep hascall gcsafe q BB02 [0001] 1 1 BB01 1 [00A..014)-> BB03 (always) T1 try { i keep hascall gcsafe q BB03 [0002] 1 0 BB02 1 [014..023)-> BB06 (callf ) T0 try { } } i keep hascall gcsafe retless BB04 [0008] 1 2 BB09 1 [058..05D)-> BB05 (always) T2 } i q BB05 [0011] 2 BB04,BB12 1 [07B..07C) (return) i ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ funclets follow BB06 [0003] 2 1 0 BB03 0 [023..033) (throw ) T1 H0 F finally { } i rare keep hascall gcsafe flet newobj BB07 [0013] 1 2 1 0 [03A..???)-> BB08 (always) T2 H1 F filter { i rare keep internal flet q BB08 [0006] 1 2 1 BB07 0 [03A..048)-> BB09 (fltret) T2 H1 } i rare keep hascall gcsafe BB09 [0007] 2 2 1 BB08 1 [048..058)-> BB04 ( cret ) T2 H1 F filtHnd { } i keep hascall gcsafe flet BB10 [0012] 1 2 0 [05D..???)-> BB11 (always) H2 F filter { i rare keep internal flet q BB11 [0009] 1 2 BB10 0 [05D..06B)-> BB12 (fltret) H2 } i rare keep hascall gcsafe BB12 [0010] 2 2 BB11 1 [06B..07B)-> BB05 ( cret ) H2 F filtHnd { } i keep hascall gcsafe flet ---------------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [0000] [000..00A) -> BB02 (always), preds={} succs={BB02} ***** BB01 [0000] STMT00001 ( 0x000[E-] ... 0x005 ) [000007] --CXG+----- * CALL void System.Console:WriteLine(System.String) [000045] H----+----- arg0 in ecx \--* CNS_INT(h) ref '"in try"' ------------ BB02 [0001] [00A..014) -> BB03 (always), preds={BB01} succs={BB03} ***** BB02 [0001] STMT00003 ( 0x00A[E-] ... 0x00F ) [000015] --CXG+----- * CALL void System.Console:WriteLine(System.String) [000046] H----+----- arg0 in ecx \--* CNS_INT(h) ref '" in try"' ------------ BB03 [0002] [014..023) -> BB06 (callf), preds={BB02} succs={BB06} ***** BB03 [0002] STMT00004 ( 0x014[E-] ... 0x01E ) [000017] --CXG+----- * CALL void System.Console:WriteLine(System.String) [000047] H----+----- arg0 in ecx \--* CNS_INT(h) ref '" in try"' ------------ BB04 [0008] [058..05D) -> BB05 (always), preds={BB09} succs={BB05} ***** BB04 [0008] STMT00018 ( ??? ... ??? ) ( 1, 1) [000044] -----+----- * NO_OP void ------------ BB05 [0011] [07B..07C) (return), preds={BB04,BB12} succs={} ***** BB05 [0011] STMT00005 ( 0x07B[E-] ... 0x07B ) [000018] -----+----- * RETURN void ------------ BB06 [0003] [023..033) (throw), preds={BB03} succs={} ***** BB06 [0003] STMT00006 ( 0x023[E-] ... 0x032 ) [000020] --CXG+----- * CALL void System.Console:WriteLine(System.String) [000048] H----+----- arg0 in ecx \--* CNS_INT(h) ref '" in finally"' ***** BB06 [0003] STMT00007 ( 0x02D[E-] ... ??? ) [000023] DAC--+----- * STORE_LCL_VAR ref V03 tmp2 [000022] --C--+----- \--* CALL help ref CORINFO_HELP_NEWSFAST [000021] H----+----- arg0 in ecx \--* CNS_INT(h) int 0x425450 class ***** BB06 [0003] STMT00008 ( ??? ... ??? ) [000025] --CXG+----- * CALL void System.Exception:.ctor():this [000024] -----+----- this in ecx \--* LCL_VAR ref V03 tmp2 ***** BB06 [0003] STMT00009 ( 0x032[--] ... ??? ) [000027] --CXG+----- * CALL help void CORINFO_HELP_THROW [000026] -----+----- arg0 in ecx \--* LCL_VAR ref V03 tmp2 ------------ BB07 [0013] [03A..???) -> BB08 (always), preds={} succs={BB08} ------------ BB08 [0006] [03A..048) -> BB09 (fltret), preds={BB07} succs={BB09} ***** BB08 [0006] STMT00010 ( 0x03B[E-] ... 0x047 ) [000029] --CXG+----- * CALL void System.Console:WriteLine(System.String) [000049] H----+----- arg0 in ecx \--* CNS_INT(h) ref '" in filter"' ***** BB08 [0006] STMT00011 ( 0x045[E-] ... ??? ) [000031] -----+----- * RETFILT int [000030] -----+----- \--* CNS_INT int 0 ------------ BB09 [0007] [048..058) -> BB04 (cret), preds={BB08} succs={BB04} ***** BB09 [0007] STMT00013 ( 0x049[E-] ... ??? ) [000035] --CXG+----- * CALL void System.Console:WriteLine(System.String) [000050] H----+----- arg0 in ecx \--* CNS_INT(h) ref '" in handler"' ------------ BB10 [0012] [05D..???) -> BB11 (always), preds={} succs={BB11} ------------ BB11 [0009] [05D..06B) -> BB12 (fltret), preds={BB10} succs={BB12} ***** BB11 [0009] STMT00014 ( 0x05E[E-] ... 0x06A ) [000037] --CXG+----- * CALL void System.Console:WriteLine(System.String) [000051] H----+----- arg0 in ecx \--* CNS_INT(h) ref '"in filter"' ***** BB11 [0009] STMT00015 ( 0x068[E-] ... ??? ) [000039] -----+----- * RETFILT int [000038] -----+----- \--* CNS_INT int 0 ------------ BB12 [0010] [06B..07B) -> BB05 (cret), preds={BB11} succs={BB05} ***** BB12 [0010] STMT00017 ( 0x06C[E-] ... ??? ) [000043] --CXG+----- * CALL void System.Console:WriteLine(System.String) [000052] H----+----- arg0 in ecx \--* CNS_INT(h) ref '"in handler"' ------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist Checking Profile Weights (flags:0x16) No blocks were profiled, so nothing to check *************** Starting PHASE Post-morph head and tail merge *************** Finishing PHASE Post-morph head and tail merge Trees after Post-morph head and tail merge ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB01 [0000] 1 2 1 [000..00A)-> BB02 (always) T2 try { i keep hascall gcsafe q BB02 [0001] 1 1 BB01 1 [00A..014)-> BB03 (always) T1 try { i keep hascall gcsafe q BB03 [0002] 1 0 BB02 1 [014..023)-> BB06 (callf ) T0 try { } } i keep hascall gcsafe retless BB04 [0008] 1 2 BB09 1 [058..05D)-> BB05 (always) T2 } i q BB05 [0011] 2 BB04,BB12 1 [07B..07C) (return) i ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ funclets follow BB06 [0003] 2 1 0 BB03 0 [023..033) (throw ) T1 H0 F finally { } i rare keep hascall gcsafe flet newobj BB07 [0013] 1 2 1 0 [03A..???)-> BB08 (always) T2 H1 F filter { i rare keep internal flet q BB08 [0006] 1 2 1 BB07 0 [03A..048)-> BB09 (fltret) T2 H1 } i rare keep hascall gcsafe BB09 [0007] 2 2 1 BB08 1 [048..058)-> BB04 ( cret ) T2 H1 F filtHnd { } i keep hascall gcsafe flet BB10 [0012] 1 2 0 [05D..???)-> BB11 (always) H2 F filter { i rare keep internal flet q BB11 [0009] 1 2 BB10 0 [05D..06B)-> BB12 (fltret) H2 } i rare keep hascall gcsafe BB12 [0010] 2 2 BB11 1 [06B..07B)-> BB05 ( cret ) H2 F filtHnd { } i keep hascall gcsafe flet ---------------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [0000] [000..00A) -> BB02 (always), preds={} succs={BB02} ***** BB01 [0000] STMT00001 ( 0x000[E-] ... 0x005 ) [000007] --CXG+----- * CALL void System.Console:WriteLine(System.String) [000045] H----+----- arg0 in ecx \--* CNS_INT(h) ref '"in try"' ------------ BB02 [0001] [00A..014) -> BB03 (always), preds={BB01} succs={BB03} ***** BB02 [0001] STMT00003 ( 0x00A[E-] ... 0x00F ) [000015] --CXG+----- * CALL void System.Console:WriteLine(System.String) [000046] H----+----- arg0 in ecx \--* CNS_INT(h) ref '" in try"' ------------ BB03 [0002] [014..023) -> BB06 (callf), preds={BB02} succs={BB06} ***** BB03 [0002] STMT00004 ( 0x014[E-] ... 0x01E ) [000017] --CXG+----- * CALL void System.Console:WriteLine(System.String) [000047] H----+----- arg0 in ecx \--* CNS_INT(h) ref '" in try"' ------------ BB04 [0008] [058..05D) -> BB05 (always), preds={BB09} succs={BB05} ***** BB04 [0008] STMT00018 ( ??? ... ??? ) ( 1, 1) [000044] -----+----- * NO_OP void ------------ BB05 [0011] [07B..07C) (return), preds={BB04,BB12} succs={} ***** BB05 [0011] STMT00005 ( 0x07B[E-] ... 0x07B ) [000018] -----+----- * RETURN void ------------ BB06 [0003] [023..033) (throw), preds={BB03} succs={} ***** BB06 [0003] STMT00006 ( 0x023[E-] ... 0x032 ) [000020] --CXG+----- * CALL void System.Console:WriteLine(System.String) [000048] H----+----- arg0 in ecx \--* CNS_INT(h) ref '" in finally"' ***** BB06 [0003] STMT00007 ( 0x02D[E-] ... ??? ) [000023] DAC--+----- * STORE_LCL_VAR ref V03 tmp2 [000022] --C--+----- \--* CALL help ref CORINFO_HELP_NEWSFAST [000021] H----+----- arg0 in ecx \--* CNS_INT(h) int 0x425450 class ***** BB06 [0003] STMT00008 ( ??? ... ??? ) [000025] --CXG+----- * CALL void System.Exception:.ctor():this [000024] -----+----- this in ecx \--* LCL_VAR ref V03 tmp2 ***** BB06 [0003] STMT00009 ( 0x032[--] ... ??? ) [000027] --CXG+----- * CALL help void CORINFO_HELP_THROW [000026] -----+----- arg0 in ecx \--* LCL_VAR ref V03 tmp2 ------------ BB07 [0013] [03A..???) -> BB08 (always), preds={} succs={BB08} ------------ BB08 [0006] [03A..048) -> BB09 (fltret), preds={BB07} succs={BB09} ***** BB08 [0006] STMT00010 ( 0x03B[E-] ... 0x047 ) [000029] --CXG+----- * CALL void System.Console:WriteLine(System.String) [000049] H----+----- arg0 in ecx \--* CNS_INT(h) ref '" in filter"' ***** BB08 [0006] STMT00011 ( 0x045[E-] ... ??? ) [000031] -----+----- * RETFILT int [000030] -----+----- \--* CNS_INT int 0 ------------ BB09 [0007] [048..058) -> BB04 (cret), preds={BB08} succs={BB04} ***** BB09 [0007] STMT00013 ( 0x049[E-] ... ??? ) [000035] --CXG+----- * CALL void System.Console:WriteLine(System.String) [000050] H----+----- arg0 in ecx \--* CNS_INT(h) ref '" in handler"' ------------ BB10 [0012] [05D..???) -> BB11 (always), preds={} succs={BB11} ------------ BB11 [0009] [05D..06B) -> BB12 (fltret), preds={BB10} succs={BB12} ***** BB11 [0009] STMT00014 ( 0x05E[E-] ... 0x06A ) [000037] --CXG+----- * CALL void System.Console:WriteLine(System.String) [000051] H----+----- arg0 in ecx \--* CNS_INT(h) ref '"in filter"' ***** BB11 [0009] STMT00015 ( 0x068[E-] ... ??? ) [000039] -----+----- * RETFILT int [000038] -----+----- \--* CNS_INT int 0 ------------ BB12 [0010] [06B..07B) -> BB05 (cret), preds={BB11} succs={BB05} ***** BB12 [0010] STMT00017 ( 0x06C[E-] ... ??? ) [000043] --CXG+----- * CALL void System.Console:WriteLine(System.String) [000052] H----+----- arg0 in ecx \--* CNS_INT(h) ref '"in handler"' ------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist Checking Profile Weights (flags:0x16) No blocks were profiled, so nothing to check *************** Starting PHASE Canonicalize entry Canonicalizing entry because it currently is the beginning of a try region New Basic Block BB13 [0015] created. Setting edge weights for BB13 -> BB01 to [0 .. 3.402823e+38] setting likelihood of BB13 -> BB01 to 1 New scratch BB13 *************** Finishing PHASE Canonicalize entry Trees after Canonicalize entry ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB13 [0015] 1 1 [???..???)-> BB01 (always) i internal q BB01 [0000] 1 2 BB13 1 [000..00A)-> BB02 (always) T2 try { i keep hascall gcsafe q BB02 [0001] 1 1 BB01 1 [00A..014)-> BB03 (always) T1 try { i keep hascall gcsafe q BB03 [0002] 1 0 BB02 1 [014..023)-> BB06 (callf ) T0 try { } } i keep hascall gcsafe retless BB04 [0008] 1 2 BB09 1 [058..05D)-> BB05 (always) T2 } i q BB05 [0011] 2 BB04,BB12 1 [07B..07C) (return) i ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ funclets follow BB06 [0003] 2 1 0 BB03 0 [023..033) (throw ) T1 H0 F finally { } i rare keep hascall gcsafe flet newobj BB07 [0013] 1 2 1 0 [03A..???)-> BB08 (always) T2 H1 F filter { i rare keep internal flet q BB08 [0006] 1 2 1 BB07 0 [03A..048)-> BB09 (fltret) T2 H1 } i rare keep hascall gcsafe BB09 [0007] 2 2 1 BB08 1 [048..058)-> BB04 ( cret ) T2 H1 F filtHnd { } i keep hascall gcsafe flet BB10 [0012] 1 2 0 [05D..???)-> BB11 (always) H2 F filter { i rare keep internal flet q BB11 [0009] 1 2 BB10 0 [05D..06B)-> BB12 (fltret) H2 } i rare keep hascall gcsafe BB12 [0010] 2 2 BB11 1 [06B..07B)-> BB05 ( cret ) H2 F filtHnd { } i keep hascall gcsafe flet ---------------------------------------------------------------------------------------------------------------------------------------------- ------------ BB13 [0015] [???..???) -> BB01 (always), preds={} succs={BB01} ------------ BB01 [0000] [000..00A) -> BB02 (always), preds={BB13} succs={BB02} ***** BB01 [0000] STMT00001 ( 0x000[E-] ... 0x005 ) [000007] --CXG+----- * CALL void System.Console:WriteLine(System.String) [000045] H----+----- arg0 in ecx \--* CNS_INT(h) ref '"in try"' ------------ BB02 [0001] [00A..014) -> BB03 (always), preds={BB01} succs={BB03} ***** BB02 [0001] STMT00003 ( 0x00A[E-] ... 0x00F ) [000015] --CXG+----- * CALL void System.Console:WriteLine(System.String) [000046] H----+----- arg0 in ecx \--* CNS_INT(h) ref '" in try"' ------------ BB03 [0002] [014..023) -> BB06 (callf), preds={BB02} succs={BB06} ***** BB03 [0002] STMT00004 ( 0x014[E-] ... 0x01E ) [000017] --CXG+----- * CALL void System.Console:WriteLine(System.String) [000047] H----+----- arg0 in ecx \--* CNS_INT(h) ref '" in try"' ------------ BB04 [0008] [058..05D) -> BB05 (always), preds={BB09} succs={BB05} ***** BB04 [0008] STMT00018 ( ??? ... ??? ) ( 1, 1) [000044] -----+----- * NO_OP void ------------ BB05 [0011] [07B..07C) (return), preds={BB04,BB12} succs={} ***** BB05 [0011] STMT00005 ( 0x07B[E-] ... 0x07B ) [000018] -----+----- * RETURN void ------------ BB06 [0003] [023..033) (throw), preds={BB03} succs={} ***** BB06 [0003] STMT00006 ( 0x023[E-] ... 0x032 ) [000020] --CXG+----- * CALL void System.Console:WriteLine(System.String) [000048] H----+----- arg0 in ecx \--* CNS_INT(h) ref '" in finally"' ***** BB06 [0003] STMT00007 ( 0x02D[E-] ... ??? ) [000023] DAC--+----- * STORE_LCL_VAR ref V03 tmp2 [000022] --C--+----- \--* CALL help ref CORINFO_HELP_NEWSFAST [000021] H----+----- arg0 in ecx \--* CNS_INT(h) int 0x425450 class ***** BB06 [0003] STMT00008 ( ??? ... ??? ) [000025] --CXG+----- * CALL void System.Exception:.ctor():this [000024] -----+----- this in ecx \--* LCL_VAR ref V03 tmp2 ***** BB06 [0003] STMT00009 ( 0x032[--] ... ??? ) [000027] --CXG+----- * CALL help void CORINFO_HELP_THROW [000026] -----+----- arg0 in ecx \--* LCL_VAR ref V03 tmp2 ------------ BB07 [0013] [03A..???) -> BB08 (always), preds={} succs={BB08} ------------ BB08 [0006] [03A..048) -> BB09 (fltret), preds={BB07} succs={BB09} ***** BB08 [0006] STMT00010 ( 0x03B[E-] ... 0x047 ) [000029] --CXG+----- * CALL void System.Console:WriteLine(System.String) [000049] H----+----- arg0 in ecx \--* CNS_INT(h) ref '" in filter"' ***** BB08 [0006] STMT00011 ( 0x045[E-] ... ??? ) [000031] -----+----- * RETFILT int [000030] -----+----- \--* CNS_INT int 0 ------------ BB09 [0007] [048..058) -> BB04 (cret), preds={BB08} succs={BB04} ***** BB09 [0007] STMT00013 ( 0x049[E-] ... ??? ) [000035] --CXG+----- * CALL void System.Console:WriteLine(System.String) [000050] H----+----- arg0 in ecx \--* CNS_INT(h) ref '" in handler"' ------------ BB10 [0012] [05D..???) -> BB11 (always), preds={} succs={BB11} ------------ BB11 [0009] [05D..06B) -> BB12 (fltret), preds={BB10} succs={BB12} ***** BB11 [0009] STMT00014 ( 0x05E[E-] ... 0x06A ) [000037] --CXG+----- * CALL void System.Console:WriteLine(System.String) [000051] H----+----- arg0 in ecx \--* CNS_INT(h) ref '"in filter"' ***** BB11 [0009] STMT00015 ( 0x068[E-] ... ??? ) [000039] -----+----- * RETFILT int [000038] -----+----- \--* CNS_INT int 0 ------------ BB12 [0010] [06B..07B) -> BB05 (cret), preds={BB11} succs={BB05} ***** BB12 [0010] STMT00017 ( 0x06C[E-] ... ??? ) [000043] --CXG+----- * CALL void System.Console:WriteLine(System.String) [000052] H----+----- arg0 in ecx \--* CNS_INT(h) ref '"in handler"' ------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist Checking Profile Weights (flags:0x16) No blocks were profiled, so nothing to check *************** Starting PHASE DFS blocks and remove dead code 2 *************** Finishing PHASE DFS blocks and remove dead code 2 [no changes] *************** Starting PHASE Find loops *************** In optFindLoopsPhase() *************** Before renumbering the basic blocks ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB13 [0015] 1 1 [???..???)-> BB01 (always) i internal q BB01 [0000] 1 2 BB13 1 [000..00A)-> BB02 (always) T2 try { i keep hascall gcsafe q BB02 [0001] 1 1 BB01 1 [00A..014)-> BB03 (always) T1 try { i keep hascall gcsafe q BB03 [0002] 1 0 BB02 1 [014..023)-> BB06 (callf ) T0 try { } } i keep hascall gcsafe retless BB04 [0008] 1 2 BB09 1 [058..05D)-> BB05 (always) T2 } i q BB05 [0011] 2 BB04,BB12 1 [07B..07C) (return) i ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ funclets follow BB06 [0003] 2 1 0 BB03 0 [023..033) (throw ) T1 H0 F finally { } i rare keep hascall gcsafe flet newobj BB07 [0013] 1 2 1 0 [03A..???)-> BB08 (always) T2 H1 F filter { i rare keep internal flet q BB08 [0006] 1 2 1 BB07 0 [03A..048)-> BB09 (fltret) T2 H1 } i rare keep hascall gcsafe BB09 [0007] 2 2 1 BB08 1 [048..058)-> BB04 ( cret ) T2 H1 F filtHnd { } i keep hascall gcsafe flet BB10 [0012] 1 2 0 [05D..???)-> BB11 (always) H2 F filter { i rare keep internal flet q BB11 [0009] 1 2 BB10 0 [05D..06B)-> BB12 (fltret) H2 } i rare keep hascall gcsafe BB12 [0010] 2 2 BB11 1 [06B..07B)-> BB05 ( cret ) H2 F filtHnd { } i keep hascall gcsafe flet ---------------------------------------------------------------------------------------------------------------------------------------------- *************** Exception Handling table index eTry, eHnd 0 :: 1 - Try at BB03..BB03 [014..023), Finally at BB06..BB06 [023..035) 1 :: 2 - Try at BB02..BB03 [00A..03A), Filter at BB07..BB08 [03A..048), Handler at BB09..BB09 [048..058) 2 :: - Try at BB01..BB04 [000..05D), Filter at BB10..BB11 [05D..06B), Handler at BB12..BB12 [06B..07B) Renumber BB13 to BB01 Renumber BB01 to BB02 Renumber BB02 to BB03 Renumber BB03 to BB04 Renumber BB04 to BB05 Renumber BB05 to BB06 Renumber BB06 to BB07 Renumber BB07 to BB08 Renumber BB08 to BB09 Renumber BB09 to BB10 Renumber BB10 to BB11 Renumber BB11 to BB12 Renumber BB12 to BB13 *************** After renumbering the basic blocks ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB01 [0015] 1 1 [???..???)-> BB02 (always) i internal q BB02 [0000] 1 2 BB01 1 [000..00A)-> BB03 (always) T2 try { i keep hascall gcsafe q BB03 [0001] 1 1 BB02 1 [00A..014)-> BB04 (always) T1 try { i keep hascall gcsafe q BB04 [0002] 1 0 BB03 1 [014..023)-> BB07 (callf ) T0 try { } } i keep hascall gcsafe retless BB05 [0008] 1 2 BB10 1 [058..05D)-> BB06 (always) T2 } i q BB06 [0011] 2 BB05,BB13 1 [07B..07C) (return) i ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ funclets follow BB07 [0003] 2 1 0 BB04 0 [023..033) (throw ) T1 H0 F finally { } i rare keep hascall gcsafe flet newobj BB08 [0013] 1 2 1 0 [03A..???)-> BB09 (always) T2 H1 F filter { i rare keep internal flet q BB09 [0006] 1 2 1 BB08 0 [03A..048)-> BB10 (fltret) T2 H1 } i rare keep hascall gcsafe BB10 [0007] 2 2 1 BB09 1 [048..058)-> BB05 ( cret ) T2 H1 F filtHnd { } i keep hascall gcsafe flet BB11 [0012] 1 2 0 [05D..???)-> BB12 (always) H2 F filter { i rare keep internal flet q BB12 [0009] 1 2 BB11 0 [05D..06B)-> BB13 (fltret) H2 } i rare keep hascall gcsafe BB13 [0010] 2 2 BB12 1 [06B..07B)-> BB06 ( cret ) H2 F filtHnd { } i keep hascall gcsafe flet ---------------------------------------------------------------------------------------------------------------------------------------------- *************** Exception Handling table index eTry, eHnd 0 :: 1 - Try at BB04..BB04 [014..023), Finally at BB07..BB07 [023..035) 1 :: 2 - Try at BB03..BB04 [00A..03A), Filter at BB08..BB09 [03A..048), Handler at BB10..BB10 [048..058) 2 :: - Try at BB02..BB05 [000..05D), Filter at BB11..BB12 [05D..06B), Handler at BB13..BB13 [06B..07B) New BlockSet epoch 4, # of blocks (including unused BB00): 14, bitset array size: 1 (short) Identifying loops in DFS tree with following reverse post order: RPO -> BB [pre, post] 00 -> BB01[0, 12] 01 -> BB02[1, 11] 02 -> BB03[2, 10] 03 -> BB04[3, 9] 04 -> BB07[4, 8] 05 -> BB08[5, 7] 06 -> BB09[6, 6] 07 -> BB10[7, 5] 08 -> BB05[8, 4] 09 -> BB11[10, 3] 10 -> BB12[11, 2] 11 -> BB13[12, 1] 12 -> BB06[9, 0] *************** Natural loop graph No loops *************** Before renumbering the basic blocks ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB01 [0015] 1 1 [???..???)-> BB02 (always) i internal q BB02 [0000] 1 2 BB01 1 [000..00A)-> BB03 (always) T2 try { i keep hascall gcsafe q BB03 [0001] 1 1 BB02 1 [00A..014)-> BB04 (always) T1 try { i keep hascall gcsafe q BB04 [0002] 1 0 BB03 1 [014..023)-> BB07 (callf ) T0 try { } } i keep hascall gcsafe retless BB05 [0008] 1 2 BB10 1 [058..05D)-> BB06 (always) T2 } i q BB06 [0011] 2 BB05,BB13 1 [07B..07C) (return) i ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ funclets follow BB07 [0003] 2 1 0 BB04 0 [023..033) (throw ) T1 H0 F finally { } i rare keep hascall gcsafe flet newobj BB08 [0013] 1 2 1 0 [03A..???)-> BB09 (always) T2 H1 F filter { i rare keep internal flet q BB09 [0006] 1 2 1 BB08 0 [03A..048)-> BB10 (fltret) T2 H1 } i rare keep hascall gcsafe BB10 [0007] 2 2 1 BB09 1 [048..058)-> BB05 ( cret ) T2 H1 F filtHnd { } i keep hascall gcsafe flet BB11 [0012] 1 2 0 [05D..???)-> BB12 (always) H2 F filter { i rare keep internal flet q BB12 [0009] 1 2 BB11 0 [05D..06B)-> BB13 (fltret) H2 } i rare keep hascall gcsafe BB13 [0010] 2 2 BB12 1 [06B..07B)-> BB06 ( cret ) H2 F filtHnd { } i keep hascall gcsafe flet ---------------------------------------------------------------------------------------------------------------------------------------------- *************** Exception Handling table index eTry, eHnd 0 :: 1 - Try at BB04..BB04 [014..023), Finally at BB07..BB07 [023..035) 1 :: 2 - Try at BB03..BB04 [00A..03A), Filter at BB08..BB09 [03A..048), Handler at BB10..BB10 [048..058) 2 :: - Try at BB02..BB05 [000..05D), Filter at BB11..BB12 [05D..06B), Handler at BB13..BB13 [06B..07B) =============== No blocks renumbered! *************** Finishing PHASE Find loops Trees after Find loops ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB01 [0015] 1 1 [???..???)-> BB02 (always) i internal q BB02 [0000] 1 2 BB01 1 [000..00A)-> BB03 (always) T2 try { i keep hascall gcsafe q BB03 [0001] 1 1 BB02 1 [00A..014)-> BB04 (always) T1 try { i keep hascall gcsafe q BB04 [0002] 1 0 BB03 1 [014..023)-> BB07 (callf ) T0 try { } } i keep hascall gcsafe retless BB05 [0008] 1 2 BB10 1 [058..05D)-> BB06 (always) T2 } i q BB06 [0011] 2 BB05,BB13 1 [07B..07C) (return) i ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ funclets follow BB07 [0003] 2 1 0 BB04 0 [023..033) (throw ) T1 H0 F finally { } i rare keep hascall gcsafe flet newobj BB08 [0013] 1 2 1 0 [03A..???)-> BB09 (always) T2 H1 F filter { i rare keep internal flet q BB09 [0006] 1 2 1 BB08 0 [03A..048)-> BB10 (fltret) T2 H1 } i rare keep hascall gcsafe BB10 [0007] 2 2 1 BB09 1 [048..058)-> BB05 ( cret ) T2 H1 F filtHnd { } i keep hascall gcsafe flet BB11 [0012] 1 2 0 [05D..???)-> BB12 (always) H2 F filter { i rare keep internal flet q BB12 [0009] 1 2 BB11 0 [05D..06B)-> BB13 (fltret) H2 } i rare keep hascall gcsafe BB13 [0010] 2 2 BB12 1 [06B..07B)-> BB06 ( cret ) H2 F filtHnd { } i keep hascall gcsafe flet ---------------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [0015] [???..???) -> BB02 (always), preds={} succs={BB02} ------------ BB02 [0000] [000..00A) -> BB03 (always), preds={BB01} succs={BB03} ***** BB02 [0000] STMT00001 ( 0x000[E-] ... 0x005 ) [000007] --CXG+----- * CALL void System.Console:WriteLine(System.String) [000045] H----+----- arg0 in ecx \--* CNS_INT(h) ref '"in try"' ------------ BB03 [0001] [00A..014) -> BB04 (always), preds={BB02} succs={BB04} ***** BB03 [0001] STMT00003 ( 0x00A[E-] ... 0x00F ) [000015] --CXG+----- * CALL void System.Console:WriteLine(System.String) [000046] H----+----- arg0 in ecx \--* CNS_INT(h) ref '" in try"' ------------ BB04 [0002] [014..023) -> BB07 (callf), preds={BB03} succs={BB07} ***** BB04 [0002] STMT00004 ( 0x014[E-] ... 0x01E ) [000017] --CXG+----- * CALL void System.Console:WriteLine(System.String) [000047] H----+----- arg0 in ecx \--* CNS_INT(h) ref '" in try"' ------------ BB05 [0008] [058..05D) -> BB06 (always), preds={BB10} succs={BB06} ***** BB05 [0008] STMT00018 ( ??? ... ??? ) ( 1, 1) [000044] -----+----- * NO_OP void ------------ BB06 [0011] [07B..07C) (return), preds={BB05,BB13} succs={} ***** BB06 [0011] STMT00005 ( 0x07B[E-] ... 0x07B ) [000018] -----+----- * RETURN void ------------ BB07 [0003] [023..033) (throw), preds={BB04} succs={} ***** BB07 [0003] STMT00006 ( 0x023[E-] ... 0x032 ) [000020] --CXG+----- * CALL void System.Console:WriteLine(System.String) [000048] H----+----- arg0 in ecx \--* CNS_INT(h) ref '" in finally"' ***** BB07 [0003] STMT00007 ( 0x02D[E-] ... ??? ) [000023] DAC--+----- * STORE_LCL_VAR ref V03 tmp2 [000022] --C--+----- \--* CALL help ref CORINFO_HELP_NEWSFAST [000021] H----+----- arg0 in ecx \--* CNS_INT(h) int 0x425450 class ***** BB07 [0003] STMT00008 ( ??? ... ??? ) [000025] --CXG+----- * CALL void System.Exception:.ctor():this [000024] -----+----- this in ecx \--* LCL_VAR ref V03 tmp2 ***** BB07 [0003] STMT00009 ( 0x032[--] ... ??? ) [000027] --CXG+----- * CALL help void CORINFO_HELP_THROW [000026] -----+----- arg0 in ecx \--* LCL_VAR ref V03 tmp2 ------------ BB08 [0013] [03A..???) -> BB09 (always), preds={} succs={BB09} ------------ BB09 [0006] [03A..048) -> BB10 (fltret), preds={BB08} succs={BB10} ***** BB09 [0006] STMT00010 ( 0x03B[E-] ... 0x047 ) [000029] --CXG+----- * CALL void System.Console:WriteLine(System.String) [000049] H----+----- arg0 in ecx \--* CNS_INT(h) ref '" in filter"' ***** BB09 [0006] STMT00011 ( 0x045[E-] ... ??? ) [000031] -----+----- * RETFILT int [000030] -----+----- \--* CNS_INT int 0 ------------ BB10 [0007] [048..058) -> BB05 (cret), preds={BB09} succs={BB05} ***** BB10 [0007] STMT00013 ( 0x049[E-] ... ??? ) [000035] --CXG+----- * CALL void System.Console:WriteLine(System.String) [000050] H----+----- arg0 in ecx \--* CNS_INT(h) ref '" in handler"' ------------ BB11 [0012] [05D..???) -> BB12 (always), preds={} succs={BB12} ------------ BB12 [0009] [05D..06B) -> BB13 (fltret), preds={BB11} succs={BB13} ***** BB12 [0009] STMT00014 ( 0x05E[E-] ... 0x06A ) [000037] --CXG+----- * CALL void System.Console:WriteLine(System.String) [000051] H----+----- arg0 in ecx \--* CNS_INT(h) ref '"in filter"' ***** BB12 [0009] STMT00015 ( 0x068[E-] ... ??? ) [000039] -----+----- * RETFILT int [000038] -----+----- \--* CNS_INT int 0 ------------ BB13 [0010] [06B..07B) -> BB06 (cret), preds={BB12} succs={BB06} ***** BB13 [0010] STMT00017 ( 0x06C[E-] ... ??? ) [000043] --CXG+----- * CALL void System.Console:WriteLine(System.String) [000052] H----+----- arg0 in ecx \--* CNS_INT(h) ref '"in handler"' ------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist Checking Profile Weights (flags:0x16) No blocks were profiled, so nothing to check *************** Starting PHASE Set block weights After computing the dominance tree: BB01 : BB02 BB07 BB11 BB13 BB06 BB02 : BB03 BB08 BB10 BB03 : BB04 BB08 : BB09 BB10 : BB05 BB11 : BB12 After computing reachability sets: ------------------------------------------------ BBnum Reachable by ------------------------------------------------ BB01 : BB01 BB02 : BB02 BB01 BB03 : BB03 BB02 BB01 BB04 : BB04 BB03 BB02 BB01 BB05 : BB05 BB10 BB09 BB08 BB06 : BB06 BB13 BB12 BB11 BB05 BB10 BB09 BB08 BB07 : BB07 BB04 BB03 BB02 BB01 BB08 : BB08 BB09 : BB09 BB08 BB10 : BB10 BB09 BB08 BB11 : BB11 BB12 : BB12 BB11 BB13 : BB13 BB12 BB11 *************** In optMarkLoopHeads() 0 loop heads marked *************** In optFindAndScaleGeneralLoopBlocks() Found a total of 0 general loops. Return blocks: BB06 *************** Finishing PHASE Set block weights Trees after Set block weights ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB01 [0015] 1 1 [???..???)-> BB02 (always) i internal q BB02 [0000] 1 2 BB01 1 [000..00A)-> BB03 (always) T2 try { i keep hascall gcsafe q BB03 [0001] 1 1 BB02 1 [00A..014)-> BB04 (always) T1 try { i keep hascall gcsafe q BB04 [0002] 1 0 BB03 1 [014..023)-> BB07 (callf ) T0 try { } } i keep hascall gcsafe retless BB05 [0008] 1 2 BB10 0 [058..05D)-> BB06 (always) T2 } i rare q BB06 [0011] 2 BB05,BB13 0 [07B..07C) (return) i rare ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ funclets follow BB07 [0003] 2 1 0 BB04 0 [023..033) (throw ) T1 H0 F finally { } i rare keep hascall gcsafe flet newobj BB08 [0013] 1 2 1 0 [03A..???)-> BB09 (always) T2 H1 F filter { i rare keep internal flet q BB09 [0006] 1 2 1 BB08 0 [03A..048)-> BB10 (fltret) T2 H1 } i rare keep hascall gcsafe BB10 [0007] 2 2 1 BB09 0 [048..058)-> BB05 ( cret ) T2 H1 F filtHnd { } i rare keep hascall gcsafe flet BB11 [0012] 1 2 0 [05D..???)-> BB12 (always) H2 F filter { i rare keep internal flet q BB12 [0009] 1 2 BB11 0 [05D..06B)-> BB13 (fltret) H2 } i rare keep hascall gcsafe BB13 [0010] 2 2 BB12 0 [06B..07B)-> BB06 ( cret ) H2 F filtHnd { } i rare keep hascall gcsafe flet ---------------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [0015] [???..???) -> BB02 (always), preds={} succs={BB02} ------------ BB02 [0000] [000..00A) -> BB03 (always), preds={BB01} succs={BB03} ***** BB02 [0000] STMT00001 ( 0x000[E-] ... 0x005 ) [000007] --CXG+----- * CALL void System.Console:WriteLine(System.String) [000045] H----+----- arg0 in ecx \--* CNS_INT(h) ref '"in try"' ------------ BB03 [0001] [00A..014) -> BB04 (always), preds={BB02} succs={BB04} ***** BB03 [0001] STMT00003 ( 0x00A[E-] ... 0x00F ) [000015] --CXG+----- * CALL void System.Console:WriteLine(System.String) [000046] H----+----- arg0 in ecx \--* CNS_INT(h) ref '" in try"' ------------ BB04 [0002] [014..023) -> BB07 (callf), preds={BB03} succs={BB07} ***** BB04 [0002] STMT00004 ( 0x014[E-] ... 0x01E ) [000017] --CXG+----- * CALL void System.Console:WriteLine(System.String) [000047] H----+----- arg0 in ecx \--* CNS_INT(h) ref '" in try"' ------------ BB05 [0008] [058..05D) -> BB06 (always), preds={BB10} succs={BB06} ***** BB05 [0008] STMT00018 ( ??? ... ??? ) ( 1, 1) [000044] -----+----- * NO_OP void ------------ BB06 [0011] [07B..07C) (return), preds={BB05,BB13} succs={} ***** BB06 [0011] STMT00005 ( 0x07B[E-] ... 0x07B ) [000018] -----+----- * RETURN void ------------ BB07 [0003] [023..033) (throw), preds={BB04} succs={} ***** BB07 [0003] STMT00006 ( 0x023[E-] ... 0x032 ) [000020] --CXG+----- * CALL void System.Console:WriteLine(System.String) [000048] H----+----- arg0 in ecx \--* CNS_INT(h) ref '" in finally"' ***** BB07 [0003] STMT00007 ( 0x02D[E-] ... ??? ) [000023] DAC--+----- * STORE_LCL_VAR ref V03 tmp2 [000022] --C--+----- \--* CALL help ref CORINFO_HELP_NEWSFAST [000021] H----+----- arg0 in ecx \--* CNS_INT(h) int 0x425450 class ***** BB07 [0003] STMT00008 ( ??? ... ??? ) [000025] --CXG+----- * CALL void System.Exception:.ctor():this [000024] -----+----- this in ecx \--* LCL_VAR ref V03 tmp2 ***** BB07 [0003] STMT00009 ( 0x032[--] ... ??? ) [000027] --CXG+----- * CALL help void CORINFO_HELP_THROW [000026] -----+----- arg0 in ecx \--* LCL_VAR ref V03 tmp2 ------------ BB08 [0013] [03A..???) -> BB09 (always), preds={} succs={BB09} ------------ BB09 [0006] [03A..048) -> BB10 (fltret), preds={BB08} succs={BB10} ***** BB09 [0006] STMT00010 ( 0x03B[E-] ... 0x047 ) [000029] --CXG+----- * CALL void System.Console:WriteLine(System.String) [000049] H----+----- arg0 in ecx \--* CNS_INT(h) ref '" in filter"' ***** BB09 [0006] STMT00011 ( 0x045[E-] ... ??? ) [000031] -----+----- * RETFILT int [000030] -----+----- \--* CNS_INT int 0 ------------ BB10 [0007] [048..058) -> BB05 (cret), preds={BB09} succs={BB05} ***** BB10 [0007] STMT00013 ( 0x049[E-] ... ??? ) [000035] --CXG+----- * CALL void System.Console:WriteLine(System.String) [000050] H----+----- arg0 in ecx \--* CNS_INT(h) ref '" in handler"' ------------ BB11 [0012] [05D..???) -> BB12 (always), preds={} succs={BB12} ------------ BB12 [0009] [05D..06B) -> BB13 (fltret), preds={BB11} succs={BB13} ***** BB12 [0009] STMT00014 ( 0x05E[E-] ... 0x06A ) [000037] --CXG+----- * CALL void System.Console:WriteLine(System.String) [000051] H----+----- arg0 in ecx \--* CNS_INT(h) ref '"in filter"' ***** BB12 [0009] STMT00015 ( 0x068[E-] ... ??? ) [000039] -----+----- * RETFILT int [000038] -----+----- \--* CNS_INT int 0 ------------ BB13 [0010] [06B..07B) -> BB06 (cret), preds={BB12} succs={BB06} ***** BB13 [0010] STMT00017 ( 0x06C[E-] ... ??? ) [000043] --CXG+----- * CALL void System.Console:WriteLine(System.String) [000052] H----+----- arg0 in ecx \--* CNS_INT(h) ref '"in handler"' ------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist Checking Profile Weights (flags:0x16) No blocks were profiled, so nothing to check *************** Starting PHASE Clone loops *************** In optCloneLoops() No loops to clone *************** Finishing PHASE Clone loops [no changes] *************** Starting PHASE Unroll loops *************** Finishing PHASE Unroll loops [no changes] *************** Starting PHASE Compute dominators *************** Finishing PHASE Compute dominators [no changes] *************** Starting PHASE Morph array ops No multi-dimensional array references in the function *************** Finishing PHASE Morph array ops [no changes] *************** Starting PHASE Mark local vars *************** In lvaMarkLocalVars() *** lvaComputeRefCounts *** *** lvaComputeRefCounts -- explicit counts *** *** marking local variables in block BB01 (weight=1) *** marking local variables in block BB02 (weight=1) STMT00001 ( 0x000[E-] ... 0x005 ) [000007] --CXG+----- * CALL void System.Console:WriteLine(System.String) [000045] H----+----- arg0 in ecx \--* CNS_INT(h) ref '"in try"' *** marking local variables in block BB03 (weight=1) STMT00003 ( 0x00A[E-] ... 0x00F ) [000015] --CXG+----- * CALL void System.Console:WriteLine(System.String) [000046] H----+----- arg0 in ecx \--* CNS_INT(h) ref '" in try"' *** marking local variables in block BB04 (weight=1) STMT00004 ( 0x014[E-] ... 0x01E ) [000017] --CXG+----- * CALL void System.Console:WriteLine(System.String) [000047] H----+----- arg0 in ecx \--* CNS_INT(h) ref '" in try"' *** marking local variables in block BB05 (weight=0) STMT00018 ( ??? ... ??? ) ( 1, 1) [000044] -----+----- * NO_OP void *** marking local variables in block BB06 (weight=0) STMT00005 ( 0x07B[E-] ... 0x07B ) [000018] -----+----- * RETURN void *** marking local variables in block BB07 (weight=0) STMT00006 ( 0x023[E-] ... 0x032 ) [000020] --CXG+----- * CALL void System.Console:WriteLine(System.String) [000048] H----+----- arg0 in ecx \--* CNS_INT(h) ref '" in finally"' STMT00007 ( 0x02D[E-] ... ??? ) [000023] DAC--+----- * STORE_LCL_VAR ref V03 tmp2 [000022] --C--+----- \--* CALL help ref CORINFO_HELP_NEWSFAST [000021] H----+----- arg0 in ecx \--* CNS_INT(h) int 0x425450 class New refCnts for V03: refCnt = 1, refCntWtd = 0 Marking EH Var V03 as a register candidate. STMT00008 ( ??? ... ??? ) [000025] --CXG+----- * CALL void System.Exception:.ctor():this [000024] -----+----- this in ecx \--* LCL_VAR ref V03 tmp2 New refCnts for V03: refCnt = 2, refCntWtd = 0 STMT00009 ( 0x032[--] ... ??? ) [000027] --CXG+----- * CALL help void CORINFO_HELP_THROW [000026] -----+----- arg0 in ecx \--* LCL_VAR ref V03 tmp2 New refCnts for V03: refCnt = 3, refCntWtd = 0 *** marking local variables in block BB08 (weight=0) *** marking local variables in block BB09 (weight=0) STMT00010 ( 0x03B[E-] ... 0x047 ) [000029] --CXG+----- * CALL void System.Console:WriteLine(System.String) [000049] H----+----- arg0 in ecx \--* CNS_INT(h) ref '" in filter"' STMT00011 ( 0x045[E-] ... ??? ) [000031] -----+----- * RETFILT int [000030] -----+----- \--* CNS_INT int 0 *** marking local variables in block BB10 (weight=0) STMT00013 ( 0x049[E-] ... ??? ) [000035] --CXG+----- * CALL void System.Console:WriteLine(System.String) [000050] H----+----- arg0 in ecx \--* CNS_INT(h) ref '" in handler"' *** marking local variables in block BB11 (weight=0) *** marking local variables in block BB12 (weight=0) STMT00014 ( 0x05E[E-] ... 0x06A ) [000037] --CXG+----- * CALL void System.Console:WriteLine(System.String) [000051] H----+----- arg0 in ecx \--* CNS_INT(h) ref '"in filter"' STMT00015 ( 0x068[E-] ... ??? ) [000039] -----+----- * RETFILT int [000038] -----+----- \--* CNS_INT int 0 *** marking local variables in block BB13 (weight=0) STMT00017 ( 0x06C[E-] ... ??? ) [000043] --CXG+----- * CALL void System.Console:WriteLine(System.String) [000052] H----+----- arg0 in ecx \--* CNS_INT(h) ref '"in handler"' *** lvaComputeRefCounts -- implicit counts *** *************** Finishing PHASE Mark local vars [no changes] *************** Starting PHASE Find oper order *************** In fgFindOperOrder() *************** Finishing PHASE Find oper order Trees after Find oper order ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB01 [0015] 1 1 [???..???)-> BB02 (always) i internal q BB02 [0000] 1 2 BB01 1 [000..00A)-> BB03 (always) T2 try { i keep hascall gcsafe q BB03 [0001] 1 1 BB02 1 [00A..014)-> BB04 (always) T1 try { i keep hascall gcsafe q BB04 [0002] 1 0 BB03 1 [014..023)-> BB07 (callf ) T0 try { } } i keep hascall gcsafe retless BB05 [0008] 1 2 BB10 0 [058..05D)-> BB06 (always) T2 } i rare xentry q BB06 [0011] 2 BB05,BB13 0 [07B..07C) (return) i rare ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ funclets follow BB07 [0003] 2 1 0 BB04 0 [023..033) (throw ) T1 H0 F finally { } i rare keep hascall xentry gcsafe flet newobj BB08 [0013] 1 2 1 0 [03A..???)-> BB09 (always) T2 H1 F filter { i rare keep internal xentry flet q BB09 [0006] 1 2 1 BB08 0 [03A..048)-> BB10 (fltret) T2 H1 } i rare keep hascall xentry gcsafe BB10 [0007] 2 2 1 BB09 0 [048..058)-> BB05 ( cret ) T2 H1 F filtHnd { } i rare keep hascall xentry gcsafe flet BB11 [0012] 1 2 0 [05D..???)-> BB12 (always) H2 F filter { i rare keep internal xentry flet q BB12 [0009] 1 2 BB11 0 [05D..06B)-> BB13 (fltret) H2 } i rare keep hascall xentry gcsafe BB13 [0010] 2 2 BB12 0 [06B..07B)-> BB06 ( cret ) H2 F filtHnd { } i rare keep hascall xentry gcsafe flet ---------------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [0015] [???..???) -> BB02 (always), preds={} succs={BB02} ------------ BB02 [0000] [000..00A) -> BB03 (always), preds={BB01} succs={BB03} ***** BB02 [0000] STMT00001 ( 0x000[E-] ... 0x005 ) ( 15, 10) [000007] --CXG------ * CALL void System.Console:WriteLine(System.String) ( 1, 4) [000045] H---------- arg0 in ecx \--* CNS_INT(h) ref '"in try"' ------------ BB03 [0001] [00A..014) -> BB04 (always), preds={BB02} succs={BB04} ***** BB03 [0001] STMT00003 ( 0x00A[E-] ... 0x00F ) ( 15, 10) [000015] --CXG------ * CALL void System.Console:WriteLine(System.String) ( 1, 4) [000046] H---------- arg0 in ecx \--* CNS_INT(h) ref '" in try"' ------------ BB04 [0002] [014..023) -> BB07 (callf), preds={BB03} succs={BB07} ***** BB04 [0002] STMT00004 ( 0x014[E-] ... 0x01E ) ( 15, 10) [000017] --CXG------ * CALL void System.Console:WriteLine(System.String) ( 1, 4) [000047] H---------- arg0 in ecx \--* CNS_INT(h) ref '" in try"' ------------ BB05 [0008] [058..05D) -> BB06 (always), preds={BB10} succs={BB06} ***** BB05 [0008] STMT00018 ( ??? ... ??? ) ( 1, 1) [000044] ----------- * NO_OP void ------------ BB06 [0011] [07B..07C) (return), preds={BB05,BB13} succs={} ***** BB06 [0011] STMT00005 ( 0x07B[E-] ... 0x07B ) ( 0, 0) [000018] ----------- * RETURN void ------------ BB07 [0003] [023..033) (throw), preds={BB04} succs={} ***** BB07 [0003] STMT00006 ( 0x023[E-] ... 0x032 ) ( 15, 10) [000020] --CXG------ * CALL void System.Console:WriteLine(System.String) ( 1, 4) [000048] H---------- arg0 in ecx \--* CNS_INT(h) ref '" in finally"' ***** BB07 [0003] STMT00007 ( 0x02D[E-] ... ??? ) ( 19, 13) [000023] DAC-------- * STORE_LCL_VAR ref V03 tmp2 ( 15, 10) [000022] --C-------- \--* CALL help ref CORINFO_HELP_NEWSFAST ( 1, 4) [000021] H---------- arg0 in ecx \--* CNS_INT(h) int 0x425450 class ***** BB07 [0003] STMT00008 ( ??? ... ??? ) ( 17, 8) [000025] --CXG------ * CALL void System.Exception:.ctor():this ( 3, 2) [000024] ----------- this in ecx \--* LCL_VAR ref V03 tmp2 ***** BB07 [0003] STMT00009 ( 0x032[--] ... ??? ) ( 17, 8) [000027] --CXG------ * CALL help void CORINFO_HELP_THROW ( 3, 2) [000026] ----------- arg0 in ecx \--* LCL_VAR ref V03 tmp2 ------------ BB08 [0013] [03A..???) -> BB09 (always), preds={} succs={BB09} ------------ BB09 [0006] [03A..048) -> BB10 (fltret), preds={BB08} succs={BB10} ***** BB09 [0006] STMT00010 ( 0x03B[E-] ... 0x047 ) ( 15, 10) [000029] --CXG------ * CALL void System.Console:WriteLine(System.String) ( 1, 4) [000049] H---------- arg0 in ecx \--* CNS_INT(h) ref '" in filter"' ***** BB09 [0006] STMT00011 ( 0x045[E-] ... ??? ) ( 2, 2) [000031] ----------- * RETFILT int ( 1, 1) [000030] ----------- \--* CNS_INT int 0 ------------ BB10 [0007] [048..058) -> BB05 (cret), preds={BB09} succs={BB05} ***** BB10 [0007] STMT00013 ( 0x049[E-] ... ??? ) ( 15, 10) [000035] --CXG------ * CALL void System.Console:WriteLine(System.String) ( 1, 4) [000050] H---------- arg0 in ecx \--* CNS_INT(h) ref '" in handler"' ------------ BB11 [0012] [05D..???) -> BB12 (always), preds={} succs={BB12} ------------ BB12 [0009] [05D..06B) -> BB13 (fltret), preds={BB11} succs={BB13} ***** BB12 [0009] STMT00014 ( 0x05E[E-] ... 0x06A ) ( 15, 10) [000037] --CXG------ * CALL void System.Console:WriteLine(System.String) ( 1, 4) [000051] H---------- arg0 in ecx \--* CNS_INT(h) ref '"in filter"' ***** BB12 [0009] STMT00015 ( 0x068[E-] ... ??? ) ( 2, 2) [000039] ----------- * RETFILT int ( 1, 1) [000038] ----------- \--* CNS_INT int 0 ------------ BB13 [0010] [06B..07B) -> BB06 (cret), preds={BB12} succs={BB06} ***** BB13 [0010] STMT00017 ( 0x06C[E-] ... ??? ) ( 15, 10) [000043] --CXG------ * CALL void System.Console:WriteLine(System.String) ( 1, 4) [000052] H---------- arg0 in ecx \--* CNS_INT(h) ref '"in handler"' ------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist Checking Profile Weights (flags:0x16) No blocks were profiled, so nothing to check *************** Starting PHASE Set block order *************** In fgSetBlockOrder() The biggest BB has 3 tree nodes *************** Finishing PHASE Set block order Trees after Set block order ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB01 [0015] 1 1 [???..???)-> BB02 (always) i internal q BB02 [0000] 1 2 BB01 1 [000..00A)-> BB03 (always) T2 try { i keep hascall gcsafe q BB03 [0001] 1 1 BB02 1 [00A..014)-> BB04 (always) T1 try { i keep hascall gcsafe q BB04 [0002] 1 0 BB03 1 [014..023)-> BB07 (callf ) T0 try { } } i keep hascall gcsafe retless BB05 [0008] 1 2 BB10 0 [058..05D)-> BB06 (always) T2 } i rare xentry q BB06 [0011] 2 BB05,BB13 0 [07B..07C) (return) i rare ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ funclets follow BB07 [0003] 2 1 0 BB04 0 [023..033) (throw ) T1 H0 F finally { } i rare keep hascall xentry gcsafe flet newobj BB08 [0013] 1 2 1 0 [03A..???)-> BB09 (always) T2 H1 F filter { i rare keep internal xentry flet q BB09 [0006] 1 2 1 BB08 0 [03A..048)-> BB10 (fltret) T2 H1 } i rare keep hascall xentry gcsafe BB10 [0007] 2 2 1 BB09 0 [048..058)-> BB05 ( cret ) T2 H1 F filtHnd { } i rare keep hascall xentry gcsafe flet BB11 [0012] 1 2 0 [05D..???)-> BB12 (always) H2 F filter { i rare keep internal xentry flet q BB12 [0009] 1 2 BB11 0 [05D..06B)-> BB13 (fltret) H2 } i rare keep hascall xentry gcsafe BB13 [0010] 2 2 BB12 0 [06B..07B)-> BB06 ( cret ) H2 F filtHnd { } i rare keep hascall xentry gcsafe flet ---------------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [0015] [???..???) -> BB02 (always), preds={} succs={BB02} ------------ BB02 [0000] [000..00A) -> BB03 (always), preds={BB01} succs={BB03} ***** BB02 [0000] STMT00001 ( 0x000[E-] ... 0x005 ) N002 ( 15, 10) [000007] --CXG------ * CALL void System.Console:WriteLine(System.String) N001 ( 1, 4) [000045] H---------- arg0 in ecx \--* CNS_INT(h) ref '"in try"' ------------ BB03 [0001] [00A..014) -> BB04 (always), preds={BB02} succs={BB04} ***** BB03 [0001] STMT00003 ( 0x00A[E-] ... 0x00F ) N002 ( 15, 10) [000015] --CXG------ * CALL void System.Console:WriteLine(System.String) N001 ( 1, 4) [000046] H---------- arg0 in ecx \--* CNS_INT(h) ref '" in try"' ------------ BB04 [0002] [014..023) -> BB07 (callf), preds={BB03} succs={BB07} ***** BB04 [0002] STMT00004 ( 0x014[E-] ... 0x01E ) N002 ( 15, 10) [000017] --CXG------ * CALL void System.Console:WriteLine(System.String) N001 ( 1, 4) [000047] H---------- arg0 in ecx \--* CNS_INT(h) ref '" in try"' ------------ BB05 [0008] [058..05D) -> BB06 (always), preds={BB10} succs={BB06} ***** BB05 [0008] STMT00018 ( ??? ... ??? ) N001 ( 1, 1) [000044] ----------- * NO_OP void ------------ BB06 [0011] [07B..07C) (return), preds={BB05,BB13} succs={} ***** BB06 [0011] STMT00005 ( 0x07B[E-] ... 0x07B ) N001 ( 0, 0) [000018] ----------- * RETURN void ------------ BB07 [0003] [023..033) (throw), preds={BB04} succs={} ***** BB07 [0003] STMT00006 ( 0x023[E-] ... 0x032 ) N002 ( 15, 10) [000020] --CXG------ * CALL void System.Console:WriteLine(System.String) N001 ( 1, 4) [000048] H---------- arg0 in ecx \--* CNS_INT(h) ref '" in finally"' ***** BB07 [0003] STMT00007 ( 0x02D[E-] ... ??? ) N003 ( 19, 13) [000023] DAC-------- * STORE_LCL_VAR ref V03 tmp2 N002 ( 15, 10) [000022] --C-------- \--* CALL help ref CORINFO_HELP_NEWSFAST N001 ( 1, 4) [000021] H---------- arg0 in ecx \--* CNS_INT(h) int 0x425450 class ***** BB07 [0003] STMT00008 ( ??? ... ??? ) N002 ( 17, 8) [000025] --CXG------ * CALL void System.Exception:.ctor():this N001 ( 3, 2) [000024] ----------- this in ecx \--* LCL_VAR ref V03 tmp2 ***** BB07 [0003] STMT00009 ( 0x032[--] ... ??? ) N002 ( 17, 8) [000027] --CXG------ * CALL help void CORINFO_HELP_THROW N001 ( 3, 2) [000026] ----------- arg0 in ecx \--* LCL_VAR ref V03 tmp2 ------------ BB08 [0013] [03A..???) -> BB09 (always), preds={} succs={BB09} ------------ BB09 [0006] [03A..048) -> BB10 (fltret), preds={BB08} succs={BB10} ***** BB09 [0006] STMT00010 ( 0x03B[E-] ... 0x047 ) N002 ( 15, 10) [000029] --CXG------ * CALL void System.Console:WriteLine(System.String) N001 ( 1, 4) [000049] H---------- arg0 in ecx \--* CNS_INT(h) ref '" in filter"' ***** BB09 [0006] STMT00011 ( 0x045[E-] ... ??? ) N002 ( 2, 2) [000031] ----------- * RETFILT int N001 ( 1, 1) [000030] ----------- \--* CNS_INT int 0 ------------ BB10 [0007] [048..058) -> BB05 (cret), preds={BB09} succs={BB05} ***** BB10 [0007] STMT00013 ( 0x049[E-] ... ??? ) N002 ( 15, 10) [000035] --CXG------ * CALL void System.Console:WriteLine(System.String) N001 ( 1, 4) [000050] H---------- arg0 in ecx \--* CNS_INT(h) ref '" in handler"' ------------ BB11 [0012] [05D..???) -> BB12 (always), preds={} succs={BB12} ------------ BB12 [0009] [05D..06B) -> BB13 (fltret), preds={BB11} succs={BB13} ***** BB12 [0009] STMT00014 ( 0x05E[E-] ... 0x06A ) N002 ( 15, 10) [000037] --CXG------ * CALL void System.Console:WriteLine(System.String) N001 ( 1, 4) [000051] H---------- arg0 in ecx \--* CNS_INT(h) ref '"in filter"' ***** BB12 [0009] STMT00015 ( 0x068[E-] ... ??? ) N002 ( 2, 2) [000039] ----------- * RETFILT int N001 ( 1, 1) [000038] ----------- \--* CNS_INT int 0 ------------ BB13 [0010] [06B..07B) -> BB06 (cret), preds={BB12} succs={BB06} ***** BB13 [0010] STMT00017 ( 0x06C[E-] ... ??? ) N002 ( 15, 10) [000043] --CXG------ * CALL void System.Console:WriteLine(System.String) N001 ( 1, 4) [000052] H---------- arg0 in ecx \--* CNS_INT(h) ref '"in handler"' ------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist Checking Profile Weights (flags:0x16) No blocks were profiled, so nothing to check *************** Starting PHASE Build SSA representation *************** In SsaBuilder::Build() *************** In fgLocalVarLiveness() In fgLocalVarLivenessInit Tracked variable (1 out of 6) table: V03 tmp2 [ ref]: refCnt = 3, refCntWtd = 0 *************** In fgPerBlockLocalVarLiveness() BB01 USE(0)={} DEF(0)={} BB02 USE(0)={} + ByrefExposed + GcHeap DEF(0)={} + ByrefExposed* + GcHeap* BB03 USE(0)={} + ByrefExposed + GcHeap DEF(0)={} + ByrefExposed* + GcHeap* BB04 USE(0)={} + ByrefExposed + GcHeap DEF(0)={} + ByrefExposed* + GcHeap* BB05 USE(0)={} DEF(0)={} BB06 USE(0)={} DEF(0)={} BB07 USE(0)={ } + ByrefExposed + GcHeap DEF(1)={V03} + ByrefExposed* + GcHeap* BB08 USE(0)={} DEF(0)={} BB09 USE(0)={} + ByrefExposed + GcHeap DEF(0)={} + ByrefExposed* + GcHeap* BB10 USE(0)={} + ByrefExposed + GcHeap DEF(0)={} + ByrefExposed* + GcHeap* BB11 USE(0)={} DEF(0)={} BB12 USE(0)={} + ByrefExposed + GcHeap DEF(0)={} + ByrefExposed* + GcHeap* BB13 USE(0)={} + ByrefExposed + GcHeap DEF(0)={} + ByrefExposed* + GcHeap* ** Memory liveness computed, GcHeap states and ByrefExposed states match *************** In fgInterBlockLocalVarLiveness() BB liveness after fgLiveVarAnalysis(): BB01 IN (0)={} + ByrefExposed + GcHeap OUT(0)={} + ByrefExposed + GcHeap BB02 IN (0)={} + ByrefExposed + GcHeap OUT(0)={} + ByrefExposed + GcHeap BB03 IN (0)={} + ByrefExposed + GcHeap OUT(0)={} + ByrefExposed + GcHeap BB04 IN (0)={} + ByrefExposed + GcHeap OUT(0)={} + ByrefExposed + GcHeap BB05 IN (0)={} + ByrefExposed + GcHeap OUT(0)={} + ByrefExposed + GcHeap BB06 IN (0)={} OUT(0)={} BB07 IN (0)={} + ByrefExposed + GcHeap OUT(0)={} + ByrefExposed + GcHeap BB08 IN (0)={} + ByrefExposed + GcHeap OUT(0)={} + ByrefExposed + GcHeap BB09 IN (0)={} + ByrefExposed + GcHeap OUT(0)={} + ByrefExposed + GcHeap BB10 IN (0)={} + ByrefExposed + GcHeap OUT(0)={} + ByrefExposed + GcHeap BB11 IN (0)={} + ByrefExposed + GcHeap OUT(0)={} + ByrefExposed + GcHeap BB12 IN (0)={} + ByrefExposed + GcHeap OUT(0)={} + ByrefExposed + GcHeap BB13 IN (0)={} + ByrefExposed + GcHeap OUT(0)={} *************** In optRemoveRedundantZeroInits() *************** In SsaBuilder::InsertPhiFunctions() Inserting phi functions: Inserting phi definition for ByrefExposed at start of BB13. Inserting phi definition for ByrefExposed at start of BB07. Inserting phi definition for ByrefExposed at start of BB11. Inserting phi definition for ByrefExposed at start of BB10. Inserting phi definition for ByrefExposed at start of BB08. *************** In SsaBuilder::RenameVariables() V03.1: defined in BB07 2 uses (local) *************** Finishing PHASE Build SSA representation Trees after Build SSA representation ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB01 [0015] 1 1 [???..???)-> BB02 (always) i internal q BB02 [0000] 1 2 BB01 1 [000..00A)-> BB03 (always) T2 try { i keep hascall gcsafe q BB03 [0001] 1 1 BB02 1 [00A..014)-> BB04 (always) T1 try { i keep hascall gcsafe q BB04 [0002] 1 0 BB03 1 [014..023)-> BB07 (callf ) T0 try { } } i keep hascall gcsafe retless BB05 [0008] 1 2 BB10 0 [058..05D)-> BB06 (always) T2 } i rare xentry q BB06 [0011] 2 BB05,BB13 0 [07B..07C) (return) i rare ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ funclets follow BB07 [0003] 2 1 0 BB04 0 [023..033) (throw ) T1 H0 F finally { } i rare keep hascall xentry gcsafe flet newobj BB08 [0013] 1 2 1 0 [03A..???)-> BB09 (always) T2 H1 F filter { i rare keep internal xentry flet q BB09 [0006] 1 2 1 BB08 0 [03A..048)-> BB10 (fltret) T2 H1 } i rare keep hascall xentry gcsafe BB10 [0007] 2 2 1 BB09 0 [048..058)-> BB05 ( cret ) T2 H1 F filtHnd { } i rare keep hascall xentry gcsafe flet BB11 [0012] 1 2 0 [05D..???)-> BB12 (always) H2 F filter { i rare keep internal xentry flet q BB12 [0009] 1 2 BB11 0 [05D..06B)-> BB13 (fltret) H2 } i rare keep hascall xentry gcsafe BB13 [0010] 2 2 BB12 0 [06B..07B)-> BB06 ( cret ) H2 F filtHnd { } i rare keep hascall xentry gcsafe flet ---------------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [0015] [???..???) -> BB02 (always), preds={} succs={BB02} SSA MEM: ByrefExposed, GcHeap = m:1 SSA MEM: ByrefExposed, GcHeap = m:1 ------------ BB02 [0000] [000..00A) -> BB03 (always), preds={BB01} succs={BB03} SSA MEM: ByrefExposed, GcHeap = m:1 ***** BB02 [0000] STMT00001 ( 0x000[E-] ... 0x005 ) N002 ( 15, 10) [000007] --CXG------ * CALL void System.Console:WriteLine(System.String) N001 ( 1, 4) [000045] H---------- arg0 in ecx \--* CNS_INT(h) ref '"in try"' SSA MEM: ByrefExposed, GcHeap = m:2 ------------ BB03 [0001] [00A..014) -> BB04 (always), preds={BB02} succs={BB04} SSA MEM: ByrefExposed, GcHeap = m:2 ***** BB03 [0001] STMT00003 ( 0x00A[E-] ... 0x00F ) N002 ( 15, 10) [000015] --CXG------ * CALL void System.Console:WriteLine(System.String) N001 ( 1, 4) [000046] H---------- arg0 in ecx \--* CNS_INT(h) ref '" in try"' SSA MEM: ByrefExposed, GcHeap = m:3 ------------ BB04 [0002] [014..023) -> BB07 (callf), preds={BB03} succs={BB07} SSA MEM: ByrefExposed, GcHeap = m:3 ***** BB04 [0002] STMT00004 ( 0x014[E-] ... 0x01E ) N002 ( 15, 10) [000017] --CXG------ * CALL void System.Console:WriteLine(System.String) N001 ( 1, 4) [000047] H---------- arg0 in ecx \--* CNS_INT(h) ref '" in try"' SSA MEM: ByrefExposed, GcHeap = m:4 ------------ BB05 [0008] [058..05D) -> BB06 (always), preds={BB10} succs={BB06} SSA MEM: ByrefExposed, GcHeap = m:8 ***** BB05 [0008] STMT00018 ( ??? ... ??? ) N001 ( 1, 1) [000044] ----------- * NO_OP void SSA MEM: ByrefExposed, GcHeap = m:8 ------------ BB06 [0011] [07B..07C) (return), preds={BB05,BB13} succs={} SSA MEM: ByrefExposed, GcHeap = m:1 ***** BB06 [0011] STMT00005 ( 0x07B[E-] ... 0x07B ) N001 ( 0, 0) [000018] ----------- * RETURN void SSA MEM: ByrefExposed, GcHeap = m:1 ------------ BB07 [0003] [023..033) (throw), preds={BB04} succs={} SSA MEM: ByrefExposed, GcHeap = phi(m:12, m:11, m:6, m:5, m:4, m:3) ***** BB07 [0003] STMT00006 ( 0x023[E-] ... 0x032 ) N002 ( 15, 10) [000020] --CXG------ * CALL void System.Console:WriteLine(System.String) N001 ( 1, 4) [000048] H---------- arg0 in ecx \--* CNS_INT(h) ref '" in finally"' ***** BB07 [0003] STMT00007 ( 0x02D[E-] ... ??? ) N003 ( 19, 13) [000023] DAC-------- * STORE_LCL_VAR ref V03 tmp2 d:1 N002 ( 15, 10) [000022] --C-------- \--* CALL help ref CORINFO_HELP_NEWSFAST N001 ( 1, 4) [000021] H---------- arg0 in ecx \--* CNS_INT(h) int 0x425450 class ***** BB07 [0003] STMT00008 ( ??? ... ??? ) N002 ( 17, 8) [000025] --CXG------ * CALL void System.Exception:.ctor():this N001 ( 3, 2) [000024] ----------- this in ecx \--* LCL_VAR ref V03 tmp2 u:1 ***** BB07 [0003] STMT00009 ( 0x032[--] ... ??? ) N002 ( 17, 8) [000027] --CXG------ * CALL help void CORINFO_HELP_THROW N001 ( 3, 2) [000026] ----------- arg0 in ecx \--* LCL_VAR ref V03 tmp2 u:1 (last use) SSA MEM: ByrefExposed, GcHeap = m:10 ------------ BB08 [0013] [03A..???) -> BB09 (always), preds={} succs={BB09} SSA MEM: ByrefExposed, GcHeap = phi(m:10, m:4, m:3, m:2) SSA MEM: ByrefExposed, GcHeap = m:5 ------------ BB09 [0006] [03A..048) -> BB10 (fltret), preds={BB08} succs={BB10} SSA MEM: ByrefExposed, GcHeap = m:5 ***** BB09 [0006] STMT00010 ( 0x03B[E-] ... 0x047 ) N002 ( 15, 10) [000029] --CXG------ * CALL void System.Console:WriteLine(System.String) N001 ( 1, 4) [000049] H---------- arg0 in ecx \--* CNS_INT(h) ref '" in filter"' ***** BB09 [0006] STMT00011 ( 0x045[E-] ... ??? ) N002 ( 2, 2) [000031] ----------- * RETFILT int N001 ( 1, 1) [000030] ----------- \--* CNS_INT int 0 SSA MEM: ByrefExposed, GcHeap = m:6 ------------ BB10 [0007] [048..058) -> BB05 (cret), preds={BB09} succs={BB05} SSA MEM: ByrefExposed, GcHeap = phi(m:10, m:6, m:4, m:3, m:2) ***** BB10 [0007] STMT00013 ( 0x049[E-] ... ??? ) N002 ( 15, 10) [000035] --CXG------ * CALL void System.Console:WriteLine(System.String) N001 ( 1, 4) [000050] H---------- arg0 in ecx \--* CNS_INT(h) ref '" in handler"' SSA MEM: ByrefExposed, GcHeap = m:8 ------------ BB11 [0012] [05D..???) -> BB12 (always), preds={} succs={BB12} SSA MEM: ByrefExposed, GcHeap = phi(m:10, m:8, m:6, m:5, m:4, m:3, m:2, m:1) SSA MEM: ByrefExposed, GcHeap = m:11 ------------ BB12 [0009] [05D..06B) -> BB13 (fltret), preds={BB11} succs={BB13} SSA MEM: ByrefExposed, GcHeap = m:11 ***** BB12 [0009] STMT00014 ( 0x05E[E-] ... 0x06A ) N002 ( 15, 10) [000037] --CXG------ * CALL void System.Console:WriteLine(System.String) N001 ( 1, 4) [000051] H---------- arg0 in ecx \--* CNS_INT(h) ref '"in filter"' ***** BB12 [0009] STMT00015 ( 0x068[E-] ... ??? ) N002 ( 2, 2) [000039] ----------- * RETFILT int N001 ( 1, 1) [000038] ----------- \--* CNS_INT int 0 SSA MEM: ByrefExposed, GcHeap = m:12 ------------ BB13 [0010] [06B..07B) -> BB06 (cret), preds={BB12} succs={BB06} SSA MEM: ByrefExposed, GcHeap = phi(m:12, m:10, m:8, m:6, m:5, m:4, m:3, m:2, m:1) ***** BB13 [0010] STMT00017 ( 0x06C[E-] ... ??? ) N002 ( 15, 10) [000043] --CXG------ * CALL void System.Console:WriteLine(System.String) N001 ( 1, 4) [000052] H---------- arg0 in ecx \--* CNS_INT(h) ref '"in handler"' SSA MEM: ByrefExposed, GcHeap = m:14 ------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist SSA checks completed successfully Checking Profile Weights (flags:0x16) No blocks were profiled, so nothing to check *************** Starting PHASE Early Value Propagation no arrays or null checks in the method *************** Finishing PHASE Early Value Propagation [no changes] *************** Starting PHASE Do value numbering *************** In fgValueNumber() Memory Initial Value in BB01 is: $80 Visiting BB01 The SSA definition for ByrefExposed (#1) at start of BB01 is $80 {InitVal($40)} The SSA definition for GcHeap (#1) at start of BB01 is $80 {InitVal($40)} Visiting BB02 Reachable through pred BB01 The SSA definition for ByrefExposed (#1) at start of BB02 is $80 {InitVal($40)} The SSA definition for GcHeap (#1) at start of BB02 is $80 {InitVal($40)} ***** BB02, STMT00001(before) N002 ( 15, 10) [000007] --CXG------ * CALL void System.Console:WriteLine(System.String) N001 ( 1, 4) [000045] H---------- arg0 in ecx \--* CNS_INT(h) ref '"in try"' N001 [000045] CNS_INT(h) '"in try"' => $c0 {Hnd const: 0x4000000000425460 GTF_ICON_OBJ_HDL} fgCurMemoryVN[GcHeap] assigned for CALL at [000007] to VN: $81. N002 [000007] CALL => $VN.Void ***** BB02, STMT00001(after) N002 ( 15, 10) [000007] --CXG------ * CALL void System.Console:WriteLine(System.String) $VN.Void N001 ( 1, 4) [000045] H---------- arg0 in ecx \--* CNS_INT(h) ref '"in try"' $c0 Visiting BB03 Reachable through pred BB02 The SSA definition for ByrefExposed (#2) at start of BB03 is $81 {MemOpaque:NotInLoop} The SSA definition for GcHeap (#2) at start of BB03 is $81 {MemOpaque:NotInLoop} ***** BB03, STMT00003(before) N002 ( 15, 10) [000015] --CXG------ * CALL void System.Console:WriteLine(System.String) N001 ( 1, 4) [000046] H---------- arg0 in ecx \--* CNS_INT(h) ref '" in try"' N001 [000046] CNS_INT(h) '" in try"' => $c1 {Hnd const: 0x4000000000425468 GTF_ICON_OBJ_HDL} fgCurMemoryVN[GcHeap] assigned for CALL at [000015] to VN: $82. N002 [000015] CALL => $VN.Void ***** BB03, STMT00003(after) N002 ( 15, 10) [000015] --CXG------ * CALL void System.Console:WriteLine(System.String) $VN.Void N001 ( 1, 4) [000046] H---------- arg0 in ecx \--* CNS_INT(h) ref '" in try"' $c1 Visiting BB04 Reachable through pred BB03 The SSA definition for ByrefExposed (#3) at start of BB04 is $82 {MemOpaque:NotInLoop} The SSA definition for GcHeap (#3) at start of BB04 is $82 {MemOpaque:NotInLoop} ***** BB04, STMT00004(before) N002 ( 15, 10) [000017] --CXG------ * CALL void System.Console:WriteLine(System.String) N001 ( 1, 4) [000047] H---------- arg0 in ecx \--* CNS_INT(h) ref '" in try"' N001 [000047] CNS_INT(h) '" in try"' => $c2 {Hnd const: 0x4000000000425470 GTF_ICON_OBJ_HDL} fgCurMemoryVN[GcHeap] assigned for CALL at [000017] to VN: $83. N002 [000017] CALL => $VN.Void ***** BB04, STMT00004(after) N002 ( 15, 10) [000017] --CXG------ * CALL void System.Console:WriteLine(System.String) $VN.Void N001 ( 1, 4) [000047] H---------- arg0 in ecx \--* CNS_INT(h) ref '" in try"' $c2 Visiting BB07 Reachable through pred BB12 Building phi application: $41 = SSA# 12. Building phi application: $42 = SSA# 11. Building phi application: $100 = phi($42, $41). Building phi application: $43 = SSA# 6. Building phi application: $101 = phi($43, $100). Building phi application: $44 = SSA# 5. Building phi application: $102 = phi($44, $101). Building phi application: $45 = SSA# 4. Building phi application: $103 = phi($45, $102). Building phi application: $46 = SSA# 3. Building phi application: $104 = phi($46, $103). The SSA definition for GcHeap (#9) at start of BB07 is $105 {PhiMemoryDef($140, $104)} ***** BB07, STMT00006(before) N002 ( 15, 10) [000020] --CXG------ * CALL void System.Console:WriteLine(System.String) N001 ( 1, 4) [000048] H---------- arg0 in ecx \--* CNS_INT(h) ref '" in finally"' N001 [000048] CNS_INT(h) '" in finally"' => $c3 {Hnd const: 0x4000000000425478 GTF_ICON_OBJ_HDL} fgCurMemoryVN[GcHeap] assigned for CALL at [000020] to VN: $84. N002 [000020] CALL => $VN.Void ***** BB07, STMT00006(after) N002 ( 15, 10) [000020] --CXG------ * CALL void System.Console:WriteLine(System.String) $VN.Void N001 ( 1, 4) [000048] H---------- arg0 in ecx \--* CNS_INT(h) ref '" in finally"' $c3 --------- ***** BB07, STMT00007(before) N003 ( 19, 13) [000023] DAC-------- * STORE_LCL_VAR ref V03 tmp2 d:1 N002 ( 15, 10) [000022] --C-------- \--* CALL help ref CORINFO_HELP_NEWSFAST N001 ( 1, 4) [000021] H---------- arg0 in ecx \--* CNS_INT(h) int 0x425450 class N001 [000021] CNS_INT(h) 0x425450 class => $141 {Hnd const: 0x4000000000425450 GTF_ICON_CLASS_HDL} N002 [000022] CALL help => $1c0 {JitNew($141, $180)} Tree [000023] assigned VN to local var V03/1: $1c0 {JitNew($141, $180)} N003 [000023] STORE_LCL_VAR V03 tmp2 d:1 => $VN.Void ***** BB07, STMT00007(after) N003 ( 19, 13) [000023] DAC-------- * STORE_LCL_VAR ref V03 tmp2 d:1 $VN.Void N002 ( 15, 10) [000022] --C-------- \--* CALL help ref CORINFO_HELP_NEWSFAST $1c0 N001 ( 1, 4) [000021] H---------- arg0 in ecx \--* CNS_INT(h) int 0x425450 class $141 --------- ***** BB07, STMT00008(before) N002 ( 17, 8) [000025] --CXG------ * CALL void System.Exception:.ctor():this N001 ( 3, 2) [000024] ----------- this in ecx \--* LCL_VAR ref V03 tmp2 u:1 N001 [000024] LCL_VAR V03 tmp2 u:1 => $1c0 {JitNew($141, $180)} fgCurMemoryVN[GcHeap] assigned for CALL at [000025] to VN: $85. N002 [000025] CALL => $VN.Void ***** BB07, STMT00008(after) N002 ( 17, 8) [000025] --CXG------ * CALL void System.Exception:.ctor():this $VN.Void N001 ( 3, 2) [000024] ----------- this in ecx \--* LCL_VAR ref V03 tmp2 u:1 $1c0 --------- ***** BB07, STMT00009(before) N002 ( 17, 8) [000027] --CXG------ * CALL help void CORINFO_HELP_THROW N001 ( 3, 2) [000026] ----------- arg0 in ecx \--* LCL_VAR ref V03 tmp2 u:1 (last use) N001 [000026] LCL_VAR V03 tmp2 u:1 (last use) => $1c0 {JitNew($141, $180)} N002 [000027] CALL help => $1c2 {norm=$VN.Void, exc=$1c1 {HelperMultipleExc()}} ***** BB07, STMT00009(after) N002 ( 17, 8) [000027] --CXG------ * CALL help void CORINFO_HELP_THROW $1c2 N001 ( 3, 2) [000026] ----------- arg0 in ecx \--* LCL_VAR ref V03 tmp2 u:1 (last use) $1c0 Visiting BB08 Reachable through pred BB07 Building phi application: $47 = SSA# 10. Building phi application: $45 = SSA# 4. Building phi application: $106 = phi($45, $47). Building phi application: $46 = SSA# 3. Building phi application: $107 = phi($46, $106). Building phi application: $48 = SSA# 2. Building phi application: $108 = phi($48, $107). The SSA definition for GcHeap (#5) at start of BB08 is $109 {PhiMemoryDef($142, $108)} Visiting BB09 Reachable through pred BB08 The SSA definition for ByrefExposed (#5) at start of BB09 is $109 {PhiMemoryDef($142, $108)} The SSA definition for GcHeap (#5) at start of BB09 is $109 {PhiMemoryDef($142, $108)} ***** BB09, STMT00010(before) N002 ( 15, 10) [000029] --CXG------ * CALL void System.Console:WriteLine(System.String) N001 ( 1, 4) [000049] H---------- arg0 in ecx \--* CNS_INT(h) ref '" in filter"' N001 [000049] CNS_INT(h) '" in filter"' => $c4 {Hnd const: 0x4000000000425480 GTF_ICON_OBJ_HDL} fgCurMemoryVN[GcHeap] assigned for CALL at [000029] to VN: $86. N002 [000029] CALL => $VN.Void ***** BB09, STMT00010(after) N002 ( 15, 10) [000029] --CXG------ * CALL void System.Console:WriteLine(System.String) $VN.Void N001 ( 1, 4) [000049] H---------- arg0 in ecx \--* CNS_INT(h) ref '" in filter"' $c4 --------- ***** BB09, STMT00011(before) N002 ( 2, 2) [000031] ----------- * RETFILT int N001 ( 1, 1) [000030] ----------- \--* CNS_INT int 0 N001 [000030] CNS_INT 0 => $49 {IntCns 0} N002 [000031] RETFILT => $VN.Void ***** BB09, STMT00011(after) N002 ( 2, 2) [000031] ----------- * RETFILT int $VN.Void N001 ( 1, 1) [000030] ----------- \--* CNS_INT int 0 $49 Visiting BB10 Reachable through pred BB07 Building phi application: $47 = SSA# 10. Building phi application: $43 = SSA# 6. Building phi application: $10a = phi($43, $47). Building phi application: $45 = SSA# 4. Building phi application: $10b = phi($45, $10a). Building phi application: $46 = SSA# 3. Building phi application: $10c = phi($46, $10b). Building phi application: $48 = SSA# 2. Building phi application: $10d = phi($48, $10c). The SSA definition for GcHeap (#7) at start of BB10 is $10e {PhiMemoryDef($143, $10d)} ***** BB10, STMT00013(before) N002 ( 15, 10) [000035] --CXG------ * CALL void System.Console:WriteLine(System.String) N001 ( 1, 4) [000050] H---------- arg0 in ecx \--* CNS_INT(h) ref '" in handler"' N001 [000050] CNS_INT(h) '" in handler"' => $c5 {Hnd const: 0x4000000000425488 GTF_ICON_OBJ_HDL} fgCurMemoryVN[GcHeap] assigned for CALL at [000035] to VN: $87. N002 [000035] CALL => $VN.Void ***** BB10, STMT00013(after) N002 ( 15, 10) [000035] --CXG------ * CALL void System.Console:WriteLine(System.String) $VN.Void N001 ( 1, 4) [000050] H---------- arg0 in ecx \--* CNS_INT(h) ref '" in handler"' $c5 Visiting BB05 Reachable through pred BB10 The SSA definition for ByrefExposed (#8) at start of BB05 is $87 {MemOpaque:NotInLoop} The SSA definition for GcHeap (#8) at start of BB05 is $87 {MemOpaque:NotInLoop} ***** BB05, STMT00018(before) N001 ( 1, 1) [000044] ----------- * NO_OP void N001 [000044] NO_OP => $VN.Void ***** BB05, STMT00018(after) N001 ( 1, 1) [000044] ----------- * NO_OP void $VN.Void Visiting BB11 Reachable through pred BB10 Building phi application: $47 = SSA# 10. Building phi application: $4a = SSA# 8. Building phi application: $10f = phi($4a, $47). Building phi application: $43 = SSA# 6. Building phi application: $110 = phi($43, $10f). Building phi application: $44 = SSA# 5. Building phi application: $111 = phi($44, $110). Building phi application: $45 = SSA# 4. Building phi application: $112 = phi($45, $111). Building phi application: $46 = SSA# 3. Building phi application: $113 = phi($46, $112). Building phi application: $48 = SSA# 2. Building phi application: $114 = phi($48, $113). Building phi application: $4b = SSA# 1. Building phi application: $115 = phi($4b, $114). The SSA definition for GcHeap (#11) at start of BB11 is $116 {PhiMemoryDef($144, $115)} Visiting BB12 Reachable through pred BB11 The SSA definition for ByrefExposed (#11) at start of BB12 is $116 {PhiMemoryDef($144, $115)} The SSA definition for GcHeap (#11) at start of BB12 is $116 {PhiMemoryDef($144, $115)} ***** BB12, STMT00014(before) N002 ( 15, 10) [000037] --CXG------ * CALL void System.Console:WriteLine(System.String) N001 ( 1, 4) [000051] H---------- arg0 in ecx \--* CNS_INT(h) ref '"in filter"' N001 [000051] CNS_INT(h) '"in filter"' => $c6 {Hnd const: 0x4000000000425490 GTF_ICON_OBJ_HDL} fgCurMemoryVN[GcHeap] assigned for CALL at [000037] to VN: $88. N002 [000037] CALL => $VN.Void ***** BB12, STMT00014(after) N002 ( 15, 10) [000037] --CXG------ * CALL void System.Console:WriteLine(System.String) $VN.Void N001 ( 1, 4) [000051] H---------- arg0 in ecx \--* CNS_INT(h) ref '"in filter"' $c6 --------- ***** BB12, STMT00015(before) N002 ( 2, 2) [000039] ----------- * RETFILT int N001 ( 1, 1) [000038] ----------- \--* CNS_INT int 0 N001 [000038] CNS_INT 0 => $49 {IntCns 0} N002 [000039] RETFILT => $VN.Void ***** BB12, STMT00015(after) N002 ( 2, 2) [000039] ----------- * RETFILT int $VN.Void N001 ( 1, 1) [000038] ----------- \--* CNS_INT int 0 $49 Visiting BB13 Reachable through pred BB10 Building phi application: $41 = SSA# 12. Building phi application: $47 = SSA# 10. Building phi application: $117 = phi($47, $41). Building phi application: $4a = SSA# 8. Building phi application: $118 = phi($4a, $117). Building phi application: $43 = SSA# 6. Building phi application: $119 = phi($43, $118). Building phi application: $44 = SSA# 5. Building phi application: $11a = phi($44, $119). Building phi application: $45 = SSA# 4. Building phi application: $11b = phi($45, $11a). Building phi application: $46 = SSA# 3. Building phi application: $11c = phi($46, $11b). Building phi application: $48 = SSA# 2. Building phi application: $11d = phi($48, $11c). Building phi application: $4b = SSA# 1. Building phi application: $11e = phi($4b, $11d). The SSA definition for GcHeap (#13) at start of BB13 is $11f {PhiMemoryDef($145, $11e)} ***** BB13, STMT00017(before) N002 ( 15, 10) [000043] --CXG------ * CALL void System.Console:WriteLine(System.String) N001 ( 1, 4) [000052] H---------- arg0 in ecx \--* CNS_INT(h) ref '"in handler"' N001 [000052] CNS_INT(h) '"in handler"' => $c7 {Hnd const: 0x4000000000425498 GTF_ICON_OBJ_HDL} fgCurMemoryVN[GcHeap] assigned for CALL at [000043] to VN: $89. N002 [000043] CALL => $VN.Void ***** BB13, STMT00017(after) N002 ( 15, 10) [000043] --CXG------ * CALL void System.Console:WriteLine(System.String) $VN.Void N001 ( 1, 4) [000052] H---------- arg0 in ecx \--* CNS_INT(h) ref '"in handler"' $c7 Visiting BB06 Reachable through pred BB05 The SSA definition for ByrefExposed (#1) at start of BB06 is $80 {InitVal($40)} The SSA definition for GcHeap (#1) at start of BB06 is $80 {InitVal($40)} ***** BB06, STMT00005(before) N001 ( 0, 0) [000018] ----------- * RETURN void N001 [000018] RETURN => $VN.Void ***** BB06, STMT00005(after) N001 ( 0, 0) [000018] ----------- * RETURN void $VN.Void *************** Finishing PHASE Do value numbering Trees after Do value numbering ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB01 [0015] 1 1 [???..???)-> BB02 (always) i internal q BB02 [0000] 1 2 BB01 1 [000..00A)-> BB03 (always) T2 try { i keep hascall gcsafe q BB03 [0001] 1 1 BB02 1 [00A..014)-> BB04 (always) T1 try { i keep hascall gcsafe q BB04 [0002] 1 0 BB03 1 [014..023)-> BB07 (callf ) T0 try { } } i keep hascall gcsafe retless BB05 [0008] 1 2 BB10 0 [058..05D)-> BB06 (always) T2 } i rare xentry q BB06 [0011] 2 BB05,BB13 0 [07B..07C) (return) i rare ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ funclets follow BB07 [0003] 2 1 0 BB04 0 [023..033) (throw ) T1 H0 F finally { } i rare keep hascall xentry gcsafe flet newobj BB08 [0013] 1 2 1 0 [03A..???)-> BB09 (always) T2 H1 F filter { i rare keep internal xentry flet q BB09 [0006] 1 2 1 BB08 0 [03A..048)-> BB10 (fltret) T2 H1 } i rare keep hascall xentry gcsafe BB10 [0007] 2 2 1 BB09 0 [048..058)-> BB05 ( cret ) T2 H1 F filtHnd { } i rare keep hascall xentry gcsafe flet BB11 [0012] 1 2 0 [05D..???)-> BB12 (always) H2 F filter { i rare keep internal xentry flet q BB12 [0009] 1 2 BB11 0 [05D..06B)-> BB13 (fltret) H2 } i rare keep hascall xentry gcsafe BB13 [0010] 2 2 BB12 0 [06B..07B)-> BB06 ( cret ) H2 F filtHnd { } i rare keep hascall xentry gcsafe flet ---------------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [0015] [???..???) -> BB02 (always), preds={} succs={BB02} SSA MEM: ByrefExposed, GcHeap = m:1 SSA MEM: ByrefExposed, GcHeap = m:1 ------------ BB02 [0000] [000..00A) -> BB03 (always), preds={BB01} succs={BB03} SSA MEM: ByrefExposed, GcHeap = m:1 ***** BB02 [0000] STMT00001 ( 0x000[E-] ... 0x005 ) N002 ( 15, 10) [000007] --CXG------ * CALL void System.Console:WriteLine(System.String) $VN.Void N001 ( 1, 4) [000045] H---------- arg0 in ecx \--* CNS_INT(h) ref '"in try"' $c0 SSA MEM: ByrefExposed, GcHeap = m:2 ------------ BB03 [0001] [00A..014) -> BB04 (always), preds={BB02} succs={BB04} SSA MEM: ByrefExposed, GcHeap = m:2 ***** BB03 [0001] STMT00003 ( 0x00A[E-] ... 0x00F ) N002 ( 15, 10) [000015] --CXG------ * CALL void System.Console:WriteLine(System.String) $VN.Void N001 ( 1, 4) [000046] H---------- arg0 in ecx \--* CNS_INT(h) ref '" in try"' $c1 SSA MEM: ByrefExposed, GcHeap = m:3 ------------ BB04 [0002] [014..023) -> BB07 (callf), preds={BB03} succs={BB07} SSA MEM: ByrefExposed, GcHeap = m:3 ***** BB04 [0002] STMT00004 ( 0x014[E-] ... 0x01E ) N002 ( 15, 10) [000017] --CXG------ * CALL void System.Console:WriteLine(System.String) $VN.Void N001 ( 1, 4) [000047] H---------- arg0 in ecx \--* CNS_INT(h) ref '" in try"' $c2 SSA MEM: ByrefExposed, GcHeap = m:4 ------------ BB05 [0008] [058..05D) -> BB06 (always), preds={BB10} succs={BB06} SSA MEM: ByrefExposed, GcHeap = m:8 ***** BB05 [0008] STMT00018 ( ??? ... ??? ) N001 ( 1, 1) [000044] ----------- * NO_OP void $VN.Void SSA MEM: ByrefExposed, GcHeap = m:8 ------------ BB06 [0011] [07B..07C) (return), preds={BB05,BB13} succs={} SSA MEM: ByrefExposed, GcHeap = m:1 ***** BB06 [0011] STMT00005 ( 0x07B[E-] ... 0x07B ) N001 ( 0, 0) [000018] ----------- * RETURN void $VN.Void SSA MEM: ByrefExposed, GcHeap = m:1 ------------ BB07 [0003] [023..033) (throw), preds={BB04} succs={} SSA MEM: ByrefExposed, GcHeap = phi(m:12, m:11, m:6, m:5, m:4, m:3) ***** BB07 [0003] STMT00006 ( 0x023[E-] ... 0x032 ) N002 ( 15, 10) [000020] --CXG------ * CALL void System.Console:WriteLine(System.String) $VN.Void N001 ( 1, 4) [000048] H---------- arg0 in ecx \--* CNS_INT(h) ref '" in finally"' $c3 ***** BB07 [0003] STMT00007 ( 0x02D[E-] ... ??? ) N003 ( 19, 13) [000023] DAC-------- * STORE_LCL_VAR ref V03 tmp2 d:1 $VN.Void N002 ( 15, 10) [000022] --C-------- \--* CALL help ref CORINFO_HELP_NEWSFAST $1c0 N001 ( 1, 4) [000021] H---------- arg0 in ecx \--* CNS_INT(h) int 0x425450 class $141 ***** BB07 [0003] STMT00008 ( ??? ... ??? ) N002 ( 17, 8) [000025] --CXG------ * CALL void System.Exception:.ctor():this $VN.Void N001 ( 3, 2) [000024] ----------- this in ecx \--* LCL_VAR ref V03 tmp2 u:1 $1c0 ***** BB07 [0003] STMT00009 ( 0x032[--] ... ??? ) N002 ( 17, 8) [000027] --CXG------ * CALL help void CORINFO_HELP_THROW $1c2 N001 ( 3, 2) [000026] ----------- arg0 in ecx \--* LCL_VAR ref V03 tmp2 u:1 (last use) $1c0 SSA MEM: ByrefExposed, GcHeap = m:10 ------------ BB08 [0013] [03A..???) -> BB09 (always), preds={} succs={BB09} SSA MEM: ByrefExposed, GcHeap = phi(m:10, m:4, m:3, m:2) SSA MEM: ByrefExposed, GcHeap = m:5 ------------ BB09 [0006] [03A..048) -> BB10 (fltret), preds={BB08} succs={BB10} SSA MEM: ByrefExposed, GcHeap = m:5 ***** BB09 [0006] STMT00010 ( 0x03B[E-] ... 0x047 ) N002 ( 15, 10) [000029] --CXG------ * CALL void System.Console:WriteLine(System.String) $VN.Void N001 ( 1, 4) [000049] H---------- arg0 in ecx \--* CNS_INT(h) ref '" in filter"' $c4 ***** BB09 [0006] STMT00011 ( 0x045[E-] ... ??? ) N002 ( 2, 2) [000031] ----------- * RETFILT int $VN.Void N001 ( 1, 1) [000030] ----------- \--* CNS_INT int 0 $49 SSA MEM: ByrefExposed, GcHeap = m:6 ------------ BB10 [0007] [048..058) -> BB05 (cret), preds={BB09} succs={BB05} SSA MEM: ByrefExposed, GcHeap = phi(m:10, m:6, m:4, m:3, m:2) ***** BB10 [0007] STMT00013 ( 0x049[E-] ... ??? ) N002 ( 15, 10) [000035] --CXG------ * CALL void System.Console:WriteLine(System.String) $VN.Void N001 ( 1, 4) [000050] H---------- arg0 in ecx \--* CNS_INT(h) ref '" in handler"' $c5 SSA MEM: ByrefExposed, GcHeap = m:8 ------------ BB11 [0012] [05D..???) -> BB12 (always), preds={} succs={BB12} SSA MEM: ByrefExposed, GcHeap = phi(m:10, m:8, m:6, m:5, m:4, m:3, m:2, m:1) SSA MEM: ByrefExposed, GcHeap = m:11 ------------ BB12 [0009] [05D..06B) -> BB13 (fltret), preds={BB11} succs={BB13} SSA MEM: ByrefExposed, GcHeap = m:11 ***** BB12 [0009] STMT00014 ( 0x05E[E-] ... 0x06A ) N002 ( 15, 10) [000037] --CXG------ * CALL void System.Console:WriteLine(System.String) $VN.Void N001 ( 1, 4) [000051] H---------- arg0 in ecx \--* CNS_INT(h) ref '"in filter"' $c6 ***** BB12 [0009] STMT00015 ( 0x068[E-] ... ??? ) N002 ( 2, 2) [000039] ----------- * RETFILT int $VN.Void N001 ( 1, 1) [000038] ----------- \--* CNS_INT int 0 $49 SSA MEM: ByrefExposed, GcHeap = m:12 ------------ BB13 [0010] [06B..07B) -> BB06 (cret), preds={BB12} succs={BB06} SSA MEM: ByrefExposed, GcHeap = phi(m:12, m:10, m:8, m:6, m:5, m:4, m:3, m:2, m:1) ***** BB13 [0010] STMT00017 ( 0x06C[E-] ... ??? ) N002 ( 15, 10) [000043] --CXG------ * CALL void System.Console:WriteLine(System.String) $VN.Void N001 ( 1, 4) [000052] H---------- arg0 in ecx \--* CNS_INT(h) ref '"in handler"' $c7 SSA MEM: ByrefExposed, GcHeap = m:14 ------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist SSA checks completed successfully Checking Profile Weights (flags:0x16) No blocks were profiled, so nothing to check *************** Starting PHASE Hoist loop code No loops; no hoisting *************** Finishing PHASE Hoist loop code [no changes] *************** Starting PHASE VN based copy prop Copy Assertion for BB01 curSsaName stack: { } Copy Assertion for BB02 curSsaName stack: { } Copy Assertion for BB03 curSsaName stack: { } Copy Assertion for BB04 curSsaName stack: { } Copy Assertion for BB08 curSsaName stack: { } Copy Assertion for BB09 curSsaName stack: { } Copy Assertion for BB10 curSsaName stack: { } Copy Assertion for BB05 curSsaName stack: { } Copy Assertion for BB07 curSsaName stack: { } Live vars after [000023]: {} +{V03} => {V03} Live vars after [000026]: {V03} -{V03} => {} Copy Assertion for BB11 curSsaName stack: { } Copy Assertion for BB12 curSsaName stack: { } Copy Assertion for BB13 curSsaName stack: { } Copy Assertion for BB06 curSsaName stack: { } *************** Finishing PHASE VN based copy prop [no changes] *************** Starting PHASE Redundant branch opts ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB01 [0015] 1 1 [???..???)-> BB02 (always) i internal q BB02 [0000] 1 2 BB01 1 [000..00A)-> BB03 (always) T2 try { i keep hascall gcsafe q BB03 [0001] 1 1 BB02 1 [00A..014)-> BB04 (always) T1 try { i keep hascall gcsafe q BB04 [0002] 1 0 BB03 1 [014..023)-> BB07 (callf ) T0 try { } } i keep hascall gcsafe retless BB05 [0008] 1 2 BB10 0 [058..05D)-> BB06 (always) T2 } i rare xentry q BB06 [0011] 2 BB05,BB13 0 [07B..07C) (return) i rare ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ funclets follow BB07 [0003] 2 1 0 BB04 0 [023..033) (throw ) T1 H0 F finally { } i rare keep hascall xentry gcsafe flet newobj BB08 [0013] 1 2 1 0 [03A..???)-> BB09 (always) T2 H1 F filter { i rare keep internal xentry flet q BB09 [0006] 1 2 1 BB08 0 [03A..048)-> BB10 (fltret) T2 H1 } i rare keep hascall xentry gcsafe BB10 [0007] 2 2 1 BB09 0 [048..058)-> BB05 ( cret ) T2 H1 F filtHnd { } i rare keep hascall xentry gcsafe flet BB11 [0012] 1 2 0 [05D..???)-> BB12 (always) H2 F filter { i rare keep internal xentry flet q BB12 [0009] 1 2 BB11 0 [05D..06B)-> BB13 (fltret) H2 } i rare keep hascall xentry gcsafe BB13 [0010] 2 2 BB12 0 [06B..07B)-> BB06 ( cret ) H2 F filtHnd { } i rare keep hascall xentry gcsafe flet ---------------------------------------------------------------------------------------------------------------------------------------------- *************** Finishing PHASE Redundant branch opts [no changes] *************** Starting PHASE Optimize Valnum CSEs CONST CSE is disabled Standard CSE Heuristic Standard CSE Heuristic *************** Finishing PHASE Optimize Valnum CSEs Trees after Optimize Valnum CSEs ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB01 [0015] 1 1 [???..???)-> BB02 (always) i internal q BB02 [0000] 1 2 BB01 1 [000..00A)-> BB03 (always) T2 try { i keep hascall gcsafe q BB03 [0001] 1 1 BB02 1 [00A..014)-> BB04 (always) T1 try { i keep hascall gcsafe q BB04 [0002] 1 0 BB03 1 [014..023)-> BB07 (callf ) T0 try { } } i keep hascall gcsafe retless BB05 [0008] 1 2 BB10 0 [058..05D)-> BB06 (always) T2 } i rare xentry q BB06 [0011] 2 BB05,BB13 0 [07B..07C) (return) i rare ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ funclets follow BB07 [0003] 2 1 0 BB04 0 [023..033) (throw ) T1 H0 F finally { } i rare keep hascall xentry gcsafe flet newobj BB08 [0013] 1 2 1 0 [03A..???)-> BB09 (always) T2 H1 F filter { i rare keep internal xentry flet q BB09 [0006] 1 2 1 BB08 0 [03A..048)-> BB10 (fltret) T2 H1 } i rare keep hascall xentry gcsafe BB10 [0007] 2 2 1 BB09 0 [048..058)-> BB05 ( cret ) T2 H1 F filtHnd { } i rare keep hascall xentry gcsafe flet BB11 [0012] 1 2 0 [05D..???)-> BB12 (always) H2 F filter { i rare keep internal xentry flet q BB12 [0009] 1 2 BB11 0 [05D..06B)-> BB13 (fltret) H2 } i rare keep hascall xentry gcsafe BB13 [0010] 2 2 BB12 0 [06B..07B)-> BB06 ( cret ) H2 F filtHnd { } i rare keep hascall xentry gcsafe flet ---------------------------------------------------------------------------------------------------------------------------------------------- ------------ BB01 [0015] [???..???) -> BB02 (always), preds={} succs={BB02} ------------ BB02 [0000] [000..00A) -> BB03 (always), preds={BB01} succs={BB03} ***** BB02 [0000] STMT00001 ( 0x000[E-] ... 0x005 ) N002 ( 15, 10) [000007] --CXG------ * CALL void System.Console:WriteLine(System.String) $VN.Void N001 ( 1, 4) [000045] H---------- arg0 in ecx \--* CNS_INT(h) ref '"in try"' $c0 ------------ BB03 [0001] [00A..014) -> BB04 (always), preds={BB02} succs={BB04} ***** BB03 [0001] STMT00003 ( 0x00A[E-] ... 0x00F ) N002 ( 15, 10) [000015] --CXG------ * CALL void System.Console:WriteLine(System.String) $VN.Void N001 ( 1, 4) [000046] H---------- arg0 in ecx \--* CNS_INT(h) ref '" in try"' $c1 ------------ BB04 [0002] [014..023) -> BB07 (callf), preds={BB03} succs={BB07} ***** BB04 [0002] STMT00004 ( 0x014[E-] ... 0x01E ) N002 ( 15, 10) [000017] --CXG------ * CALL void System.Console:WriteLine(System.String) $VN.Void N001 ( 1, 4) [000047] H---------- arg0 in ecx \--* CNS_INT(h) ref '" in try"' $c2 ------------ BB05 [0008] [058..05D) -> BB06 (always), preds={BB10} succs={BB06} ***** BB05 [0008] STMT00018 ( ??? ... ??? ) N001 ( 1, 1) [000044] ----------- * NO_OP void $VN.Void ------------ BB06 [0011] [07B..07C) (return), preds={BB05,BB13} succs={} ***** BB06 [0011] STMT00005 ( 0x07B[E-] ... 0x07B ) N001 ( 0, 0) [000018] ----------- * RETURN void $VN.Void ------------ BB07 [0003] [023..033) (throw), preds={BB04} succs={} ***** BB07 [0003] STMT00006 ( 0x023[E-] ... 0x032 ) N002 ( 15, 10) [000020] --CXG------ * CALL void System.Console:WriteLine(System.String) $VN.Void N001 ( 1, 4) [000048] H---------- arg0 in ecx \--* CNS_INT(h) ref '" in finally"' $c3 ***** BB07 [0003] STMT00007 ( 0x02D[E-] ... ??? ) N003 ( 19, 13) [000023] DAC-------- * STORE_LCL_VAR ref V03 tmp2 d:1 $VN.Void N002 ( 15, 10) [000022] --C-------- \--* CALL help ref CORINFO_HELP_NEWSFAST $1c0 N001 ( 1, 4) [000021] H---------- arg0 in ecx \--* CNS_INT(h) int 0x425450 class $141 ***** BB07 [0003] STMT00008 ( ??? ... ??? ) N002 ( 17, 8) [000025] --CXG------ * CALL void System.Exception:.ctor():this $VN.Void N001 ( 3, 2) [000024] ----------- this in ecx \--* LCL_VAR ref V03 tmp2 u:1 $1c0 ***** BB07 [0003] STMT00009 ( 0x032[--] ... ??? ) N002 ( 17, 8) [000027] --CXG------ * CALL help void CORINFO_HELP_THROW $1c2 N001 ( 3, 2) [000026] ----------- arg0 in ecx \--* LCL_VAR ref V03 tmp2 u:1 (last use) $1c0 ------------ BB08 [0013] [03A..???) -> BB09 (always), preds={} succs={BB09} ------------ BB09 [0006] [03A..048) -> BB10 (fltret), preds={BB08} succs={BB10} ***** BB09 [0006] STMT00010 ( 0x03B[E-] ... 0x047 ) N002 ( 15, 10) [000029] --CXG------ * CALL void System.Console:WriteLine(System.String) $VN.Void N001 ( 1, 4) [000049] H---------- arg0 in ecx \--* CNS_INT(h) ref '" in filter"' $c4 ***** BB09 [0006] STMT00011 ( 0x045[E-] ... ??? ) N002 ( 2, 2) [000031] ----------- * RETFILT int $VN.Void N001 ( 1, 1) [000030] ----------- \--* CNS_INT int 0 $49 ------------ BB10 [0007] [048..058) -> BB05 (cret), preds={BB09} succs={BB05} ***** BB10 [0007] STMT00013 ( 0x049[E-] ... ??? ) N002 ( 15, 10) [000035] --CXG------ * CALL void System.Console:WriteLine(System.String) $VN.Void N001 ( 1, 4) [000050] H---------- arg0 in ecx \--* CNS_INT(h) ref '" in handler"' $c5 ------------ BB11 [0012] [05D..???) -> BB12 (always), preds={} succs={BB12} ------------ BB12 [0009] [05D..06B) -> BB13 (fltret), preds={BB11} succs={BB13} ***** BB12 [0009] STMT00014 ( 0x05E[E-] ... 0x06A ) N002 ( 15, 10) [000037] --CXG------ * CALL void System.Console:WriteLine(System.String) $VN.Void N001 ( 1, 4) [000051] H---------- arg0 in ecx \--* CNS_INT(h) ref '"in filter"' $c6 ***** BB12 [0009] STMT00015 ( 0x068[E-] ... ??? ) N002 ( 2, 2) [000039] ----------- * RETFILT int $VN.Void N001 ( 1, 1) [000038] ----------- \--* CNS_INT int 0 $49 ------------ BB13 [0010] [06B..07B) -> BB06 (cret), preds={BB12} succs={BB06} ***** BB13 [0010] STMT00017 ( 0x06C[E-] ... ??? ) N002 ( 15, 10) [000043] --CXG------ * CALL void System.Console:WriteLine(System.String) $VN.Void N001 ( 1, 4) [000052] H---------- arg0 in ecx \--* CNS_INT(h) ref '"in handler"' $c7 ------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist Checking Profile Weights (flags:0x16) No blocks were profiled, so nothing to check *************** Starting PHASE Assertion prop *************** Finishing PHASE Assertion prop [no changes] *************** Starting PHASE VN based intrinsic expansion *************** Finishing PHASE VN based intrinsic expansion [no changes] *************** Starting PHASE Optimize index checks *************** Finishing PHASE Optimize index checks [no changes] *************** Starting PHASE Optimize Induction Variables *************** In optInductionVariables() *************** Finishing PHASE Optimize Induction Variables [no changes] *************** Starting PHASE VN-based dead store removal *************** Finishing PHASE VN-based dead store removal [no changes] *************** Starting PHASE Stress gtSplitTree *************** Finishing PHASE Stress gtSplitTree [no changes] *************** Starting PHASE Expand casts *************** Finishing PHASE Expand casts [no changes] *************** Starting PHASE Expand runtime lookups *************** Finishing PHASE Expand runtime lookups [no changes] *************** Starting PHASE Expand static init Nothing to expand. *************** Finishing PHASE Expand static init [no changes] *************** Starting PHASE Expand TLS access Nothing to expand. *************** Finishing PHASE Expand TLS access [no changes] *************** Starting PHASE Insert GC Polls *************** Finishing PHASE Insert GC Polls [no changes] *************** Starting PHASE Create throw helper blocks *************** Finishing PHASE Create throw helper blocks [no changes] *************** Starting PHASE Optimize bools *************** In optOptimizeBools() optimized 0 BBJ_COND cases, 0 BBJ_RETURN cases in 1 passes *************** Finishing PHASE Optimize bools [no changes] *************** Starting PHASE If conversion *************** Finishing PHASE If conversion [no changes] *************** Starting PHASE Optimize layout *************** In fgUpdateFlowGraph() Before updating the flow graph: ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB01 [0015] 1 1 [???..???)-> BB02 (always) i internal q BB02 [0000] 1 2 BB01 1 [000..00A)-> BB03 (always) T2 try { i keep hascall gcsafe q BB03 [0001] 1 1 BB02 1 [00A..014)-> BB04 (always) T1 try { i keep hascall gcsafe q BB04 [0002] 1 0 BB03 1 [014..023)-> BB07 (callf ) T0 try { } } i keep hascall gcsafe retless BB05 [0008] 1 2 BB10 0 [058..05D)-> BB06 (always) T2 } i rare xentry q BB06 [0011] 2 BB05,BB13 0 [07B..07C) (return) i rare ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ funclets follow BB07 [0003] 2 1 0 BB04 0 [023..033) (throw ) T1 H0 F finally { } i rare keep hascall xentry gcsafe flet newobj BB08 [0013] 1 2 1 0 [03A..???)-> BB09 (always) T2 H1 F filter { i rare keep internal xentry flet q BB09 [0006] 1 2 1 BB08 0 [03A..048)-> BB10 (fltret) T2 H1 } i rare keep hascall xentry gcsafe BB10 [0007] 2 2 1 BB09 0 [048..058)-> BB05 ( cret ) T2 H1 F filtHnd { } i rare keep hascall xentry gcsafe flet BB11 [0012] 1 2 0 [05D..???)-> BB12 (always) H2 F filter { i rare keep internal xentry flet q BB12 [0009] 1 2 BB11 0 [05D..06B)-> BB13 (fltret) H2 } i rare keep hascall xentry gcsafe BB13 [0010] 2 2 BB12 0 [06B..07B)-> BB06 ( cret ) H2 F filtHnd { } i rare keep hascall xentry gcsafe flet ---------------------------------------------------------------------------------------------------------------------------------------------- fgRemoveBlock BB01, unreachable=false Removing empty BB01 Unlinking scratch BB01 After updating the flow graph: ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB02 [0000] 1 2 1 [000..00A)-> BB03 (always) T2 try { i keep hascall gcsafe q BB03 [0001] 1 1 BB02 1 [00A..014)-> BB04 (always) T1 try { i keep hascall gcsafe q BB04 [0002] 1 0 BB03 1 [014..023)-> BB07 (callf ) T0 try { } } i keep hascall gcsafe retless BB05 [0008] 1 2 BB10 0 [058..05D)-> BB06 (always) T2 } i rare xentry q BB06 [0011] 2 BB05,BB13 0 [07B..07C) (return) i rare ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ funclets follow BB07 [0003] 2 1 0 BB04 0 [023..033) (throw ) T1 H0 F finally { } i rare keep hascall xentry gcsafe flet newobj BB08 [0013] 1 2 1 0 [03A..???)-> BB09 (always) T2 H1 F filter { i rare keep internal xentry flet q BB09 [0006] 1 2 1 BB08 0 [03A..048)-> BB10 (fltret) T2 H1 } i rare keep hascall xentry gcsafe BB10 [0007] 2 2 1 BB09 0 [048..058)-> BB05 ( cret ) T2 H1 F filtHnd { } i rare keep hascall xentry gcsafe flet BB11 [0012] 1 2 0 [05D..???)-> BB12 (always) H2 F filter { i rare keep internal xentry flet q BB12 [0009] 1 2 BB11 0 [05D..06B)-> BB13 (fltret) H2 } i rare keep hascall xentry gcsafe BB13 [0010] 2 2 BB12 0 [06B..07B)-> BB06 ( cret ) H2 F filtHnd { } i rare keep hascall xentry gcsafe flet ---------------------------------------------------------------------------------------------------------------------------------------------- *************** Exception Handling table index eTry, eHnd 0 :: 1 - Try at BB04..BB04 [014..023), Finally at BB07..BB07 [023..035) 1 :: 2 - Try at BB03..BB04 [00A..03A), Filter at BB08..BB09 [03A..048), Handler at BB10..BB10 [048..058) 2 :: - Try at BB02..BB05 [000..05D), Filter at BB11..BB12 [05D..06B), Handler at BB13..BB13 [06B..07B) *************** In fgDebugCheckBBlist *************** In fgExpandRarelyRunBlocks() *************** In fgReorderBlocks() Initial BasicBlocks ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB02 [0000] 1 2 1 [000..00A)-> BB03 (always) T2 try { i keep hascall gcsafe q BB03 [0001] 1 1 BB02 1 [00A..014)-> BB04 (always) T1 try { i keep hascall gcsafe q BB04 [0002] 1 0 BB03 1 [014..023)-> BB07 (callf ) T0 try { } } i keep hascall gcsafe retless BB05 [0008] 1 2 BB10 0 [058..05D)-> BB06 (always) T2 } i rare xentry q BB06 [0011] 2 BB05,BB13 0 [07B..07C) (return) i rare ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ funclets follow BB07 [0003] 2 1 0 BB04 0 [023..033) (throw ) T1 H0 F finally { } i rare keep hascall xentry gcsafe flet newobj BB08 [0013] 1 2 1 0 [03A..???)-> BB09 (always) T2 H1 F filter { i rare keep internal xentry flet q BB09 [0006] 1 2 1 BB08 0 [03A..048)-> BB10 (fltret) T2 H1 } i rare keep hascall xentry gcsafe BB10 [0007] 2 2 1 BB09 0 [048..058)-> BB05 ( cret ) T2 H1 F filtHnd { } i rare keep hascall xentry gcsafe flet BB11 [0012] 1 2 0 [05D..???)-> BB12 (always) H2 F filter { i rare keep internal xentry flet q BB12 [0009] 1 2 BB11 0 [05D..06B)-> BB13 (fltret) H2 } i rare keep hascall xentry gcsafe BB13 [0010] 2 2 BB12 0 [06B..07B)-> BB06 ( cret ) H2 F filtHnd { } i rare keep hascall xentry gcsafe flet ---------------------------------------------------------------------------------------------------------------------------------------------- Decided to relocate block(s) after block BB04 since they are rarely run block(s) fgFindInsertPoint(regionIndex=3, putInTryRegion=true, startBlk=BB02, endBlk=BB06, nearBlk=BB04, jumpBlk=BB00, runRarely=true) Could not relocate block BB05 *************** In fgUpdateFlowGraph() Before updating the flow graph: ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB02 [0000] 1 2 1 [000..00A)-> BB03 (always) T2 try { i keep hascall gcsafe q BB03 [0001] 1 1 BB02 1 [00A..014)-> BB04 (always) T1 try { i keep hascall gcsafe q BB04 [0002] 1 0 BB03 1 [014..023)-> BB07 (callf ) T0 try { } } i keep hascall gcsafe retless BB05 [0008] 1 2 BB10 0 [058..05D)-> BB06 (always) T2 } i rare xentry q BB06 [0011] 2 BB05,BB13 0 [07B..07C) (return) i rare ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ funclets follow BB07 [0003] 2 1 0 BB04 0 [023..033) (throw ) T1 H0 F finally { } i rare keep hascall xentry gcsafe flet newobj BB08 [0013] 1 2 1 0 [03A..???)-> BB09 (always) T2 H1 F filter { i rare keep internal xentry flet q BB09 [0006] 1 2 1 BB08 0 [03A..048)-> BB10 (fltret) T2 H1 } i rare keep hascall xentry gcsafe BB10 [0007] 2 2 1 BB09 0 [048..058)-> BB05 ( cret ) T2 H1 F filtHnd { } i rare keep hascall xentry gcsafe flet BB11 [0012] 1 2 0 [05D..???)-> BB12 (always) H2 F filter { i rare keep internal xentry flet q BB12 [0009] 1 2 BB11 0 [05D..06B)-> BB13 (fltret) H2 } i rare keep hascall xentry gcsafe BB13 [0010] 2 2 BB12 0 [06B..07B)-> BB06 ( cret ) H2 F filtHnd { } i rare keep hascall xentry gcsafe flet ---------------------------------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist *************** Finishing PHASE Optimize layout Trees after Optimize layout ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB02 [0000] 1 2 1 [000..00A)-> BB03 (always) T2 try { i keep hascall gcsafe q BB03 [0001] 1 1 BB02 1 [00A..014)-> BB04 (always) T1 try { i keep hascall gcsafe q BB04 [0002] 1 0 BB03 1 [014..023)-> BB07 (callf ) T0 try { } } i keep hascall gcsafe retless BB05 [0008] 1 2 BB10 0 [058..05D)-> BB06 (always) T2 } i rare xentry q BB06 [0011] 2 BB05,BB13 0 [07B..07C) (return) i rare ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ funclets follow BB07 [0003] 2 1 0 BB04 0 [023..033) (throw ) T1 H0 F finally { } i rare keep hascall xentry gcsafe flet newobj BB08 [0013] 1 2 1 0 [03A..???)-> BB09 (always) T2 H1 F filter { i rare keep internal xentry flet q BB09 [0006] 1 2 1 BB08 0 [03A..048)-> BB10 (fltret) T2 H1 } i rare keep hascall xentry gcsafe BB10 [0007] 2 2 1 BB09 0 [048..058)-> BB05 ( cret ) T2 H1 F filtHnd { } i rare keep hascall xentry gcsafe flet BB11 [0012] 1 2 0 [05D..???)-> BB12 (always) H2 F filter { i rare keep internal xentry flet q BB12 [0009] 1 2 BB11 0 [05D..06B)-> BB13 (fltret) H2 } i rare keep hascall xentry gcsafe BB13 [0010] 2 2 BB12 0 [06B..07B)-> BB06 ( cret ) H2 F filtHnd { } i rare keep hascall xentry gcsafe flet ---------------------------------------------------------------------------------------------------------------------------------------------- ------------ BB02 [0000] [000..00A) -> BB03 (always), preds={} succs={BB03} ***** BB02 [0000] STMT00001 ( 0x000[E-] ... 0x005 ) N002 ( 15, 10) [000007] --CXG------ * CALL void System.Console:WriteLine(System.String) $VN.Void N001 ( 1, 4) [000045] H---------- arg0 in ecx \--* CNS_INT(h) ref '"in try"' $c0 ------------ BB03 [0001] [00A..014) -> BB04 (always), preds={BB02} succs={BB04} ***** BB03 [0001] STMT00003 ( 0x00A[E-] ... 0x00F ) N002 ( 15, 10) [000015] --CXG------ * CALL void System.Console:WriteLine(System.String) $VN.Void N001 ( 1, 4) [000046] H---------- arg0 in ecx \--* CNS_INT(h) ref '" in try"' $c1 ------------ BB04 [0002] [014..023) -> BB07 (callf), preds={BB03} succs={BB07} ***** BB04 [0002] STMT00004 ( 0x014[E-] ... 0x01E ) N002 ( 15, 10) [000017] --CXG------ * CALL void System.Console:WriteLine(System.String) $VN.Void N001 ( 1, 4) [000047] H---------- arg0 in ecx \--* CNS_INT(h) ref '" in try"' $c2 ------------ BB05 [0008] [058..05D) -> BB06 (always), preds={BB10} succs={BB06} ***** BB05 [0008] STMT00018 ( ??? ... ??? ) N001 ( 1, 1) [000044] ----------- * NO_OP void $VN.Void ------------ BB06 [0011] [07B..07C) (return), preds={BB05,BB13} succs={} ***** BB06 [0011] STMT00005 ( 0x07B[E-] ... 0x07B ) N001 ( 0, 0) [000018] ----------- * RETURN void $VN.Void ------------ BB07 [0003] [023..033) (throw), preds={BB04} succs={} ***** BB07 [0003] STMT00006 ( 0x023[E-] ... 0x032 ) N002 ( 15, 10) [000020] --CXG------ * CALL void System.Console:WriteLine(System.String) $VN.Void N001 ( 1, 4) [000048] H---------- arg0 in ecx \--* CNS_INT(h) ref '" in finally"' $c3 ***** BB07 [0003] STMT00007 ( 0x02D[E-] ... ??? ) N003 ( 19, 13) [000023] DAC-------- * STORE_LCL_VAR ref V03 tmp2 d:1 $VN.Void N002 ( 15, 10) [000022] --C-------- \--* CALL help ref CORINFO_HELP_NEWSFAST $1c0 N001 ( 1, 4) [000021] H---------- arg0 in ecx \--* CNS_INT(h) int 0x425450 class $141 ***** BB07 [0003] STMT00008 ( ??? ... ??? ) N002 ( 17, 8) [000025] --CXG------ * CALL void System.Exception:.ctor():this $VN.Void N001 ( 3, 2) [000024] ----------- this in ecx \--* LCL_VAR ref V03 tmp2 u:1 $1c0 ***** BB07 [0003] STMT00009 ( 0x032[--] ... ??? ) N002 ( 17, 8) [000027] --CXG------ * CALL help void CORINFO_HELP_THROW $1c2 N001 ( 3, 2) [000026] ----------- arg0 in ecx \--* LCL_VAR ref V03 tmp2 u:1 (last use) $1c0 ------------ BB08 [0013] [03A..???) -> BB09 (always), preds={} succs={BB09} ------------ BB09 [0006] [03A..048) -> BB10 (fltret), preds={BB08} succs={BB10} ***** BB09 [0006] STMT00010 ( 0x03B[E-] ... 0x047 ) N002 ( 15, 10) [000029] --CXG------ * CALL void System.Console:WriteLine(System.String) $VN.Void N001 ( 1, 4) [000049] H---------- arg0 in ecx \--* CNS_INT(h) ref '" in filter"' $c4 ***** BB09 [0006] STMT00011 ( 0x045[E-] ... ??? ) N002 ( 2, 2) [000031] ----------- * RETFILT int $VN.Void N001 ( 1, 1) [000030] ----------- \--* CNS_INT int 0 $49 ------------ BB10 [0007] [048..058) -> BB05 (cret), preds={BB09} succs={BB05} ***** BB10 [0007] STMT00013 ( 0x049[E-] ... ??? ) N002 ( 15, 10) [000035] --CXG------ * CALL void System.Console:WriteLine(System.String) $VN.Void N001 ( 1, 4) [000050] H---------- arg0 in ecx \--* CNS_INT(h) ref '" in handler"' $c5 ------------ BB11 [0012] [05D..???) -> BB12 (always), preds={} succs={BB12} ------------ BB12 [0009] [05D..06B) -> BB13 (fltret), preds={BB11} succs={BB13} ***** BB12 [0009] STMT00014 ( 0x05E[E-] ... 0x06A ) N002 ( 15, 10) [000037] --CXG------ * CALL void System.Console:WriteLine(System.String) $VN.Void N001 ( 1, 4) [000051] H---------- arg0 in ecx \--* CNS_INT(h) ref '"in filter"' $c6 ***** BB12 [0009] STMT00015 ( 0x068[E-] ... ??? ) N002 ( 2, 2) [000039] ----------- * RETFILT int $VN.Void N001 ( 1, 1) [000038] ----------- \--* CNS_INT int 0 $49 ------------ BB13 [0010] [06B..07B) -> BB06 (cret), preds={BB12} succs={BB06} ***** BB13 [0010] STMT00017 ( 0x06C[E-] ... ??? ) N002 ( 15, 10) [000043] --CXG------ * CALL void System.Console:WriteLine(System.String) $VN.Void N001 ( 1, 4) [000052] H---------- arg0 in ecx \--* CNS_INT(h) ref '"in handler"' $c7 ------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist Checking Profile Weights (flags:0x16) No blocks were profiled, so nothing to check *************** Starting PHASE Recognize Switch *************** Finishing PHASE Recognize Switch [no changes] *************** Starting PHASE Determine first cold block No procedure splitting will be done for this method *************** Finishing PHASE Determine first cold block [no changes] *************** Starting PHASE Rationalize IR *************** Finishing PHASE Rationalize IR Trees after Rationalize IR ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB02 [0000] 1 2 1 [000..00A)-> BB03 (always) T2 try { i LIR keep hascall gcsafe q BB03 [0001] 1 1 BB02 1 [00A..014)-> BB04 (always) T1 try { i LIR keep hascall gcsafe q BB04 [0002] 1 0 BB03 1 [014..023)-> BB07 (callf ) T0 try { } } i LIR keep hascall gcsafe retless BB05 [0008] 1 2 BB10 0 [058..05D)-> BB06 (always) T2 } i LIR rare xentry q BB06 [0011] 2 BB05,BB13 0 [07B..07C) (return) i LIR rare ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ funclets follow BB07 [0003] 2 1 0 BB04 0 [023..033) (throw ) T1 H0 F finally { } i LIR rare keep hascall xentry gcsafe flet newobj BB08 [0013] 1 2 1 0 [03A..???)-> BB09 (always) T2 H1 F filter { i LIR rare keep internal xentry flet q BB09 [0006] 1 2 1 BB08 0 [03A..048)-> BB10 (fltret) T2 H1 } i LIR rare keep hascall xentry gcsafe BB10 [0007] 2 2 1 BB09 0 [048..058)-> BB05 ( cret ) T2 H1 F filtHnd { } i LIR rare keep hascall xentry gcsafe flet BB11 [0012] 1 2 0 [05D..???)-> BB12 (always) H2 F filter { i LIR rare keep internal xentry flet q BB12 [0009] 1 2 BB11 0 [05D..06B)-> BB13 (fltret) H2 } i LIR rare keep hascall xentry gcsafe BB13 [0010] 2 2 BB12 0 [06B..07B)-> BB06 ( cret ) H2 F filtHnd { } i LIR rare keep hascall xentry gcsafe flet ---------------------------------------------------------------------------------------------------------------------------------------------- ------------ BB02 [0000] [000..00A) -> BB03 (always), preds={} succs={BB03} [000053] ----------- IL_OFFSET void INLRT @ 0x000[E-] N001 ( 1, 4) [000045] H---------- t45 = CNS_INT(h) ref '"in try"' $c0 /--* t45 ref arg0 in ecx N002 ( 15, 10) [000007] --CXG------ * CALL void System.Console:WriteLine(System.String) $VN.Void ------------ BB03 [0001] [00A..014) -> BB04 (always), preds={BB02} succs={BB04} [000054] ----------- IL_OFFSET void INLRT @ 0x00A[E-] N001 ( 1, 4) [000046] H---------- t46 = CNS_INT(h) ref '" in try"' $c1 /--* t46 ref arg0 in ecx N002 ( 15, 10) [000015] --CXG------ * CALL void System.Console:WriteLine(System.String) $VN.Void ------------ BB04 [0002] [014..023) -> BB07 (callf), preds={BB03} succs={BB07} [000055] ----------- IL_OFFSET void INLRT @ 0x014[E-] N001 ( 1, 4) [000047] H---------- t47 = CNS_INT(h) ref '" in try"' $c2 /--* t47 ref arg0 in ecx N002 ( 15, 10) [000017] --CXG------ * CALL void System.Console:WriteLine(System.String) $VN.Void ------------ BB05 [0008] [058..05D) -> BB06 (always), preds={BB10} succs={BB06} N001 ( 1, 1) [000044] ----------- NO_OP void $VN.Void ------------ BB06 [0011] [07B..07C) (return), preds={BB05,BB13} succs={} [000056] ----------- IL_OFFSET void INLRT @ 0x07B[E-] N001 ( 0, 0) [000018] ----------- RETURN void $VN.Void ------------ BB07 [0003] [023..033) (throw), preds={BB04} succs={} [000057] ----------- IL_OFFSET void INLRT @ 0x023[E-] N001 ( 1, 4) [000048] H---------- t48 = CNS_INT(h) ref '" in finally"' $c3 /--* t48 ref arg0 in ecx N002 ( 15, 10) [000020] --CXG------ * CALL void System.Console:WriteLine(System.String) $VN.Void [000058] ----------- IL_OFFSET void INLRT @ 0x02D[E-] N001 ( 1, 4) [000021] H---------- t21 = CNS_INT(h) int 0x425450 class $141 /--* t21 int arg0 in ecx N002 ( 15, 10) [000022] --C-------- t22 = * CALL help ref CORINFO_HELP_NEWSFAST $1c0 /--* t22 ref N003 ( 19, 13) [000023] DAC-------- * STORE_LCL_VAR ref V03 tmp2 d:1 $VN.Void N001 ( 3, 2) [000024] ----------- t24 = LCL_VAR ref V03 tmp2 u:1 $1c0 /--* t24 ref this in ecx N002 ( 17, 8) [000025] --CXG------ * CALL void System.Exception:.ctor():this $VN.Void [000059] ----------- IL_OFFSET void INLRT @ 0x032[--] N001 ( 3, 2) [000026] ----------- t26 = LCL_VAR ref V03 tmp2 u:1 (last use) $1c0 /--* t26 ref arg0 in ecx N002 ( 17, 8) [000027] --CXG------ * CALL help void CORINFO_HELP_THROW $1c2 ------------ BB08 [0013] [03A..???) -> BB09 (always), preds={} succs={BB09} ------------ BB09 [0006] [03A..048) -> BB10 (fltret), preds={BB08} succs={BB10} [000060] ----------- IL_OFFSET void INLRT @ 0x03B[E-] N001 ( 1, 4) [000049] H---------- t49 = CNS_INT(h) ref '" in filter"' $c4 /--* t49 ref arg0 in ecx N002 ( 15, 10) [000029] --CXG------ * CALL void System.Console:WriteLine(System.String) $VN.Void [000061] ----------- IL_OFFSET void INLRT @ 0x045[E-] N001 ( 1, 1) [000030] ----------- t30 = CNS_INT int 0 $49 /--* t30 int N002 ( 2, 2) [000031] ----------- * RETFILT int $VN.Void ------------ BB10 [0007] [048..058) -> BB05 (cret), preds={BB09} succs={BB05} [000062] ----------- IL_OFFSET void INLRT @ 0x049[E-] N001 ( 1, 4) [000050] H---------- t50 = CNS_INT(h) ref '" in handler"' $c5 /--* t50 ref arg0 in ecx N002 ( 15, 10) [000035] --CXG------ * CALL void System.Console:WriteLine(System.String) $VN.Void ------------ BB11 [0012] [05D..???) -> BB12 (always), preds={} succs={BB12} ------------ BB12 [0009] [05D..06B) -> BB13 (fltret), preds={BB11} succs={BB13} [000063] ----------- IL_OFFSET void INLRT @ 0x05E[E-] N001 ( 1, 4) [000051] H---------- t51 = CNS_INT(h) ref '"in filter"' $c6 /--* t51 ref arg0 in ecx N002 ( 15, 10) [000037] --CXG------ * CALL void System.Console:WriteLine(System.String) $VN.Void [000064] ----------- IL_OFFSET void INLRT @ 0x068[E-] N001 ( 1, 1) [000038] ----------- t38 = CNS_INT int 0 $49 /--* t38 int N002 ( 2, 2) [000039] ----------- * RETFILT int $VN.Void ------------ BB13 [0010] [06B..07B) -> BB06 (cret), preds={BB12} succs={BB06} [000065] ----------- IL_OFFSET void INLRT @ 0x06C[E-] N001 ( 1, 4) [000052] H---------- t52 = CNS_INT(h) ref '"in handler"' $c7 /--* t52 ref arg0 in ecx N002 ( 15, 10) [000043] --CXG------ * CALL void System.Console:WriteLine(System.String) $VN.Void ------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist Checking Profile Weights (flags:0x16) No blocks were profiled, so nothing to check *************** Starting PHASE Lowering nodeinfo lowering call (before): N001 ( 1, 4) [000045] H---------- t45 = CNS_INT(h) ref '"in try"' $c0 /--* t45 ref arg0 in ecx N002 ( 15, 10) [000007] --CXG------ * CALL void System.Console:WriteLine(System.String) $VN.Void args: ====== late: ====== lowering arg : N001 ( 1, 4) [000045] H---------- * CNS_INT(h) ref '"in try"' $c0 new node is : [000066] ----------- * PUTARG_REG ref REG ecx lowering call (after): N001 ( 1, 4) [000045] H---------- t45 = CNS_INT(h) ref '"in try"' $c0 /--* t45 ref [000066] ----------- t66 = * PUTARG_REG ref REG ecx /--* t66 ref arg0 in ecx N002 ( 15, 10) [000007] --CXG------ * CALL void System.Console:WriteLine(System.String) $VN.Void lowering call (before): N001 ( 1, 4) [000046] H---------- t46 = CNS_INT(h) ref '" in try"' $c1 /--* t46 ref arg0 in ecx N002 ( 15, 10) [000015] --CXG------ * CALL void System.Console:WriteLine(System.String) $VN.Void args: ====== late: ====== lowering arg : N001 ( 1, 4) [000046] H---------- * CNS_INT(h) ref '" in try"' $c1 new node is : [000067] ----------- * PUTARG_REG ref REG ecx lowering call (after): N001 ( 1, 4) [000046] H---------- t46 = CNS_INT(h) ref '" in try"' $c1 /--* t46 ref [000067] ----------- t67 = * PUTARG_REG ref REG ecx /--* t67 ref arg0 in ecx N002 ( 15, 10) [000015] --CXG------ * CALL void System.Console:WriteLine(System.String) $VN.Void lowering call (before): N001 ( 1, 4) [000047] H---------- t47 = CNS_INT(h) ref '" in try"' $c2 /--* t47 ref arg0 in ecx N002 ( 15, 10) [000017] --CXG------ * CALL void System.Console:WriteLine(System.String) $VN.Void args: ====== late: ====== lowering arg : N001 ( 1, 4) [000047] H---------- * CNS_INT(h) ref '" in try"' $c2 new node is : [000068] ----------- * PUTARG_REG ref REG ecx lowering call (after): N001 ( 1, 4) [000047] H---------- t47 = CNS_INT(h) ref '" in try"' $c2 /--* t47 ref [000068] ----------- t68 = * PUTARG_REG ref REG ecx /--* t68 ref arg0 in ecx N002 ( 15, 10) [000017] --CXG------ * CALL void System.Console:WriteLine(System.String) $VN.Void lowering GT_RETURN N001 ( 0, 0) [000018] ----------- * RETURN void $VN.Void ============ lowering call (before): N001 ( 1, 4) [000048] H---------- t48 = CNS_INT(h) ref '" in finally"' $c3 /--* t48 ref arg0 in ecx N002 ( 15, 10) [000020] --CXG------ * CALL void System.Console:WriteLine(System.String) $VN.Void args: ====== late: ====== lowering arg : N001 ( 1, 4) [000048] H---------- * CNS_INT(h) ref '" in finally"' $c3 new node is : [000069] ----------- * PUTARG_REG ref REG ecx lowering call (after): N001 ( 1, 4) [000048] H---------- t48 = CNS_INT(h) ref '" in finally"' $c3 /--* t48 ref [000069] ----------- t69 = * PUTARG_REG ref REG ecx /--* t69 ref arg0 in ecx N002 ( 15, 10) [000020] --CXG------ * CALL void System.Console:WriteLine(System.String) $VN.Void lowering call (before): N001 ( 1, 4) [000021] H---------- t21 = CNS_INT(h) int 0x425450 class $141 /--* t21 int arg0 in ecx N002 ( 15, 10) [000022] --C-------- t22 = * CALL help ref CORINFO_HELP_NEWSFAST $1c0 args: ====== late: ====== lowering arg : N001 ( 1, 4) [000021] H---------- * CNS_INT(h) int 0x425450 class $141 new node is : [000070] ----------- * PUTARG_REG int REG ecx lowering call (after): N001 ( 1, 4) [000021] H---------- t21 = CNS_INT(h) int 0x425450 class $141 /--* t21 int [000070] ----------- t70 = * PUTARG_REG int REG ecx /--* t70 int arg0 in ecx N002 ( 15, 10) [000022] --C-------- t22 = * CALL help ref CORINFO_HELP_NEWSFAST $1c0 lowering store lcl var/field (before): N001 ( 1, 4) [000021] H---------- t21 = CNS_INT(h) int 0x425450 class $141 /--* t21 int [000070] ----------- t70 = * PUTARG_REG int REG ecx /--* t70 int arg0 in ecx N002 ( 15, 10) [000022] --C-------- t22 = * CALL help ref CORINFO_HELP_NEWSFAST $1c0 /--* t22 ref N003 ( 19, 13) [000023] DAC-------- * STORE_LCL_VAR ref V03 tmp2 d:1 $VN.Void lowering store lcl var/field (after): N001 ( 1, 4) [000021] H---------- t21 = CNS_INT(h) int 0x425450 class $141 /--* t21 int [000070] ----------- t70 = * PUTARG_REG int REG ecx /--* t70 int arg0 in ecx N002 ( 15, 10) [000022] --C-------- t22 = * CALL help ref CORINFO_HELP_NEWSFAST $1c0 /--* t22 ref N003 ( 19, 13) [000023] DAC-------- * STORE_LCL_VAR ref V03 tmp2 d:1 $VN.Void lowering call (before): N001 ( 3, 2) [000024] ----------- t24 = LCL_VAR ref V03 tmp2 u:1 $1c0 /--* t24 ref this in ecx N002 ( 17, 8) [000025] --CXG------ * CALL void System.Exception:.ctor():this $VN.Void args: ====== late: ====== lowering arg : N001 ( 3, 2) [000024] ----------- * LCL_VAR ref V03 tmp2 u:1 $1c0 new node is : [000071] ----------- * PUTARG_REG ref REG ecx lowering call (after): N001 ( 3, 2) [000024] ----------- t24 = LCL_VAR ref V03 tmp2 u:1 $1c0 /--* t24 ref [000071] ----------- t71 = * PUTARG_REG ref REG ecx /--* t71 ref this in ecx N002 ( 17, 8) [000025] --CXG------ * CALL void System.Exception:.ctor():this $VN.Void lowering call (before): N001 ( 3, 2) [000026] ----------- t26 = LCL_VAR ref V03 tmp2 u:1 (last use) $1c0 /--* t26 ref arg0 in ecx N002 ( 17, 8) [000027] --CXG------ * CALL help void CORINFO_HELP_THROW $1c2 args: ====== late: ====== lowering arg : N001 ( 3, 2) [000026] ----------- * LCL_VAR ref V03 tmp2 u:1 (last use) $1c0 new node is : [000072] ----------- * PUTARG_REG ref REG ecx lowering call (after): N001 ( 3, 2) [000026] ----------- t26 = LCL_VAR ref V03 tmp2 u:1 (last use) $1c0 /--* t26 ref [000072] ----------- t72 = * PUTARG_REG ref REG ecx /--* t72 ref arg0 in ecx N002 ( 17, 8) [000027] --CXG------ * CALL help void CORINFO_HELP_THROW $1c2 lowering call (before): N001 ( 1, 4) [000049] H---------- t49 = CNS_INT(h) ref '" in filter"' $c4 /--* t49 ref arg0 in ecx N002 ( 15, 10) [000029] --CXG------ * CALL void System.Console:WriteLine(System.String) $VN.Void args: ====== late: ====== lowering arg : N001 ( 1, 4) [000049] H---------- * CNS_INT(h) ref '" in filter"' $c4 new node is : [000073] ----------- * PUTARG_REG ref REG ecx lowering call (after): N001 ( 1, 4) [000049] H---------- t49 = CNS_INT(h) ref '" in filter"' $c4 /--* t49 ref [000073] ----------- t73 = * PUTARG_REG ref REG ecx /--* t73 ref arg0 in ecx N002 ( 15, 10) [000029] --CXG------ * CALL void System.Console:WriteLine(System.String) $VN.Void lowering call (before): N001 ( 1, 4) [000050] H---------- t50 = CNS_INT(h) ref '" in handler"' $c5 /--* t50 ref arg0 in ecx N002 ( 15, 10) [000035] --CXG------ * CALL void System.Console:WriteLine(System.String) $VN.Void args: ====== late: ====== lowering arg : N001 ( 1, 4) [000050] H---------- * CNS_INT(h) ref '" in handler"' $c5 new node is : [000074] ----------- * PUTARG_REG ref REG ecx lowering call (after): N001 ( 1, 4) [000050] H---------- t50 = CNS_INT(h) ref '" in handler"' $c5 /--* t50 ref [000074] ----------- t74 = * PUTARG_REG ref REG ecx /--* t74 ref arg0 in ecx N002 ( 15, 10) [000035] --CXG------ * CALL void System.Console:WriteLine(System.String) $VN.Void lowering call (before): N001 ( 1, 4) [000051] H---------- t51 = CNS_INT(h) ref '"in filter"' $c6 /--* t51 ref arg0 in ecx N002 ( 15, 10) [000037] --CXG------ * CALL void System.Console:WriteLine(System.String) $VN.Void args: ====== late: ====== lowering arg : N001 ( 1, 4) [000051] H---------- * CNS_INT(h) ref '"in filter"' $c6 new node is : [000075] ----------- * PUTARG_REG ref REG ecx lowering call (after): N001 ( 1, 4) [000051] H---------- t51 = CNS_INT(h) ref '"in filter"' $c6 /--* t51 ref [000075] ----------- t75 = * PUTARG_REG ref REG ecx /--* t75 ref arg0 in ecx N002 ( 15, 10) [000037] --CXG------ * CALL void System.Console:WriteLine(System.String) $VN.Void lowering call (before): N001 ( 1, 4) [000052] H---------- t52 = CNS_INT(h) ref '"in handler"' $c7 /--* t52 ref arg0 in ecx N002 ( 15, 10) [000043] --CXG------ * CALL void System.Console:WriteLine(System.String) $VN.Void args: ====== late: ====== lowering arg : N001 ( 1, 4) [000052] H---------- * CNS_INT(h) ref '"in handler"' $c7 new node is : [000076] ----------- * PUTARG_REG ref REG ecx lowering call (after): N001 ( 1, 4) [000052] H---------- t52 = CNS_INT(h) ref '"in handler"' $c7 /--* t52 ref [000076] ----------- t76 = * PUTARG_REG ref REG ecx /--* t76 ref arg0 in ecx N002 ( 15, 10) [000043] --CXG------ * CALL void System.Console:WriteLine(System.String) $VN.Void Lower has completed modifying nodes. ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB02 [0000] 1 2 1 [000..00A)-> BB03 (always) T2 try { i LIR keep hascall gcsafe q BB03 [0001] 1 1 BB02 1 [00A..014)-> BB04 (always) T1 try { i LIR keep hascall gcsafe q BB04 [0002] 1 0 BB03 1 [014..023)-> BB07 (callf ) T0 try { } } i LIR keep hascall gcsafe retless BB05 [0008] 1 2 BB10 0 [058..05D)-> BB06 (always) T2 } i LIR rare xentry q BB06 [0011] 2 BB05,BB13 0 [07B..07C) (return) i LIR rare ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ funclets follow BB07 [0003] 2 1 0 BB04 0 [023..033) (throw ) T1 H0 F finally { } i LIR rare keep hascall xentry gcsafe flet newobj BB08 [0013] 1 2 1 0 [03A..???)-> BB09 (always) T2 H1 F filter { i LIR rare keep internal xentry flet q BB09 [0006] 1 2 1 BB08 0 [03A..048)-> BB10 (fltret) T2 H1 } i LIR rare keep hascall xentry gcsafe BB10 [0007] 2 2 1 BB09 0 [048..058)-> BB05 ( cret ) T2 H1 F filtHnd { } i LIR rare keep hascall xentry gcsafe flet BB11 [0012] 1 2 0 [05D..???)-> BB12 (always) H2 F filter { i LIR rare keep internal xentry flet q BB12 [0009] 1 2 BB11 0 [05D..06B)-> BB13 (fltret) H2 } i LIR rare keep hascall xentry gcsafe BB13 [0010] 2 2 BB12 0 [06B..07B)-> BB06 ( cret ) H2 F filtHnd { } i LIR rare keep hascall xentry gcsafe flet ---------------------------------------------------------------------------------------------------------------------------------------------- ------------ BB02 [0000] [000..00A) -> BB03 (always), preds={} succs={BB03} [000053] ----------- IL_OFFSET void INLRT @ 0x000[E-] N001 ( 1, 4) [000045] H---------- t45 = CNS_INT(h) ref '"in try"' $c0 /--* t45 ref [000066] ----------- t66 = * PUTARG_REG ref REG ecx /--* t66 ref arg0 in ecx N002 ( 15, 10) [000007] --CXG------ * CALL void System.Console:WriteLine(System.String) $VN.Void ------------ BB03 [0001] [00A..014) -> BB04 (always), preds={BB02} succs={BB04} [000054] ----------- IL_OFFSET void INLRT @ 0x00A[E-] N001 ( 1, 4) [000046] H---------- t46 = CNS_INT(h) ref '" in try"' $c1 /--* t46 ref [000067] ----------- t67 = * PUTARG_REG ref REG ecx /--* t67 ref arg0 in ecx N002 ( 15, 10) [000015] --CXG------ * CALL void System.Console:WriteLine(System.String) $VN.Void ------------ BB04 [0002] [014..023) -> BB07 (callf), preds={BB03} succs={BB07} [000055] ----------- IL_OFFSET void INLRT @ 0x014[E-] N001 ( 1, 4) [000047] H---------- t47 = CNS_INT(h) ref '" in try"' $c2 /--* t47 ref [000068] ----------- t68 = * PUTARG_REG ref REG ecx /--* t68 ref arg0 in ecx N002 ( 15, 10) [000017] --CXG------ * CALL void System.Console:WriteLine(System.String) $VN.Void ------------ BB05 [0008] [058..05D) -> BB06 (always), preds={BB10} succs={BB06} N001 ( 1, 1) [000044] ----------- NO_OP void $VN.Void ------------ BB06 [0011] [07B..07C) (return), preds={BB05,BB13} succs={} [000056] ----------- IL_OFFSET void INLRT @ 0x07B[E-] N001 ( 0, 0) [000018] ----------- RETURN void $VN.Void ------------ BB07 [0003] [023..033) (throw), preds={BB04} succs={} [000057] ----------- IL_OFFSET void INLRT @ 0x023[E-] N001 ( 1, 4) [000048] H---------- t48 = CNS_INT(h) ref '" in finally"' $c3 /--* t48 ref [000069] ----------- t69 = * PUTARG_REG ref REG ecx /--* t69 ref arg0 in ecx N002 ( 15, 10) [000020] --CXG------ * CALL void System.Console:WriteLine(System.String) $VN.Void [000058] ----------- IL_OFFSET void INLRT @ 0x02D[E-] N001 ( 1, 4) [000021] H---------- t21 = CNS_INT(h) int 0x425450 class $141 /--* t21 int [000070] ----------- t70 = * PUTARG_REG int REG ecx /--* t70 int arg0 in ecx N002 ( 15, 10) [000022] --C-------- t22 = * CALL help ref CORINFO_HELP_NEWSFAST $1c0 /--* t22 ref N003 ( 19, 13) [000023] DAC-------- * STORE_LCL_VAR ref V03 tmp2 d:1 $VN.Void N001 ( 3, 2) [000024] ----------- t24 = LCL_VAR ref V03 tmp2 u:1 $1c0 /--* t24 ref [000071] ----------- t71 = * PUTARG_REG ref REG ecx /--* t71 ref this in ecx N002 ( 17, 8) [000025] --CXG------ * CALL void System.Exception:.ctor():this $VN.Void [000059] ----------- IL_OFFSET void INLRT @ 0x032[--] N001 ( 3, 2) [000026] ----------- t26 = LCL_VAR ref V03 tmp2 u:1 (last use) $1c0 /--* t26 ref [000072] ----------- t72 = * PUTARG_REG ref REG ecx /--* t72 ref arg0 in ecx N002 ( 17, 8) [000027] --CXG------ * CALL help void CORINFO_HELP_THROW $1c2 ------------ BB08 [0013] [03A..???) -> BB09 (always), preds={} succs={BB09} ------------ BB09 [0006] [03A..048) -> BB10 (fltret), preds={BB08} succs={BB10} [000060] ----------- IL_OFFSET void INLRT @ 0x03B[E-] N001 ( 1, 4) [000049] H---------- t49 = CNS_INT(h) ref '" in filter"' $c4 /--* t49 ref [000073] ----------- t73 = * PUTARG_REG ref REG ecx /--* t73 ref arg0 in ecx N002 ( 15, 10) [000029] --CXG------ * CALL void System.Console:WriteLine(System.String) $VN.Void [000061] ----------- IL_OFFSET void INLRT @ 0x045[E-] N001 ( 1, 1) [000030] ----------- t30 = CNS_INT int 0 $49 /--* t30 int N002 ( 2, 2) [000031] ----------- * RETFILT int $VN.Void ------------ BB10 [0007] [048..058) -> BB05 (cret), preds={BB09} succs={BB05} [000062] ----------- IL_OFFSET void INLRT @ 0x049[E-] N001 ( 1, 4) [000050] H---------- t50 = CNS_INT(h) ref '" in handler"' $c5 /--* t50 ref [000074] ----------- t74 = * PUTARG_REG ref REG ecx /--* t74 ref arg0 in ecx N002 ( 15, 10) [000035] --CXG------ * CALL void System.Console:WriteLine(System.String) $VN.Void ------------ BB11 [0012] [05D..???) -> BB12 (always), preds={} succs={BB12} ------------ BB12 [0009] [05D..06B) -> BB13 (fltret), preds={BB11} succs={BB13} [000063] ----------- IL_OFFSET void INLRT @ 0x05E[E-] N001 ( 1, 4) [000051] H---------- t51 = CNS_INT(h) ref '"in filter"' $c6 /--* t51 ref [000075] ----------- t75 = * PUTARG_REG ref REG ecx /--* t75 ref arg0 in ecx N002 ( 15, 10) [000037] --CXG------ * CALL void System.Console:WriteLine(System.String) $VN.Void [000064] ----------- IL_OFFSET void INLRT @ 0x068[E-] N001 ( 1, 1) [000038] ----------- t38 = CNS_INT int 0 $49 /--* t38 int N002 ( 2, 2) [000039] ----------- * RETFILT int $VN.Void ------------ BB13 [0010] [06B..07B) -> BB06 (cret), preds={BB12} succs={BB06} [000065] ----------- IL_OFFSET void INLRT @ 0x06C[E-] N001 ( 1, 4) [000052] H---------- t52 = CNS_INT(h) ref '"in handler"' $c7 /--* t52 ref [000076] ----------- t76 = * PUTARG_REG ref REG ecx /--* t76 ref arg0 in ecx N002 ( 15, 10) [000043] --CXG------ * CALL void System.Console:WriteLine(System.String) $VN.Void ------------------------------------------------------------------------------------------------------------------- *** lvaComputeRefCounts *** *** lvaComputeRefCounts -- explicit counts *** New refCnts for V03: refCnt = 1, refCntWtd = 0 New refCnts for V03: refCnt = 2, refCntWtd = 0 New refCnts for V03: refCnt = 3, refCntWtd = 0 *** lvaComputeRefCounts -- implicit counts *** *************** In fgLocalVarLiveness() ; Initial local variable assignments ; ; V00 arg0 int single-def ; V01 tmp0 ref "SpillCatchArg" ; V02 tmp1 ref "SpillCatchArg" ; V03 tmp2 ref class-hnd exact single-def "NewObj constructor temp" ; V04 tmp3 ref class-hnd "impSpillSpecialSideEff" ; V05 tmp4 ref class-hnd "impSpillSpecialSideEff" In fgLocalVarLivenessInit Tracked variable (1 out of 6) table: V03 tmp2 [ ref]: refCnt = 3, refCntWtd = 0 *************** In fgPerBlockLocalVarLiveness() BB02 USE(0)={} + ByrefExposed + GcHeap DEF(0)={} + ByrefExposed* + GcHeap* BB03 USE(0)={} + ByrefExposed + GcHeap DEF(0)={} + ByrefExposed* + GcHeap* BB04 USE(0)={} + ByrefExposed + GcHeap DEF(0)={} + ByrefExposed* + GcHeap* BB05 USE(0)={} DEF(0)={} BB06 USE(0)={} DEF(0)={} BB07 USE(0)={ } + ByrefExposed + GcHeap DEF(1)={V03} + ByrefExposed* + GcHeap* BB08 USE(0)={} DEF(0)={} BB09 USE(0)={} + ByrefExposed + GcHeap DEF(0)={} + ByrefExposed* + GcHeap* BB10 USE(0)={} + ByrefExposed + GcHeap DEF(0)={} + ByrefExposed* + GcHeap* BB11 USE(0)={} DEF(0)={} BB12 USE(0)={} + ByrefExposed + GcHeap DEF(0)={} + ByrefExposed* + GcHeap* BB13 USE(0)={} + ByrefExposed + GcHeap DEF(0)={} + ByrefExposed* + GcHeap* ** Memory liveness computed, GcHeap states and ByrefExposed states match *************** In fgInterBlockLocalVarLiveness() BB liveness after fgLiveVarAnalysis(): BB02 IN (0)={} + ByrefExposed + GcHeap OUT(0)={} + ByrefExposed + GcHeap BB03 IN (0)={} + ByrefExposed + GcHeap OUT(0)={} + ByrefExposed + GcHeap BB04 IN (0)={} + ByrefExposed + GcHeap OUT(0)={} + ByrefExposed + GcHeap BB05 IN (0)={} + ByrefExposed + GcHeap OUT(0)={} + ByrefExposed + GcHeap BB06 IN (0)={} OUT(0)={} BB07 IN (0)={} + ByrefExposed + GcHeap OUT(0)={} + ByrefExposed + GcHeap BB08 IN (0)={} + ByrefExposed + GcHeap OUT(0)={} + ByrefExposed + GcHeap BB09 IN (0)={} + ByrefExposed + GcHeap OUT(0)={} + ByrefExposed + GcHeap BB10 IN (0)={} + ByrefExposed + GcHeap OUT(0)={} + ByrefExposed + GcHeap BB11 IN (0)={} + ByrefExposed + GcHeap OUT(0)={} + ByrefExposed + GcHeap BB12 IN (0)={} + ByrefExposed + GcHeap OUT(0)={} + ByrefExposed + GcHeap BB13 IN (0)={} + ByrefExposed + GcHeap OUT(0)={} *************** In fgUpdateFlowGraph() Before updating the flow graph: ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB02 [0000] 1 2 1 [000..00A)-> BB03 (always) T2 try { i LIR keep hascall gcsafe q BB03 [0001] 1 1 BB02 1 [00A..014)-> BB04 (always) T1 try { i LIR keep hascall gcsafe q BB04 [0002] 1 0 BB03 1 [014..023)-> BB07 (callf ) T0 try { } } i LIR keep hascall gcsafe retless BB05 [0008] 1 2 BB10 0 [058..05D)-> BB06 (always) T2 } i LIR rare xentry q BB06 [0011] 2 BB05,BB13 0 [07B..07C) (return) i LIR rare ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ funclets follow BB07 [0003] 2 1 0 BB04 0 [023..033) (throw ) T1 H0 F finally { } i LIR rare keep hascall xentry gcsafe flet newobj BB08 [0013] 1 2 1 0 [03A..???)-> BB09 (always) T2 H1 F filter { i LIR rare keep internal xentry flet q BB09 [0006] 1 2 1 BB08 0 [03A..048)-> BB10 (fltret) T2 H1 } i LIR rare keep hascall xentry gcsafe BB10 [0007] 2 2 1 BB09 0 [048..058)-> BB05 ( cret ) T2 H1 F filtHnd { } i LIR rare keep hascall xentry gcsafe flet BB11 [0012] 1 2 0 [05D..???)-> BB12 (always) H2 F filter { i LIR rare keep internal xentry flet q BB12 [0009] 1 2 BB11 0 [05D..06B)-> BB13 (fltret) H2 } i LIR rare keep hascall xentry gcsafe BB13 [0010] 2 2 BB12 0 [06B..07B)-> BB06 ( cret ) H2 F filtHnd { } i LIR rare keep hascall xentry gcsafe flet ---------------------------------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist *************** In fgRemoveDeadBlocks() Removing unreachable blocks for fgRemoveDeadBlocks iteration #1 *************** In fgDebugCheckBBlist *** lvaComputeRefCounts *** *** lvaComputeRefCounts -- explicit counts *** New refCnts for V03: refCnt = 1, refCntWtd = 0 New refCnts for V03: refCnt = 2, refCntWtd = 0 New refCnts for V03: refCnt = 3, refCntWtd = 0 *** lvaComputeRefCounts -- implicit counts *** *************** Finishing PHASE Lowering nodeinfo Trees after Lowering nodeinfo ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB02 [0000] 1 2 1 [000..00A)-> BB03 (always) T2 try { i LIR keep hascall gcsafe q BB03 [0001] 1 1 BB02 1 [00A..014)-> BB04 (always) T1 try { i LIR keep hascall gcsafe q BB04 [0002] 1 0 BB03 1 [014..023)-> BB07 (callf ) T0 try { } } i LIR keep hascall gcsafe retless BB05 [0008] 1 2 BB10 0 [058..05D)-> BB06 (always) T2 } i LIR rare xentry q BB06 [0011] 2 BB05,BB13 0 [07B..07C) (return) i LIR rare ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ funclets follow BB07 [0003] 2 1 0 BB04 0 [023..033) (throw ) T1 H0 F finally { } i LIR rare keep hascall xentry gcsafe flet newobj BB08 [0013] 1 2 1 0 [03A..???)-> BB09 (always) T2 H1 F filter { i LIR rare keep internal xentry flet q BB09 [0006] 1 2 1 BB08 0 [03A..048)-> BB10 (fltret) T2 H1 } i LIR rare keep hascall xentry gcsafe BB10 [0007] 2 2 1 BB09 0 [048..058)-> BB05 ( cret ) T2 H1 F filtHnd { } i LIR rare keep hascall xentry gcsafe flet BB11 [0012] 1 2 0 [05D..???)-> BB12 (always) H2 F filter { i LIR rare keep internal xentry flet q BB12 [0009] 1 2 BB11 0 [05D..06B)-> BB13 (fltret) H2 } i LIR rare keep hascall xentry gcsafe BB13 [0010] 2 2 BB12 0 [06B..07B)-> BB06 ( cret ) H2 F filtHnd { } i LIR rare keep hascall xentry gcsafe flet ---------------------------------------------------------------------------------------------------------------------------------------------- ------------ BB02 [0000] [000..00A) -> BB03 (always), preds={} succs={BB03} [000053] ----------- IL_OFFSET void INLRT @ 0x000[E-] N001 ( 1, 4) [000045] H---------- t45 = CNS_INT(h) ref '"in try"' $c0 /--* t45 ref [000066] ----------- t66 = * PUTARG_REG ref REG ecx /--* t66 ref arg0 in ecx N002 ( 15, 10) [000007] --CXG------ * CALL void System.Console:WriteLine(System.String) $VN.Void ------------ BB03 [0001] [00A..014) -> BB04 (always), preds={BB02} succs={BB04} [000054] ----------- IL_OFFSET void INLRT @ 0x00A[E-] N001 ( 1, 4) [000046] H---------- t46 = CNS_INT(h) ref '" in try"' $c1 /--* t46 ref [000067] ----------- t67 = * PUTARG_REG ref REG ecx /--* t67 ref arg0 in ecx N002 ( 15, 10) [000015] --CXG------ * CALL void System.Console:WriteLine(System.String) $VN.Void ------------ BB04 [0002] [014..023) -> BB07 (callf), preds={BB03} succs={BB07} [000055] ----------- IL_OFFSET void INLRT @ 0x014[E-] N001 ( 1, 4) [000047] H---------- t47 = CNS_INT(h) ref '" in try"' $c2 /--* t47 ref [000068] ----------- t68 = * PUTARG_REG ref REG ecx /--* t68 ref arg0 in ecx N002 ( 15, 10) [000017] --CXG------ * CALL void System.Console:WriteLine(System.String) $VN.Void ------------ BB05 [0008] [058..05D) -> BB06 (always), preds={BB10} succs={BB06} N001 ( 1, 1) [000044] ----------- NO_OP void $VN.Void ------------ BB06 [0011] [07B..07C) (return), preds={BB05,BB13} succs={} [000056] ----------- IL_OFFSET void INLRT @ 0x07B[E-] N001 ( 0, 0) [000018] ----------- RETURN void $VN.Void ------------ BB07 [0003] [023..033) (throw), preds={BB04} succs={} [000057] ----------- IL_OFFSET void INLRT @ 0x023[E-] N001 ( 1, 4) [000048] H---------- t48 = CNS_INT(h) ref '" in finally"' $c3 /--* t48 ref [000069] ----------- t69 = * PUTARG_REG ref REG ecx /--* t69 ref arg0 in ecx N002 ( 15, 10) [000020] --CXG------ * CALL void System.Console:WriteLine(System.String) $VN.Void [000058] ----------- IL_OFFSET void INLRT @ 0x02D[E-] N001 ( 1, 4) [000021] H---------- t21 = CNS_INT(h) int 0x425450 class $141 /--* t21 int [000070] ----------- t70 = * PUTARG_REG int REG ecx /--* t70 int arg0 in ecx N002 ( 15, 10) [000022] --C-------- t22 = * CALL help ref CORINFO_HELP_NEWSFAST $1c0 /--* t22 ref N003 ( 19, 13) [000023] DAC-------- * STORE_LCL_VAR ref V03 tmp2 d:1 $VN.Void N001 ( 3, 2) [000024] ----------- t24 = LCL_VAR ref V03 tmp2 u:1 $1c0 /--* t24 ref [000071] ----------- t71 = * PUTARG_REG ref REG ecx /--* t71 ref this in ecx N002 ( 17, 8) [000025] --CXG------ * CALL void System.Exception:.ctor():this $VN.Void [000059] ----------- IL_OFFSET void INLRT @ 0x032[--] N001 ( 3, 2) [000026] ----------- t26 = LCL_VAR ref V03 tmp2 u:1 (last use) $1c0 /--* t26 ref [000072] ----------- t72 = * PUTARG_REG ref REG ecx /--* t72 ref arg0 in ecx N002 ( 17, 8) [000027] --CXG------ * CALL help void CORINFO_HELP_THROW $1c2 ------------ BB08 [0013] [03A..???) -> BB09 (always), preds={} succs={BB09} ------------ BB09 [0006] [03A..048) -> BB10 (fltret), preds={BB08} succs={BB10} [000060] ----------- IL_OFFSET void INLRT @ 0x03B[E-] N001 ( 1, 4) [000049] H---------- t49 = CNS_INT(h) ref '" in filter"' $c4 /--* t49 ref [000073] ----------- t73 = * PUTARG_REG ref REG ecx /--* t73 ref arg0 in ecx N002 ( 15, 10) [000029] --CXG------ * CALL void System.Console:WriteLine(System.String) $VN.Void [000061] ----------- IL_OFFSET void INLRT @ 0x045[E-] N001 ( 1, 1) [000030] ----------- t30 = CNS_INT int 0 $49 /--* t30 int N002 ( 2, 2) [000031] ----------- * RETFILT int $VN.Void ------------ BB10 [0007] [048..058) -> BB05 (cret), preds={BB09} succs={BB05} [000062] ----------- IL_OFFSET void INLRT @ 0x049[E-] N001 ( 1, 4) [000050] H---------- t50 = CNS_INT(h) ref '" in handler"' $c5 /--* t50 ref [000074] ----------- t74 = * PUTARG_REG ref REG ecx /--* t74 ref arg0 in ecx N002 ( 15, 10) [000035] --CXG------ * CALL void System.Console:WriteLine(System.String) $VN.Void ------------ BB11 [0012] [05D..???) -> BB12 (always), preds={} succs={BB12} ------------ BB12 [0009] [05D..06B) -> BB13 (fltret), preds={BB11} succs={BB13} [000063] ----------- IL_OFFSET void INLRT @ 0x05E[E-] N001 ( 1, 4) [000051] H---------- t51 = CNS_INT(h) ref '"in filter"' $c6 /--* t51 ref [000075] ----------- t75 = * PUTARG_REG ref REG ecx /--* t75 ref arg0 in ecx N002 ( 15, 10) [000037] --CXG------ * CALL void System.Console:WriteLine(System.String) $VN.Void [000064] ----------- IL_OFFSET void INLRT @ 0x068[E-] N001 ( 1, 1) [000038] ----------- t38 = CNS_INT int 0 $49 /--* t38 int N002 ( 2, 2) [000039] ----------- * RETFILT int $VN.Void ------------ BB13 [0010] [06B..07B) -> BB06 (cret), preds={BB12} succs={BB06} [000065] ----------- IL_OFFSET void INLRT @ 0x06C[E-] N001 ( 1, 4) [000052] H---------- t52 = CNS_INT(h) ref '"in handler"' $c7 /--* t52 ref [000076] ----------- t76 = * PUTARG_REG ref REG ecx /--* t76 ref arg0 in ecx N002 ( 15, 10) [000043] --CXG------ * CALL void System.Console:WriteLine(System.String) $VN.Void ------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist *************** Starting PHASE Calculate stack level slots *************** Finishing PHASE Calculate stack level slots [no changes] *************** Starting PHASE Linear scan register alloc Clearing modified regs. buildIntervals ======== ----------------- LIVENESS: ----------------- BB02 use: {} def: {} in: {} out: {} BB03 use: {} def: {} in: {} out: {} BB04 use: {} def: {} in: {} out: {} BB05 use: {} def: {} in: {} out: {} BB06 use: {} def: {} in: {} out: {} BB07 use: {} def: {V03} in: {} out: {} BB08 use: {} def: {} in: {} out: {} BB09 use: {} def: {} in: {} out: {} BB10 use: {} def: {} in: {} out: {} BB11 use: {} def: {} in: {} out: {} BB12 use: {} def: {} in: {} out: {} BB13 use: {} def: {} in: {} out: {} EH Vars: {} Finally Vars: {} Interval 0: ref RefPositions {} physReg:NA Preferences=[allInt] Aversions=[allMask] Interval 0: (V03) ref RefPositions {} physReg:NA Preferences=[allInt] Aversions=[allMask] FP callee save candidate vars: None floatVarCount = 0; hasLoops = false, singleExit = true TUPLE STYLE DUMP BEFORE LSRA Start LSRA Block Sequence: Current block: BB02 Succ block: BB03, Criteria: weight, Worklist: [BB03 ] Current block: BB03 Succ block: BB04, Criteria: weight, Worklist: [BB04 ] Current block: BB04 Succ block: BB07, Criteria: weight, Worklist: [BB07 ] Current block: BB07 Unvisited block: BB05, Criteria: weight, Worklist: [BB05 ] Unvisited block: BB06, Criteria: weight, Worklist: [BB05 BB06 ] Unvisited block: BB08, Criteria: weight, Worklist: [BB05 BB06 BB08 ] Unvisited block: BB09, Criteria: weight, Worklist: [BB05 BB06 BB08 BB09 ] Unvisited block: BB10, Criteria: weight, Worklist: [BB05 BB06 BB08 BB09 BB10 ] Unvisited block: BB11, Criteria: weight, Worklist: [BB05 BB06 BB08 BB09 BB10 BB11 ] Unvisited block: BB12, Criteria: weight, Worklist: [BB05 BB06 BB08 BB09 BB10 BB11 BB12 ] Unvisited block: BB13, Criteria: weight, Worklist: [BB05 BB06 BB08 BB09 BB10 BB11 BB12 BB13 ] Current block: BB05 Current block: BB06 Current block: BB08 Current block: BB09 Current block: BB10 Current block: BB11 Current block: BB12 Current block: BB13 Final LSRA Block Sequence: BB02 ( 1 ) BB03 ( 1 ) BB04 ( 1 ) BB07 ( 0 ) EH-in BB05 ( 0 ) EH-in BB06 ( 0 ) has EH pred BB08 ( 0 ) EH-in BB09 ( 0 ) EH-out BB10 ( 0 ) EH-in EH-out BB11 ( 0 ) EH-in BB12 ( 0 ) EH-out BB13 ( 0 ) EH-in EH-out BB02 [0000] [000..00A) -> BB03 (always), preds={} succs={BB03} ===== N000. IL_OFFSET INLRT @ 0x000[E-] N001. t45 = CNS_INT(h) '"in try"' N000. t66 = PUTARG_REG; t45 N002. CALL ; t66 BB03 [0001] [00A..014) -> BB04 (always), preds={BB02} succs={BB04} ===== N000. IL_OFFSET INLRT @ 0x00A[E-] N001. t46 = CNS_INT(h) '" in try"' N000. t67 = PUTARG_REG; t46 N002. CALL ; t67 BB04 [0002] [014..023) -> BB07 (callf), preds={BB03} succs={BB07} ===== N000. IL_OFFSET INLRT @ 0x014[E-] N001. t47 = CNS_INT(h) '" in try"' N000. t68 = PUTARG_REG; t47 N002. CALL ; t68 BB07 [0003] [023..033) (throw), preds={BB04} succs={} ===== N000. IL_OFFSET INLRT @ 0x023[E-] N001. t48 = CNS_INT(h) '" in finally"' N000. t69 = PUTARG_REG; t48 N002. CALL ; t69 N000. IL_OFFSET INLRT @ 0x02D[E-] N001. t21 = CNS_INT(h) 0x425450 class N000. t70 = PUTARG_REG; t21 N002. t22 = CALL help; t70 N003. V03(t23); t22 N001. V03(t24) N000. t71 = PUTARG_REG; t24 N002. CALL ; t71 N000. IL_OFFSET INLRT @ 0x032[--] N001. V03(t26*) N000. t72 = PUTARG_REG; t26* N002. CALL help; t72 BB05 [0008] [058..05D) -> BB06 (always), preds={BB10} succs={BB06} ===== N001. NO_OP BB06 [0011] [07B..07C) (return), preds={BB05,BB13} succs={} ===== N000. IL_OFFSET INLRT @ 0x07B[E-] N001. RETURN BB08 [0013] [03A..???) -> BB09 (always), preds={} succs={BB09} ===== BB09 [0006] [03A..048) -> BB10 (fltret), preds={BB08} succs={BB10} ===== N000. IL_OFFSET INLRT @ 0x03B[E-] N001. t49 = CNS_INT(h) '" in filter"' N000. t73 = PUTARG_REG; t49 N002. CALL ; t73 N000. IL_OFFSET INLRT @ 0x045[E-] N001. t30 = CNS_INT 0 N002. RETFILT ; t30 BB10 [0007] [048..058) -> BB05 (cret), preds={BB09} succs={BB05} ===== N000. IL_OFFSET INLRT @ 0x049[E-] N001. t50 = CNS_INT(h) '" in handler"' N000. t74 = PUTARG_REG; t50 N002. CALL ; t74 BB11 [0012] [05D..???) -> BB12 (always), preds={} succs={BB12} ===== BB12 [0009] [05D..06B) -> BB13 (fltret), preds={BB11} succs={BB13} ===== N000. IL_OFFSET INLRT @ 0x05E[E-] N001. t51 = CNS_INT(h) '"in filter"' N000. t75 = PUTARG_REG; t51 N002. CALL ; t75 N000. IL_OFFSET INLRT @ 0x068[E-] N001. t38 = CNS_INT 0 N002. RETFILT ; t38 BB13 [0010] [06B..07B) -> BB06 (cret), preds={BB12} succs={BB06} ===== N000. IL_OFFSET INLRT @ 0x06C[E-] N001. t52 = CNS_INT(h) '"in handler"' N000. t76 = PUTARG_REG; t52 N002. CALL ; t76 buildIntervals second part ======== Int arg V00 in reg ecx NEW BLOCK BB02 DefList: { } N003 (???,???) [000053] ----------- * IL_OFFSET void INLRT @ 0x000[E-] REG NA DefList: { } N005 ( 1, 4) [000045] H---------- * CNS_INT(h) ref '"in try"' REG NA $c0 Interval 1: ref RefPositions {} physReg:NA Preferences=[allInt] Aversions=[allMask] CNS_INT BB02 regmask=[allInt] minReg=1 wt=400.00> DefList: { N005.t45. CNS_INT } N007 (???,???) [000066] ----------- * PUTARG_REG ref REG ecx BB02 regmask=[ecx] minReg=1 wt=100.00> BB02 regmask=[ecx] minReg=1 last fixed wt=100.00> Interval 2: ref RefPositions {} physReg:NA Preferences=[allInt] Aversions=[allMask] BB02 regmask=[ecx] minReg=1 wt=100.00> PUTARG_REG BB02 regmask=[ecx] minReg=1 fixed wt=400.00> DefList: { N007.t66. PUTARG_REG } N009 ( 15, 10) [000007] --CXG------ * CALL void System.Console:WriteLine(System.String) REG NA $VN.Void BB02 regmask=[ecx] minReg=1 wt=100.00> BB02 regmask=[ecx] minReg=1 last fixed wt=100.00> BB02 regmask=[eax] minReg=1 wt=100.00> BB02 regmask=[ecx] minReg=1 wt=100.00> BB02 regmask=[edx] minReg=1 wt=100.00> CHECKING LAST USES for BB02, liveout={} ============================== use: {} def: {} NEW BLOCK BB03 Setting BB02 as the predecessor for determining incoming variable registers of BB03 DefList: { } N013 (???,???) [000054] ----------- * IL_OFFSET void INLRT @ 0x00A[E-] REG NA DefList: { } N015 ( 1, 4) [000046] H---------- * CNS_INT(h) ref '" in try"' REG NA $c1 Interval 3: ref RefPositions {} physReg:NA Preferences=[allInt] Aversions=[allMask] CNS_INT BB03 regmask=[allInt] minReg=1 wt=400.00> DefList: { N015.t46. CNS_INT } N017 (???,???) [000067] ----------- * PUTARG_REG ref REG ecx BB03 regmask=[ecx] minReg=1 wt=100.00> BB03 regmask=[ecx] minReg=1 last fixed wt=100.00> Interval 4: ref RefPositions {} physReg:NA Preferences=[allInt] Aversions=[allMask] BB03 regmask=[ecx] minReg=1 wt=100.00> PUTARG_REG BB03 regmask=[ecx] minReg=1 fixed wt=400.00> DefList: { N017.t67. PUTARG_REG } N019 ( 15, 10) [000015] --CXG------ * CALL void System.Console:WriteLine(System.String) REG NA $VN.Void BB03 regmask=[ecx] minReg=1 wt=100.00> BB03 regmask=[ecx] minReg=1 last fixed wt=100.00> BB03 regmask=[eax] minReg=1 wt=100.00> BB03 regmask=[ecx] minReg=1 wt=100.00> BB03 regmask=[edx] minReg=1 wt=100.00> CHECKING LAST USES for BB03, liveout={} ============================== use: {} def: {} NEW BLOCK BB04 Setting BB03 as the predecessor for determining incoming variable registers of BB04 DefList: { } N023 (???,???) [000055] ----------- * IL_OFFSET void INLRT @ 0x014[E-] REG NA DefList: { } N025 ( 1, 4) [000047] H---------- * CNS_INT(h) ref '" in try"' REG NA $c2 Interval 5: ref RefPositions {} physReg:NA Preferences=[allInt] Aversions=[allMask] CNS_INT BB04 regmask=[allInt] minReg=1 wt=400.00> DefList: { N025.t47. CNS_INT } N027 (???,???) [000068] ----------- * PUTARG_REG ref REG ecx BB04 regmask=[ecx] minReg=1 wt=100.00> BB04 regmask=[ecx] minReg=1 last fixed wt=100.00> Interval 6: ref RefPositions {} physReg:NA Preferences=[allInt] Aversions=[allMask] BB04 regmask=[ecx] minReg=1 wt=100.00> PUTARG_REG BB04 regmask=[ecx] minReg=1 fixed wt=400.00> DefList: { N027.t68. PUTARG_REG } N029 ( 15, 10) [000017] --CXG------ * CALL void System.Console:WriteLine(System.String) REG NA $VN.Void BB04 regmask=[ecx] minReg=1 wt=100.00> BB04 regmask=[ecx] minReg=1 last fixed wt=100.00> BB04 regmask=[eax] minReg=1 wt=100.00> BB04 regmask=[ecx] minReg=1 wt=100.00> BB04 regmask=[edx] minReg=1 wt=100.00> CHECKING LAST USES for BB04, liveout={} ============================== use: {} def: {} NEW BLOCK BB07 Incoming EH boundary; firstColdLoc = 33 DefList: { } N033 (???,???) [000057] ----------- * IL_OFFSET void INLRT @ 0x023[E-] REG NA DefList: { } N035 ( 1, 4) [000048] H---------- * CNS_INT(h) ref '" in finally"' REG NA $c3 Interval 7: ref RefPositions {} physReg:NA Preferences=[allInt] Aversions=[allMask] CNS_INT BB07 regmask=[allInt] minReg=1 wt=0.00> DefList: { N035.t48. CNS_INT } N037 (???,???) [000069] ----------- * PUTARG_REG ref REG ecx BB07 regmask=[ecx] minReg=1 wt=0.00> BB07 regmask=[ecx] minReg=1 last fixed wt=0.00> Interval 8: ref RefPositions {} physReg:NA Preferences=[allInt] Aversions=[allMask] BB07 regmask=[ecx] minReg=1 wt=0.00> PUTARG_REG BB07 regmask=[ecx] minReg=1 fixed wt=0.00> DefList: { N037.t69. PUTARG_REG } N039 ( 15, 10) [000020] --CXG------ * CALL void System.Console:WriteLine(System.String) REG NA $VN.Void BB07 regmask=[ecx] minReg=1 wt=0.00> BB07 regmask=[ecx] minReg=1 last fixed wt=0.00> BB07 regmask=[eax] minReg=1 wt=0.00> BB07 regmask=[ecx] minReg=1 wt=0.00> BB07 regmask=[edx] minReg=1 wt=0.00> DefList: { } N041 (???,???) [000058] ----------- * IL_OFFSET void INLRT @ 0x02D[E-] REG NA DefList: { } N043 ( 1, 4) [000021] H---------- * CNS_INT(h) int 0x425450 class REG NA $141 Interval 9: int RefPositions {} physReg:NA Preferences=[allInt] Aversions=[allMask] CNS_INT BB07 regmask=[allInt] minReg=1 wt=0.00> DefList: { N043.t21. CNS_INT } N045 (???,???) [000070] ----------- * PUTARG_REG int REG ecx BB07 regmask=[ecx] minReg=1 wt=0.00> BB07 regmask=[ecx] minReg=1 last fixed wt=0.00> Interval 10: int RefPositions {} physReg:NA Preferences=[allInt] Aversions=[allMask] BB07 regmask=[ecx] minReg=1 wt=0.00> PUTARG_REG BB07 regmask=[ecx] minReg=1 fixed wt=0.00> DefList: { N045.t70. PUTARG_REG } N047 ( 15, 10) [000022] --C-------- * CALL help ref CORINFO_HELP_NEWSFAST REG NA $1c0 BB07 regmask=[ecx] minReg=1 wt=0.00> BB07 regmask=[ecx] minReg=1 last fixed wt=0.00> BB07 regmask=[eax] minReg=1 wt=0.00> BB07 regmask=[ecx] minReg=1 wt=0.00> BB07 regmask=[edx] minReg=1 wt=0.00> Interval 11: ref RefPositions {} physReg:NA Preferences=[allInt] Aversions=[allMask] BB07 regmask=[eax] minReg=1 wt=0.00> CALL BB07 regmask=[eax] minReg=1 fixed wt=0.00> DefList: { N047.t22. CALL } N049 ( 19, 13) [000023] DAC-------- * STORE_LCL_VAR ref V03 tmp2 d:1 NA REG NA $VN.Void BB07 regmask=[allInt] minReg=1 last wt=0.00> Assigning related to STORE_LCL_VAR BB07 regmask=[allInt] minReg=1 last wt=0.00> DefList: { } N051 ( 3, 2) [000024] ----------- * LCL_VAR ref V03 tmp2 u:1 NA REG NA $1c0 DefList: { } N053 (???,???) [000071] ----------- * PUTARG_REG ref REG ecx BB07 regmask=[ecx] minReg=1 wt=0.00> LCL_VAR BB07 regmask=[ecx] minReg=1 last fixed wt=0.00> Setting putarg_reg as a pass-through of a non-last use lclVar Interval 12: ref RefPositions {} physReg:NA Preferences=[allInt] Aversions=[allMask] BB07 regmask=[ecx] minReg=1 wt=0.00> PUTARG_REG BB07 regmask=[ecx] minReg=1 fixed wt=0.00> Assigning related to DefList: { N053.t71. PUTARG_REG } N055 ( 17, 8) [000025] --CXG------ * CALL void System.Exception:.ctor():this REG NA $VN.Void BB07 regmask=[ecx] minReg=1 wt=0.00> BB07 regmask=[ecx] minReg=1 last fixed wt=0.00> BB07 regmask=[eax] minReg=1 wt=0.00> BB07 regmask=[ecx] minReg=1 wt=0.00> BB07 regmask=[edx] minReg=1 wt=0.00> DefList: { } N057 (???,???) [000059] ----------- * IL_OFFSET void INLRT @ 0x032[--] REG NA DefList: { } N059 ( 3, 2) [000026] ----------- * LCL_VAR ref V03 tmp2 u:1 NA (last use) REG NA $1c0 DefList: { } N061 (???,???) [000072] ----------- * PUTARG_REG ref REG ecx BB07 regmask=[ecx] minReg=1 wt=0.00> LCL_VAR BB07 regmask=[ecx] minReg=1 last fixed wt=0.00> Interval 13: ref RefPositions {} physReg:NA Preferences=[allInt] Aversions=[allMask] BB07 regmask=[ecx] minReg=1 wt=0.00> PUTARG_REG BB07 regmask=[ecx] minReg=1 fixed wt=0.00> DefList: { N061.t72. PUTARG_REG } N063 ( 17, 8) [000027] --CXG------ * CALL help void CORINFO_HELP_THROW REG NA $1c2 BB07 regmask=[ecx] minReg=1 wt=0.00> BB07 regmask=[ecx] minReg=1 last fixed wt=0.00> BB07 regmask=[eax] minReg=1 wt=0.00> BB07 regmask=[ecx] minReg=1 wt=0.00> BB07 regmask=[edx] minReg=1 wt=0.00> CHECKING LAST USES for BB07, liveout={} ============================== use: {} def: {V03} NEW BLOCK BB05 Incoming EH boundary; DefList: { } N067 ( 1, 1) [000044] ----------- * NO_OP void REG NA $VN.Void CHECKING LAST USES for BB05, liveout={} ============================== use: {} def: {} NEW BLOCK BB06 Setting BB05 as the predecessor for determining incoming variable registers of BB06 DefList: { } N071 (???,???) [000056] ----------- * IL_OFFSET void INLRT @ 0x07B[E-] REG NA DefList: { } N073 ( 0, 0) [000018] ----------- * RETURN void REG NA $VN.Void CHECKING LAST USES for BB06, liveout={} ============================== use: {} def: {} NEW BLOCK BB08 Incoming EH boundary; CHECKING LAST USES for BB08, liveout={} ============================== use: {} def: {} NEW BLOCK BB09 Setting BB08 as the predecessor for determining incoming variable registers of BB09 DefList: { } N079 (???,???) [000060] ----------- * IL_OFFSET void INLRT @ 0x03B[E-] REG NA DefList: { } N081 ( 1, 4) [000049] H---------- * CNS_INT(h) ref '" in filter"' REG NA $c4 Interval 14: ref RefPositions {} physReg:NA Preferences=[allInt] Aversions=[allMask] CNS_INT BB09 regmask=[allInt] minReg=1 wt=0.00> DefList: { N081.t49. CNS_INT } N083 (???,???) [000073] ----------- * PUTARG_REG ref REG ecx BB09 regmask=[ecx] minReg=1 wt=0.00> BB09 regmask=[ecx] minReg=1 last fixed wt=0.00> Interval 15: ref RefPositions {} physReg:NA Preferences=[allInt] Aversions=[allMask] BB09 regmask=[ecx] minReg=1 wt=0.00> PUTARG_REG BB09 regmask=[ecx] minReg=1 fixed wt=0.00> DefList: { N083.t73. PUTARG_REG } N085 ( 15, 10) [000029] --CXG------ * CALL void System.Console:WriteLine(System.String) REG NA $VN.Void BB09 regmask=[ecx] minReg=1 wt=0.00> BB09 regmask=[ecx] minReg=1 last fixed wt=0.00> BB09 regmask=[eax] minReg=1 wt=0.00> BB09 regmask=[ecx] minReg=1 wt=0.00> BB09 regmask=[edx] minReg=1 wt=0.00> DefList: { } N087 (???,???) [000061] ----------- * IL_OFFSET void INLRT @ 0x045[E-] REG NA DefList: { } N089 ( 1, 1) [000030] ----------- * CNS_INT int 0 REG NA $49 Interval 16: int RefPositions {} physReg:NA Preferences=[allInt] Aversions=[allMask] CNS_INT BB09 regmask=[allInt] minReg=1 wt=0.00> DefList: { N089.t30. CNS_INT } N091 ( 2, 2) [000031] ----------- * RETFILT int REG NA $VN.Void BB09 regmask=[eax] minReg=1 wt=0.00> BB09 regmask=[eax] minReg=1 last fixed wt=0.00> CHECKING LAST USES for BB09, liveout={} ============================== use: {} def: {} NEW BLOCK BB10 Incoming EH boundary; DefList: { } N095 (???,???) [000062] ----------- * IL_OFFSET void INLRT @ 0x049[E-] REG NA DefList: { } N097 ( 1, 4) [000050] H---------- * CNS_INT(h) ref '" in handler"' REG NA $c5 Interval 17: ref RefPositions {} physReg:NA Preferences=[allInt] Aversions=[allMask] CNS_INT BB10 regmask=[allInt] minReg=1 wt=0.00> DefList: { N097.t50. CNS_INT } N099 (???,???) [000074] ----------- * PUTARG_REG ref REG ecx BB10 regmask=[ecx] minReg=1 wt=0.00> BB10 regmask=[ecx] minReg=1 last fixed wt=0.00> Interval 18: ref RefPositions {} physReg:NA Preferences=[allInt] Aversions=[allMask] BB10 regmask=[ecx] minReg=1 wt=0.00> PUTARG_REG BB10 regmask=[ecx] minReg=1 fixed wt=0.00> DefList: { N099.t74. PUTARG_REG } N101 ( 15, 10) [000035] --CXG------ * CALL void System.Console:WriteLine(System.String) REG NA $VN.Void BB10 regmask=[ecx] minReg=1 wt=0.00> BB10 regmask=[ecx] minReg=1 last fixed wt=0.00> BB10 regmask=[eax] minReg=1 wt=0.00> BB10 regmask=[ecx] minReg=1 wt=0.00> BB10 regmask=[edx] minReg=1 wt=0.00> CHECKING LAST USES for BB10, liveout={} ============================== use: {} def: {} NEW BLOCK BB11 Incoming EH boundary; CHECKING LAST USES for BB11, liveout={} ============================== use: {} def: {} NEW BLOCK BB12 Setting BB11 as the predecessor for determining incoming variable registers of BB12 DefList: { } N107 (???,???) [000063] ----------- * IL_OFFSET void INLRT @ 0x05E[E-] REG NA DefList: { } N109 ( 1, 4) [000051] H---------- * CNS_INT(h) ref '"in filter"' REG NA $c6 Interval 19: ref RefPositions {} physReg:NA Preferences=[allInt] Aversions=[allMask] CNS_INT BB12 regmask=[allInt] minReg=1 wt=0.00> DefList: { N109.t51. CNS_INT } N111 (???,???) [000075] ----------- * PUTARG_REG ref REG ecx BB12 regmask=[ecx] minReg=1 wt=0.00> BB12 regmask=[ecx] minReg=1 last fixed wt=0.00> Interval 20: ref RefPositions {} physReg:NA Preferences=[allInt] Aversions=[allMask] BB12 regmask=[ecx] minReg=1 wt=0.00> PUTARG_REG BB12 regmask=[ecx] minReg=1 fixed wt=0.00> DefList: { N111.t75. PUTARG_REG } N113 ( 15, 10) [000037] --CXG------ * CALL void System.Console:WriteLine(System.String) REG NA $VN.Void BB12 regmask=[ecx] minReg=1 wt=0.00> BB12 regmask=[ecx] minReg=1 last fixed wt=0.00> BB12 regmask=[eax] minReg=1 wt=0.00> BB12 regmask=[ecx] minReg=1 wt=0.00> BB12 regmask=[edx] minReg=1 wt=0.00> DefList: { } N115 (???,???) [000064] ----------- * IL_OFFSET void INLRT @ 0x068[E-] REG NA DefList: { } N117 ( 1, 1) [000038] ----------- * CNS_INT int 0 REG NA $49 Interval 21: int RefPositions {} physReg:NA Preferences=[allInt] Aversions=[allMask] CNS_INT BB12 regmask=[allInt] minReg=1 wt=0.00> DefList: { N117.t38. CNS_INT } N119 ( 2, 2) [000039] ----------- * RETFILT int REG NA $VN.Void BB12 regmask=[eax] minReg=1 wt=0.00> BB12 regmask=[eax] minReg=1 last fixed wt=0.00> CHECKING LAST USES for BB12, liveout={} ============================== use: {} def: {} NEW BLOCK BB13 Incoming EH boundary; DefList: { } N123 (???,???) [000065] ----------- * IL_OFFSET void INLRT @ 0x06C[E-] REG NA DefList: { } N125 ( 1, 4) [000052] H---------- * CNS_INT(h) ref '"in handler"' REG NA $c7 Interval 22: ref RefPositions {} physReg:NA Preferences=[allInt] Aversions=[allMask] CNS_INT BB13 regmask=[allInt] minReg=1 wt=0.00> DefList: { N125.t52. CNS_INT } N127 (???,???) [000076] ----------- * PUTARG_REG ref REG ecx BB13 regmask=[ecx] minReg=1 wt=0.00> BB13 regmask=[ecx] minReg=1 last fixed wt=0.00> Interval 23: ref RefPositions {} physReg:NA Preferences=[allInt] Aversions=[allMask] BB13 regmask=[ecx] minReg=1 wt=0.00> PUTARG_REG BB13 regmask=[ecx] minReg=1 fixed wt=0.00> DefList: { N127.t76. PUTARG_REG } N129 ( 15, 10) [000043] --CXG------ * CALL void System.Console:WriteLine(System.String) REG NA $VN.Void BB13 regmask=[ecx] minReg=1 wt=0.00> BB13 regmask=[ecx] minReg=1 last fixed wt=0.00> BB13 regmask=[eax] minReg=1 wt=0.00> BB13 regmask=[ecx] minReg=1 wt=0.00> BB13 regmask=[edx] minReg=1 wt=0.00> CHECKING LAST USES for BB13, liveout={} ============================== use: {} def: {} Linear scan intervals BEFORE VALIDATING INTERVALS: Interval 0: (V03) ref RefPositions {#57@50 #59@53 #68@61} physReg:NA Preferences=[ebx esi edi] Aversions=[eax ecx edx] Interval 1: ref (constant) RefPositions {#1@6 #3@7} physReg:NA Preferences=[ecx] Aversions=[allMask] Interval 2: ref RefPositions {#5@8 #7@9} physReg:NA Preferences=[ecx] Aversions=[allMask] Interval 3: ref (constant) RefPositions {#12@16 #14@17} physReg:NA Preferences=[ecx] Aversions=[allMask] Interval 4: ref RefPositions {#16@18 #18@19} physReg:NA Preferences=[ecx] Aversions=[allMask] Interval 5: ref (constant) RefPositions {#23@26 #25@27} physReg:NA Preferences=[ecx] Aversions=[allMask] Interval 6: ref RefPositions {#27@28 #29@29} physReg:NA Preferences=[ecx] Aversions=[allMask] Interval 7: ref (constant) RefPositions {#34@36 #36@37} physReg:NA Preferences=[ecx] Aversions=[allMask] Interval 8: ref RefPositions {#38@38 #40@39} physReg:NA Preferences=[ecx] Aversions=[allMask] Interval 9: int (constant) RefPositions {#44@44 #46@45} physReg:NA Preferences=[ecx] Aversions=[allMask] Interval 10: int RefPositions {#48@46 #50@47} physReg:NA Preferences=[ecx] Aversions=[allMask] Interval 11: ref RefPositions {#55@48 #56@49} physReg:NA Preferences=[eax] Aversions=[allMask] RelatedInterval Interval 12: ref (specialPutArg) RefPositions {#61@54 #63@55} physReg:NA Preferences=[ecx] Aversions=[allMask] RelatedInterval Interval 13: ref RefPositions {#70@62 #72@63} physReg:NA Preferences=[ecx] Aversions=[allMask] Interval 14: ref (constant) RefPositions {#80@82 #82@83} physReg:NA Preferences=[ecx] Aversions=[allMask] Interval 15: ref RefPositions {#84@84 #86@85} physReg:NA Preferences=[ecx] Aversions=[allMask] Interval 16: int (constant) RefPositions {#90@90 #92@91} physReg:NA Preferences=[eax] Aversions=[allMask] Interval 17: ref (constant) RefPositions {#94@98 #96@99} physReg:NA Preferences=[ecx] Aversions=[allMask] Interval 18: ref RefPositions {#98@100 #100@101} physReg:NA Preferences=[ecx] Aversions=[allMask] Interval 19: ref (constant) RefPositions {#106@110 #108@111} physReg:NA Preferences=[ecx] Aversions=[allMask] Interval 20: ref RefPositions {#110@112 #112@113} physReg:NA Preferences=[ecx] Aversions=[allMask] Interval 21: int (constant) RefPositions {#116@118 #118@119} physReg:NA Preferences=[eax] Aversions=[allMask] Interval 22: ref (constant) RefPositions {#120@126 #122@127} physReg:NA Preferences=[ecx] Aversions=[allMask] Interval 23: ref RefPositions {#124@128 #126@129} physReg:NA Preferences=[ecx] Aversions=[allMask] ------------ REFPOSITIONS BEFORE VALIDATING INTERVALS: ------------ CNS_INT BB02 regmask=[ecx] minReg=1 wt=400.00> BB02 regmask=[ecx] minReg=1 wt=100.00> BB02 regmask=[ecx] minReg=1 last fixed wt=100.00> BB02 regmask=[ecx] minReg=1 wt=100.00> PUTARG_REG BB02 regmask=[ecx] minReg=1 fixed wt=400.00> BB02 regmask=[ecx] minReg=1 wt=100.00> BB02 regmask=[ecx] minReg=1 last fixed wt=100.00> BB02 regmask=[eax] minReg=1 last wt=100.00> BB02 regmask=[ecx] minReg=1 last wt=100.00> BB02 regmask=[edx] minReg=1 last wt=100.00> CNS_INT BB03 regmask=[ecx] minReg=1 wt=400.00> BB03 regmask=[ecx] minReg=1 wt=100.00> BB03 regmask=[ecx] minReg=1 last fixed wt=100.00> BB03 regmask=[ecx] minReg=1 wt=100.00> PUTARG_REG BB03 regmask=[ecx] minReg=1 fixed wt=400.00> BB03 regmask=[ecx] minReg=1 wt=100.00> BB03 regmask=[ecx] minReg=1 last fixed wt=100.00> BB03 regmask=[eax] minReg=1 last wt=100.00> BB03 regmask=[ecx] minReg=1 last wt=100.00> BB03 regmask=[edx] minReg=1 last wt=100.00> CNS_INT BB04 regmask=[ecx] minReg=1 wt=400.00> BB04 regmask=[ecx] minReg=1 wt=100.00> BB04 regmask=[ecx] minReg=1 last fixed wt=100.00> BB04 regmask=[ecx] minReg=1 wt=100.00> PUTARG_REG BB04 regmask=[ecx] minReg=1 fixed wt=400.00> BB04 regmask=[ecx] minReg=1 wt=100.00> BB04 regmask=[ecx] minReg=1 last fixed wt=100.00> BB04 regmask=[eax] minReg=1 last wt=100.00> BB04 regmask=[ecx] minReg=1 last wt=100.00> BB04 regmask=[edx] minReg=1 last wt=100.00> CNS_INT BB07 regmask=[ecx] minReg=1 wt=0.00> BB07 regmask=[ecx] minReg=1 wt=0.00> BB07 regmask=[ecx] minReg=1 last fixed wt=0.00> BB07 regmask=[ecx] minReg=1 wt=0.00> PUTARG_REG BB07 regmask=[ecx] minReg=1 fixed wt=0.00> BB07 regmask=[ecx] minReg=1 wt=0.00> BB07 regmask=[ecx] minReg=1 last fixed wt=0.00> BB07 regmask=[eax] minReg=1 last wt=0.00> BB07 regmask=[ecx] minReg=1 last wt=0.00> BB07 regmask=[edx] minReg=1 last wt=0.00> CNS_INT BB07 regmask=[ecx] minReg=1 wt=0.00> BB07 regmask=[ecx] minReg=1 wt=0.00> BB07 regmask=[ecx] minReg=1 last fixed wt=0.00> BB07 regmask=[ecx] minReg=1 wt=0.00> PUTARG_REG BB07 regmask=[ecx] minReg=1 fixed wt=0.00> BB07 regmask=[ecx] minReg=1 wt=0.00> BB07 regmask=[ecx] minReg=1 last fixed wt=0.00> BB07 regmask=[eax] minReg=1 last wt=0.00> BB07 regmask=[ecx] minReg=1 last wt=0.00> BB07 regmask=[edx] minReg=1 last wt=0.00> BB07 regmask=[eax] minReg=1 wt=0.00> CALL BB07 regmask=[eax] minReg=1 fixed wt=0.00> BB07 regmask=[allInt] minReg=1 last wt=0.00> STORE_LCL_VAR BB07 regmask=[allInt] minReg=1 wt=0.00> BB07 regmask=[ecx] minReg=1 wt=0.00> LCL_VAR BB07 regmask=[ecx] minReg=1 fixed wt=0.00> BB07 regmask=[ecx] minReg=1 wt=0.00> PUTARG_REG BB07 regmask=[ecx] minReg=1 fixed wt=0.00> BB07 regmask=[ecx] minReg=1 wt=0.00> BB07 regmask=[ecx] minReg=1 last fixed wt=0.00> BB07 regmask=[eax] minReg=1 last wt=0.00> BB07 regmask=[ecx] minReg=1 last wt=0.00> BB07 regmask=[edx] minReg=1 last wt=0.00> BB07 regmask=[ecx] minReg=1 wt=0.00> LCL_VAR BB07 regmask=[ecx] minReg=1 last fixed wt=0.00> BB07 regmask=[ecx] minReg=1 wt=0.00> PUTARG_REG BB07 regmask=[ecx] minReg=1 fixed wt=0.00> BB07 regmask=[ecx] minReg=1 wt=0.00> BB07 regmask=[ecx] minReg=1 last fixed wt=0.00> BB07 regmask=[eax] minReg=1 last wt=0.00> BB07 regmask=[ecx] minReg=1 last wt=0.00> BB07 regmask=[edx] minReg=1 last wt=0.00> CNS_INT BB09 regmask=[ecx] minReg=1 wt=0.00> BB09 regmask=[ecx] minReg=1 wt=0.00> BB09 regmask=[ecx] minReg=1 last fixed wt=0.00> BB09 regmask=[ecx] minReg=1 wt=0.00> PUTARG_REG BB09 regmask=[ecx] minReg=1 fixed wt=0.00> BB09 regmask=[ecx] minReg=1 wt=0.00> BB09 regmask=[ecx] minReg=1 last fixed wt=0.00> BB09 regmask=[eax] minReg=1 last wt=0.00> BB09 regmask=[ecx] minReg=1 last wt=0.00> BB09 regmask=[edx] minReg=1 last wt=0.00> CNS_INT BB09 regmask=[eax] minReg=1 wt=0.00> BB09 regmask=[eax] minReg=1 wt=0.00> BB09 regmask=[eax] minReg=1 last fixed wt=0.00> CNS_INT BB10 regmask=[ecx] minReg=1 wt=0.00> BB10 regmask=[ecx] minReg=1 wt=0.00> BB10 regmask=[ecx] minReg=1 last fixed wt=0.00> BB10 regmask=[ecx] minReg=1 wt=0.00> PUTARG_REG BB10 regmask=[ecx] minReg=1 fixed wt=0.00> BB10 regmask=[ecx] minReg=1 wt=0.00> BB10 regmask=[ecx] minReg=1 last fixed wt=0.00> BB10 regmask=[eax] minReg=1 last wt=0.00> BB10 regmask=[ecx] minReg=1 last wt=0.00> BB10 regmask=[edx] minReg=1 last wt=0.00> CNS_INT BB12 regmask=[ecx] minReg=1 wt=0.00> BB12 regmask=[ecx] minReg=1 wt=0.00> BB12 regmask=[ecx] minReg=1 last fixed wt=0.00> BB12 regmask=[ecx] minReg=1 wt=0.00> PUTARG_REG BB12 regmask=[ecx] minReg=1 fixed wt=0.00> BB12 regmask=[ecx] minReg=1 wt=0.00> BB12 regmask=[ecx] minReg=1 last fixed wt=0.00> BB12 regmask=[eax] minReg=1 last wt=0.00> BB12 regmask=[ecx] minReg=1 last wt=0.00> BB12 regmask=[edx] minReg=1 last wt=0.00> CNS_INT BB12 regmask=[eax] minReg=1 wt=0.00> BB12 regmask=[eax] minReg=1 wt=0.00> BB12 regmask=[eax] minReg=1 last fixed wt=0.00> CNS_INT BB13 regmask=[ecx] minReg=1 wt=0.00> BB13 regmask=[ecx] minReg=1 wt=0.00> BB13 regmask=[ecx] minReg=1 last fixed wt=0.00> BB13 regmask=[ecx] minReg=1 wt=0.00> PUTARG_REG BB13 regmask=[ecx] minReg=1 fixed wt=0.00> BB13 regmask=[ecx] minReg=1 wt=0.00> BB13 regmask=[ecx] minReg=1 last fixed wt=0.00> BB13 regmask=[eax] minReg=1 last wt=0.00> BB13 regmask=[ecx] minReg=1 last wt=0.00> BB13 regmask=[edx] minReg=1 last wt=0.00> ------------ REFPOSITIONS DURING VALIDATE INTERVALS (RefPositions per interval) ------------ ----------------- STORE_LCL_VAR BB07 regmask=[allInt] minReg=1 wt=0.00> LCL_VAR BB07 regmask=[ecx] minReg=1 fixed wt=0.00> LCL_VAR BB07 regmask=[ecx] minReg=1 last fixed wt=0.00> TUPLE STYLE DUMP WITH REF POSITIONS Incoming Parameters: BB02 [0000] [000..00A) -> BB03 (always), preds={} succs={BB03} ===== N003. IL_OFFSET INLRT @ 0x000[E-] N005. CNS_INT(h) '"in try"' Def:(#1) N007. PUTARG_REG Use:(#3) Fixed:ecx(#2) * Def:(#5) ecx N009. CALL Use:(#7) Fixed:ecx(#6) * Kill: eax ecx edx BB03 [0001] [00A..014) -> BB04 (always), preds={BB02} succs={BB04} ===== N013. IL_OFFSET INLRT @ 0x00A[E-] N015. CNS_INT(h) '" in try"' Def:(#12) N017. PUTARG_REG Use:(#14) Fixed:ecx(#13) * Def:(#16) ecx N019. CALL Use:(#18) Fixed:ecx(#17) * Kill: eax ecx edx BB04 [0002] [014..023) -> BB07 (callf), preds={BB03} succs={BB07} ===== N023. IL_OFFSET INLRT @ 0x014[E-] N025. CNS_INT(h) '" in try"' Def:(#23) N027. PUTARG_REG Use:(#25) Fixed:ecx(#24) * Def:(#27) ecx N029. CALL Use:(#29) Fixed:ecx(#28) * Kill: eax ecx edx BB07 [0003] [023..033) (throw), preds={BB04} succs={} ===== N033. IL_OFFSET INLRT @ 0x023[E-] N035. CNS_INT(h) '" in finally"' Def:(#34) N037. PUTARG_REG Use:(#36) Fixed:ecx(#35) * Def:(#38) ecx N039. CALL Use:(#40) Fixed:ecx(#39) * Kill: eax ecx edx N041. IL_OFFSET INLRT @ 0x02D[E-] N043. CNS_INT(h) 0x425450 class Def:(#44) N045. PUTARG_REG Use:(#46) Fixed:ecx(#45) * Def:(#48) ecx N047. CALL help Use:(#50) Fixed:ecx(#49) * Kill: eax ecx edx Def:(#55) eax Pref: N049. V03(L0) Use:(#56) * Def:(#57) N051. V03(L0) N053. PUTARG_REG Use:(#59) Fixed:ecx(#58) Def:(#61) ecx Pref: N055. CALL Use:(#63) Fixed:ecx(#62) * Kill: eax ecx edx N057. IL_OFFSET INLRT @ 0x032[--] N059. V03(L0) N061. PUTARG_REG Use:(#68) Fixed:ecx(#67) * Def:(#70) ecx N063. CALL help Use:(#72) Fixed:ecx(#71) * Kill: eax ecx edx BB05 [0008] [058..05D) -> BB06 (always), preds={BB10} succs={BB06} ===== N067. NO_OP BB06 [0011] [07B..07C) (return), preds={BB05,BB13} succs={} ===== N071. IL_OFFSET INLRT @ 0x07B[E-] N073. RETURN BB08 [0013] [03A..???) -> BB09 (always), preds={} succs={BB09} ===== BB09 [0006] [03A..048) -> BB10 (fltret), preds={BB08} succs={BB10} ===== N079. IL_OFFSET INLRT @ 0x03B[E-] N081. CNS_INT(h) '" in filter"' Def:(#80) N083. PUTARG_REG Use:(#82) Fixed:ecx(#81) * Def:(#84) ecx N085. CALL Use:(#86) Fixed:ecx(#85) * Kill: eax ecx edx N087. IL_OFFSET INLRT @ 0x045[E-] N089. CNS_INT 0 Def:(#90) N091. RETFILT Use:(#92) Fixed:eax(#91) * BB10 [0007] [048..058) -> BB05 (cret), preds={BB09} succs={BB05} ===== N095. IL_OFFSET INLRT @ 0x049[E-] N097. CNS_INT(h) '" in handler"' Def:(#94) N099. PUTARG_REG Use:(#96) Fixed:ecx(#95) * Def:(#98) ecx N101. CALL Use:(#100) Fixed:ecx(#99) * Kill: eax ecx edx BB11 [0012] [05D..???) -> BB12 (always), preds={} succs={BB12} ===== BB12 [0009] [05D..06B) -> BB13 (fltret), preds={BB11} succs={BB13} ===== N107. IL_OFFSET INLRT @ 0x05E[E-] N109. CNS_INT(h) '"in filter"' Def:(#106) N111. PUTARG_REG Use:(#108) Fixed:ecx(#107) * Def:(#110) ecx N113. CALL Use:(#112) Fixed:ecx(#111) * Kill: eax ecx edx N115. IL_OFFSET INLRT @ 0x068[E-] N117. CNS_INT 0 Def:(#116) N119. RETFILT Use:(#118) Fixed:eax(#117) * BB13 [0010] [06B..07B) -> BB06 (cret), preds={BB12} succs={BB06} ===== N123. IL_OFFSET INLRT @ 0x06C[E-] N125. CNS_INT(h) '"in handler"' Def:(#120) N127. PUTARG_REG Use:(#122) Fixed:ecx(#121) * Def:(#124) ecx N129. CALL Use:(#126) Fixed:ecx(#125) * Kill: eax ecx edx Linear scan intervals after buildIntervals: Interval 0: (V03) ref RefPositions {#57@50 #59@53 #68@61} physReg:NA Preferences=[ebx esi edi] Aversions=[eax ecx edx] Interval 1: ref (constant) RefPositions {#1@6 #3@7} physReg:NA Preferences=[ecx] Aversions=[allMask] Interval 2: ref RefPositions {#5@8 #7@9} physReg:NA Preferences=[ecx] Aversions=[allMask] Interval 3: ref (constant) RefPositions {#12@16 #14@17} physReg:NA Preferences=[ecx] Aversions=[allMask] Interval 4: ref RefPositions {#16@18 #18@19} physReg:NA Preferences=[ecx] Aversions=[allMask] Interval 5: ref (constant) RefPositions {#23@26 #25@27} physReg:NA Preferences=[ecx] Aversions=[allMask] Interval 6: ref RefPositions {#27@28 #29@29} physReg:NA Preferences=[ecx] Aversions=[allMask] Interval 7: ref (constant) RefPositions {#34@36 #36@37} physReg:NA Preferences=[ecx] Aversions=[allMask] Interval 8: ref RefPositions {#38@38 #40@39} physReg:NA Preferences=[ecx] Aversions=[allMask] Interval 9: int (constant) RefPositions {#44@44 #46@45} physReg:NA Preferences=[ecx] Aversions=[allMask] Interval 10: int RefPositions {#48@46 #50@47} physReg:NA Preferences=[ecx] Aversions=[allMask] Interval 11: ref RefPositions {#55@48 #56@49} physReg:NA Preferences=[eax] Aversions=[allMask] RelatedInterval Interval 12: ref (specialPutArg) RefPositions {#61@54 #63@55} physReg:NA Preferences=[ecx] Aversions=[allMask] RelatedInterval Interval 13: ref RefPositions {#70@62 #72@63} physReg:NA Preferences=[ecx] Aversions=[allMask] Interval 14: ref (constant) RefPositions {#80@82 #82@83} physReg:NA Preferences=[ecx] Aversions=[allMask] Interval 15: ref RefPositions {#84@84 #86@85} physReg:NA Preferences=[ecx] Aversions=[allMask] Interval 16: int (constant) RefPositions {#90@90 #92@91} physReg:NA Preferences=[eax] Aversions=[allMask] Interval 17: ref (constant) RefPositions {#94@98 #96@99} physReg:NA Preferences=[ecx] Aversions=[allMask] Interval 18: ref RefPositions {#98@100 #100@101} physReg:NA Preferences=[ecx] Aversions=[allMask] Interval 19: ref (constant) RefPositions {#106@110 #108@111} physReg:NA Preferences=[ecx] Aversions=[allMask] Interval 20: ref RefPositions {#110@112 #112@113} physReg:NA Preferences=[ecx] Aversions=[allMask] Interval 21: int (constant) RefPositions {#116@118 #118@119} physReg:NA Preferences=[eax] Aversions=[allMask] Interval 22: ref (constant) RefPositions {#120@126 #122@127} physReg:NA Preferences=[ecx] Aversions=[allMask] Interval 23: ref RefPositions {#124@128 #126@129} physReg:NA Preferences=[ecx] Aversions=[allMask] *************** In LinearScan::allocateRegisters() Linear scan intervals before allocateRegisters: Interval 0: (V03) ref RefPositions {#57@50 #59@53 #68@61} physReg:NA Preferences=[ebx esi edi] Aversions=[eax ecx edx] Interval 1: ref (constant) RefPositions {#1@6 #3@7} physReg:NA Preferences=[ecx] Aversions=[allMask] Interval 2: ref RefPositions {#5@8 #7@9} physReg:NA Preferences=[ecx] Aversions=[allMask] Interval 3: ref (constant) RefPositions {#12@16 #14@17} physReg:NA Preferences=[ecx] Aversions=[allMask] Interval 4: ref RefPositions {#16@18 #18@19} physReg:NA Preferences=[ecx] Aversions=[allMask] Interval 5: ref (constant) RefPositions {#23@26 #25@27} physReg:NA Preferences=[ecx] Aversions=[allMask] Interval 6: ref RefPositions {#27@28 #29@29} physReg:NA Preferences=[ecx] Aversions=[allMask] Interval 7: ref (constant) RefPositions {#34@36 #36@37} physReg:NA Preferences=[ecx] Aversions=[allMask] Interval 8: ref RefPositions {#38@38 #40@39} physReg:NA Preferences=[ecx] Aversions=[allMask] Interval 9: int (constant) RefPositions {#44@44 #46@45} physReg:NA Preferences=[ecx] Aversions=[allMask] Interval 10: int RefPositions {#48@46 #50@47} physReg:NA Preferences=[ecx] Aversions=[allMask] Interval 11: ref RefPositions {#55@48 #56@49} physReg:NA Preferences=[eax] Aversions=[allMask] RelatedInterval Interval 12: ref (specialPutArg) RefPositions {#61@54 #63@55} physReg:NA Preferences=[ecx] Aversions=[allMask] RelatedInterval Interval 13: ref RefPositions {#70@62 #72@63} physReg:NA Preferences=[ecx] Aversions=[allMask] Interval 14: ref (constant) RefPositions {#80@82 #82@83} physReg:NA Preferences=[ecx] Aversions=[allMask] Interval 15: ref RefPositions {#84@84 #86@85} physReg:NA Preferences=[ecx] Aversions=[allMask] Interval 16: int (constant) RefPositions {#90@90 #92@91} physReg:NA Preferences=[eax] Aversions=[allMask] Interval 17: ref (constant) RefPositions {#94@98 #96@99} physReg:NA Preferences=[ecx] Aversions=[allMask] Interval 18: ref RefPositions {#98@100 #100@101} physReg:NA Preferences=[ecx] Aversions=[allMask] Interval 19: ref (constant) RefPositions {#106@110 #108@111} physReg:NA Preferences=[ecx] Aversions=[allMask] Interval 20: ref RefPositions {#110@112 #112@113} physReg:NA Preferences=[ecx] Aversions=[allMask] Interval 21: int (constant) RefPositions {#116@118 #118@119} physReg:NA Preferences=[eax] Aversions=[allMask] Interval 22: ref (constant) RefPositions {#120@126 #122@127} physReg:NA Preferences=[ecx] Aversions=[allMask] Interval 23: ref RefPositions {#124@128 #126@129} physReg:NA Preferences=[ecx] Aversions=[allMask] ------------ REFPOSITIONS BEFORE ALLOCATION: ------------ CNS_INT BB02 regmask=[ecx] minReg=1 wt=400.00> BB02 regmask=[ecx] minReg=1 wt=100.00> BB02 regmask=[ecx] minReg=1 last fixed wt=100.00> BB02 regmask=[ecx] minReg=1 wt=100.00> PUTARG_REG BB02 regmask=[ecx] minReg=1 fixed wt=400.00> BB02 regmask=[ecx] minReg=1 wt=100.00> BB02 regmask=[ecx] minReg=1 last fixed wt=100.00> BB02 regmask=[eax] minReg=1 last wt=100.00> BB02 regmask=[ecx] minReg=1 last wt=100.00> BB02 regmask=[edx] minReg=1 last wt=100.00> CNS_INT BB03 regmask=[ecx] minReg=1 wt=400.00> BB03 regmask=[ecx] minReg=1 wt=100.00> BB03 regmask=[ecx] minReg=1 last fixed wt=100.00> BB03 regmask=[ecx] minReg=1 wt=100.00> PUTARG_REG BB03 regmask=[ecx] minReg=1 fixed wt=400.00> BB03 regmask=[ecx] minReg=1 wt=100.00> BB03 regmask=[ecx] minReg=1 last fixed wt=100.00> BB03 regmask=[eax] minReg=1 last wt=100.00> BB03 regmask=[ecx] minReg=1 last wt=100.00> BB03 regmask=[edx] minReg=1 last wt=100.00> CNS_INT BB04 regmask=[ecx] minReg=1 wt=400.00> BB04 regmask=[ecx] minReg=1 wt=100.00> BB04 regmask=[ecx] minReg=1 last fixed wt=100.00> BB04 regmask=[ecx] minReg=1 wt=100.00> PUTARG_REG BB04 regmask=[ecx] minReg=1 fixed wt=400.00> BB04 regmask=[ecx] minReg=1 wt=100.00> BB04 regmask=[ecx] minReg=1 last fixed wt=100.00> BB04 regmask=[eax] minReg=1 last wt=100.00> BB04 regmask=[ecx] minReg=1 last wt=100.00> BB04 regmask=[edx] minReg=1 last wt=100.00> CNS_INT BB07 regmask=[ecx] minReg=1 wt=0.00> BB07 regmask=[ecx] minReg=1 wt=0.00> BB07 regmask=[ecx] minReg=1 last fixed wt=0.00> BB07 regmask=[ecx] minReg=1 wt=0.00> PUTARG_REG BB07 regmask=[ecx] minReg=1 fixed wt=0.00> BB07 regmask=[ecx] minReg=1 wt=0.00> BB07 regmask=[ecx] minReg=1 last fixed wt=0.00> BB07 regmask=[eax] minReg=1 last wt=0.00> BB07 regmask=[ecx] minReg=1 last wt=0.00> BB07 regmask=[edx] minReg=1 last wt=0.00> CNS_INT BB07 regmask=[ecx] minReg=1 wt=0.00> BB07 regmask=[ecx] minReg=1 wt=0.00> BB07 regmask=[ecx] minReg=1 last fixed wt=0.00> BB07 regmask=[ecx] minReg=1 wt=0.00> PUTARG_REG BB07 regmask=[ecx] minReg=1 fixed wt=0.00> BB07 regmask=[ecx] minReg=1 wt=0.00> BB07 regmask=[ecx] minReg=1 last fixed wt=0.00> BB07 regmask=[eax] minReg=1 last wt=0.00> BB07 regmask=[ecx] minReg=1 last wt=0.00> BB07 regmask=[edx] minReg=1 last wt=0.00> BB07 regmask=[eax] minReg=1 wt=0.00> CALL BB07 regmask=[eax] minReg=1 fixed wt=0.00> BB07 regmask=[allInt] minReg=1 last wt=0.00> STORE_LCL_VAR BB07 regmask=[allInt] minReg=1 wt=0.00> BB07 regmask=[ecx] minReg=1 wt=0.00> LCL_VAR BB07 regmask=[ecx] minReg=1 fixed wt=0.00> BB07 regmask=[ecx] minReg=1 wt=0.00> PUTARG_REG BB07 regmask=[ecx] minReg=1 fixed wt=0.00> BB07 regmask=[ecx] minReg=1 wt=0.00> BB07 regmask=[ecx] minReg=1 last fixed wt=0.00> BB07 regmask=[eax] minReg=1 last wt=0.00> BB07 regmask=[ecx] minReg=1 last wt=0.00> BB07 regmask=[edx] minReg=1 last wt=0.00> BB07 regmask=[ecx] minReg=1 wt=0.00> LCL_VAR BB07 regmask=[ecx] minReg=1 last fixed wt=0.00> BB07 regmask=[ecx] minReg=1 wt=0.00> PUTARG_REG BB07 regmask=[ecx] minReg=1 fixed wt=0.00> BB07 regmask=[ecx] minReg=1 wt=0.00> BB07 regmask=[ecx] minReg=1 last fixed wt=0.00> BB07 regmask=[eax] minReg=1 last wt=0.00> BB07 regmask=[ecx] minReg=1 last wt=0.00> BB07 regmask=[edx] minReg=1 last wt=0.00> CNS_INT BB09 regmask=[ecx] minReg=1 wt=0.00> BB09 regmask=[ecx] minReg=1 wt=0.00> BB09 regmask=[ecx] minReg=1 last fixed wt=0.00> BB09 regmask=[ecx] minReg=1 wt=0.00> PUTARG_REG BB09 regmask=[ecx] minReg=1 fixed wt=0.00> BB09 regmask=[ecx] minReg=1 wt=0.00> BB09 regmask=[ecx] minReg=1 last fixed wt=0.00> BB09 regmask=[eax] minReg=1 last wt=0.00> BB09 regmask=[ecx] minReg=1 last wt=0.00> BB09 regmask=[edx] minReg=1 last wt=0.00> CNS_INT BB09 regmask=[eax] minReg=1 wt=0.00> BB09 regmask=[eax] minReg=1 wt=0.00> BB09 regmask=[eax] minReg=1 last fixed wt=0.00> CNS_INT BB10 regmask=[ecx] minReg=1 wt=0.00> BB10 regmask=[ecx] minReg=1 wt=0.00> BB10 regmask=[ecx] minReg=1 last fixed wt=0.00> BB10 regmask=[ecx] minReg=1 wt=0.00> PUTARG_REG BB10 regmask=[ecx] minReg=1 fixed wt=0.00> BB10 regmask=[ecx] minReg=1 wt=0.00> BB10 regmask=[ecx] minReg=1 last fixed wt=0.00> BB10 regmask=[eax] minReg=1 last wt=0.00> BB10 regmask=[ecx] minReg=1 last wt=0.00> BB10 regmask=[edx] minReg=1 last wt=0.00> CNS_INT BB12 regmask=[ecx] minReg=1 wt=0.00> BB12 regmask=[ecx] minReg=1 wt=0.00> BB12 regmask=[ecx] minReg=1 last fixed wt=0.00> BB12 regmask=[ecx] minReg=1 wt=0.00> PUTARG_REG BB12 regmask=[ecx] minReg=1 fixed wt=0.00> BB12 regmask=[ecx] minReg=1 wt=0.00> BB12 regmask=[ecx] minReg=1 last fixed wt=0.00> BB12 regmask=[eax] minReg=1 last wt=0.00> BB12 regmask=[ecx] minReg=1 last wt=0.00> BB12 regmask=[edx] minReg=1 last wt=0.00> CNS_INT BB12 regmask=[eax] minReg=1 wt=0.00> BB12 regmask=[eax] minReg=1 wt=0.00> BB12 regmask=[eax] minReg=1 last fixed wt=0.00> CNS_INT BB13 regmask=[ecx] minReg=1 wt=0.00> BB13 regmask=[ecx] minReg=1 wt=0.00> BB13 regmask=[ecx] minReg=1 last fixed wt=0.00> BB13 regmask=[ecx] minReg=1 wt=0.00> PUTARG_REG BB13 regmask=[ecx] minReg=1 fixed wt=0.00> BB13 regmask=[ecx] minReg=1 wt=0.00> BB13 regmask=[ecx] minReg=1 last fixed wt=0.00> BB13 regmask=[eax] minReg=1 last wt=0.00> BB13 regmask=[ecx] minReg=1 last wt=0.00> BB13 regmask=[edx] minReg=1 last wt=0.00> VAR REFPOSITIONS BEFORE ALLOCATION --- V00 --- V01 --- V02 --- V03 (Interval 0) STORE_LCL_VAR BB07 regmask=[allInt] minReg=1 wt=0.00> LCL_VAR BB07 regmask=[ecx] minReg=1 fixed wt=0.00> LCL_VAR BB07 regmask=[ecx] minReg=1 last fixed wt=0.00> --- V04 --- V05 Allocating Registers -------------------- The following table has one or more rows for each RefPosition that is handled during allocation. The columns are: (1) Loc: LSRA location, (2) RP#: RefPosition number, (3) Name, (4) Type (e.g. Def, Use, Fixd, Parm, DDef (Dummy Def), ExpU (Exposed Use), Kill) followed by a '*' if it is a last use, and a 'D' if it is delayRegFree, (5) Action taken during allocation. Some actions include (a) Alloc a new register, (b) Keep an existing register, (c) Spill a register, (d) ReLod (Reload) a register. If an ALL-CAPS name such as COVRS is displayed, it is a score name from lsra_score.h, with a trailing '(A)' indicating alloc, '(C)' indicating copy, and '(R)' indicating re-use. See dumpLsraAllocationEvent() for details. The subsequent columns show the Interval occupying each register, if any, followed by 'a' if it is active, 'p' if it is a large vector that has been partially spilled, and 'i' if it is inactive. Columns are only printed up to the last modified register, which may increase during allocation, in which case additional columns will appear. Registers which are not marked modified have ---- in their column. --------------------------------------------+----+----+----+----+ TreeID Loc RP# Name Type Action Reg |eax |ecx |edx |edi | --------------------------------------------+----+----+----+----+ | | | | | 1.#0 BB2 PredBB0 | | | | | [000045] 6.#1 C1 Def Alloc ecx | |C1 a| | | [000066] 7.#2 ecx Fixd Keep ecx | |C1 a| | | 7.#3 C1 Use * Keep ecx | |C1 a| | | 8.#4 ecx Fixd Keep ecx | | | | | 8.#5 I2 Def Alloc ecx | |I2 a| | | [000007] 9.#6 ecx Fixd Keep ecx | |I2 a| | | 9.#7 I2 Use * Keep ecx | |I2 a| | | 10.#8 eax Kill Keep eax | | | | | 10.#9 ecx Kill Keep ecx | | | | | 10.#10 edx Kill Keep edx | | | | | --------------------------------------------+----+----+----+----+ TreeID Loc RP# Name Type Action Reg |eax |ecx |edx |edi | --------------------------------------------+----+----+----+----+ 11.#11 BB3 PredBB2 | | | | | [000046] 16.#12 C3 Def Alloc ecx | |C3 a| | | [000067] 17.#13 ecx Fixd Keep ecx | |C3 a| | | 17.#14 C3 Use * Keep ecx | |C3 a| | | 18.#15 ecx Fixd Keep ecx | | | | | 18.#16 I4 Def Alloc ecx | |I4 a| | | [000015] 19.#17 ecx Fixd Keep ecx | |I4 a| | | 19.#18 I4 Use * Keep ecx | |I4 a| | | 20.#19 eax Kill Keep eax | | | | | 20.#20 ecx Kill Keep ecx | | | | | 20.#21 edx Kill Keep edx | | | | | --------------------------------------------+----+----+----+----+ TreeID Loc RP# Name Type Action Reg |eax |ecx |edx |edi | --------------------------------------------+----+----+----+----+ 21.#22 BB4 PredBB3 | | | | | [000047] 26.#23 C5 Def Alloc ecx | |C5 a| | | [000068] 27.#24 ecx Fixd Keep ecx | |C5 a| | | 27.#25 C5 Use * Keep ecx | |C5 a| | | 28.#26 ecx Fixd Keep ecx | | | | | 28.#27 I6 Def Alloc ecx | |I6 a| | | [000017] 29.#28 ecx Fixd Keep ecx | |I6 a| | | 29.#29 I6 Use * Keep ecx | |I6 a| | | 30.#30 eax Kill Keep eax | | | | | 30.#31 ecx Kill Keep ecx | | | | | 30.#32 edx Kill Keep edx | | | | | --------------------------------------------+----+----+----+----+ TreeID Loc RP# Name Type Action Reg |eax |ecx |edx |edi | --------------------------------------------+----+----+----+----+ 31.#33 BB7 PredBB0 | | | | | [000048] 36.#34 C7 Def Alloc ecx | |C7 a| | | [000069] 37.#35 ecx Fixd Keep ecx | |C7 a| | | 37.#36 C7 Use * Keep ecx | |C7 a| | | 38.#37 ecx Fixd Keep ecx | | | | | 38.#38 I8 Def Alloc ecx | |I8 a| | | [000020] 39.#39 ecx Fixd Keep ecx | |I8 a| | | 39.#40 I8 Use * Keep ecx | |I8 a| | | 40.#41 eax Kill Keep eax | | | | | 40.#42 ecx Kill Keep ecx | | | | | 40.#43 edx Kill Keep edx | | | | | [000021] 44.#44 C9 Def Alloc ecx | |C9 a| | | [000070] 45.#45 ecx Fixd Keep ecx | |C9 a| | | 45.#46 C9 Use * Keep ecx | |C9 a| | | 46.#47 ecx Fixd Keep ecx | | | | | 46.#48 I10 Def Alloc ecx | |I10a| | | [000022] 47.#49 ecx Fixd Keep ecx | |I10a| | | 47.#50 I10 Use * Keep ecx | |I10a| | | 48.#51 eax Kill Keep eax | | | | | 48.#52 ecx Kill Keep ecx | | | | | 48.#53 edx Kill Keep edx | | | | | 48.#54 eax Fixd Keep eax | | | | | 48.#55 I11 Def Alloc eax |I11a| | | | [000023] 49.#56 I11 Use * Keep eax |I11a| | | | --------------------------------------------+----+----+----+----+----+ TreeID Loc RP# Name Type Action Reg |eax |ecx |edx |esi |edi | --------------------------------------------+----+----+----+----+----+ 50.#57 V03 Def ORDER(A) esi | | | |V03a| | [000071] 53.#58 ecx Fixd Keep ecx | | | |V03a| | 53.#59 V03 Use Copy ecx | |V03a| |V03a| | 54.#60 ecx Fixd Keep ecx | |V03a| |V03a| | 54.#61 I12 Def Alloc ecx | |I12a| |V03a| | [000025] 55.#62 ecx Fixd Keep ecx | |I12a| |V03a| | 55.#63 I12 Use * Keep ecx | |I12a| |V03a| | 56.#64 eax Kill Keep eax | | | |V03a| | 56.#65 ecx Kill Keep ecx | | | |V03a| | 56.#66 edx Kill Keep edx | | | |V03a| | [000072] 61.#67 ecx Fixd Keep ecx | | | |V03a| | 61.#68 V03 Use * Copy ecx | |V03a| |V03a| | 62.#69 ecx Fixd Keep ecx | | | | | | 62.#70 I13 Def Alloc ecx | |I13a| | | | [000027] 63.#71 ecx Fixd Keep ecx | |I13a| | | | 63.#72 I13 Use * Keep ecx | |I13a| | | | 64.#73 eax Kill Keep eax | | | | | | 64.#74 ecx Kill Keep ecx | | | | | | 64.#75 edx Kill Keep edx | | | | | | --------------------------------------------+----+----+----+----+----+ TreeID Loc RP# Name Type Action Reg |eax |ecx |edx |esi |edi | --------------------------------------------+----+----+----+----+----+ 65.#76 BB5 PredBB0 | | | | | | --------------------------------------------+----+----+----+----+----+ TreeID Loc RP# Name Type Action Reg |eax |ecx |edx |esi |edi | --------------------------------------------+----+----+----+----+----+ 69.#77 BB6 PredBB5 | | | | | | --------------------------------------------+----+----+----+----+----+ TreeID Loc RP# Name Type Action Reg |eax |ecx |edx |esi |edi | --------------------------------------------+----+----+----+----+----+ 75.#78 BB8 PredBB0 | | | | | | --------------------------------------------+----+----+----+----+----+ TreeID Loc RP# Name Type Action Reg |eax |ecx |edx |esi |edi | --------------------------------------------+----+----+----+----+----+ 77.#79 BB9 PredBB8 | | | | | | [000049] 82.#80 C14 Def Alloc ecx | |C14a| | | | [000073] 83.#81 ecx Fixd Keep ecx | |C14a| | | | 83.#82 C14 Use * Keep ecx | |C14a| | | | 84.#83 ecx Fixd Keep ecx | | | | | | 84.#84 I15 Def Alloc ecx | |I15a| | | | [000029] 85.#85 ecx Fixd Keep ecx | |I15a| | | | 85.#86 I15 Use * Keep ecx | |I15a| | | | 86.#87 eax Kill Keep eax | | | | | | 86.#88 ecx Kill Keep ecx | | | | | | 86.#89 edx Kill Keep edx | | | | | | [000030] 90.#90 C16 Def Alloc eax |C16a| | | | | [000031] 91.#91 eax Fixd Keep eax |C16a| | | | | 91.#92 C16 Use * Keep eax |C16a| | | | | --------------------------------------------+----+----+----+----+----+ TreeID Loc RP# Name Type Action Reg |eax |ecx |edx |esi |edi | --------------------------------------------+----+----+----+----+----+ 93.#93 BB10 PredBB0 | | | | | | [000050] 98.#94 C17 Def Alloc ecx | |C17a| | | | [000074] 99.#95 ecx Fixd Keep ecx | |C17a| | | | 99.#96 C17 Use * Keep ecx | |C17a| | | | 100.#97 ecx Fixd Keep ecx | | | | | | 100.#98 I18 Def Alloc ecx | |I18a| | | | [000035] 101.#99 ecx Fixd Keep ecx | |I18a| | | | 101.#100 I18 Use * Keep ecx | |I18a| | | | 102.#101 eax Kill Keep eax | | | | | | 102.#102 ecx Kill Keep ecx | | | | | | 102.#103 edx Kill Keep edx | | | | | | --------------------------------------------+----+----+----+----+----+ TreeID Loc RP# Name Type Action Reg |eax |ecx |edx |esi |edi | --------------------------------------------+----+----+----+----+----+ 103.#104 BB11 PredBB0 | | | | | | --------------------------------------------+----+----+----+----+----+ TreeID Loc RP# Name Type Action Reg |eax |ecx |edx |esi |edi | --------------------------------------------+----+----+----+----+----+ 105.#105 BB12 PredBB11 | | | | | | [000051] 110.#106 C19 Def Alloc ecx | |C19a| | | | [000075] 111.#107 ecx Fixd Keep ecx | |C19a| | | | 111.#108 C19 Use * Keep ecx | |C19a| | | | 112.#109 ecx Fixd Keep ecx | | | | | | 112.#110 I20 Def Alloc ecx | |I20a| | | | [000037] 113.#111 ecx Fixd Keep ecx | |I20a| | | | 113.#112 I20 Use * Keep ecx | |I20a| | | | 114.#113 eax Kill Keep eax | | | | | | 114.#114 ecx Kill Keep ecx | | | | | | 114.#115 edx Kill Keep edx | | | | | | [000038] 118.#116 C21 Def Alloc eax |C21a| | | | | [000039] 119.#117 eax Fixd Keep eax |C21a| | | | | 119.#118 C21 Use * Keep eax |C21a| | | | | --------------------------------------------+----+----+----+----+----+ TreeID Loc RP# Name Type Action Reg |eax |ecx |edx |esi |edi | --------------------------------------------+----+----+----+----+----+ 121.#119 BB13 PredBB0 | | | | | | [000052] 126.#120 C22 Def Alloc ecx | |C22a| | | | [000076] 127.#121 ecx Fixd Keep ecx | |C22a| | | | 127.#122 C22 Use * Keep ecx | |C22a| | | | 128.#123 ecx Fixd Keep ecx | | | | | | 128.#124 I23 Def Alloc ecx | |I23a| | | | [000043] 129.#125 ecx Fixd Keep ecx | |I23a| | | | 129.#126 I23 Use * Keep ecx | |I23a| | | | 130.#127 eax Kill Keep eax | | | | | | 130.#128 ecx Kill Keep ecx | | | | | | 130.#129 edx Kill Keep edx | | | | | | 131.#130 END | | | | | | ------------ REFPOSITIONS AFTER ALLOCATION: ------------ CNS_INT BB02 regmask=[ecx] minReg=1 wt=400.00> BB02 regmask=[ecx] minReg=1 wt=100.00> BB02 regmask=[ecx] minReg=1 last fixed wt=100.00> BB02 regmask=[ecx] minReg=1 wt=100.00> PUTARG_REG BB02 regmask=[ecx] minReg=1 fixed wt=400.00> BB02 regmask=[ecx] minReg=1 wt=100.00> BB02 regmask=[ecx] minReg=1 last fixed wt=100.00> BB02 regmask=[eax] minReg=1 last wt=100.00> BB02 regmask=[ecx] minReg=1 last wt=100.00> BB02 regmask=[edx] minReg=1 last wt=100.00> CNS_INT BB03 regmask=[ecx] minReg=1 wt=400.00> BB03 regmask=[ecx] minReg=1 wt=100.00> BB03 regmask=[ecx] minReg=1 last fixed wt=100.00> BB03 regmask=[ecx] minReg=1 wt=100.00> PUTARG_REG BB03 regmask=[ecx] minReg=1 fixed wt=400.00> BB03 regmask=[ecx] minReg=1 wt=100.00> BB03 regmask=[ecx] minReg=1 last fixed wt=100.00> BB03 regmask=[eax] minReg=1 last wt=100.00> BB03 regmask=[ecx] minReg=1 last wt=100.00> BB03 regmask=[edx] minReg=1 last wt=100.00> CNS_INT BB04 regmask=[ecx] minReg=1 wt=400.00> BB04 regmask=[ecx] minReg=1 wt=100.00> BB04 regmask=[ecx] minReg=1 last fixed wt=100.00> BB04 regmask=[ecx] minReg=1 wt=100.00> PUTARG_REG BB04 regmask=[ecx] minReg=1 fixed wt=400.00> BB04 regmask=[ecx] minReg=1 wt=100.00> BB04 regmask=[ecx] minReg=1 last fixed wt=100.00> BB04 regmask=[eax] minReg=1 last wt=100.00> BB04 regmask=[ecx] minReg=1 last wt=100.00> BB04 regmask=[edx] minReg=1 last wt=100.00> CNS_INT BB07 regmask=[ecx] minReg=1 wt=0.00> BB07 regmask=[ecx] minReg=1 wt=0.00> BB07 regmask=[ecx] minReg=1 last fixed wt=0.00> BB07 regmask=[ecx] minReg=1 wt=0.00> PUTARG_REG BB07 regmask=[ecx] minReg=1 fixed wt=0.00> BB07 regmask=[ecx] minReg=1 wt=0.00> BB07 regmask=[ecx] minReg=1 last fixed wt=0.00> BB07 regmask=[eax] minReg=1 last wt=0.00> BB07 regmask=[ecx] minReg=1 last wt=0.00> BB07 regmask=[edx] minReg=1 last wt=0.00> CNS_INT BB07 regmask=[ecx] minReg=1 wt=0.00> BB07 regmask=[ecx] minReg=1 wt=0.00> BB07 regmask=[ecx] minReg=1 last fixed wt=0.00> BB07 regmask=[ecx] minReg=1 wt=0.00> PUTARG_REG BB07 regmask=[ecx] minReg=1 fixed wt=0.00> BB07 regmask=[ecx] minReg=1 wt=0.00> BB07 regmask=[ecx] minReg=1 last fixed wt=0.00> BB07 regmask=[eax] minReg=1 last wt=0.00> BB07 regmask=[ecx] minReg=1 last wt=0.00> BB07 regmask=[edx] minReg=1 last wt=0.00> BB07 regmask=[eax] minReg=1 wt=0.00> CALL BB07 regmask=[eax] minReg=1 fixed wt=0.00> BB07 regmask=[eax] minReg=1 last wt=0.00> STORE_LCL_VAR BB07 regmask=[esi] minReg=1 wt=0.00> BB07 regmask=[ecx] minReg=1 wt=0.00> LCL_VAR BB07 regmask=[ecx] minReg=1 copy fixed wt=0.00> BB07 regmask=[ecx] minReg=1 wt=0.00> PUTARG_REG BB07 regmask=[ecx] minReg=1 fixed wt=0.00> BB07 regmask=[ecx] minReg=1 wt=0.00> BB07 regmask=[ecx] minReg=1 last fixed wt=0.00> BB07 regmask=[eax] minReg=1 last wt=0.00> BB07 regmask=[ecx] minReg=1 last wt=0.00> BB07 regmask=[edx] minReg=1 last wt=0.00> BB07 regmask=[ecx] minReg=1 wt=0.00> LCL_VAR BB07 regmask=[ecx] minReg=1 last copy fixed wt=0.00> BB07 regmask=[ecx] minReg=1 wt=0.00> PUTARG_REG BB07 regmask=[ecx] minReg=1 fixed wt=0.00> BB07 regmask=[ecx] minReg=1 wt=0.00> BB07 regmask=[ecx] minReg=1 last fixed wt=0.00> BB07 regmask=[eax] minReg=1 last wt=0.00> BB07 regmask=[ecx] minReg=1 last wt=0.00> BB07 regmask=[edx] minReg=1 last wt=0.00> CNS_INT BB09 regmask=[ecx] minReg=1 wt=0.00> BB09 regmask=[ecx] minReg=1 wt=0.00> BB09 regmask=[ecx] minReg=1 last fixed wt=0.00> BB09 regmask=[ecx] minReg=1 wt=0.00> PUTARG_REG BB09 regmask=[ecx] minReg=1 fixed wt=0.00> BB09 regmask=[ecx] minReg=1 wt=0.00> BB09 regmask=[ecx] minReg=1 last fixed wt=0.00> BB09 regmask=[eax] minReg=1 last wt=0.00> BB09 regmask=[ecx] minReg=1 last wt=0.00> BB09 regmask=[edx] minReg=1 last wt=0.00> CNS_INT BB09 regmask=[eax] minReg=1 wt=0.00> BB09 regmask=[eax] minReg=1 wt=0.00> BB09 regmask=[eax] minReg=1 last fixed wt=0.00> CNS_INT BB10 regmask=[ecx] minReg=1 wt=0.00> BB10 regmask=[ecx] minReg=1 wt=0.00> BB10 regmask=[ecx] minReg=1 last fixed wt=0.00> BB10 regmask=[ecx] minReg=1 wt=0.00> PUTARG_REG BB10 regmask=[ecx] minReg=1 fixed wt=0.00> BB10 regmask=[ecx] minReg=1 wt=0.00> BB10 regmask=[ecx] minReg=1 last fixed wt=0.00> BB10 regmask=[eax] minReg=1 last wt=0.00> BB10 regmask=[ecx] minReg=1 last wt=0.00> BB10 regmask=[edx] minReg=1 last wt=0.00> CNS_INT BB12 regmask=[ecx] minReg=1 wt=0.00> BB12 regmask=[ecx] minReg=1 wt=0.00> BB12 regmask=[ecx] minReg=1 last fixed wt=0.00> BB12 regmask=[ecx] minReg=1 wt=0.00> PUTARG_REG BB12 regmask=[ecx] minReg=1 fixed wt=0.00> BB12 regmask=[ecx] minReg=1 wt=0.00> BB12 regmask=[ecx] minReg=1 last fixed wt=0.00> BB12 regmask=[eax] minReg=1 last wt=0.00> BB12 regmask=[ecx] minReg=1 last wt=0.00> BB12 regmask=[edx] minReg=1 last wt=0.00> CNS_INT BB12 regmask=[eax] minReg=1 wt=0.00> BB12 regmask=[eax] minReg=1 wt=0.00> BB12 regmask=[eax] minReg=1 last fixed wt=0.00> CNS_INT BB13 regmask=[ecx] minReg=1 wt=0.00> BB13 regmask=[ecx] minReg=1 wt=0.00> BB13 regmask=[ecx] minReg=1 last fixed wt=0.00> BB13 regmask=[ecx] minReg=1 wt=0.00> PUTARG_REG BB13 regmask=[ecx] minReg=1 fixed wt=0.00> BB13 regmask=[ecx] minReg=1 wt=0.00> BB13 regmask=[ecx] minReg=1 last fixed wt=0.00> BB13 regmask=[eax] minReg=1 last wt=0.00> BB13 regmask=[ecx] minReg=1 last wt=0.00> BB13 regmask=[edx] minReg=1 last wt=0.00> VAR REFPOSITIONS AFTER ALLOCATION --- V00 --- V01 --- V02 --- V03 (Interval 0) STORE_LCL_VAR BB07 regmask=[esi] minReg=1 wt=0.00> LCL_VAR BB07 regmask=[ecx] minReg=1 copy fixed wt=0.00> LCL_VAR BB07 regmask=[ecx] minReg=1 last copy fixed wt=0.00> --- V04 --- V05 Active intervals at end of allocation: ----------------------- RESOLVING BB BOUNDARIES ----------------------- Resolution Candidates: {} Has No Critical Edges Prior to Resolution BB02 use: {} def: {} in: {} out: {} Var=Reg beg of BB02: none Var=Reg end of BB02: none BB03 use: {} def: {} in: {} out: {} Var=Reg beg of BB03: none Var=Reg end of BB03: none BB04 use: {} def: {} in: {} out: {} Var=Reg beg of BB04: none Var=Reg end of BB04: none BB05 use: {} def: {} in: {} out: {} Var=Reg beg of BB05: none Var=Reg end of BB05: none BB06 use: {} def: {} in: {} out: {} Var=Reg beg of BB06: none Var=Reg end of BB06: none BB07 EH flow in use: {} def: {V03} in: {} out: {} Var=Reg beg of BB07: none Var=Reg end of BB07: none BB08 EH flow in use: {} def: {} in: {} out: {} Var=Reg beg of BB08: none Var=Reg end of BB08: none BB09 EH flow out use: {} def: {} in: {} out: {} Var=Reg beg of BB09: none Var=Reg end of BB09: none BB10 EH flow in EH flow out use: {} def: {} in: {} out: {} Var=Reg beg of BB10: none Var=Reg end of BB10: none BB11 EH flow in use: {} def: {} in: {} out: {} Var=Reg beg of BB11: none Var=Reg end of BB11: none BB12 EH flow out use: {} def: {} in: {} out: {} Var=Reg beg of BB12: none Var=Reg end of BB12: none BB13 EH flow in EH flow out use: {} def: {} in: {} out: {} Var=Reg beg of BB13: none Var=Reg end of BB13: none RESOLVING EDGES Trees after linear scan register allocator (LSRA) ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB02 [0000] 1 2 1 [000..00A)-> BB03 (always) T2 try { i LIR keep hascall gcsafe q BB03 [0001] 1 1 BB02 1 [00A..014)-> BB04 (always) T1 try { i LIR keep hascall gcsafe q BB04 [0002] 1 0 BB03 1 [014..023)-> BB07 (callf ) T0 try { } } i LIR keep hascall gcsafe retless BB05 [0008] 1 2 BB10 0 [058..05D)-> BB06 (always) T2 } i LIR rare xentry q BB06 [0011] 2 BB05,BB13 0 [07B..07C) (return) i LIR rare ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ funclets follow BB07 [0003] 2 1 0 BB04 0 [023..033) (throw ) T1 H0 F finally { } i LIR rare keep hascall xentry gcsafe flet newobj BB08 [0013] 1 2 1 0 [03A..???)-> BB09 (always) T2 H1 F filter { i LIR rare keep internal xentry flet q BB09 [0006] 1 2 1 BB08 0 [03A..048)-> BB10 (fltret) T2 H1 } i LIR rare keep hascall xentry gcsafe BB10 [0007] 2 2 1 BB09 0 [048..058)-> BB05 ( cret ) T2 H1 F filtHnd { } i LIR rare keep hascall xentry gcsafe flet BB11 [0012] 1 2 0 [05D..???)-> BB12 (always) H2 F filter { i LIR rare keep internal xentry flet q BB12 [0009] 1 2 BB11 0 [05D..06B)-> BB13 (fltret) H2 } i LIR rare keep hascall xentry gcsafe BB13 [0010] 2 2 BB12 0 [06B..07B)-> BB06 ( cret ) H2 F filtHnd { } i LIR rare keep hascall xentry gcsafe flet ---------------------------------------------------------------------------------------------------------------------------------------------- ------------ BB02 [0000] [000..00A) -> BB03 (always), preds={} succs={BB03} N003 (???,???) [000053] ----------- IL_OFFSET void INLRT @ 0x000[E-] REG NA N005 ( 1, 4) [000045] H---------- t45 = CNS_INT(h) ref '"in try"' REG ecx $c0 /--* t45 ref N007 (???,???) [000066] ----------- t66 = * PUTARG_REG ref REG ecx /--* t66 ref arg0 in ecx N009 ( 15, 10) [000007] --CXG------ * CALL void System.Console:WriteLine(System.String) REG NA $VN.Void ------------ BB03 [0001] [00A..014) -> BB04 (always), preds={BB02} succs={BB04} N013 (???,???) [000054] ----------- IL_OFFSET void INLRT @ 0x00A[E-] REG NA N015 ( 1, 4) [000046] H---------- t46 = CNS_INT(h) ref '" in try"' REG ecx $c1 /--* t46 ref N017 (???,???) [000067] ----------- t67 = * PUTARG_REG ref REG ecx /--* t67 ref arg0 in ecx N019 ( 15, 10) [000015] --CXG------ * CALL void System.Console:WriteLine(System.String) REG NA $VN.Void ------------ BB04 [0002] [014..023) -> BB07 (callf), preds={BB03} succs={BB07} N023 (???,???) [000055] ----------- IL_OFFSET void INLRT @ 0x014[E-] REG NA N025 ( 1, 4) [000047] H---------- t47 = CNS_INT(h) ref '" in try"' REG ecx $c2 /--* t47 ref N027 (???,???) [000068] ----------- t68 = * PUTARG_REG ref REG ecx /--* t68 ref arg0 in ecx N029 ( 15, 10) [000017] --CXG------ * CALL void System.Console:WriteLine(System.String) REG NA $VN.Void ------------ BB05 [0008] [058..05D) -> BB06 (always), preds={BB10} succs={BB06} N067 ( 1, 1) [000044] ----------- NO_OP void REG NA $VN.Void ------------ BB06 [0011] [07B..07C) (return), preds={BB05,BB13} succs={} N071 (???,???) [000056] ----------- IL_OFFSET void INLRT @ 0x07B[E-] REG NA N073 ( 0, 0) [000018] ----------- RETURN void REG NA $VN.Void ------------ BB07 [0003] [023..033) (throw), preds={BB04} succs={} N033 (???,???) [000057] ----------- IL_OFFSET void INLRT @ 0x023[E-] REG NA N035 ( 1, 4) [000048] H---------- t48 = CNS_INT(h) ref '" in finally"' REG ecx $c3 /--* t48 ref N037 (???,???) [000069] ----------- t69 = * PUTARG_REG ref REG ecx /--* t69 ref arg0 in ecx N039 ( 15, 10) [000020] --CXG------ * CALL void System.Console:WriteLine(System.String) REG NA $VN.Void N041 (???,???) [000058] ----------- IL_OFFSET void INLRT @ 0x02D[E-] REG NA N043 ( 1, 4) [000021] H---------- t21 = CNS_INT(h) int 0x425450 class REG ecx $141 /--* t21 int N045 (???,???) [000070] ----------- t70 = * PUTARG_REG int REG ecx /--* t70 int arg0 in ecx N047 ( 15, 10) [000022] --C-------- t22 = * CALL help ref CORINFO_HELP_NEWSFAST REG eax $1c0 /--* t22 ref N049 ( 19, 13) [000023] DAC-------- * STORE_LCL_VAR ref V03 tmp2 d:1 esi REG esi $VN.Void N051 ( 3, 2) [000024] ----------- t24 = LCL_VAR ref V03 tmp2 u:1 esi REG esi $1c0 /--* t24 ref N053 (???,???) [000071] ----------- t71 = * PUTARG_REG ref REG ecx /--* t71 ref this in ecx N055 ( 17, 8) [000025] --CXG------ * CALL void System.Exception:.ctor():this REG NA $VN.Void N057 (???,???) [000059] ----------- IL_OFFSET void INLRT @ 0x032[--] REG NA N059 ( 3, 2) [000026] ----------- t26 = LCL_VAR ref V03 tmp2 u:1 esi (last use) REG esi $1c0 /--* t26 ref N061 (???,???) [000072] ----------- t72 = * PUTARG_REG ref REG ecx /--* t72 ref arg0 in ecx N063 ( 17, 8) [000027] --CXG------ * CALL help void CORINFO_HELP_THROW REG NA $1c2 ------------ BB08 [0013] [03A..???) -> BB09 (always), preds={} succs={BB09} ------------ BB09 [0006] [03A..048) -> BB10 (fltret), preds={BB08} succs={BB10} N079 (???,???) [000060] ----------- IL_OFFSET void INLRT @ 0x03B[E-] REG NA N081 ( 1, 4) [000049] H---------- t49 = CNS_INT(h) ref '" in filter"' REG ecx $c4 /--* t49 ref N083 (???,???) [000073] ----------- t73 = * PUTARG_REG ref REG ecx /--* t73 ref arg0 in ecx N085 ( 15, 10) [000029] --CXG------ * CALL void System.Console:WriteLine(System.String) REG NA $VN.Void N087 (???,???) [000061] ----------- IL_OFFSET void INLRT @ 0x045[E-] REG NA N089 ( 1, 1) [000030] ----------- t30 = CNS_INT int 0 REG eax $49 /--* t30 int N091 ( 2, 2) [000031] ----------- * RETFILT int REG NA $VN.Void ------------ BB10 [0007] [048..058) -> BB05 (cret), preds={BB09} succs={BB05} N095 (???,???) [000062] ----------- IL_OFFSET void INLRT @ 0x049[E-] REG NA N097 ( 1, 4) [000050] H---------- t50 = CNS_INT(h) ref '" in handler"' REG ecx $c5 /--* t50 ref N099 (???,???) [000074] ----------- t74 = * PUTARG_REG ref REG ecx /--* t74 ref arg0 in ecx N101 ( 15, 10) [000035] --CXG------ * CALL void System.Console:WriteLine(System.String) REG NA $VN.Void ------------ BB11 [0012] [05D..???) -> BB12 (always), preds={} succs={BB12} ------------ BB12 [0009] [05D..06B) -> BB13 (fltret), preds={BB11} succs={BB13} N107 (???,???) [000063] ----------- IL_OFFSET void INLRT @ 0x05E[E-] REG NA N109 ( 1, 4) [000051] H---------- t51 = CNS_INT(h) ref '"in filter"' REG ecx $c6 /--* t51 ref N111 (???,???) [000075] ----------- t75 = * PUTARG_REG ref REG ecx /--* t75 ref arg0 in ecx N113 ( 15, 10) [000037] --CXG------ * CALL void System.Console:WriteLine(System.String) REG NA $VN.Void N115 (???,???) [000064] ----------- IL_OFFSET void INLRT @ 0x068[E-] REG NA N117 ( 1, 1) [000038] ----------- t38 = CNS_INT int 0 REG eax $49 /--* t38 int N119 ( 2, 2) [000039] ----------- * RETFILT int REG NA $VN.Void ------------ BB13 [0010] [06B..07B) -> BB06 (cret), preds={BB12} succs={BB06} N123 (???,???) [000065] ----------- IL_OFFSET void INLRT @ 0x06C[E-] REG NA N125 ( 1, 4) [000052] H---------- t52 = CNS_INT(h) ref '"in handler"' REG ecx $c7 /--* t52 ref N127 (???,???) [000076] ----------- t76 = * PUTARG_REG ref REG ecx /--* t76 ref arg0 in ecx N129 ( 15, 10) [000043] --CXG------ * CALL void System.Console:WriteLine(System.String) REG NA $VN.Void ------------------------------------------------------------------------------------------------------------------- Final allocation --------------------------------------------+----+----+----+----+----+ TreeID Loc RP# Name Type Action Reg |eax |ecx |edx |esi |edi | --------------------------------------------+----+----+----+----+----+ 1.#0 BB2 PredBB0 | | | | | | [000045] 6.#1 C1 Def Alloc ecx | |C1 a| | | | [000066] 7.#2 ecx Fixd Keep ecx | |C1 a| | | | 7.#3 C1 Use * Keep ecx | |C1 i| | | | 8.#4 ecx Fixd Keep ecx | | | | | | 8.#5 I2 Def Alloc ecx | |I2 a| | | | [000007] 9.#6 ecx Fixd Keep ecx | |I2 a| | | | 9.#7 I2 Use * Keep ecx | |I2 i| | | | 10.#8 eax Kill Keep eax | | | | | | 10.#9 ecx Kill Keep ecx | | | | | | 10.#10 edx Kill Keep edx | | | | | | --------------------------------------------+----+----+----+----+----+ TreeID Loc RP# Name Type Action Reg |eax |ecx |edx |esi |edi | --------------------------------------------+----+----+----+----+----+ 11.#11 BB3 PredBB2 | | | | | | [000046] 16.#12 C3 Def Alloc ecx | |C3 a| | | | [000067] 17.#13 ecx Fixd Keep ecx | |C3 a| | | | 17.#14 C3 Use * Keep ecx | |C3 i| | | | 18.#15 ecx Fixd Keep ecx | | | | | | 18.#16 I4 Def Alloc ecx | |I4 a| | | | [000015] 19.#17 ecx Fixd Keep ecx | |I4 a| | | | 19.#18 I4 Use * Keep ecx | |I4 i| | | | 20.#19 eax Kill Keep eax | | | | | | 20.#20 ecx Kill Keep ecx | | | | | | 20.#21 edx Kill Keep edx | | | | | | --------------------------------------------+----+----+----+----+----+ TreeID Loc RP# Name Type Action Reg |eax |ecx |edx |esi |edi | --------------------------------------------+----+----+----+----+----+ 21.#22 BB4 PredBB3 | | | | | | [000047] 26.#23 C5 Def Alloc ecx | |C5 a| | | | [000068] 27.#24 ecx Fixd Keep ecx | |C5 a| | | | 27.#25 C5 Use * Keep ecx | |C5 i| | | | 28.#26 ecx Fixd Keep ecx | | | | | | 28.#27 I6 Def Alloc ecx | |I6 a| | | | [000017] 29.#28 ecx Fixd Keep ecx | |I6 a| | | | 29.#29 I6 Use * Keep ecx | |I6 i| | | | 30.#30 eax Kill Keep eax | | | | | | 30.#31 ecx Kill Keep ecx | | | | | | 30.#32 edx Kill Keep edx | | | | | | --------------------------------------------+----+----+----+----+----+ TreeID Loc RP# Name Type Action Reg |eax |ecx |edx |esi |edi | --------------------------------------------+----+----+----+----+----+ 31.#33 BB7 PredBB0 | | | | | | [000048] 36.#34 C7 Def Alloc ecx | |C7 a| | | | [000069] 37.#35 ecx Fixd Keep ecx | |C7 a| | | | 37.#36 C7 Use * Keep ecx | |C7 i| | | | 38.#37 ecx Fixd Keep ecx | | | | | | 38.#38 I8 Def Alloc ecx | |I8 a| | | | [000020] 39.#39 ecx Fixd Keep ecx | |I8 a| | | | 39.#40 I8 Use * Keep ecx | |I8 i| | | | 40.#41 eax Kill Keep eax | | | | | | 40.#42 ecx Kill Keep ecx | | | | | | 40.#43 edx Kill Keep edx | | | | | | [000021] 44.#44 C9 Def Alloc ecx | |C9 a| | | | [000070] 45.#45 ecx Fixd Keep ecx | |C9 a| | | | 45.#46 C9 Use * Keep ecx | |C9 i| | | | 46.#47 ecx Fixd Keep ecx | | | | | | 46.#48 I10 Def Alloc ecx | |I10a| | | | [000022] 47.#49 ecx Fixd Keep ecx | |I10a| | | | 47.#50 I10 Use * Keep ecx | |I10i| | | | 48.#51 eax Kill Keep eax | | | | | | 48.#52 ecx Kill Keep ecx | | | | | | 48.#53 edx Kill Keep edx | | | | | | 48.#54 eax Fixd Keep eax | | | | | | 48.#55 I11 Def Alloc eax |I11a| | | | | [000023] 49.#56 I11 Use * Keep eax |I11i| | | | | 50.#57 V03 Def Alloc esi | | | |V03a| | [000071] 53.#58 ecx Fixd Keep ecx | | | |V03a| | 53.#59 V03 Use Copy ecx | |V03a| |V03a| | 54.#60 ecx Fixd Keep ecx | | | |V03a| | 54.#61 I12 Def Alloc ecx | |I12a| |V03a| | [000025] 55.#62 ecx Fixd Keep ecx | |I12a| |V03a| | 55.#63 I12 Use * Keep ecx | |I12i| |V03a| | 56.#64 eax Kill Keep eax | | | |V03a| | 56.#65 ecx Kill Keep ecx | | | |V03a| | 56.#66 edx Kill Keep edx | | | |V03a| | [000072] 61.#67 ecx Fixd Keep ecx | | | |V03a| | 61.#68 V03 Use * Copy ecx | |V03i| |V03i| | 62.#69 ecx Fixd Keep ecx | | | | | | 62.#70 I13 Def Alloc ecx | |I13a| | | | [000027] 63.#71 ecx Fixd Keep ecx | |I13a| | | | 63.#72 I13 Use * Keep ecx | |I13i| | | | 64.#73 eax Kill Keep eax | | | | | | 64.#74 ecx Kill Keep ecx | | | | | | 64.#75 edx Kill Keep edx | | | | | | --------------------------------------------+----+----+----+----+----+ TreeID Loc RP# Name Type Action Reg |eax |ecx |edx |esi |edi | --------------------------------------------+----+----+----+----+----+ 65.#76 BB5 PredBB0 | | | | | | --------------------------------------------+----+----+----+----+----+ TreeID Loc RP# Name Type Action Reg |eax |ecx |edx |esi |edi | --------------------------------------------+----+----+----+----+----+ 69.#77 BB6 PredBB5 | | | | | | --------------------------------------------+----+----+----+----+----+ TreeID Loc RP# Name Type Action Reg |eax |ecx |edx |esi |edi | --------------------------------------------+----+----+----+----+----+ 75.#78 BB8 PredBB0 | | | | | | --------------------------------------------+----+----+----+----+----+ TreeID Loc RP# Name Type Action Reg |eax |ecx |edx |esi |edi | --------------------------------------------+----+----+----+----+----+ 77.#79 BB9 PredBB8 | | | | | | [000049] 82.#80 C14 Def Alloc ecx | |C14a| | | | [000073] 83.#81 ecx Fixd Keep ecx | |C14a| | | | 83.#82 C14 Use * Keep ecx | |C14i| | | | 84.#83 ecx Fixd Keep ecx | | | | | | 84.#84 I15 Def Alloc ecx | |I15a| | | | [000029] 85.#85 ecx Fixd Keep ecx | |I15a| | | | 85.#86 I15 Use * Keep ecx | |I15i| | | | 86.#87 eax Kill Keep eax | | | | | | 86.#88 ecx Kill Keep ecx | | | | | | 86.#89 edx Kill Keep edx | | | | | | [000030] 90.#90 C16 Def Alloc eax |C16a| | | | | [000031] 91.#91 eax Fixd Keep eax |C16a| | | | | 91.#92 C16 Use * Keep eax |C16i| | | | | --------------------------------------------+----+----+----+----+----+ TreeID Loc RP# Name Type Action Reg |eax |ecx |edx |esi |edi | --------------------------------------------+----+----+----+----+----+ 93.#93 BB10 PredBB0 | | | | | | [000050] 98.#94 C17 Def Alloc ecx | |C17a| | | | [000074] 99.#95 ecx Fixd Keep ecx | |C17a| | | | 99.#96 C17 Use * Keep ecx | |C17i| | | | 100.#97 ecx Fixd Keep ecx | | | | | | 100.#98 I18 Def Alloc ecx | |I18a| | | | [000035] 101.#99 ecx Fixd Keep ecx | |I18a| | | | 101.#100 I18 Use * Keep ecx | |I18i| | | | 102.#101 eax Kill Keep eax | | | | | | 102.#102 ecx Kill Keep ecx | | | | | | 102.#103 edx Kill Keep edx | | | | | | --------------------------------------------+----+----+----+----+----+ TreeID Loc RP# Name Type Action Reg |eax |ecx |edx |esi |edi | --------------------------------------------+----+----+----+----+----+ 103.#104 BB11 PredBB0 | | | | | | --------------------------------------------+----+----+----+----+----+ TreeID Loc RP# Name Type Action Reg |eax |ecx |edx |esi |edi | --------------------------------------------+----+----+----+----+----+ 105.#105 BB12 PredBB11 | | | | | | [000051] 110.#106 C19 Def Alloc ecx | |C19a| | | | [000075] 111.#107 ecx Fixd Keep ecx | |C19a| | | | 111.#108 C19 Use * Keep ecx | |C19i| | | | 112.#109 ecx Fixd Keep ecx | | | | | | 112.#110 I20 Def Alloc ecx | |I20a| | | | [000037] 113.#111 ecx Fixd Keep ecx | |I20a| | | | 113.#112 I20 Use * Keep ecx | |I20i| | | | 114.#113 eax Kill Keep eax | | | | | | 114.#114 ecx Kill Keep ecx | | | | | | 114.#115 edx Kill Keep edx | | | | | | [000038] 118.#116 C21 Def Alloc eax |C21a| | | | | [000039] 119.#117 eax Fixd Keep eax |C21a| | | | | 119.#118 C21 Use * Keep eax |C21i| | | | | --------------------------------------------+----+----+----+----+----+ TreeID Loc RP# Name Type Action Reg |eax |ecx |edx |esi |edi | --------------------------------------------+----+----+----+----+----+ 121.#119 BB13 PredBB0 | | | | | | [000052] 126.#120 C22 Def Alloc ecx | |C22a| | | | [000076] 127.#121 ecx Fixd Keep ecx | |C22a| | | | 127.#122 C22 Use * Keep ecx | |C22i| | | | 128.#123 ecx Fixd Keep ecx | | | | | | 128.#124 I23 Def Alloc ecx | |I23a| | | | [000043] 129.#125 ecx Fixd Keep ecx | |I23a| | | | 129.#126 I23 Use * Keep ecx | |I23i| | | | 130.#127 eax Kill Keep eax | | | | | | 130.#128 ecx Kill Keep ecx | | | | | | 130.#129 edx Kill Keep edx | | | | | | Recording the maximum number of concurrent spills: ---------- LSRA Stats ---------- Register selection order: ABCDEFGHIJKLMNOPQ Total Tracked Vars: 1 Total Reg Cand Vars: 1 Total number of Intervals: 23 Total number of RefPositions: 130 Total Number of spill temps created: 0 .......... BB07 [ 0.00]: REG_ORDER = 1 .......... Total SpillCount : 0 Weighted: 0.000000 Total CopyReg : 0 Weighted: 0.000000 Total ResolutionMovs : 0 Weighted: 0.000000 Total SplitEdges : 0 Weighted: 0.000000 .......... Total REG_ORDER [#13] : 1 Weighted: 0.000000 TUPLE STYLE DUMP WITH REGISTER ASSIGNMENTS Incoming Parameters: BB02 [0000] [000..00A) -> BB03 (always), preds={} succs={BB03} ===== N003. IL_OFFSET INLRT @ 0x000[E-] N005. ecx = CNS_INT(h) '"in try"' N007. ecx = PUTARG_REG; ecx N009. CALL ; ecx Var=Reg end of BB02: none BB03 [0001] [00A..014) -> BB04 (always), preds={BB02} succs={BB04} ===== Predecessor for variable locations: BB02 Var=Reg beg of BB03: none N013. IL_OFFSET INLRT @ 0x00A[E-] N015. ecx = CNS_INT(h) '" in try"' N017. ecx = PUTARG_REG; ecx N019. CALL ; ecx Var=Reg end of BB03: none BB04 [0002] [014..023) -> BB07 (callf), preds={BB03} succs={BB07} ===== Predecessor for variable locations: BB03 Var=Reg beg of BB04: none N023. IL_OFFSET INLRT @ 0x014[E-] N025. ecx = CNS_INT(h) '" in try"' N027. ecx = PUTARG_REG; ecx N029. CALL ; ecx Var=Reg end of BB04: none BB07 [0003] [023..033) (throw), preds={BB04} succs={} ===== Predecessor for variable locations: BB00 Var=Reg beg of BB07: none N033. IL_OFFSET INLRT @ 0x023[E-] N035. ecx = CNS_INT(h) '" in finally"' N037. ecx = PUTARG_REG; ecx N039. CALL ; ecx N041. IL_OFFSET INLRT @ 0x02D[E-] N043. ecx = CNS_INT(h) 0x425450 class N045. ecx = PUTARG_REG; ecx N047. eax = CALL help; ecx * N049. V03(esi); eax N051. V03(esi) N053. ecx = PUTARG_REG; esi N055. CALL ; ecx N057. IL_OFFSET INLRT @ 0x032[--] N059. V03(esi*) N061. ecx = PUTARG_REG; esi* N063. CALL help; ecx Var=Reg end of BB07: none BB05 [0008] [058..05D) -> BB06 (always), preds={BB10} succs={BB06} ===== Predecessor for variable locations: BB00 Var=Reg beg of BB05: none N067. NO_OP Var=Reg end of BB05: none BB06 [0011] [07B..07C) (return), preds={BB05,BB13} succs={} ===== Predecessor for variable locations: BB05 Var=Reg beg of BB06: none N071. IL_OFFSET INLRT @ 0x07B[E-] N073. RETURN Var=Reg end of BB06: none BB08 [0013] [03A..???) -> BB09 (always), preds={} succs={BB09} ===== Predecessor for variable locations: BB00 Var=Reg beg of BB08: none Var=Reg end of BB08: none BB09 [0006] [03A..048) -> BB10 (fltret), preds={BB08} succs={BB10} ===== Predecessor for variable locations: BB08 Var=Reg beg of BB09: none N079. IL_OFFSET INLRT @ 0x03B[E-] N081. ecx = CNS_INT(h) '" in filter"' N083. ecx = PUTARG_REG; ecx N085. CALL ; ecx N087. IL_OFFSET INLRT @ 0x045[E-] N089. eax = CNS_INT 0 N091. RETFILT ; eax Var=Reg end of BB09: none BB10 [0007] [048..058) -> BB05 (cret), preds={BB09} succs={BB05} ===== Predecessor for variable locations: BB00 Var=Reg beg of BB10: none N095. IL_OFFSET INLRT @ 0x049[E-] N097. ecx = CNS_INT(h) '" in handler"' N099. ecx = PUTARG_REG; ecx N101. CALL ; ecx Var=Reg end of BB10: none BB11 [0012] [05D..???) -> BB12 (always), preds={} succs={BB12} ===== Predecessor for variable locations: BB00 Var=Reg beg of BB11: none Var=Reg end of BB11: none BB12 [0009] [05D..06B) -> BB13 (fltret), preds={BB11} succs={BB13} ===== Predecessor for variable locations: BB11 Var=Reg beg of BB12: none N107. IL_OFFSET INLRT @ 0x05E[E-] N109. ecx = CNS_INT(h) '"in filter"' N111. ecx = PUTARG_REG; ecx N113. CALL ; ecx N115. IL_OFFSET INLRT @ 0x068[E-] N117. eax = CNS_INT 0 N119. RETFILT ; eax Var=Reg end of BB12: none BB13 [0010] [06B..07B) -> BB06 (cret), preds={BB12} succs={BB06} ===== Predecessor for variable locations: BB00 Var=Reg beg of BB13: none N123. IL_OFFSET INLRT @ 0x06C[E-] N125. ecx = CNS_INT(h) '"in handler"' N127. ecx = PUTARG_REG; ecx N129. CALL ; ecx Var=Reg end of BB13: none *************** Finishing PHASE Linear scan register alloc Trees after Linear scan register alloc ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB02 [0000] 1 2 1 [000..00A)-> BB03 (always) T2 try { i LIR keep hascall gcsafe q BB03 [0001] 1 1 BB02 1 [00A..014)-> BB04 (always) T1 try { i LIR keep hascall gcsafe q BB04 [0002] 1 0 BB03 1 [014..023)-> BB07 (callf ) T0 try { } } i LIR keep hascall gcsafe retless BB05 [0008] 1 2 BB10 0 [058..05D)-> BB06 (always) T2 } i LIR rare xentry q BB06 [0011] 2 BB05,BB13 0 [07B..07C) (return) i LIR rare ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ funclets follow BB07 [0003] 2 1 0 BB04 0 [023..033) (throw ) T1 H0 F finally { } i LIR rare keep hascall xentry gcsafe flet newobj BB08 [0013] 1 2 1 0 [03A..???)-> BB09 (always) T2 H1 F filter { i LIR rare keep internal xentry flet q BB09 [0006] 1 2 1 BB08 0 [03A..048)-> BB10 (fltret) T2 H1 } i LIR rare keep hascall xentry gcsafe BB10 [0007] 2 2 1 BB09 0 [048..058)-> BB05 ( cret ) T2 H1 F filtHnd { } i LIR rare keep hascall xentry gcsafe flet BB11 [0012] 1 2 0 [05D..???)-> BB12 (always) H2 F filter { i LIR rare keep internal xentry flet q BB12 [0009] 1 2 BB11 0 [05D..06B)-> BB13 (fltret) H2 } i LIR rare keep hascall xentry gcsafe BB13 [0010] 2 2 BB12 0 [06B..07B)-> BB06 ( cret ) H2 F filtHnd { } i LIR rare keep hascall xentry gcsafe flet ---------------------------------------------------------------------------------------------------------------------------------------------- ------------ BB02 [0000] [000..00A) -> BB03 (always), preds={} succs={BB03} N003 (???,???) [000053] ----------- IL_OFFSET void INLRT @ 0x000[E-] REG NA N005 ( 1, 4) [000045] H---------- t45 = CNS_INT(h) ref '"in try"' REG ecx $c0 /--* t45 ref N007 (???,???) [000066] ----------- t66 = * PUTARG_REG ref REG ecx /--* t66 ref arg0 in ecx N009 ( 15, 10) [000007] --CXG------ * CALL void System.Console:WriteLine(System.String) REG NA $VN.Void ------------ BB03 [0001] [00A..014) -> BB04 (always), preds={BB02} succs={BB04} N013 (???,???) [000054] ----------- IL_OFFSET void INLRT @ 0x00A[E-] REG NA N015 ( 1, 4) [000046] H---------- t46 = CNS_INT(h) ref '" in try"' REG ecx $c1 /--* t46 ref N017 (???,???) [000067] ----------- t67 = * PUTARG_REG ref REG ecx /--* t67 ref arg0 in ecx N019 ( 15, 10) [000015] --CXG------ * CALL void System.Console:WriteLine(System.String) REG NA $VN.Void ------------ BB04 [0002] [014..023) -> BB07 (callf), preds={BB03} succs={BB07} N023 (???,???) [000055] ----------- IL_OFFSET void INLRT @ 0x014[E-] REG NA N025 ( 1, 4) [000047] H---------- t47 = CNS_INT(h) ref '" in try"' REG ecx $c2 /--* t47 ref N027 (???,???) [000068] ----------- t68 = * PUTARG_REG ref REG ecx /--* t68 ref arg0 in ecx N029 ( 15, 10) [000017] --CXG------ * CALL void System.Console:WriteLine(System.String) REG NA $VN.Void ------------ BB05 [0008] [058..05D) -> BB06 (always), preds={BB10} succs={BB06} N067 ( 1, 1) [000044] ----------- NO_OP void REG NA $VN.Void ------------ BB06 [0011] [07B..07C) (return), preds={BB05,BB13} succs={} N071 (???,???) [000056] ----------- IL_OFFSET void INLRT @ 0x07B[E-] REG NA N073 ( 0, 0) [000018] ----------- RETURN void REG NA $VN.Void ------------ BB07 [0003] [023..033) (throw), preds={BB04} succs={} N033 (???,???) [000057] ----------- IL_OFFSET void INLRT @ 0x023[E-] REG NA N035 ( 1, 4) [000048] H---------- t48 = CNS_INT(h) ref '" in finally"' REG ecx $c3 /--* t48 ref N037 (???,???) [000069] ----------- t69 = * PUTARG_REG ref REG ecx /--* t69 ref arg0 in ecx N039 ( 15, 10) [000020] --CXG------ * CALL void System.Console:WriteLine(System.String) REG NA $VN.Void N041 (???,???) [000058] ----------- IL_OFFSET void INLRT @ 0x02D[E-] REG NA N043 ( 1, 4) [000021] H---------- t21 = CNS_INT(h) int 0x425450 class REG ecx $141 /--* t21 int N045 (???,???) [000070] ----------- t70 = * PUTARG_REG int REG ecx /--* t70 int arg0 in ecx N047 ( 15, 10) [000022] --C-------- t22 = * CALL help ref CORINFO_HELP_NEWSFAST REG eax $1c0 /--* t22 ref N049 ( 19, 13) [000023] DAC-------- * STORE_LCL_VAR ref V03 tmp2 d:1 esi REG esi $VN.Void N051 ( 3, 2) [000024] ----------- t24 = LCL_VAR ref V03 tmp2 u:1 esi REG esi $1c0 /--* t24 ref N053 (???,???) [000071] ----------- t71 = * PUTARG_REG ref REG ecx /--* t71 ref this in ecx N055 ( 17, 8) [000025] --CXG------ * CALL void System.Exception:.ctor():this REG NA $VN.Void N057 (???,???) [000059] ----------- IL_OFFSET void INLRT @ 0x032[--] REG NA N059 ( 3, 2) [000026] ----------- t26 = LCL_VAR ref V03 tmp2 u:1 esi (last use) REG esi $1c0 /--* t26 ref N061 (???,???) [000072] ----------- t72 = * PUTARG_REG ref REG ecx /--* t72 ref arg0 in ecx N063 ( 17, 8) [000027] --CXG------ * CALL help void CORINFO_HELP_THROW REG NA $1c2 ------------ BB08 [0013] [03A..???) -> BB09 (always), preds={} succs={BB09} ------------ BB09 [0006] [03A..048) -> BB10 (fltret), preds={BB08} succs={BB10} N079 (???,???) [000060] ----------- IL_OFFSET void INLRT @ 0x03B[E-] REG NA N081 ( 1, 4) [000049] H---------- t49 = CNS_INT(h) ref '" in filter"' REG ecx $c4 /--* t49 ref N083 (???,???) [000073] ----------- t73 = * PUTARG_REG ref REG ecx /--* t73 ref arg0 in ecx N085 ( 15, 10) [000029] --CXG------ * CALL void System.Console:WriteLine(System.String) REG NA $VN.Void N087 (???,???) [000061] ----------- IL_OFFSET void INLRT @ 0x045[E-] REG NA N089 ( 1, 1) [000030] ----------- t30 = CNS_INT int 0 REG eax $49 /--* t30 int N091 ( 2, 2) [000031] ----------- * RETFILT int REG NA $VN.Void ------------ BB10 [0007] [048..058) -> BB05 (cret), preds={BB09} succs={BB05} N095 (???,???) [000062] ----------- IL_OFFSET void INLRT @ 0x049[E-] REG NA N097 ( 1, 4) [000050] H---------- t50 = CNS_INT(h) ref '" in handler"' REG ecx $c5 /--* t50 ref N099 (???,???) [000074] ----------- t74 = * PUTARG_REG ref REG ecx /--* t74 ref arg0 in ecx N101 ( 15, 10) [000035] --CXG------ * CALL void System.Console:WriteLine(System.String) REG NA $VN.Void ------------ BB11 [0012] [05D..???) -> BB12 (always), preds={} succs={BB12} ------------ BB12 [0009] [05D..06B) -> BB13 (fltret), preds={BB11} succs={BB13} N107 (???,???) [000063] ----------- IL_OFFSET void INLRT @ 0x05E[E-] REG NA N109 ( 1, 4) [000051] H---------- t51 = CNS_INT(h) ref '"in filter"' REG ecx $c6 /--* t51 ref N111 (???,???) [000075] ----------- t75 = * PUTARG_REG ref REG ecx /--* t75 ref arg0 in ecx N113 ( 15, 10) [000037] --CXG------ * CALL void System.Console:WriteLine(System.String) REG NA $VN.Void N115 (???,???) [000064] ----------- IL_OFFSET void INLRT @ 0x068[E-] REG NA N117 ( 1, 1) [000038] ----------- t38 = CNS_INT int 0 REG eax $49 /--* t38 int N119 ( 2, 2) [000039] ----------- * RETFILT int REG NA $VN.Void ------------ BB13 [0010] [06B..07B) -> BB06 (cret), preds={BB12} succs={BB06} N123 (???,???) [000065] ----------- IL_OFFSET void INLRT @ 0x06C[E-] REG NA N125 ( 1, 4) [000052] H---------- t52 = CNS_INT(h) ref '"in handler"' REG ecx $c7 /--* t52 ref N127 (???,???) [000076] ----------- t76 = * PUTARG_REG ref REG ecx /--* t76 ref arg0 in ecx N129 ( 15, 10) [000043] --CXG------ * CALL void System.Console:WriteLine(System.String) REG NA $VN.Void ------------------------------------------------------------------------------------------------------------------- *************** In fgDebugCheckBBlist *************** Starting PHASE Place 'align' instructions *************** In placeLoopAlignInstructions() Identifying loops in DFS tree with following reverse post order: RPO -> BB [pre, post] 00 -> BB02[0, 11] 01 -> BB03[1, 10] 02 -> BB04[2, 9] 03 -> BB07[3, 8] 04 -> BB08[4, 7] 05 -> BB09[5, 6] 06 -> BB10[6, 5] 07 -> BB05[7, 4] 08 -> BB11[9, 3] 09 -> BB12[10, 2] 10 -> BB13[11, 1] 11 -> BB06[8, 0] *************** Natural loop graph No loops No natural loops found *************** Finishing PHASE Place 'align' instructions [no changes] *************** In genGenerateCode() ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB02 [0000] 1 2 1 [000..00A)-> BB03 (always) T2 try { i LIR keep hascall gcsafe q BB03 [0001] 1 1 BB02 1 [00A..014)-> BB04 (always) T1 try { i LIR keep hascall gcsafe q BB04 [0002] 1 0 BB03 1 [014..023)-> BB07 (callf ) T0 try { } } i LIR keep hascall gcsafe retless BB05 [0008] 1 2 BB10 0 [058..05D)-> BB06 (always) T2 } i LIR rare xentry q BB06 [0011] 2 BB05,BB13 0 [07B..07C) (return) i LIR rare ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ funclets follow BB07 [0003] 2 1 0 BB04 0 [023..033) (throw ) T1 H0 F finally { } i LIR rare keep hascall xentry gcsafe flet newobj BB08 [0013] 1 2 1 0 [03A..???)-> BB09 (always) T2 H1 F filter { i LIR rare keep internal xentry flet q BB09 [0006] 1 2 1 BB08 0 [03A..048)-> BB10 (fltret) T2 H1 } i LIR rare keep hascall xentry gcsafe BB10 [0007] 2 2 1 BB09 0 [048..058)-> BB05 ( cret ) T2 H1 F filtHnd { } i LIR rare keep hascall xentry gcsafe flet BB11 [0012] 1 2 0 [05D..???)-> BB12 (always) H2 F filter { i LIR rare keep internal xentry flet q BB12 [0009] 1 2 BB11 0 [05D..06B)-> BB13 (fltret) H2 } i LIR rare keep hascall xentry gcsafe BB13 [0010] 2 2 BB12 0 [06B..07B)-> BB06 ( cret ) H2 F filtHnd { } i LIR rare keep hascall xentry gcsafe flet ---------------------------------------------------------------------------------------------------------------------------------------------- *************** Starting PHASE Generate code *************** In fgDebugCheckBBlist Finalizing stack frame Recording Var Locations at start of BB02 Modified regs: [eax ecx edx esi] Callee-saved registers pushed: 1 [esi] *************** In lvaAssignFrameOffsets(FINAL_FRAME_LAYOUT) --- delta bump 4 for RA --- delta bump 4 for FP --- virtual stack offset to actual stack offset delta is 8 ; Final local variable assignments ; ;* V00 arg0 [V00 ] ( 0, 0 ) int -> zero-ref single-def ;* V01 tmp0 [V01 ] ( 0, 0 ) ref -> zero-ref "SpillCatchArg" ;* V02 tmp1 [V02 ] ( 0, 0 ) ref -> zero-ref "SpillCatchArg" ; V03 tmp2 [V03,T00] ( 3, 0 ) ref -> esi class-hnd exact single-def "NewObj constructor temp" ;* V04 tmp3 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" ;* V05 tmp4 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" ; ; Lcl frame size = 0 Created: G_M61140_IG02: ; offs=0x000000, size=0x0000, bbWeight=1, gcrefRegs=00000000 {} Mark labels for codegen BB02 : first block BB05 : branch target BB06 : branch target BB04 : try begin BB07 : hnd begin BB05 : try end BB08 : hnd end BB03 : try begin BB10 : hnd begin BB05 : try end BB11 : hnd end BB08 : filter begin BB02 : try begin BB13 : hnd begin BB06 : try end BB11 : filter begin *************** After genMarkLabelsForCodegen() ---------------------------------------------------------------------------------------------------------------------------------------------- BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] ---------------------------------------------------------------------------------------------------------------------------------------------- BB02 [0000] 1 2 1 [000..00A)-> BB03 (always) T2 try { i LIR keep label hascall gcsafe q BB03 [0001] 1 1 BB02 1 [00A..014)-> BB04 (always) T1 try { i LIR keep label hascall gcsafe q BB04 [0002] 1 0 BB03 1 [014..023)-> BB07 (callf ) T0 try { } } i LIR keep label hascall gcsafe retless BB05 [0008] 1 2 BB10 0 [058..05D)-> BB06 (always) T2 } i LIR rare label xentry q BB06 [0011] 2 BB05,BB13 0 [07B..07C) (return) i LIR rare label ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ funclets follow BB07 [0003] 2 1 0 BB04 0 [023..033) (throw ) T1 H0 F finally { } i LIR rare keep label hascall xentry gcsafe flet newobj BB08 [0013] 1 2 1 0 [03A..???)-> BB09 (always) T2 H1 F filter { i LIR rare keep internal label xentry flet q BB09 [0006] 1 2 1 BB08 0 [03A..048)-> BB10 (fltret) T2 H1 } i LIR rare keep hascall xentry gcsafe BB10 [0007] 2 2 1 BB09 0 [048..058)-> BB05 ( cret ) T2 H1 F filtHnd { } i LIR rare keep label hascall xentry gcsafe flet BB11 [0012] 1 2 0 [05D..???)-> BB12 (always) H2 F filter { i LIR rare keep internal label xentry flet q BB12 [0009] 1 2 BB11 0 [05D..06B)-> BB13 (fltret) H2 } i LIR rare keep hascall xentry gcsafe BB13 [0010] 2 2 BB12 0 [06B..07B)-> BB06 ( cret ) H2 F filtHnd { } i LIR rare keep label hascall xentry gcsafe flet ---------------------------------------------------------------------------------------------------------------------------------------------- Setting stack level from -572662307 to 0 =============== Generating BB02 [0000] [000..00A) -> BB03 (always), preds={} succs={BB03} flags=0x00000100.10088019: i LIR keep label hascall gcsafe q BB02 IN (0)={} + ByrefExposed + GcHeap OUT(0)={} + ByrefExposed + GcHeap Recording Var Locations at start of BB02 Liveness not changing: 0000000000000000 {} Live regs: (unchanged) 00000000 {} GC regs: (unchanged) 00000000 {} Byref regs: (unchanged) 00000000 {} L_M61140_BB02: Label: G_M61140_IG02, GCvars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {} Scope info: begin block BB02, IL range [000..00A) Added IP mapping: 0x0000 STACK_EMPTY (G_M61140_IG02,ins#0,ofs#0) label Generating: N003 (???,???) [000053] ----------- IL_OFFSET void INLRT @ 0x000[E-] REG NA Generating: N005 ( 1, 4) [000045] H---------- t45 = CNS_INT(h) ref '"in try"' REG ecx $c0 Mapped BB02 to G_M61140_IG02 IN0001: mov ecx, (reloc 0x4000000000425460) GC regs: 00000000 {} => 00000002 {ecx} /--* t45 ref Generating: N007 (???,???) [000066] ----------- t66 = * PUTARG_REG ref REG ecx GC regs: 00000002 {ecx} => 00000000 {} GC regs: 00000000 {} => 00000002 {ecx} /--* t66 ref arg0 in ecx Generating: N009 ( 15, 10) [000007] --CXG------ * CALL void System.Console:WriteLine(System.String) REG NA $VN.Void GC regs: 00000002 {ecx} => 00000000 {} Call: GCvars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {} IN0002: call System.Console:WriteLine(System.String) Variable Live Range History Dump for BB02 ..None.. =============== Generating BB03 [0001] [00A..014) -> BB04 (always), preds={BB02} succs={BB04} flags=0x00000100.10088019: i LIR keep label hascall gcsafe q BB03 IN (0)={} + ByrefExposed + GcHeap OUT(0)={} + ByrefExposed + GcHeap Recording Var Locations at start of BB03 Liveness not changing: 0000000000000000 {} Live regs: (unchanged) 00000000 {} GC regs: (unchanged) 00000000 {} Byref regs: (unchanged) 00000000 {} L_M61140_BB03: Saved: G_M61140_IG02: ; offs=0x000000, size=0x000A, bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB02 [0000], byref Created: G_M61140_IG03: ; offs=0x00000A, size=0x0000, bbWeight=1, gcrefRegs=00000000 {} Label: G_M61140_IG03, GCvars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {} Scope info: begin block BB03, IL range [00A..014) Added IP mapping: 0x000A STACK_EMPTY (G_M61140_IG03,ins#0,ofs#0) label Generating: N013 (???,???) [000054] ----------- IL_OFFSET void INLRT @ 0x00A[E-] REG NA Generating: N015 ( 1, 4) [000046] H---------- t46 = CNS_INT(h) ref '" in try"' REG ecx $c1 Mapped BB03 to G_M61140_IG03 IN0003: mov ecx, (reloc 0x4000000000425468) GC regs: 00000000 {} => 00000002 {ecx} /--* t46 ref Generating: N017 (???,???) [000067] ----------- t67 = * PUTARG_REG ref REG ecx GC regs: 00000002 {ecx} => 00000000 {} GC regs: 00000000 {} => 00000002 {ecx} /--* t67 ref arg0 in ecx Generating: N019 ( 15, 10) [000015] --CXG------ * CALL void System.Console:WriteLine(System.String) REG NA $VN.Void GC regs: 00000002 {ecx} => 00000000 {} Call: GCvars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {} IN0004: call System.Console:WriteLine(System.String) Variable Live Range History Dump for BB03 ..None.. =============== Generating BB04 [0002] [014..023) -> BB07 (callf), preds={BB03} succs={BB07} flags=0x00000000.11088019: i LIR keep label hascall gcsafe retless BB04 IN (0)={} + ByrefExposed + GcHeap OUT(0)={} + ByrefExposed + GcHeap Recording Var Locations at start of BB04 Liveness not changing: 0000000000000000 {} Live regs: (unchanged) 00000000 {} GC regs: (unchanged) 00000000 {} Byref regs: (unchanged) 00000000 {} L_M61140_BB04: Saved: G_M61140_IG03: ; offs=0x00000A, size=0x000A, bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB03 [0001], byref Created: G_M61140_IG04: ; offs=0x000014, size=0x0000, bbWeight=1, gcrefRegs=00000000 {} Label: G_M61140_IG04, GCvars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {} Scope info: begin block BB04, IL range [014..023) Added IP mapping: 0x0014 STACK_EMPTY (G_M61140_IG04,ins#0,ofs#0) label Generating: N023 (???,???) [000055] ----------- IL_OFFSET void INLRT @ 0x014[E-] REG NA Generating: N025 ( 1, 4) [000047] H---------- t47 = CNS_INT(h) ref '" in try"' REG ecx $c2 Mapped BB04 to G_M61140_IG04 IN0005: mov ecx, (reloc 0x4000000000425470) GC regs: 00000000 {} => 00000002 {ecx} /--* t47 ref Generating: N027 (???,???) [000068] ----------- t68 = * PUTARG_REG ref REG ecx GC regs: 00000002 {ecx} => 00000000 {} GC regs: 00000000 {} => 00000002 {ecx} /--* t68 ref arg0 in ecx Generating: N029 ( 15, 10) [000017] --CXG------ * CALL void System.Console:WriteLine(System.String) REG NA $VN.Void GC regs: 00000002 {ecx} => 00000000 {} Call: GCvars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {} IN0006: call System.Console:WriteLine(System.String) IN0007: mov ecx, esp IN0008: call L_M61140_BB07 IN0009: int3 Variable Live Range History Dump for BB04 ..None.. =============== Generating BB05 [0008] [058..05D) -> BB06 (always), preds={BB10} succs={BB06} flags=0x00000100.2000a011: i LIR rare label xentry q BB05 IN (0)={} + ByrefExposed + GcHeap OUT(0)={} + ByrefExposed + GcHeap Recording Var Locations at start of BB05 Liveness not changing: 0000000000000000 {} Live regs: (unchanged) 00000000 {} GC regs: (unchanged) 00000000 {} Byref regs: (unchanged) 00000000 {} L_M61140_BB05: Saved: G_M61140_IG04: ; offs=0x000014, size=0x0012, bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB04 [0002], byref Created: G_M61140_IG05: ; offs=0x000026, size=0x0000, bbWeight=0, gcrefRegs=00000000 {} Label: G_M61140_IG05, GCvars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {} Scope info: begin block BB05, IL range [058..05D) Generating: N067 ( 1, 1) [000044] ----------- NO_OP void REG NA $VN.Void Mapped BB05 to G_M61140_IG05 IN000a: nop Variable Live Range History Dump for BB05 ..None.. =============== Generating BB06 [0011] [07B..07C) (return), preds={BB05,BB13} succs={} flags=0x00000000.0000a011: i LIR rare label BB06 IN (0)={} OUT(0)={} Recording Var Locations at start of BB06 Liveness not changing: 0000000000000000 {} Live regs: (unchanged) 00000000 {} GC regs: (unchanged) 00000000 {} Byref regs: (unchanged) 00000000 {} L_M61140_BB06: Saved: G_M61140_IG05: ; offs=0x000026, size=0x0001, bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB05 [0008], byref Created: G_M61140_IG06: ; offs=0x000027, size=0x0000, bbWeight=0, gcrefRegs=00000000 {} Label: G_M61140_IG06, GCvars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {} Scope info: begin block BB06, IL range [07B..07C) Added IP mapping: 0x007B STACK_EMPTY (G_M61140_IG06,ins#0,ofs#0) label Generating: N071 (???,???) [000056] ----------- IL_OFFSET void INLRT @ 0x07B[E-] REG NA Generating: N073 ( 0, 0) [000018] ----------- RETURN void REG NA $VN.Void Added IP mapping: EPILOG (G_M61140_IG06,ins#0,ofs#0) label Reserving epilog IG for block BB06 Created: G_M61140_IG07: ; offs=0x000127, size=0x0000, bbWeight=0, gcrefRegs=00000000 {}, epilog *************** After placeholder IG creation G_M61140_IG01: ; func=00, offs=0x000000, size=0x0000, bbWeight=1, gcrefRegs=00000000 {} <-- Prolog IG G_M61140_IG02: ; offs=0x000000, size=0x000A, bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB02 [0000], byref G_M61140_IG03: ; offs=0x00000A, size=0x000A, bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB03 [0001], byref G_M61140_IG04: ; offs=0x000014, size=0x0012, bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB04 [0002], byref G_M61140_IG05: ; offs=0x000026, size=0x0001, bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB05 [0008], byref G_M61140_IG06: ; epilog placeholder, next placeholder=, BB06 [0011], epilog <-- First placeholder <-- Last placeholder ; PrevGCVars=0000000000000000 {}, PrevGCrefRegs=00000000 {}, PrevByrefRegs=00000000 {} ; InitGCVars=0000000000000000 {}, InitGCrefRegs=00000000 {}, InitByrefRegs=00000000 {} G_M61140_IG07: ; offs=0x000127, size=0x0000, bbWeight=0, gcrefRegs=00000000 {} <-- Current IG Variable Live Range History Dump for BB06 ..None.. =============== Generating BB07 [0003] [023..033) (throw), preds={BB04} succs={} flags=0x00000000.3088a119: i LIR rare keep label hascall xentry gcsafe flet newobj BB07 IN (0)={} + ByrefExposed + GcHeap OUT(0)={} + ByrefExposed + GcHeap Recording Var Locations at start of BB07 Liveness not changing: 0000000000000000 {} Live regs: (unchanged) 00000000 {} GC regs: (unchanged) 00000000 {} Byref regs: (unchanged) 00000000 {} L_M61140_BB07: Label: G_M61140_IG07, GCvars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {} Scope info: found beginning of funclet region at block BB07; ignoring following blocks Reserving funclet prolog IG for block BB07 Added IP mapping: PROLOG (G_M61140_IG07,ins#0,ofs#256) label Created: G_M61140_IG08: ; offs=0x000227, size=0x0000, bbWeight=0, gcrefRegs=00000000 {}, funclet prolog *************** After placeholder IG creation G_M61140_IG01: ; func=00, offs=0x000000, size=0x0000, bbWeight=1, gcrefRegs=00000000 {} <-- Prolog IG G_M61140_IG02: ; offs=0x000000, size=0x000A, bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB02 [0000], byref G_M61140_IG03: ; offs=0x00000A, size=0x000A, bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB03 [0001], byref G_M61140_IG04: ; offs=0x000014, size=0x0012, bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB04 [0002], byref G_M61140_IG05: ; offs=0x000026, size=0x0001, bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB05 [0008], byref G_M61140_IG06: ; epilog placeholder, next placeholder=IG07 , BB06 [0011], epilog <-- First placeholder ; PrevGCVars=0000000000000000 {}, PrevGCrefRegs=00000000 {}, PrevByrefRegs=00000000 {} ; InitGCVars=0000000000000000 {}, InitGCrefRegs=00000000 {}, InitByrefRegs=00000000 {} G_M61140_IG07: ; func=01, funclet prolog placeholder, next placeholder=, BB07 [0003], funclet prolog <-- Last placeholder ; PrevGCVars=0000000000000000 {}, PrevGCrefRegs=00000000 {}, PrevByrefRegs=00000000 {} ; InitGCVars=0000000000000000 {}, InitGCrefRegs=00000000 {}, InitByrefRegs=00000000 {} G_M61140_IG08: ; offs=0x000227, size=0x0000, bbWeight=0, gcrefRegs=00000000 {} <-- Current IG Added IP mapping: 0x0023 STACK_EMPTY (G_M61140_IG08,ins#0,ofs#0) label Generating: N033 (???,???) [000057] ----------- IL_OFFSET void INLRT @ 0x023[E-] REG NA Generating: N035 ( 1, 4) [000048] H---------- t48 = CNS_INT(h) ref '" in finally"' REG ecx $c3 Mapped BB07 to G_M61140_IG08 IN000b: mov ecx, (reloc 0x4000000000425478) GC regs: 00000000 {} => 00000002 {ecx} /--* t48 ref Generating: N037 (???,???) [000069] ----------- t69 = * PUTARG_REG ref REG ecx GC regs: 00000002 {ecx} => 00000000 {} GC regs: 00000000 {} => 00000002 {ecx} /--* t69 ref arg0 in ecx Generating: N039 ( 15, 10) [000020] --CXG------ * CALL void System.Console:WriteLine(System.String) REG NA $VN.Void GC regs: 00000002 {ecx} => 00000000 {} Call: GCvars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {} IN000c: call System.Console:WriteLine(System.String) Added IP mapping: 0x002D STACK_EMPTY (G_M61140_IG08,ins#2,ofs#10) Generating: N041 (???,???) [000058] ----------- IL_OFFSET void INLRT @ 0x02D[E-] REG NA Generating: N043 ( 1, 4) [000021] H---------- t21 = CNS_INT(h) int 0x425450 class REG ecx $141 IN000d: mov ecx, (reloc 0x4000000000425450) /--* t21 int Generating: N045 (???,???) [000070] ----------- t70 = * PUTARG_REG int REG ecx /--* t70 int arg0 in ecx Generating: N047 ( 15, 10) [000022] --C-------- t22 = * CALL help ref CORINFO_HELP_NEWSFAST REG eax $1c0 Call: GCvars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {} IN000e: call CORINFO_HELP_NEWSFAST GC regs: 00000000 {} => 00000001 {eax} /--* t22 ref Generating: N049 ( 19, 13) [000023] DAC-------- * STORE_LCL_VAR ref V03 tmp2 d:1 esi REG esi $VN.Void GC regs: 00000001 {eax} => 00000000 {} IN000f: mov esi, eax V03 in reg esi is becoming live [000023] Live regs: 00000000 {} + {esi} => 00000040 {esi} Live vars after [000023]: {} +{V03} => {V03} GC regs: 00000000 {} => 00000040 {esi} Generating: N051 ( 3, 2) [000024] ----------- t24 = LCL_VAR ref V03 tmp2 u:1 esi REG esi $1c0 /--* t24 ref Generating: N053 (???,???) [000071] ----------- t71 = * PUTARG_REG ref REG ecx IN0010: mov ecx, esi GC regs: 00000040 {esi} => 00000042 {ecx esi} /--* t71 ref this in ecx Generating: N055 ( 17, 8) [000025] --CXG------ * CALL void System.Exception:.ctor():this REG NA $VN.Void GC regs: 00000042 {ecx esi} => 00000040 {esi} Call: GCvars=0000000000000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {} IN0011: call System.Exception:.ctor():this Added IP mapping: 0x0032 (G_M61140_IG08,ins#7,ofs#29) Generating: N057 (???,???) [000059] ----------- IL_OFFSET void INLRT @ 0x032[--] REG NA Generating: N059 ( 3, 2) [000026] ----------- t26 = LCL_VAR ref V03 tmp2 u:1 esi (last use) REG esi $1c0 /--* t26 ref Generating: N061 (???,???) [000072] ----------- t72 = * PUTARG_REG ref REG ecx V03 in reg esi is becoming dead [000026] Live regs: 00000040 {esi} - {esi} => 00000000 {} Live vars after [000026]: {V03} -{V03} => {} GC regs: 00000040 {esi} => 00000000 {} IN0012: mov ecx, esi GC regs: 00000000 {} => 00000002 {ecx} /--* t72 ref arg0 in ecx Generating: N063 ( 17, 8) [000027] --CXG------ * CALL help void CORINFO_HELP_THROW REG NA $1c2 GC regs: 00000002 {ecx} => 00000000 {} Call: GCvars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {} IN0013: call CORINFO_HELP_THROW IN0014: int3 Variable Live Range History Dump for BB07 ..None.. =============== Generating BB08 [0013] [03A..???) -> BB09 (always), preds={} succs={BB09} flags=0x00000100.2000a139: i LIR rare keep internal label xentry flet q BB08 IN (0)={} + ByrefExposed + GcHeap OUT(0)={} + ByrefExposed + GcHeap Recording Var Locations at start of BB08 Liveness not changing: 0000000000000000 {} Live regs: (unchanged) 00000000 {} GC regs: (unchanged) 00000000 {} Byref regs: (unchanged) 00000000 {} L_M61140_BB08: Saved: G_M61140_IG08: ; offs=0x000227, size=0x0025, bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB07 [0003], gcvars, byref Created: G_M61140_IG09: ; offs=0x00024C, size=0x0000, bbWeight=0, gcrefRegs=00000000 {} Label: G_M61140_IG09, GCvars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {} Added IP mapping: NO_MAP (G_M61140_IG09,ins#0,ofs#0) label Reserving funclet prolog IG for block BB08 Added IP mapping: PROLOG (G_M61140_IG09,ins#0,ofs#256) label Created: G_M61140_IG10: ; offs=0x00034C, size=0x0000, bbWeight=0, gcrefRegs=00000000 {}, funclet prolog *************** After placeholder IG creation G_M61140_IG01: ; func=00, offs=0x000000, size=0x0000, bbWeight=1, gcrefRegs=00000000 {} <-- Prolog IG G_M61140_IG02: ; offs=0x000000, size=0x000A, bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB02 [0000], byref G_M61140_IG03: ; offs=0x00000A, size=0x000A, bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB03 [0001], byref G_M61140_IG04: ; offs=0x000014, size=0x0012, bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB04 [0002], byref G_M61140_IG05: ; offs=0x000026, size=0x0001, bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB05 [0008], byref G_M61140_IG06: ; epilog placeholder, next placeholder=IG07 , BB06 [0011], epilog <-- First placeholder ; PrevGCVars=0000000000000000 {}, PrevGCrefRegs=00000000 {}, PrevByrefRegs=00000000 {} ; InitGCVars=0000000000000000 {}, InitGCrefRegs=00000000 {}, InitByrefRegs=00000000 {} G_M61140_IG07: ; func=01, funclet prolog placeholder, next placeholder=IG09 , BB07 [0003], funclet prolog ; PrevGCVars=0000000000000000 {}, PrevGCrefRegs=00000000 {}, PrevByrefRegs=00000000 {} ; InitGCVars=0000000000000000 {}, InitGCrefRegs=00000000 {}, InitByrefRegs=00000000 {} G_M61140_IG08: ; offs=0x000227, size=0x0025, bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB07 [0003], gcvars, byref G_M61140_IG09: ; func=02, funclet prolog placeholder, next placeholder=, BB08 [0013], funclet prolog <-- Last placeholder ; PrevGCVars=0000000000000000 {}, PrevGCrefRegs=00000000 {}, PrevByrefRegs=00000000 {} ; InitGCVars=0000000000000000 {}, InitGCrefRegs=00000000 {}, InitByrefRegs=00000000 {} G_M61140_IG10: ; offs=0x00034C, size=0x0000, bbWeight=0, gcrefRegs=00000000 {} <-- Current IG Variable Live Range History Dump for BB08 ..None.. =============== Generating BB09 [0006] [03A..048) -> BB10 (fltret), preds={BB08} succs={BB10} flags=0x00000000.30082019: i LIR rare keep hascall xentry gcsafe BB09 IN (0)={} + ByrefExposed + GcHeap OUT(0)={} + ByrefExposed + GcHeap Recording Var Locations at start of BB09 Liveness not changing: 0000000000000000 {} Live regs: (unchanged) 00000000 {} GC regs: (unchanged) 00000000 {} Byref regs: (unchanged) 00000000 {} L_M61140_BB09: Added IP mapping: 0x003B STACK_EMPTY (G_M61140_IG10,ins#0,ofs#0) label Generating: N079 (???,???) [000060] ----------- IL_OFFSET void INLRT @ 0x03B[E-] REG NA Generating: N081 ( 1, 4) [000049] H---------- t49 = CNS_INT(h) ref '" in filter"' REG ecx $c4 Mapped BB09 to G_M61140_IG10 IN0015: mov ecx, (reloc 0x4000000000425480) GC regs: 00000000 {} => 00000002 {ecx} /--* t49 ref Generating: N083 (???,???) [000073] ----------- t73 = * PUTARG_REG ref REG ecx GC regs: 00000002 {ecx} => 00000000 {} GC regs: 00000000 {} => 00000002 {ecx} /--* t73 ref arg0 in ecx Generating: N085 ( 15, 10) [000029] --CXG------ * CALL void System.Console:WriteLine(System.String) REG NA $VN.Void GC regs: 00000002 {ecx} => 00000000 {} Call: GCvars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {} IN0016: call System.Console:WriteLine(System.String) Added IP mapping: 0x0045 STACK_EMPTY (G_M61140_IG10,ins#2,ofs#10) Generating: N087 (???,???) [000061] ----------- IL_OFFSET void INLRT @ 0x045[E-] REG NA Generating: N089 ( 1, 1) [000030] ----------- t30 = CNS_INT int 0 REG eax $49 IN0017: xor eax, eax /--* t30 int Generating: N091 ( 2, 2) [000031] ----------- * RETFILT int REG NA $VN.Void Reserving funclet epilog IG for block BB09 Saved: G_M61140_IG10: ; offs=0x00034C, size=0x000C, bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB09 [0006], gcvars, byref Created: G_M61140_IG11: ; offs=0x000358, size=0x0000, bbWeight=0, gcrefRegs=00000000 {} Added IP mapping: EPILOG (G_M61140_IG11,ins#0,ofs#256) label Created: G_M61140_IG12: ; offs=0x000458, size=0x0000, bbWeight=0, gcrefRegs=00000000 {}, funclet epilog *************** After placeholder IG creation G_M61140_IG01: ; func=00, offs=0x000000, size=0x0000, bbWeight=1, gcrefRegs=00000000 {} <-- Prolog IG G_M61140_IG02: ; offs=0x000000, size=0x000A, bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB02 [0000], byref G_M61140_IG03: ; offs=0x00000A, size=0x000A, bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB03 [0001], byref G_M61140_IG04: ; offs=0x000014, size=0x0012, bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB04 [0002], byref G_M61140_IG05: ; offs=0x000026, size=0x0001, bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB05 [0008], byref G_M61140_IG06: ; epilog placeholder, next placeholder=IG07 , BB06 [0011], epilog <-- First placeholder ; PrevGCVars=0000000000000000 {}, PrevGCrefRegs=00000000 {}, PrevByrefRegs=00000000 {} ; InitGCVars=0000000000000000 {}, InitGCrefRegs=00000000 {}, InitByrefRegs=00000000 {} G_M61140_IG07: ; func=01, funclet prolog placeholder, next placeholder=IG09 , BB07 [0003], funclet prolog ; PrevGCVars=0000000000000000 {}, PrevGCrefRegs=00000000 {}, PrevByrefRegs=00000000 {} ; InitGCVars=0000000000000000 {}, InitGCrefRegs=00000000 {}, InitByrefRegs=00000000 {} G_M61140_IG08: ; offs=0x000227, size=0x0025, bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB07 [0003], gcvars, byref G_M61140_IG09: ; func=02, funclet prolog placeholder, next placeholder=IG11 , BB08 [0013], funclet prolog ; PrevGCVars=0000000000000000 {}, PrevGCrefRegs=00000000 {}, PrevByrefRegs=00000000 {} ; InitGCVars=0000000000000000 {}, InitGCrefRegs=00000000 {}, InitByrefRegs=00000000 {} G_M61140_IG10: ; offs=0x00034C, size=0x000C, bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB09 [0006], gcvars, byref G_M61140_IG11: ; funclet epilog placeholder, next placeholder=, BB09 [0006], funclet epilog, extend <-- Last placeholder ; PrevGCVars=0000000000000000 {}, PrevGCrefRegs=00000000 {}, PrevByrefRegs=00000000 {} ; InitGCVars=0000000000000000 {}, InitGCrefRegs=00000000 {}, InitByrefRegs=00000000 {} G_M61140_IG12: ; offs=0x000458, size=0x0000, bbWeight=0, gcrefRegs=00000000 {} <-- Current IG Variable Live Range History Dump for BB09 ..None.. =============== Generating BB10 [0007] [048..058) -> BB05 (cret), preds={BB09} succs={BB05} flags=0x00000000.3008a119: i LIR rare keep label hascall xentry gcsafe flet BB10 IN (0)={} + ByrefExposed + GcHeap OUT(0)={} + ByrefExposed + GcHeap Recording Var Locations at start of BB10 Liveness not changing: 0000000000000000 {} Live regs: (unchanged) 00000000 {} GC regs: (unchanged) 00000000 {} Byref regs: (unchanged) 00000000 {} L_M61140_BB10: Label: G_M61140_IG12, GCvars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {} Reserving funclet prolog IG for block BB10 Added IP mapping: PROLOG (G_M61140_IG12,ins#0,ofs#256) label Created: G_M61140_IG13: ; offs=0x000558, size=0x0000, bbWeight=0, gcrefRegs=00000000 {}, funclet prolog *************** After placeholder IG creation G_M61140_IG01: ; func=00, offs=0x000000, size=0x0000, bbWeight=1, gcrefRegs=00000000 {} <-- Prolog IG G_M61140_IG02: ; offs=0x000000, size=0x000A, bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB02 [0000], byref G_M61140_IG03: ; offs=0x00000A, size=0x000A, bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB03 [0001], byref G_M61140_IG04: ; offs=0x000014, size=0x0012, bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB04 [0002], byref G_M61140_IG05: ; offs=0x000026, size=0x0001, bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB05 [0008], byref G_M61140_IG06: ; epilog placeholder, next placeholder=IG07 , BB06 [0011], epilog <-- First placeholder ; PrevGCVars=0000000000000000 {}, PrevGCrefRegs=00000000 {}, PrevByrefRegs=00000000 {} ; InitGCVars=0000000000000000 {}, InitGCrefRegs=00000000 {}, InitByrefRegs=00000000 {} G_M61140_IG07: ; func=01, funclet prolog placeholder, next placeholder=IG09 , BB07 [0003], funclet prolog ; PrevGCVars=0000000000000000 {}, PrevGCrefRegs=00000000 {}, PrevByrefRegs=00000000 {} ; InitGCVars=0000000000000000 {}, InitGCrefRegs=00000000 {}, InitByrefRegs=00000000 {} G_M61140_IG08: ; offs=0x000227, size=0x0025, bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB07 [0003], gcvars, byref G_M61140_IG09: ; func=02, funclet prolog placeholder, next placeholder=IG11 , BB08 [0013], funclet prolog ; PrevGCVars=0000000000000000 {}, PrevGCrefRegs=00000000 {}, PrevByrefRegs=00000000 {} ; InitGCVars=0000000000000000 {}, InitGCrefRegs=00000000 {}, InitByrefRegs=00000000 {} G_M61140_IG10: ; offs=0x00034C, size=0x000C, bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB09 [0006], gcvars, byref G_M61140_IG11: ; funclet epilog placeholder, next placeholder=IG12 , BB09 [0006], funclet epilog, extend ; PrevGCVars=0000000000000000 {}, PrevGCrefRegs=00000000 {}, PrevByrefRegs=00000000 {} ; InitGCVars=0000000000000000 {}, InitGCrefRegs=00000000 {}, InitByrefRegs=00000000 {} G_M61140_IG12: ; func=03, funclet prolog placeholder, next placeholder=, BB10 [0007], funclet prolog <-- Last placeholder ; PrevGCVars=0000000000000000 {}, PrevGCrefRegs=00000000 {}, PrevByrefRegs=00000000 {} ; InitGCVars=0000000000000000 {}, InitGCrefRegs=00000000 {}, InitByrefRegs=00000000 {} G_M61140_IG13: ; offs=0x000558, size=0x0000, bbWeight=0, gcrefRegs=00000000 {} <-- Current IG Added IP mapping: 0x0049 STACK_EMPTY (G_M61140_IG13,ins#0,ofs#0) label Generating: N095 (???,???) [000062] ----------- IL_OFFSET void INLRT @ 0x049[E-] REG NA Generating: N097 ( 1, 4) [000050] H---------- t50 = CNS_INT(h) ref '" in handler"' REG ecx $c5 Mapped BB10 to G_M61140_IG13 IN0018: mov ecx, (reloc 0x4000000000425488) GC regs: 00000000 {} => 00000002 {ecx} /--* t50 ref Generating: N099 (???,???) [000074] ----------- t74 = * PUTARG_REG ref REG ecx GC regs: 00000002 {ecx} => 00000000 {} GC regs: 00000000 {} => 00000002 {ecx} /--* t74 ref arg0 in ecx Generating: N101 ( 15, 10) [000035] --CXG------ * CALL void System.Console:WriteLine(System.String) REG NA $VN.Void GC regs: 00000002 {ecx} => 00000000 {} Call: GCvars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {} IN0019: call System.Console:WriteLine(System.String) IN001a: lea eax, L_M61140_BB05 Reserving funclet epilog IG for block BB10 Saved: G_M61140_IG13: ; offs=0x000558, size=0x0010, bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB10 [0007], gcvars, byref Created: G_M61140_IG14: ; offs=0x000568, size=0x0000, bbWeight=0, gcrefRegs=00000000 {} Added IP mapping: EPILOG (G_M61140_IG14,ins#0,ofs#256) label Created: G_M61140_IG15: ; offs=0x000668, size=0x0000, bbWeight=0, gcrefRegs=00000000 {}, funclet epilog *************** After placeholder IG creation G_M61140_IG01: ; func=00, offs=0x000000, size=0x0000, bbWeight=1, gcrefRegs=00000000 {} <-- Prolog IG G_M61140_IG02: ; offs=0x000000, size=0x000A, bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB02 [0000], byref G_M61140_IG03: ; offs=0x00000A, size=0x000A, bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB03 [0001], byref G_M61140_IG04: ; offs=0x000014, size=0x0012, bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB04 [0002], byref G_M61140_IG05: ; offs=0x000026, size=0x0001, bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB05 [0008], byref G_M61140_IG06: ; epilog placeholder, next placeholder=IG07 , BB06 [0011], epilog <-- First placeholder ; PrevGCVars=0000000000000000 {}, PrevGCrefRegs=00000000 {}, PrevByrefRegs=00000000 {} ; InitGCVars=0000000000000000 {}, InitGCrefRegs=00000000 {}, InitByrefRegs=00000000 {} G_M61140_IG07: ; func=01, funclet prolog placeholder, next placeholder=IG09 , BB07 [0003], funclet prolog ; PrevGCVars=0000000000000000 {}, PrevGCrefRegs=00000000 {}, PrevByrefRegs=00000000 {} ; InitGCVars=0000000000000000 {}, InitGCrefRegs=00000000 {}, InitByrefRegs=00000000 {} G_M61140_IG08: ; offs=0x000227, size=0x0025, bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB07 [0003], gcvars, byref G_M61140_IG09: ; func=02, funclet prolog placeholder, next placeholder=IG11 , BB08 [0013], funclet prolog ; PrevGCVars=0000000000000000 {}, PrevGCrefRegs=00000000 {}, PrevByrefRegs=00000000 {} ; InitGCVars=0000000000000000 {}, InitGCrefRegs=00000000 {}, InitByrefRegs=00000000 {} G_M61140_IG10: ; offs=0x00034C, size=0x000C, bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB09 [0006], gcvars, byref G_M61140_IG11: ; funclet epilog placeholder, next placeholder=IG12 , BB09 [0006], funclet epilog, extend ; PrevGCVars=0000000000000000 {}, PrevGCrefRegs=00000000 {}, PrevByrefRegs=00000000 {} ; InitGCVars=0000000000000000 {}, InitGCrefRegs=00000000 {}, InitByrefRegs=00000000 {} G_M61140_IG12: ; func=03, funclet prolog placeholder, next placeholder=IG14 , BB10 [0007], funclet prolog ; PrevGCVars=0000000000000000 {}, PrevGCrefRegs=00000000 {}, PrevByrefRegs=00000000 {} ; InitGCVars=0000000000000000 {}, InitGCrefRegs=00000000 {}, InitByrefRegs=00000000 {} G_M61140_IG13: ; offs=0x000558, size=0x0010, bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB10 [0007], gcvars, byref G_M61140_IG14: ; funclet epilog placeholder, next placeholder=, BB10 [0007], funclet epilog, extend <-- Last placeholder ; PrevGCVars=0000000000000000 {}, PrevGCrefRegs=00000000 {}, PrevByrefRegs=00000000 {} ; InitGCVars=0000000000000000 {}, InitGCrefRegs=00000000 {}, InitByrefRegs=00000000 {} G_M61140_IG15: ; offs=0x000668, size=0x0000, bbWeight=0, gcrefRegs=00000000 {} <-- Current IG Variable Live Range History Dump for BB10 ..None.. =============== Generating BB11 [0012] [05D..???) -> BB12 (always), preds={} succs={BB12} flags=0x00000100.2000a139: i LIR rare keep internal label xentry flet q BB11 IN (0)={} + ByrefExposed + GcHeap OUT(0)={} + ByrefExposed + GcHeap Recording Var Locations at start of BB11 Liveness not changing: 0000000000000000 {} Live regs: (unchanged) 00000000 {} GC regs: (unchanged) 00000000 {} Byref regs: (unchanged) 00000000 {} L_M61140_BB11: Label: G_M61140_IG15, GCvars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {} Added IP mapping: NO_MAP (G_M61140_IG15,ins#0,ofs#0) label Reserving funclet prolog IG for block BB11 Added IP mapping: PROLOG (G_M61140_IG15,ins#0,ofs#256) label Created: G_M61140_IG16: ; offs=0x000768, size=0x0000, bbWeight=0, gcrefRegs=00000000 {}, funclet prolog *************** After placeholder IG creation G_M61140_IG01: ; func=00, offs=0x000000, size=0x0000, bbWeight=1, gcrefRegs=00000000 {} <-- Prolog IG G_M61140_IG02: ; offs=0x000000, size=0x000A, bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB02 [0000], byref G_M61140_IG03: ; offs=0x00000A, size=0x000A, bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB03 [0001], byref G_M61140_IG04: ; offs=0x000014, size=0x0012, bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB04 [0002], byref G_M61140_IG05: ; offs=0x000026, size=0x0001, bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB05 [0008], byref G_M61140_IG06: ; epilog placeholder, next placeholder=IG07 , BB06 [0011], epilog <-- First placeholder ; PrevGCVars=0000000000000000 {}, PrevGCrefRegs=00000000 {}, PrevByrefRegs=00000000 {} ; InitGCVars=0000000000000000 {}, InitGCrefRegs=00000000 {}, InitByrefRegs=00000000 {} G_M61140_IG07: ; func=01, funclet prolog placeholder, next placeholder=IG09 , BB07 [0003], funclet prolog ; PrevGCVars=0000000000000000 {}, PrevGCrefRegs=00000000 {}, PrevByrefRegs=00000000 {} ; InitGCVars=0000000000000000 {}, InitGCrefRegs=00000000 {}, InitByrefRegs=00000000 {} G_M61140_IG08: ; offs=0x000227, size=0x0025, bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB07 [0003], gcvars, byref G_M61140_IG09: ; func=02, funclet prolog placeholder, next placeholder=IG11 , BB08 [0013], funclet prolog ; PrevGCVars=0000000000000000 {}, PrevGCrefRegs=00000000 {}, PrevByrefRegs=00000000 {} ; InitGCVars=0000000000000000 {}, InitGCrefRegs=00000000 {}, InitByrefRegs=00000000 {} G_M61140_IG10: ; offs=0x00034C, size=0x000C, bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB09 [0006], gcvars, byref G_M61140_IG11: ; funclet epilog placeholder, next placeholder=IG12 , BB09 [0006], funclet epilog, extend ; PrevGCVars=0000000000000000 {}, PrevGCrefRegs=00000000 {}, PrevByrefRegs=00000000 {} ; InitGCVars=0000000000000000 {}, InitGCrefRegs=00000000 {}, InitByrefRegs=00000000 {} G_M61140_IG12: ; func=03, funclet prolog placeholder, next placeholder=IG14 , BB10 [0007], funclet prolog ; PrevGCVars=0000000000000000 {}, PrevGCrefRegs=00000000 {}, PrevByrefRegs=00000000 {} ; InitGCVars=0000000000000000 {}, InitGCrefRegs=00000000 {}, InitByrefRegs=00000000 {} G_M61140_IG13: ; offs=0x000558, size=0x0010, bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB10 [0007], gcvars, byref G_M61140_IG14: ; funclet epilog placeholder, next placeholder=IG15 , BB10 [0007], funclet epilog, extend ; PrevGCVars=0000000000000000 {}, PrevGCrefRegs=00000000 {}, PrevByrefRegs=00000000 {} ; InitGCVars=0000000000000000 {}, InitGCrefRegs=00000000 {}, InitByrefRegs=00000000 {} G_M61140_IG15: ; func=04, funclet prolog placeholder, next placeholder=, BB11 [0012], funclet prolog <-- Last placeholder ; PrevGCVars=0000000000000000 {}, PrevGCrefRegs=00000000 {}, PrevByrefRegs=00000000 {} ; InitGCVars=0000000000000000 {}, InitGCrefRegs=00000000 {}, InitByrefRegs=00000000 {} G_M61140_IG16: ; offs=0x000768, size=0x0000, bbWeight=0, gcrefRegs=00000000 {} <-- Current IG Variable Live Range History Dump for BB11 ..None.. =============== Generating BB12 [0009] [05D..06B) -> BB13 (fltret), preds={BB11} succs={BB13} flags=0x00000000.30082019: i LIR rare keep hascall xentry gcsafe BB12 IN (0)={} + ByrefExposed + GcHeap OUT(0)={} + ByrefExposed + GcHeap Recording Var Locations at start of BB12 Liveness not changing: 0000000000000000 {} Live regs: (unchanged) 00000000 {} GC regs: (unchanged) 00000000 {} Byref regs: (unchanged) 00000000 {} L_M61140_BB12: Added IP mapping: 0x005E STACK_EMPTY (G_M61140_IG16,ins#0,ofs#0) label Generating: N107 (???,???) [000063] ----------- IL_OFFSET void INLRT @ 0x05E[E-] REG NA Generating: N109 ( 1, 4) [000051] H---------- t51 = CNS_INT(h) ref '"in filter"' REG ecx $c6 Mapped BB12 to G_M61140_IG16 IN001b: mov ecx, (reloc 0x4000000000425490) GC regs: 00000000 {} => 00000002 {ecx} /--* t51 ref Generating: N111 (???,???) [000075] ----------- t75 = * PUTARG_REG ref REG ecx GC regs: 00000002 {ecx} => 00000000 {} GC regs: 00000000 {} => 00000002 {ecx} /--* t75 ref arg0 in ecx Generating: N113 ( 15, 10) [000037] --CXG------ * CALL void System.Console:WriteLine(System.String) REG NA $VN.Void GC regs: 00000002 {ecx} => 00000000 {} Call: GCvars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {} IN001c: call System.Console:WriteLine(System.String) Added IP mapping: 0x0068 STACK_EMPTY (G_M61140_IG16,ins#2,ofs#10) Generating: N115 (???,???) [000064] ----------- IL_OFFSET void INLRT @ 0x068[E-] REG NA Generating: N117 ( 1, 1) [000038] ----------- t38 = CNS_INT int 0 REG eax $49 IN001d: xor eax, eax /--* t38 int Generating: N119 ( 2, 2) [000039] ----------- * RETFILT int REG NA $VN.Void Reserving funclet epilog IG for block BB12 Saved: G_M61140_IG16: ; offs=0x000768, size=0x000C, bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB12 [0009], gcvars, byref Created: G_M61140_IG17: ; offs=0x000774, size=0x0000, bbWeight=0, gcrefRegs=00000000 {} Added IP mapping: EPILOG (G_M61140_IG17,ins#0,ofs#256) label Created: G_M61140_IG18: ; offs=0x000874, size=0x0000, bbWeight=0, gcrefRegs=00000000 {}, funclet epilog *************** After placeholder IG creation G_M61140_IG01: ; func=00, offs=0x000000, size=0x0000, bbWeight=1, gcrefRegs=00000000 {} <-- Prolog IG G_M61140_IG02: ; offs=0x000000, size=0x000A, bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB02 [0000], byref G_M61140_IG03: ; offs=0x00000A, size=0x000A, bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB03 [0001], byref G_M61140_IG04: ; offs=0x000014, size=0x0012, bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB04 [0002], byref G_M61140_IG05: ; offs=0x000026, size=0x0001, bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB05 [0008], byref G_M61140_IG06: ; epilog placeholder, next placeholder=IG07 , BB06 [0011], epilog <-- First placeholder ; PrevGCVars=0000000000000000 {}, PrevGCrefRegs=00000000 {}, PrevByrefRegs=00000000 {} ; InitGCVars=0000000000000000 {}, InitGCrefRegs=00000000 {}, InitByrefRegs=00000000 {} G_M61140_IG07: ; func=01, funclet prolog placeholder, next placeholder=IG09 , BB07 [0003], funclet prolog ; PrevGCVars=0000000000000000 {}, PrevGCrefRegs=00000000 {}, PrevByrefRegs=00000000 {} ; InitGCVars=0000000000000000 {}, InitGCrefRegs=00000000 {}, InitByrefRegs=00000000 {} G_M61140_IG08: ; offs=0x000227, size=0x0025, bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB07 [0003], gcvars, byref G_M61140_IG09: ; func=02, funclet prolog placeholder, next placeholder=IG11 , BB08 [0013], funclet prolog ; PrevGCVars=0000000000000000 {}, PrevGCrefRegs=00000000 {}, PrevByrefRegs=00000000 {} ; InitGCVars=0000000000000000 {}, InitGCrefRegs=00000000 {}, InitByrefRegs=00000000 {} G_M61140_IG10: ; offs=0x00034C, size=0x000C, bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB09 [0006], gcvars, byref G_M61140_IG11: ; funclet epilog placeholder, next placeholder=IG12 , BB09 [0006], funclet epilog, extend ; PrevGCVars=0000000000000000 {}, PrevGCrefRegs=00000000 {}, PrevByrefRegs=00000000 {} ; InitGCVars=0000000000000000 {}, InitGCrefRegs=00000000 {}, InitByrefRegs=00000000 {} G_M61140_IG12: ; func=03, funclet prolog placeholder, next placeholder=IG14 , BB10 [0007], funclet prolog ; PrevGCVars=0000000000000000 {}, PrevGCrefRegs=00000000 {}, PrevByrefRegs=00000000 {} ; InitGCVars=0000000000000000 {}, InitGCrefRegs=00000000 {}, InitByrefRegs=00000000 {} G_M61140_IG13: ; offs=0x000558, size=0x0010, bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB10 [0007], gcvars, byref G_M61140_IG14: ; funclet epilog placeholder, next placeholder=IG15 , BB10 [0007], funclet epilog, extend ; PrevGCVars=0000000000000000 {}, PrevGCrefRegs=00000000 {}, PrevByrefRegs=00000000 {} ; InitGCVars=0000000000000000 {}, InitGCrefRegs=00000000 {}, InitByrefRegs=00000000 {} G_M61140_IG15: ; func=04, funclet prolog placeholder, next placeholder=IG17 , BB11 [0012], funclet prolog ; PrevGCVars=0000000000000000 {}, PrevGCrefRegs=00000000 {}, PrevByrefRegs=00000000 {} ; InitGCVars=0000000000000000 {}, InitGCrefRegs=00000000 {}, InitByrefRegs=00000000 {} G_M61140_IG16: ; offs=0x000768, size=0x000C, bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB12 [0009], gcvars, byref G_M61140_IG17: ; funclet epilog placeholder, next placeholder=, BB12 [0009], funclet epilog, extend <-- Last placeholder ; PrevGCVars=0000000000000000 {}, PrevGCrefRegs=00000000 {}, PrevByrefRegs=00000000 {} ; InitGCVars=0000000000000000 {}, InitGCrefRegs=00000000 {}, InitByrefRegs=00000000 {} G_M61140_IG18: ; offs=0x000874, size=0x0000, bbWeight=0, gcrefRegs=00000000 {} <-- Current IG Variable Live Range History Dump for BB12 ..None.. =============== Generating BB13 [0010] [06B..07B) -> BB06 (cret), preds={BB12} succs={BB06} flags=0x00000000.3008a119: i LIR rare keep label hascall xentry gcsafe flet BB13 IN (0)={} + ByrefExposed + GcHeap OUT(0)={} Recording Var Locations at start of BB13 Liveness not changing: 0000000000000000 {} Live regs: (unchanged) 00000000 {} GC regs: (unchanged) 00000000 {} Byref regs: (unchanged) 00000000 {} L_M61140_BB13: Label: G_M61140_IG18, GCvars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {} Reserving funclet prolog IG for block BB13 Added IP mapping: PROLOG (G_M61140_IG18,ins#0,ofs#256) label Created: G_M61140_IG19: ; offs=0x000974, size=0x0000, bbWeight=0, gcrefRegs=00000000 {}, funclet prolog *************** After placeholder IG creation G_M61140_IG01: ; func=00, offs=0x000000, size=0x0000, bbWeight=1, gcrefRegs=00000000 {} <-- Prolog IG G_M61140_IG02: ; offs=0x000000, size=0x000A, bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB02 [0000], byref G_M61140_IG03: ; offs=0x00000A, size=0x000A, bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB03 [0001], byref G_M61140_IG04: ; offs=0x000014, size=0x0012, bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB04 [0002], byref G_M61140_IG05: ; offs=0x000026, size=0x0001, bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB05 [0008], byref G_M61140_IG06: ; epilog placeholder, next placeholder=IG07 , BB06 [0011], epilog <-- First placeholder ; PrevGCVars=0000000000000000 {}, PrevGCrefRegs=00000000 {}, PrevByrefRegs=00000000 {} ; InitGCVars=0000000000000000 {}, InitGCrefRegs=00000000 {}, InitByrefRegs=00000000 {} G_M61140_IG07: ; func=01, funclet prolog placeholder, next placeholder=IG09 , BB07 [0003], funclet prolog ; PrevGCVars=0000000000000000 {}, PrevGCrefRegs=00000000 {}, PrevByrefRegs=00000000 {} ; InitGCVars=0000000000000000 {}, InitGCrefRegs=00000000 {}, InitByrefRegs=00000000 {} G_M61140_IG08: ; offs=0x000227, size=0x0025, bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB07 [0003], gcvars, byref G_M61140_IG09: ; func=02, funclet prolog placeholder, next placeholder=IG11 , BB08 [0013], funclet prolog ; PrevGCVars=0000000000000000 {}, PrevGCrefRegs=00000000 {}, PrevByrefRegs=00000000 {} ; InitGCVars=0000000000000000 {}, InitGCrefRegs=00000000 {}, InitByrefRegs=00000000 {} G_M61140_IG10: ; offs=0x00034C, size=0x000C, bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB09 [0006], gcvars, byref G_M61140_IG11: ; funclet epilog placeholder, next placeholder=IG12 , BB09 [0006], funclet epilog, extend ; PrevGCVars=0000000000000000 {}, PrevGCrefRegs=00000000 {}, PrevByrefRegs=00000000 {} ; InitGCVars=0000000000000000 {}, InitGCrefRegs=00000000 {}, InitByrefRegs=00000000 {} G_M61140_IG12: ; func=03, funclet prolog placeholder, next placeholder=IG14 , BB10 [0007], funclet prolog ; PrevGCVars=0000000000000000 {}, PrevGCrefRegs=00000000 {}, PrevByrefRegs=00000000 {} ; InitGCVars=0000000000000000 {}, InitGCrefRegs=00000000 {}, InitByrefRegs=00000000 {} G_M61140_IG13: ; offs=0x000558, size=0x0010, bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB10 [0007], gcvars, byref G_M61140_IG14: ; funclet epilog placeholder, next placeholder=IG15 , BB10 [0007], funclet epilog, extend ; PrevGCVars=0000000000000000 {}, PrevGCrefRegs=00000000 {}, PrevByrefRegs=00000000 {} ; InitGCVars=0000000000000000 {}, InitGCrefRegs=00000000 {}, InitByrefRegs=00000000 {} G_M61140_IG15: ; func=04, funclet prolog placeholder, next placeholder=IG17 , BB11 [0012], funclet prolog ; PrevGCVars=0000000000000000 {}, PrevGCrefRegs=00000000 {}, PrevByrefRegs=00000000 {} ; InitGCVars=0000000000000000 {}, InitGCrefRegs=00000000 {}, InitByrefRegs=00000000 {} G_M61140_IG16: ; offs=0x000768, size=0x000C, bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB12 [0009], gcvars, byref G_M61140_IG17: ; funclet epilog placeholder, next placeholder=IG18 , BB12 [0009], funclet epilog, extend ; PrevGCVars=0000000000000000 {}, PrevGCrefRegs=00000000 {}, PrevByrefRegs=00000000 {} ; InitGCVars=0000000000000000 {}, InitGCrefRegs=00000000 {}, InitByrefRegs=00000000 {} G_M61140_IG18: ; func=05, funclet prolog placeholder, next placeholder=, BB13 [0010], funclet prolog <-- Last placeholder ; PrevGCVars=0000000000000000 {}, PrevGCrefRegs=00000000 {}, PrevByrefRegs=00000000 {} ; InitGCVars=0000000000000000 {}, InitGCrefRegs=00000000 {}, InitByrefRegs=00000000 {} G_M61140_IG19: ; offs=0x000974, size=0x0000, bbWeight=0, gcrefRegs=00000000 {} <-- Current IG Added IP mapping: 0x006C STACK_EMPTY (G_M61140_IG19,ins#0,ofs#0) label Generating: N123 (???,???) [000065] ----------- IL_OFFSET void INLRT @ 0x06C[E-] REG NA Generating: N125 ( 1, 4) [000052] H---------- t52 = CNS_INT(h) ref '"in handler"' REG ecx $c7 Mapped BB13 to G_M61140_IG19 IN001e: mov ecx, (reloc 0x4000000000425498) GC regs: 00000000 {} => 00000002 {ecx} /--* t52 ref Generating: N127 (???,???) [000076] ----------- t76 = * PUTARG_REG ref REG ecx GC regs: 00000002 {ecx} => 00000000 {} GC regs: 00000000 {} => 00000002 {ecx} /--* t76 ref arg0 in ecx Generating: N129 ( 15, 10) [000043] --CXG------ * CALL void System.Console:WriteLine(System.String) REG NA $VN.Void GC regs: 00000002 {ecx} => 00000000 {} Call: GCvars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {} IN001f: call System.Console:WriteLine(System.String) IN0020: lea eax, L_M61140_BB06 Reserving funclet epilog IG for block BB13 Saved: G_M61140_IG19: ; offs=0x000974, size=0x0010, bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB13 [0010], gcvars, byref Created: G_M61140_IG20: ; offs=0x000984, size=0x0000, bbWeight=0, gcrefRegs=00000000 {} Added IP mapping: EPILOG (G_M61140_IG20,ins#0,ofs#256) label *************** After placeholder IG creation G_M61140_IG01: ; func=00, offs=0x000000, size=0x0000, bbWeight=1, gcrefRegs=00000000 {} <-- Prolog IG G_M61140_IG02: ; offs=0x000000, size=0x000A, bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB02 [0000], byref G_M61140_IG03: ; offs=0x00000A, size=0x000A, bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB03 [0001], byref G_M61140_IG04: ; offs=0x000014, size=0x0012, bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB04 [0002], byref G_M61140_IG05: ; offs=0x000026, size=0x0001, bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB05 [0008], byref G_M61140_IG06: ; epilog placeholder, next placeholder=IG07 , BB06 [0011], epilog <-- First placeholder ; PrevGCVars=0000000000000000 {}, PrevGCrefRegs=00000000 {}, PrevByrefRegs=00000000 {} ; InitGCVars=0000000000000000 {}, InitGCrefRegs=00000000 {}, InitByrefRegs=00000000 {} G_M61140_IG07: ; func=01, funclet prolog placeholder, next placeholder=IG09 , BB07 [0003], funclet prolog ; PrevGCVars=0000000000000000 {}, PrevGCrefRegs=00000000 {}, PrevByrefRegs=00000000 {} ; InitGCVars=0000000000000000 {}, InitGCrefRegs=00000000 {}, InitByrefRegs=00000000 {} G_M61140_IG08: ; offs=0x000227, size=0x0025, bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB07 [0003], gcvars, byref G_M61140_IG09: ; func=02, funclet prolog placeholder, next placeholder=IG11 , BB08 [0013], funclet prolog ; PrevGCVars=0000000000000000 {}, PrevGCrefRegs=00000000 {}, PrevByrefRegs=00000000 {} ; InitGCVars=0000000000000000 {}, InitGCrefRegs=00000000 {}, InitByrefRegs=00000000 {} G_M61140_IG10: ; offs=0x00034C, size=0x000C, bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB09 [0006], gcvars, byref G_M61140_IG11: ; funclet epilog placeholder, next placeholder=IG12 , BB09 [0006], funclet epilog, extend ; PrevGCVars=0000000000000000 {}, PrevGCrefRegs=00000000 {}, PrevByrefRegs=00000000 {} ; InitGCVars=0000000000000000 {}, InitGCrefRegs=00000000 {}, InitByrefRegs=00000000 {} G_M61140_IG12: ; func=03, funclet prolog placeholder, next placeholder=IG14 , BB10 [0007], funclet prolog ; PrevGCVars=0000000000000000 {}, PrevGCrefRegs=00000000 {}, PrevByrefRegs=00000000 {} ; InitGCVars=0000000000000000 {}, InitGCrefRegs=00000000 {}, InitByrefRegs=00000000 {} G_M61140_IG13: ; offs=0x000558, size=0x0010, bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB10 [0007], gcvars, byref G_M61140_IG14: ; funclet epilog placeholder, next placeholder=IG15 , BB10 [0007], funclet epilog, extend ; PrevGCVars=0000000000000000 {}, PrevGCrefRegs=00000000 {}, PrevByrefRegs=00000000 {} ; InitGCVars=0000000000000000 {}, InitGCrefRegs=00000000 {}, InitByrefRegs=00000000 {} G_M61140_IG15: ; func=04, funclet prolog placeholder, next placeholder=IG17 , BB11 [0012], funclet prolog ; PrevGCVars=0000000000000000 {}, PrevGCrefRegs=00000000 {}, PrevByrefRegs=00000000 {} ; InitGCVars=0000000000000000 {}, InitGCrefRegs=00000000 {}, InitByrefRegs=00000000 {} G_M61140_IG16: ; offs=0x000768, size=0x000C, bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB12 [0009], gcvars, byref G_M61140_IG17: ; funclet epilog placeholder, next placeholder=IG18 , BB12 [0009], funclet epilog, extend ; PrevGCVars=0000000000000000 {}, PrevGCrefRegs=00000000 {}, PrevByrefRegs=00000000 {} ; InitGCVars=0000000000000000 {}, InitGCrefRegs=00000000 {}, InitByrefRegs=00000000 {} G_M61140_IG18: ; func=05, funclet prolog placeholder, next placeholder=IG20 , BB13 [0010], funclet prolog ; PrevGCVars=0000000000000000 {}, PrevGCrefRegs=00000000 {}, PrevByrefRegs=00000000 {} ; InitGCVars=0000000000000000 {}, InitGCrefRegs=00000000 {}, InitByrefRegs=00000000 {} G_M61140_IG19: ; offs=0x000974, size=0x0010, bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB13 [0010], gcvars, byref G_M61140_IG20: ; funclet epilog placeholder, next placeholder=, BB13 [0010], funclet epilog, extend <-- Last placeholder ; PrevGCVars=0000000000000000 {}, PrevGCrefRegs=00000000 {}, PrevByrefRegs=00000000 {} ; InitGCVars=0000000000000000 {}, InitGCrefRegs=00000000 {}, InitByrefRegs=00000000 {} Variable Live Range History Dump for BB13 ..None.. Liveness not changing: 0000000000000000 {} # compCycleEstimate = 178, compSizeEstimate = 114 :func(int) ; Final local variable assignments ; ;* V00 arg0 [V00 ] ( 0, 0 ) int -> zero-ref single-def ;* V01 tmp0 [V01 ] ( 0, 0 ) ref -> zero-ref "SpillCatchArg" ;* V02 tmp1 [V02 ] ( 0, 0 ) ref -> zero-ref "SpillCatchArg" ; V03 tmp2 [V03,T00] ( 3, 0 ) ref -> esi class-hnd exact single-def "NewObj constructor temp" ;* V04 tmp3 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" ;* V05 tmp4 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" ; ; Lcl frame size = 0 *************** Before prolog / epilog generation G_M61140_IG01: ; func=00, offs=0x000000, size=0x0000, bbWeight=1, gcrefRegs=00000000 {} <-- Prolog IG G_M61140_IG02: ; offs=0x000000, size=0x000A, bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB02 [0000], byref G_M61140_IG03: ; offs=0x00000A, size=0x000A, bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB03 [0001], byref G_M61140_IG04: ; offs=0x000014, size=0x0012, bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB04 [0002], byref G_M61140_IG05: ; offs=0x000026, size=0x0001, bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB05 [0008], byref G_M61140_IG06: ; epilog placeholder, next placeholder=IG07 , BB06 [0011], epilog <-- First placeholder ; PrevGCVars=0000000000000000 {}, PrevGCrefRegs=00000000 {}, PrevByrefRegs=00000000 {} ; InitGCVars=0000000000000000 {}, InitGCrefRegs=00000000 {}, InitByrefRegs=00000000 {} G_M61140_IG07: ; func=01, funclet prolog placeholder, next placeholder=IG09 , BB07 [0003], funclet prolog ; PrevGCVars=0000000000000000 {}, PrevGCrefRegs=00000000 {}, PrevByrefRegs=00000000 {} ; InitGCVars=0000000000000000 {}, InitGCrefRegs=00000000 {}, InitByrefRegs=00000000 {} G_M61140_IG08: ; offs=0x000227, size=0x0025, bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB07 [0003], gcvars, byref G_M61140_IG09: ; func=02, funclet prolog placeholder, next placeholder=IG11 , BB08 [0013], funclet prolog ; PrevGCVars=0000000000000000 {}, PrevGCrefRegs=00000000 {}, PrevByrefRegs=00000000 {} ; InitGCVars=0000000000000000 {}, InitGCrefRegs=00000000 {}, InitByrefRegs=00000000 {} G_M61140_IG10: ; offs=0x00034C, size=0x000C, bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB09 [0006], gcvars, byref G_M61140_IG11: ; funclet epilog placeholder, next placeholder=IG12 , BB09 [0006], funclet epilog, extend ; PrevGCVars=0000000000000000 {}, PrevGCrefRegs=00000000 {}, PrevByrefRegs=00000000 {} ; InitGCVars=0000000000000000 {}, InitGCrefRegs=00000000 {}, InitByrefRegs=00000000 {} G_M61140_IG12: ; func=03, funclet prolog placeholder, next placeholder=IG14 , BB10 [0007], funclet prolog ; PrevGCVars=0000000000000000 {}, PrevGCrefRegs=00000000 {}, PrevByrefRegs=00000000 {} ; InitGCVars=0000000000000000 {}, InitGCrefRegs=00000000 {}, InitByrefRegs=00000000 {} G_M61140_IG13: ; offs=0x000558, size=0x0010, bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB10 [0007], gcvars, byref G_M61140_IG14: ; funclet epilog placeholder, next placeholder=IG15 , BB10 [0007], funclet epilog, extend ; PrevGCVars=0000000000000000 {}, PrevGCrefRegs=00000000 {}, PrevByrefRegs=00000000 {} ; InitGCVars=0000000000000000 {}, InitGCrefRegs=00000000 {}, InitByrefRegs=00000000 {} G_M61140_IG15: ; func=04, funclet prolog placeholder, next placeholder=IG17 , BB11 [0012], funclet prolog ; PrevGCVars=0000000000000000 {}, PrevGCrefRegs=00000000 {}, PrevByrefRegs=00000000 {} ; InitGCVars=0000000000000000 {}, InitGCrefRegs=00000000 {}, InitByrefRegs=00000000 {} G_M61140_IG16: ; offs=0x000768, size=0x000C, bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB12 [0009], gcvars, byref G_M61140_IG17: ; funclet epilog placeholder, next placeholder=IG18 , BB12 [0009], funclet epilog, extend ; PrevGCVars=0000000000000000 {}, PrevGCrefRegs=00000000 {}, PrevByrefRegs=00000000 {} ; InitGCVars=0000000000000000 {}, InitGCrefRegs=00000000 {}, InitByrefRegs=00000000 {} G_M61140_IG18: ; func=05, funclet prolog placeholder, next placeholder=IG20 , BB13 [0010], funclet prolog ; PrevGCVars=0000000000000000 {}, PrevGCrefRegs=00000000 {}, PrevByrefRegs=00000000 {} ; InitGCVars=0000000000000000 {}, InitGCrefRegs=00000000 {}, InitByrefRegs=00000000 {} G_M61140_IG19: ; offs=0x000974, size=0x0010, bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB13 [0010], gcvars, byref G_M61140_IG20: ; funclet epilog placeholder, next placeholder=, BB13 [0010], funclet epilog, extend <-- Last placeholder ; PrevGCVars=0000000000000000 {}, PrevGCrefRegs=00000000 {}, PrevByrefRegs=00000000 {} ; InitGCVars=0000000000000000 {}, InitGCrefRegs=00000000 {}, InitByrefRegs=00000000 {} Recording Var Locations at start of BB02 *************** In genFnProlog() Added IP mapping to front: PROLOG (G_M61140_IG01,ins#0,ofs#0) label __prolog: Debug: New V00 debug range: first IN0021: push ebp IN0022: mov ebp, esp IN0023: push esi *************** In genFnPrologCalleeRegArgs() for int regs *************** In genEnregisterIncomingStackArgs() Debug: Closing V00 debug range. Saved: G_M61140_IG01: ; offs=0x000000, size=0x0004, bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, nogc *************** In genFnEpilog() __epilog: gcVarPtrSetCur=0000000000000000 {}, gcRegGCrefSetCur=00000000 {}, gcRegByrefSetCur=00000000 {} IN0024: pop esi IN0025: pop ebp IN0026: ret Saved: G_M61140_IG06: ; offs=0x000027, size=0x0003, bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc *************** In genFuncletProlog() *************** In genFuncletProlog() *************** In genFuncletEpilog() IN0027: ret Saved: G_M61140_IG11: ; offs=0x000358, size=0x0001, bbWeight=0, funclet epilog, nogc, extend *************** In genFuncletProlog() *************** In genFuncletEpilog() IN0028: ret Saved: G_M61140_IG14: ; offs=0x000568, size=0x0001, bbWeight=0, funclet epilog, nogc, extend *************** In genFuncletProlog() *************** In genFuncletEpilog() IN0029: ret Saved: G_M61140_IG17: ; offs=0x000774, size=0x0001, bbWeight=0, funclet epilog, nogc, extend *************** In genFuncletProlog() *************** In genFuncletEpilog() IN002a: ret Saved: G_M61140_IG20: ; offs=0x000984, size=0x0001, bbWeight=0, funclet epilog, nogc, extend 0 prologs, 1 epilogs, 5 funclet prologs, 4 funclet epilogs *************** After prolog / epilog generation G_M61140_IG01: ; func=00, offs=0x000000, size=0x0004, bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, nogc <-- Prolog IG G_M61140_IG02: ; offs=0x000004, size=0x000A, bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB02 [0000], byref G_M61140_IG03: ; offs=0x00000E, size=0x000A, bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB03 [0001], byref G_M61140_IG04: ; offs=0x000018, size=0x0012, bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB04 [0002], byref G_M61140_IG05: ; offs=0x00002A, size=0x0001, bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB05 [0008], byref G_M61140_IG06: ; offs=0x00002B, size=0x0003, bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc G_M61140_IG07: ; func=01, offs=0x00002E, size=0x0000, bbWeight=0, gcrefRegs=00000000 {}, funclet prolog, nogc G_M61140_IG08: ; offs=0x00002E, size=0x0025, bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB07 [0003], gcvars, byref G_M61140_IG09: ; func=02, offs=0x000053, size=0x0000, bbWeight=0, gcrefRegs=00000000 {}, funclet prolog, nogc G_M61140_IG10: ; offs=0x000053, size=0x000C, bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB09 [0006], gcvars, byref G_M61140_IG11: ; offs=0x00005F, size=0x0001, bbWeight=0, funclet epilog, nogc, extend G_M61140_IG12: ; func=03, offs=0x000060, size=0x0000, bbWeight=0, gcrefRegs=00000000 {}, funclet prolog, nogc G_M61140_IG13: ; offs=0x000060, size=0x0010, bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB10 [0007], gcvars, byref G_M61140_IG14: ; offs=0x000070, size=0x0001, bbWeight=0, funclet epilog, nogc, extend G_M61140_IG15: ; func=04, offs=0x000071, size=0x0000, bbWeight=0, gcrefRegs=00000000 {}, funclet prolog, nogc G_M61140_IG16: ; offs=0x000071, size=0x000C, bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB12 [0009], gcvars, byref G_M61140_IG17: ; offs=0x00007D, size=0x0001, bbWeight=0, funclet epilog, nogc, extend G_M61140_IG18: ; func=05, offs=0x00007E, size=0x0000, bbWeight=0, gcrefRegs=00000000 {}, funclet prolog, nogc G_M61140_IG19: ; offs=0x00007E, size=0x0010, bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB13 [0010], gcvars, byref G_M61140_IG20: ; offs=0x00008E, size=0x0001, bbWeight=0, funclet epilog, nogc, extend *************** In emitJumpDistBind() Emitter Jump List: IG04 IN0008 call[5] -> IG07 IG13 IN001a lea[6] -> IG05 (long) IG19 IN0020 lea[6] -> IG06 (long) total jump count: 3 Binding: IN0008: 000000 call L_M61140_BB07 Binding L_M61140_BB07 to G_M61140_IG07 Adjusted offset of BB05 from 002A to 002A Adjusted offset of BB06 from 002B to 002B Adjusted offset of BB07 from 002E to 002E Adjusted offset of BB08 from 002E to 002E Adjusted offset of BB09 from 0053 to 0053 Adjusted offset of BB10 from 0053 to 0053 Adjusted offset of BB11 from 005F to 005F Adjusted offset of BB12 from 0060 to 0060 Adjusted offset of BB13 from 0060 to 0060 Binding: IN001a: 000000 lea eax, L_M61140_BB05 Binding L_M61140_BB05 to G_M61140_IG05 Estimate of bwd jump [1DEB68DC/026]: 006A -> 002A = 0040 Adjusted offset of BB14 from 0070 to 0070 Adjusted offset of BB15 from 0071 to 0071 Adjusted offset of BB16 from 0071 to 0071 Adjusted offset of BB17 from 007D to 007D Adjusted offset of BB18 from 007E to 007E Adjusted offset of BB19 from 007E to 007E Binding: IN0020: 000000 lea eax, L_M61140_BB06 Binding L_M61140_BB06 to G_M61140_IG06 Estimate of bwd jump [1DEB79BC/032]: 0088 -> 002B = 005D *************** Finishing PHASE Generate code *************** Starting PHASE Emit code Hot code size = 0x8F bytes Cold code size = 0x0 bytes reserveUnwindInfo(isFunclet=false, isColdCode=false, unwindSize=0x4) reserveUnwindInfo(isFunclet=true, isColdCode=false, unwindSize=0x4) reserveUnwindInfo(isFunclet=true, isColdCode=false, unwindSize=0x4) reserveUnwindInfo(isFunclet=true, isColdCode=false, unwindSize=0x4) reserveUnwindInfo(isFunclet=true, isColdCode=false, unwindSize=0x4) reserveUnwindInfo(isFunclet=true, isColdCode=false, unwindSize=0x4) *************** In emitEndCodeGen() Converting emitMaxStackDepth from bytes (0) to elements (0) *************************************************************************** Instructions as they come out of the scheduler G_M61140_IG01: ; offs=0x000000, size=0x0004, bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, nogc <-- Prolog IG IN0021: 000000 push ebp IN0022: 000001 mov ebp, esp IN0023: 000003 push esi ;; size=4 bbWeight=1 PerfScore 2.25 G_M61140_IG02: ; offs=0x000004, size=0x000A, bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB02 [0000], byref recordRelocation: 000002D3240F8ECD (rw: 000002D3240F8ECD) => 4000000000425460, type 3 (IMAGE_REL_BASED_MOFFSET), delta 0 IN0001: 000004 mov ecx, (reloc 0x4000000000425460) ; gcrRegs +[ecx] recordRelocation: 000002D3240F8ED2 (rw: 000002D3240F8ED2) => 4000000000425420, type 16 (IMAGE_REL_BASED_REL32), delta 0 IN0002: 000009 call System.Console:WriteLine(System.String) ; gcrRegs -[ecx] ;; size=10 bbWeight=1 PerfScore 1.25 G_M61140_IG03: ; offs=0x00000E, size=0x000A, bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB03 [0001], byref recordRelocation: 000002D3240F8ED7 (rw: 000002D3240F8ED7) => 4000000000425468, type 3 (IMAGE_REL_BASED_MOFFSET), delta 0 IN0003: 00000E mov ecx, (reloc 0x4000000000425468) ; gcrRegs +[ecx] recordRelocation: 000002D3240F8EDC (rw: 000002D3240F8EDC) => 4000000000425420, type 16 (IMAGE_REL_BASED_REL32), delta 0 IN0004: 000013 call System.Console:WriteLine(System.String) ; gcrRegs -[ecx] ;; size=10 bbWeight=1 PerfScore 1.25 G_M61140_IG04: ; offs=0x000018, size=0x0012, bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB04 [0002], byref recordRelocation: 000002D3240F8EE1 (rw: 000002D3240F8EE1) => 4000000000425470, type 3 (IMAGE_REL_BASED_MOFFSET), delta 0 IN0005: 000018 mov ecx, (reloc 0x4000000000425470) ; gcrRegs +[ecx] recordRelocation: 000002D3240F8EE6 (rw: 000002D3240F8EE6) => 4000000000425420, type 16 (IMAGE_REL_BASED_REL32), delta 0 IN0006: 00001D call System.Console:WriteLine(System.String) ; gcrRegs -[ecx] IN0007: 000022 mov ecx, esp IN0008: 000024 call G_M61140_IG07 IN0009: 000029 int3 ;; size=18 bbWeight=1 PerfScore 2.75 G_M61140_IG05: ; offs=0x00002A, size=0x0001, bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB05 [0008], byref IN000a: 00002A nop ;; size=1 bbWeight=0 PerfScore 0.00 G_M61140_IG06: ; offs=0x00002B, size=0x0003, bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc IN0024: 00002B pop esi IN0025: 00002C pop ebp IN0026: 00002D ret ;; size=3 bbWeight=0 PerfScore 0.00 G_M61140_IG07: ; offs=0x00002E, size=0x0000, bbWeight=0, gcrefRegs=00000000 {}, funclet prolog, nogc ;; size=0 bbWeight=0 PerfScore 0.00 G_M61140_IG08: ; offs=0x00002E, size=0x0025, bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB07 [0003], gcvars, byref recordRelocation: 000002D3240F8EF7 (rw: 000002D3240F8EF7) => 4000000000425478, type 3 (IMAGE_REL_BASED_MOFFSET), delta 0 IN000b: 00002E mov ecx, (reloc 0x4000000000425478) ; gcrRegs +[ecx] recordRelocation: 000002D3240F8EFC (rw: 000002D3240F8EFC) => 4000000000425420, type 16 (IMAGE_REL_BASED_REL32), delta 0 IN000c: 000033 call System.Console:WriteLine(System.String) ; gcrRegs -[ecx] recordRelocation: 000002D3240F8F01 (rw: 000002D3240F8F01) => 4000000000425450, type 3 (IMAGE_REL_BASED_MOFFSET), delta 0 IN000d: 000038 mov ecx, (reloc 0x4000000000425450) recordRelocation: 000002D3240F8F06 (rw: 000002D3240F8F06) => 4000000000420088, type 16 (IMAGE_REL_BASED_REL32), delta 0 IN000e: 00003D call CORINFO_HELP_NEWSFAST ; gcrRegs +[eax] IN000f: 000042 mov esi, eax ; gcrRegs +[esi] IN0010: 000044 mov ecx, esi ; gcrRegs +[ecx] recordRelocation: 000002D3240F8F0F (rw: 000002D3240F8F0F) => 4000000000425440, type 16 (IMAGE_REL_BASED_REL32), delta 0 ; Call at 0046 [stk=0], GCvars=none, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {} IN0011: 000046 call System.Exception:.ctor():this ; gcrRegs -[eax ecx] IN0012: 00004B mov ecx, esi ; gcrRegs +[ecx] recordRelocation: 000002D3240F8F16 (rw: 000002D3240F8F16) => 40000000004220B8, type 16 (IMAGE_REL_BASED_REL32), delta 0 IN0013: 00004D call CORINFO_HELP_THROW ; gcrRegs -[ecx esi] IN0014: 000052 int3 ;; size=37 bbWeight=0 PerfScore 0.00 G_M61140_IG09: ; offs=0x000053, size=0x0000, bbWeight=0, gcrefRegs=00000000 {}, funclet prolog, nogc ;; size=0 bbWeight=0 PerfScore 0.00 G_M61140_IG10: ; offs=0x000053, size=0x000C, bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB09 [0006], gcvars, byref recordRelocation: 000002D3240F8F1C (rw: 000002D3240F8F1C) => 4000000000425480, type 3 (IMAGE_REL_BASED_MOFFSET), delta 0 IN0015: 000053 mov ecx, (reloc 0x4000000000425480) ; gcrRegs +[ecx] recordRelocation: 000002D3240F8F21 (rw: 000002D3240F8F21) => 4000000000425420, type 16 (IMAGE_REL_BASED_REL32), delta 0 IN0016: 000058 call System.Console:WriteLine(System.String) ; gcrRegs -[ecx] IN0017: 00005D xor eax, eax ;; size=12 bbWeight=0 PerfScore 0.00 G_M61140_IG11: ; offs=0x00005F, size=0x0001, bbWeight=0, funclet epilog, nogc, extend IN0027: 00005F ret ;; size=1 bbWeight=0 PerfScore 0.00 G_M61140_IG12: ; offs=0x000060, size=0x0000, bbWeight=0, gcrefRegs=00000000 {}, funclet prolog, nogc ;; size=0 bbWeight=0 PerfScore 0.00 G_M61140_IG13: ; offs=0x000060, size=0x0010, bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB10 [0007], gcvars, byref recordRelocation: 000002D3240F8F29 (rw: 000002D3240F8F29) => 4000000000425488, type 3 (IMAGE_REL_BASED_MOFFSET), delta 0 IN0018: 000060 mov ecx, (reloc 0x4000000000425488) ; gcrRegs +[ecx] recordRelocation: 000002D3240F8F2E (rw: 000002D3240F8F2E) => 4000000000425420, type 16 (IMAGE_REL_BASED_REL32), delta 0 IN0019: 000065 call System.Console:WriteLine(System.String) ; gcrRegs -[ecx] recordRelocation: 000002D3240F8F34 (rw: 000002D3240F8F34) => 000002D3240F8EF2, type 3 (IMAGE_REL_BASED_DISP32), delta 0 IN001a: 00006A lea eax, G_M61140_IG05 ;; size=16 bbWeight=0 PerfScore 0.00 G_M61140_IG14: ; offs=0x000070, size=0x0001, bbWeight=0, funclet epilog, nogc, extend IN0028: 000070 ret ;; size=1 bbWeight=0 PerfScore 0.00 G_M61140_IG15: ; offs=0x000071, size=0x0000, bbWeight=0, gcrefRegs=00000000 {}, funclet prolog, nogc ;; size=0 bbWeight=0 PerfScore 0.00 G_M61140_IG16: ; offs=0x000071, size=0x000C, bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB12 [0009], gcvars, byref recordRelocation: 000002D3240F8F3A (rw: 000002D3240F8F3A) => 4000000000425490, type 3 (IMAGE_REL_BASED_MOFFSET), delta 0 IN001b: 000071 mov ecx, (reloc 0x4000000000425490) ; gcrRegs +[ecx] recordRelocation: 000002D3240F8F3F (rw: 000002D3240F8F3F) => 4000000000425420, type 16 (IMAGE_REL_BASED_REL32), delta 0 IN001c: 000076 call System.Console:WriteLine(System.String) ; gcrRegs -[ecx] IN001d: 00007B xor eax, eax ;; size=12 bbWeight=0 PerfScore 0.00 G_M61140_IG17: ; offs=0x00007D, size=0x0001, bbWeight=0, funclet epilog, nogc, extend IN0029: 00007D ret ;; size=1 bbWeight=0 PerfScore 0.00 G_M61140_IG18: ; offs=0x00007E, size=0x0000, bbWeight=0, gcrefRegs=00000000 {}, funclet prolog, nogc ;; size=0 bbWeight=0 PerfScore 0.00 G_M61140_IG19: ; offs=0x00007E, size=0x0010, bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB13 [0010], gcvars, byref recordRelocation: 000002D3240F8F47 (rw: 000002D3240F8F47) => 4000000000425498, type 3 (IMAGE_REL_BASED_MOFFSET), delta 0 IN001e: 00007E mov ecx, (reloc 0x4000000000425498) ; gcrRegs +[ecx] recordRelocation: 000002D3240F8F4C (rw: 000002D3240F8F4C) => 4000000000425420, type 16 (IMAGE_REL_BASED_REL32), delta 0 IN001f: 000083 call System.Console:WriteLine(System.String) ; gcrRegs -[ecx] recordRelocation: 000002D3240F8F52 (rw: 000002D3240F8F52) => 000002D3240F8EF3, type 3 (IMAGE_REL_BASED_DISP32), delta 0 IN0020: 000088 lea eax, G_M61140_IG06 ;; size=16 bbWeight=0 PerfScore 0.00 G_M61140_IG20: ; offs=0x00008E, size=0x0001, bbWeight=0, funclet epilog, nogc, extend IN002a: 00008E ret ;; size=1 bbWeight=0 PerfScore 0.00 Allocated method code size = 143 , actual size = 143, unused size = 0 ; Total bytes of code 143, prolog size 4, PerfScore 7.50, instruction count 42, allocated bytes for code 143 (MethodHash=b14b112b) for method :func(int) (FullOpts) ; ============================================================ *************** After end code gen, before unwindEmit() G_M61140_IG01: ; func=00, offs=0x000000, size=0x0004, bbWeight=1, PerfScore 2.25, gcVars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, nogc <-- Prolog IG IN0021: 000000 push ebp IN0022: 000001 mov ebp, esp IN0023: 000003 push esi G_M61140_IG02: ; offs=0x000004, size=0x000A, bbWeight=1, PerfScore 1.25, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB02 [0000], byref IN0001: 000004 mov ecx, (reloc 0x4000000000425460) IN0002: 000009 call System.Console:WriteLine(System.String) G_M61140_IG03: ; offs=0x00000E, size=0x000A, bbWeight=1, PerfScore 1.25, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB03 [0001], byref IN0003: 00000E mov ecx, (reloc 0x4000000000425468) IN0004: 000013 call System.Console:WriteLine(System.String) G_M61140_IG04: ; offs=0x000018, size=0x0012, bbWeight=1, PerfScore 2.75, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB04 [0002], byref IN0005: 000018 mov ecx, (reloc 0x4000000000425470) IN0006: 00001D call System.Console:WriteLine(System.String) IN0007: 000022 mov ecx, esp IN0008: 000024 call G_M61140_IG07 IN0009: 000029 int3 G_M61140_IG05: ; offs=0x00002A, size=0x0001, bbWeight=0, PerfScore 0.00, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB05 [0008], byref IN000a: 00002A nop G_M61140_IG06: ; offs=0x00002B, size=0x0003, bbWeight=0, PerfScore 0.00, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc IN0024: 00002B pop esi IN0025: 00002C pop ebp IN0026: 00002D ret G_M61140_IG07: ; func=01, offs=0x00002E, size=0x0000, bbWeight=0, PerfScore 0.00, gcrefRegs=00000000 {}, funclet prolog, nogc G_M61140_IG08: ; offs=0x00002E, size=0x0025, bbWeight=0, PerfScore 0.00, gcVars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB07 [0003], gcvars, byref IN000b: 00002E mov ecx, (reloc 0x4000000000425478) IN000c: 000033 call System.Console:WriteLine(System.String) IN000d: 000038 mov ecx, (reloc 0x4000000000425450) IN000e: 00003D call CORINFO_HELP_NEWSFAST IN000f: 000042 mov esi, eax IN0010: 000044 mov ecx, esi IN0011: 000046 call System.Exception:.ctor():this IN0012: 00004B mov ecx, esi IN0013: 00004D call CORINFO_HELP_THROW IN0014: 000052 int3 G_M61140_IG09: ; func=02, offs=0x000053, size=0x0000, bbWeight=0, PerfScore 0.00, gcrefRegs=00000000 {}, funclet prolog, nogc G_M61140_IG10: ; offs=0x000053, size=0x000C, bbWeight=0, PerfScore 0.00, gcVars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB09 [0006], gcvars, byref IN0015: 000053 mov ecx, (reloc 0x4000000000425480) IN0016: 000058 call System.Console:WriteLine(System.String) IN0017: 00005D xor eax, eax G_M61140_IG11: ; offs=0x00005F, size=0x0001, bbWeight=0, PerfScore 0.00, funclet epilog, nogc, extend IN0027: 00005F ret G_M61140_IG12: ; func=03, offs=0x000060, size=0x0000, bbWeight=0, PerfScore 0.00, gcrefRegs=00000000 {}, funclet prolog, nogc G_M61140_IG13: ; offs=0x000060, size=0x0010, bbWeight=0, PerfScore 0.00, gcVars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB10 [0007], gcvars, byref IN0018: 000060 mov ecx, (reloc 0x4000000000425488) IN0019: 000065 call System.Console:WriteLine(System.String) IN001a: 00006A lea eax, G_M61140_IG05 G_M61140_IG14: ; offs=0x000070, size=0x0001, bbWeight=0, PerfScore 0.00, funclet epilog, nogc, extend IN0028: 000070 ret G_M61140_IG15: ; func=04, offs=0x000071, size=0x0000, bbWeight=0, PerfScore 0.00, gcrefRegs=00000000 {}, funclet prolog, nogc G_M61140_IG16: ; offs=0x000071, size=0x000C, bbWeight=0, PerfScore 0.00, gcVars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB12 [0009], gcvars, byref IN001b: 000071 mov ecx, (reloc 0x4000000000425490) IN001c: 000076 call System.Console:WriteLine(System.String) IN001d: 00007B xor eax, eax G_M61140_IG17: ; offs=0x00007D, size=0x0001, bbWeight=0, PerfScore 0.00, funclet epilog, nogc, extend IN0029: 00007D ret G_M61140_IG18: ; func=05, offs=0x00007E, size=0x0000, bbWeight=0, PerfScore 0.00, gcrefRegs=00000000 {}, funclet prolog, nogc G_M61140_IG19: ; offs=0x00007E, size=0x0010, bbWeight=0, PerfScore 0.00, gcVars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB13 [0010], gcvars, byref IN001e: 00007E mov ecx, (reloc 0x4000000000425498) IN001f: 000083 call System.Console:WriteLine(System.String) IN0020: 000088 lea eax, G_M61140_IG06 G_M61140_IG20: ; offs=0x00008E, size=0x0001, bbWeight=0, PerfScore 0.00, funclet epilog, nogc, extend IN002a: 00008E ret *************** Finishing PHASE Emit code *************** Starting PHASE Emit GC+EH tables allocUnwindInfo(pHotCode=0x000002D3240F8EC8, pColdCode=0x0000000000000000, startOffset=0x0, endOffset=0x2e, unwindSize=0x4, pUnwindBlock=0x000000D287B7AF94, funKind=0 (main function)) allocUnwindInfo(pHotCode=0x000002D3240F8EC8, pColdCode=0x0000000000000000, startOffset=0x2e, endOffset=0x53, unwindSize=0x4, pUnwindBlock=0x000000D287B7AF94, funKind=1 (handler)) allocUnwindInfo(pHotCode=0x000002D3240F8EC8, pColdCode=0x0000000000000000, startOffset=0x53, endOffset=0x60, unwindSize=0x4, pUnwindBlock=0x000000D287B7AF94, funKind=2 (filter)) allocUnwindInfo(pHotCode=0x000002D3240F8EC8, pColdCode=0x0000000000000000, startOffset=0x60, endOffset=0x71, unwindSize=0x4, pUnwindBlock=0x000000D287B7AF94, funKind=1 (handler)) allocUnwindInfo(pHotCode=0x000002D3240F8EC8, pColdCode=0x0000000000000000, startOffset=0x71, endOffset=0x7e, unwindSize=0x4, pUnwindBlock=0x000000D287B7AF94, funKind=2 (filter)) allocUnwindInfo(pHotCode=0x000002D3240F8EC8, pColdCode=0x0000000000000000, startOffset=0x7e, endOffset=0x8f, unwindSize=0x4, pUnwindBlock=0x000000D287B7AF94, funKind=1 (handler)) *************** In genIPmappingGen() IP mapping count : 19 IL offs PROLOG : 0x00000000 ( STACK_EMPTY ) IL offs 0x0000 : 0x00000004 ( STACK_EMPTY ) IL offs 0x000A : 0x0000000E ( STACK_EMPTY ) IL offs 0x0014 : 0x00000018 ( STACK_EMPTY ) IL offs 0x007B : 0x0000002B ( STACK_EMPTY ) IL offs EPILOG : 0x0000002B ( STACK_EMPTY ) IL offs PROLOG : 0x0000002E ( STACK_EMPTY ) IL offs 0x002D : 0x00000038 ( STACK_EMPTY ) IL offs 0x0032 : 0x0000004B IL offs PROLOG : 0x00000053 ( STACK_EMPTY ) IL offs 0x0045 : 0x0000005D ( STACK_EMPTY ) IL offs EPILOG : 0x0000005F ( STACK_EMPTY ) IL offs PROLOG : 0x00000060 ( STACK_EMPTY ) IL offs EPILOG : 0x00000070 ( STACK_EMPTY ) IL offs PROLOG : 0x00000071 ( STACK_EMPTY ) IL offs 0x0068 : 0x0000007B ( STACK_EMPTY ) IL offs EPILOG : 0x0000007D ( STACK_EMPTY ) IL offs PROLOG : 0x0000007E ( STACK_EMPTY ) IL offs EPILOG : 0x0000008E ( STACK_EMPTY ) *************** In genSetScopeInfo() VarLocInfo count is 1 ; Variable debug info: 1 live ranges, 1 vars for method :func(int) (V00 arg0) : From 00000000h to 00000004h, in ecx *************** EH table for :func(int) 3 EH table entries, 0 duplicate clauses, 3 total EH entries reported to VM setEHcount(cEH=3) EH#0: try [0018..002A) handled by [002E..0053) (finally) EH#1: try [000E..002A) handled by [0060..0071) filter at [0053..0060) EH#2: try [0004..002B) handled by [007E..008F) filter at [0071..007E) *************** In gcInfoBlockHdrSave() GCINFO: untrckVars = 0 GCINFO: trackdLcls = 0 GCINFO: untrckVars = 0 GCINFO: trackdLcls = 0 *************** In gcInfoBlockHdrSave() GCINFO: methodSize = 008F GCINFO: prologSize = 0004 GCINFO: epilogSize = 0003 GCINFO: untrckVars = 0 GCINFO: trackdLcls = 0 GC Info for method :func(int) GC info size = 12 Method info block: method size = 008F prolog size = 4 epilog size = 3 epilog count = 1 epilog end = no callee-saved regs = ESI EBP ebp frame = yes fully interruptible= no double align = no arguments size = 0 DWORDs stack frame size = 0 DWORDs untracked count = 0 var ptr tab count = 0 exception handlers = yes epilog # 0 at 002B 81 0F BD A5 BB | BD BF 43 2B | Pointer table: CB 40 00 ...| 004B call [ ESI ] argMask=00 FF 00 00 ...| *************** Finishing PHASE Emit GC+EH tables Method code size: 143 Allocations for :func(int) (MethodHash=b14b112b) count: 1968, size: 149776, max = 3072 allocateMemory: 196608, nraUsed: 153568 Alloc'd bytes by kind: kind | size | pct ---------------------+------------+-------- AssertionProp | 6500 | 4.34% ASTNode | 12752 | 8.51% InstDesc | 8220 | 5.49% ImpStack | 528 | 0.35% BasicBlock | 6384 | 4.26% CallArgs | 880 | 0.59% FlowEdge | 2520 | 1.68% DepthFirstSearch | 7280 | 4.86% Loops | 148 | 0.10% TreeStatementList | 0 | 0.00% SiScope | 0 | 0.00% DominatorMemory | 344 | 0.23% LSRA | 6252 | 4.17% LSRA_Interval | 1920 | 1.28% LSRA_RefPosition | 9432 | 6.30% Reachability | 520 | 0.35% SSA | 2088 | 1.39% ValueNumber | 10400 | 6.94% LvaTable | 1560 | 1.04% UnwindInfo | 160 | 0.11% hashBv | 40 | 0.03% bitset | 144 | 0.10% FixedBitVect | 40 | 0.03% Generic | 1126 | 0.75% LocalAddressVisitor | 0 | 0.00% FieldSeqStore | 0 | 0.00% MemorySsaMap | 40 | 0.03% MemoryPhiArg | 512 | 0.34% CSE | 1144 | 0.76% GC | 64 | 0.04% CorTailCallInfo | 0 | 0.00% Inlining | 3536 | 2.36% ArrayStack | 0 | 0.00% DebugInfo | 1288 | 0.86% DebugOnly | 60825 | 40.61% Codegen | 2128 | 1.42% LoopOpt | 0 | 0.00% LoopClone | 0 | 0.00% LoopUnroll | 0 | 0.00% LoopHoist | 0 | 0.00% LoopIVOpts | 0 | 0.00% Unknown | 361 | 0.24% RangeCheck | 0 | 0.00% CopyProp | 248 | 0.17% Promotion | 120 | 0.08% SideEffects | 0 | 0.00% ObjectAllocator | 0 | 0.00% VariableLiveRanges | 272 | 0.18% ClassLayout | 0 | 0.00% TailMergeThrows | 0 | 0.00% EarlyProp | 0 | 0.00% ZeroInit | 0 | 0.00% Pgo | 0 | 0.00% Final metrics: PhysicallyPromotedFields : 0 LoopsFoundDuringOpts : 0 LoopsCloned : 0 LoopsUnrolled : 0 LoopAlignmentCandidates : 0 LoopsAligned : 0 LoopsIVWidened : 0 WidenedIVs : 0 VarsInSsa : 1 HoistedExpressions : 0 RedundantBranchesEliminated : 0 JumpThreadingsPerformed : 0 CseCount : 0 BasicBlocksAtCodegen : 12 PerfScore : 7.500000 BytesAllocated : 153568 ****** DONE compiling :func(int)