Skip to content

Instantly share code, notes, and snippets.

@mskvortsov
Created January 12, 2017 16:16
Show Gist options
  • Save mskvortsov/351362a60937db7a975dafedb735d9d6 to your computer and use it in GitHub Desktop.
Save mskvortsov/351362a60937db7a975dafedb735d9d6 to your computer and use it in GitHub Desktop.
****** START compiling Test:LongId(long):long (MethodHash=0f9627fe)
Generating code for Unix arm
OPTIONS: compCodeOpt = BLENDED_CODE
OPTIONS: compDbgCode = false
OPTIONS: compDbgInfo = true
OPTIONS: compDbgEnC = false
OPTIONS: compProcedureSplitting = false
OPTIONS: compProcedureSplittingEH = false
OPTIONS: Stack probing is DISABLED
IL to import:
IL_0000 02 ldarg.0
IL_0001 2a ret
Set preferred register for V00 to [r0]
Additional preferred register for V00 from [r0] to [r0-r1]
Arg #0 passed in register(s) r0,r1
; Initial local variable assignments
;
; V00 arg0 long
*************** In compInitDebuggingInfo() for Test:LongId(long):long
getVars() returned cVars = 0, extendOthers = true
info.compVarScopesCount = 1
VarNum LVNum Name Beg End
0: 00h 00h V00 arg0 000h 002h
info.compStmtOffsetsCount = 0
info.compStmtOffsetsImplicit = 0005h ( STACK_EMPTY CALL_SITE )
*************** In fgFindBasicBlocks() for Test:LongId(long):long
Jump targets:
none
New Basic Block BB01 [0008F2EC] created.
BB01 [000..002)
IL Code Size,Instr 2, 2, Basic Block count 1, Local Variable Num,Ref count 1, 1 for method Test:LongId(long):long
OPTIONS: opts.MinOpts() == false
Basic block list for 'Test:LongId(long):long'
-------------------------------------------------------------------------------------------------------------------------------------
BBnum descAddr ref try hnd weight [IL range] [jump] [EH region] [flags]
-------------------------------------------------------------------------------------------------------------------------------------
BB01 [0008F2EC] 1 1 [000..002) (return)
-------------------------------------------------------------------------------------------------------------------------------------
*************** In impImport() for Test:LongId(long):long
impImportBlockPending for BB01
Importing BB01 (PC=000) of 'Test:LongId(long):long'
[ 0] 0 (0x000) ldarg.0
[ 1] 1 (0x001) ret
[000003] ------------- ▌ stmtExpr void (IL 0x000... ???)
[000002] ------------- └──▌ return long
[000001] ------------- └──▌ lclVar long V00 arg0
New BlockSet epoch 1, # of blocks (including unused BB00): 2, bitset array size: 1 (short)
*************** In fgMorph()
*************** In fgDebugCheckBBlist
*************** In fgInline()
*************** After fgInline()
-------------------------------------------------------------------------------------------------------------------------------------
BBnum descAddr ref try hnd weight [IL range] [jump] [EH region] [flags]
-------------------------------------------------------------------------------------------------------------------------------------
BB01 [0008F2EC] 1 1 [000..002) (return) i
-------------------------------------------------------------------------------------------------------------------------------------
------------ BB01 [000..002) (return), preds={} succs={}
***** BB01, stmt 1
[000003] ------------- ▌ stmtExpr void (IL 0x000...0x001)
[000002] ------------- └──▌ return long
[000001] ------------- └──▌ lclVar long V00 arg0
-------------------------------------------------------------------------------------------------------------------
*************** Exception Handling table is empty
**************** Inline Tree
Inlines into 06000001 Test:LongId(long):long
Budget: initialTime=66, finalTime=66, initialBudget=660, currentBudget=660
Budget: initialSize=176, finalSize=176
*************** After fgAddInternal()
-------------------------------------------------------------------------------------------------------------------------------------
BBnum descAddr ref try hnd weight [IL range] [jump] [EH region] [flags]
-------------------------------------------------------------------------------------------------------------------------------------
BB01 [0008F2EC] 1 1 [000..002) (return) i
-------------------------------------------------------------------------------------------------------------------------------------
*************** Exception Handling table is empty
*************** In fgDebugCheckBBlist
*************** In fgPromoteStructs()
*************** In fgMarkAddressExposedLocals()
*************** In fgMorphBlocks()
Morphing BB01 of 'Test:LongId(long):long'
fgMorphTree BB01, stmt 1 (before)
[000002] ------------- ▌ return long
[000001] ------------- └──▌ lclVar long V00 arg0
Renumbering the basic blocks for fgComputePred
*************** Before renumbering the basic blocks
-------------------------------------------------------------------------------------------------------------------------------------
BBnum descAddr ref try hnd weight [IL range] [jump] [EH region] [flags]
-------------------------------------------------------------------------------------------------------------------------------------
BB01 [0008F2EC] 1 1 [000..002) (return) i
-------------------------------------------------------------------------------------------------------------------------------------
*************** Exception Handling table is empty
*************** After renumbering the basic blocks
=============== No blocks renumbered!
*************** In fgComputePreds()
-------------------------------------------------------------------------------------------------------------------------------------
BBnum descAddr ref try hnd weight [IL range] [jump] [EH region] [flags]
-------------------------------------------------------------------------------------------------------------------------------------
BB01 [0008F2EC] 1 1 [000..002) (return) i
-------------------------------------------------------------------------------------------------------------------------------------
*************** After fgComputePreds()
-------------------------------------------------------------------------------------------------------------------------------------
BBnum descAddr ref try hnd preds weight [IL range] [jump] [EH region] [flags]
-------------------------------------------------------------------------------------------------------------------------------------
BB01 [0008F2EC] 1 1 [000..002) (return) i label target
-------------------------------------------------------------------------------------------------------------------------------------
*************** In fgComputeEdgeWeights()
fgComputeEdgeWeights() we do not have any profile data so we are not using the edge weights
-------------------------------------------------------------------------------------------------------------------------------------
BBnum descAddr ref try hnd preds weight [IL range] [jump] [EH region] [flags]
-------------------------------------------------------------------------------------------------------------------------------------
BB01 [0008F2EC] 1 1 [000..002) (return) i label target
-------------------------------------------------------------------------------------------------------------------------------------
fgComputeEdgeWeights() was able to compute exact edge weights for all of the 0 edges, using 1 passes.
*************** In fgCreateFunclets()
After fgCreateFunclets()
-------------------------------------------------------------------------------------------------------------------------------------
BBnum descAddr ref try hnd preds weight [IL range] [jump] [EH region] [flags]
-------------------------------------------------------------------------------------------------------------------------------------
BB01 [0008F2EC] 1 1 [000..002) (return) i label target
-------------------------------------------------------------------------------------------------------------------------------------
*************** Exception Handling table is empty
*************** In fgDebugCheckBBlist
*************** In optOptimizeLayout()
*************** Exception Handling table is empty
*************** In fgDebugCheckBBlist
*************** In fgUpdateFlowGraph()
Before updating the flow graph:
-------------------------------------------------------------------------------------------------------------------------------------
BBnum descAddr ref try hnd preds weight [IL range] [jump] [EH region] [flags]
-------------------------------------------------------------------------------------------------------------------------------------
BB01 [0008F2EC] 1 1 [000..002) (return) i label target
-------------------------------------------------------------------------------------------------------------------------------------
*************** In fgDebugCheckBBlist
*************** In fgUpdateFlowGraph()
Before updating the flow graph:
-------------------------------------------------------------------------------------------------------------------------------------
BBnum descAddr ref try hnd preds weight [IL range] [jump] [EH region] [flags]
-------------------------------------------------------------------------------------------------------------------------------------
BB01 [0008F2EC] 1 1 [000..002) (return) i label target
-------------------------------------------------------------------------------------------------------------------------------------
*************** In fgDebugCheckBBlist
*************** In fgComputeReachability
*************** In fgDebugCheckBBlist
Renumbering the basic blocks for fgComputeReachability pass #1
*************** Before renumbering the basic blocks
-------------------------------------------------------------------------------------------------------------------------------------
BBnum descAddr ref try hnd preds weight [IL range] [jump] [EH region] [flags]
-------------------------------------------------------------------------------------------------------------------------------------
BB01 [0008F2EC] 1 1 [000..002) (return) i label target
-------------------------------------------------------------------------------------------------------------------------------------
*************** Exception Handling table is empty
*************** After renumbering the basic blocks
=============== No blocks renumbered!
Enter blocks: BB01
After computing reachability sets:
------------------------------------------------
BBnum Reachable by
------------------------------------------------
BB01 : BB01
After computing reachability:
-------------------------------------------------------------------------------------------------------------------------------------
BBnum descAddr ref try hnd preds weight [IL range] [jump] [EH region] [flags]
-------------------------------------------------------------------------------------------------------------------------------------
BB01 [0008F2EC] 1 1 [000..002) (return) i label target
-------------------------------------------------------------------------------------------------------------------------------------
*************** In fgDebugCheckBBlist
*************** In fgComputeDoms
*************** In fgDebugCheckBBlist
Dominator computation start blocks (those blocks with no incoming edges):
BB01
------------------------------------------------
BBnum Dominated by
------------------------------------------------
BB01: BB01
Inside fgBuildDomTree
After computing the Dominance Tree:
*************** In Allocate Objects
Trees before Allocate Objects
-------------------------------------------------------------------------------------------------------------------------------------
BBnum descAddr ref try hnd preds weight [IL range] [jump] [EH region] [flags]
-------------------------------------------------------------------------------------------------------------------------------------
BB01 [0008F2EC] 1 1 [000..002) (return) i label target
-------------------------------------------------------------------------------------------------------------------------------------
------------ BB01 [000..002) (return), preds={} succs={}
***** BB01, stmt 1
[000003] ------------- ▌ stmtExpr void (IL 0x000...0x001)
[000002] -----+------- └──▌ return long
[000001] -----+------- └──▌ lclVar long V00 arg0
-------------------------------------------------------------------------------------------------------------------
*************** Exiting Allocate Objects
Trees after Allocate Objects
-------------------------------------------------------------------------------------------------------------------------------------
BBnum descAddr ref try hnd preds weight [IL range] [jump] [EH region] [flags]
-------------------------------------------------------------------------------------------------------------------------------------
BB01 [0008F2EC] 1 1 [000..002) (return) i label target
-------------------------------------------------------------------------------------------------------------------------------------
------------ BB01 [000..002) (return), preds={} succs={}
***** BB01, stmt 1
[000003] ------------- ▌ stmtExpr void (IL 0x000...0x001)
[000002] -----+------- └──▌ return long
[000001] -----+------- └──▌ lclVar long V00 arg0
-------------------------------------------------------------------------------------------------------------------
*************** In fgDebugCheckBBlist
*************** In optOptimizeLoops()
*************** In fgDebugCheckBBlist
*************** In optCloneLoops()
*************** In lvaMarkLocalVars()
lvaGrabTemp returning 1 (V01 tmp0) (a long lifetime temp) called for OutgoingArgSpace.
*** marking local variables in block BB01 (weight= 1 )
[000003] ------------- ▌ stmtExpr void (IL 0x000...0x001)
[000002] -----+------- └──▌ return long
[000001] -----+------- └──▌ lclVar long V00 arg0
New refCnts for V00: refCnt = 1, refCntWtd = 1
New refCnts for V00: refCnt = 2, refCntWtd = 2
New refCnts for V00: refCnt = 3, refCntWtd = 3
*************** In optAddCopies()
refCnt table for 'LongId':
V00 arg0 [ long]: refCnt = 3, refCntWtd = 3 pref [r0-r1]
V01 OutArgs [lclBlk]: refCnt = 1, refCntWtd = 1
*************** In optOptimizeBools()
*************** In fgDebugCheckBBlist
*************** In fgFindOperOrder()
*************** In fgSetBlockOrder()
The biggest BB has 2 tree nodes
-------------------------------------------------------------------------------------------------------------------------------------
BBnum descAddr ref try hnd preds weight [IL range] [jump] [EH region] [flags]
-------------------------------------------------------------------------------------------------------------------------------------
BB01 [0008F2EC] 1 1 [000..002) (return) i label target
-------------------------------------------------------------------------------------------------------------------------------------
------------ BB01 [000..002) (return), preds={} succs={}
***** BB01, stmt 1
( 7, 5) [000003] ------------- ▌ stmtExpr void (IL 0x000...0x001)
N002 ( 7, 5) [000002] ------------- └──▌ return long
N001 ( 6, 4) [000001] ------------- └──▌ lclVar long V00 arg0
-------------------------------------------------------------------------------------------------------------------
*************** In SsaBuilder::Build()
[SsaBuilder] Max block count is 2.
-------------------------------------------------------------------------------------------------------------------------------------
BBnum descAddr ref try hnd preds weight [IL range] [jump] [EH region] [flags]
-------------------------------------------------------------------------------------------------------------------------------------
BB01 [0008F2EC] 1 1 [000..002) (return) i label target
-------------------------------------------------------------------------------------------------------------------------------------
*************** Exception Handling table is empty
[SsaBuilder] Topologically sorted the graph.
[SsaBuilder::ComputeImmediateDom]
*************** In SsaBuilder::ComputeDominators(BasicBlock** postOrder, int count, ...)
*************** In SsaBuilder::InsertPhiFunctions()
*************** In fgLocalVarLiveness()
*************** In fgPerBlockLocalVarLiveness()
BB01 USE(1)={V00}
DEF(0)={ }
*************** In fgInterBlockLocalVarLiveness()
BB liveness after fgLiveVarAnalysis():
BB01 IN (1)={V00}
OUT(0)={ }
Inserting phi functions:
*************** In SsaBuilder::RenameVariables()
After fgSsaBuild:
-------------------------------------------------------------------------------------------------------------------------------------
BBnum descAddr ref try hnd preds weight [IL range] [jump] [EH region] [flags]
-------------------------------------------------------------------------------------------------------------------------------------
BB01 [0008F2EC] 1 1 [000..002) (return) i label target
-------------------------------------------------------------------------------------------------------------------------------------
------------ BB01 [000..002) (return), preds={} succs={}
***** BB01, stmt 1
( 7, 5) [000003] ------------- ▌ stmtExpr void (IL 0x000...0x001)
N002 ( 7, 5) [000002] ------------- └──▌ return long
N001 ( 6, 4) [000001] ------------- └──▌ lclVar long V00 arg0 u:2 (last use)
-------------------------------------------------------------------------------------------------------------------
*************** In optEarlyProp()
*************** In fgValueNumber()
Heap Initial Value in BB01 is: $c0
The SSA definition for heap (#2) at start of BB01 is $c0 {InitVal($41)}
***** BB01, stmt 1 (before)
N002 ( 7, 5) [000002] ------------- ▌ return long
N001 ( 6, 4) [000001] ------------- └──▌ lclVar long V00 arg0 u:2 (last use)
N001 [000001] lclVar V00 arg0 u:2 (last use) => $80 {InitVal($40)}
N002 [000002] return => $100 {100}
***** BB01, stmt 1 (after)
N002 ( 7, 5) [000002] ------------- ▌ return long $100
N001 ( 6, 4) [000001] ------------- └──▌ lclVar long V00 arg0 u:2 (last use) $80
finish(BB01).
*************** In optVnCopyProp()
*************** In SsaBuilder::ComputeDominators(Compiler*, ...)
Copy Assertion for BB01
Live vars: {V00} => {}
*************** In optOptimizeCSEs()
Blocks/Trees at start of optOptimizeCSE phase
-------------------------------------------------------------------------------------------------------------------------------------
BBnum descAddr ref try hnd preds weight [IL range] [jump] [EH region] [flags]
-------------------------------------------------------------------------------------------------------------------------------------
BB01 [0008F2EC] 1 1 [000..002) (return) i label target
-------------------------------------------------------------------------------------------------------------------------------------
------------ BB01 [000..002) (return), preds={} succs={}
***** BB01, stmt 1
( 7, 5) [000003] ------------- ▌ stmtExpr void (IL 0x000...0x001)
N002 ( 7, 5) [000002] ------------- └──▌ return long $100
N001 ( 6, 4) [000001] ------------- └──▌ lclVar long V00 arg0 u:2 (last use) $80
-------------------------------------------------------------------------------------------------------------------
*************** In optOptimizeValnumCSEs()
*************** In optAssertionPropMain()
Blocks/Trees at start of phase
-------------------------------------------------------------------------------------------------------------------------------------
BBnum descAddr ref try hnd preds weight [IL range] [jump] [EH region] [flags]
-------------------------------------------------------------------------------------------------------------------------------------
BB01 [0008F2EC] 1 1 [000..002) (return) i label target
-------------------------------------------------------------------------------------------------------------------------------------
------------ BB01 [000..002) (return), preds={} succs={}
***** BB01, stmt 1
( 7, 5) [000003] ------------- ▌ stmtExpr void (IL 0x000...0x001)
N002 ( 7, 5) [000002] ------------- └──▌ return long $100
N001 ( 6, 4) [000001] ------------- └──▌ lclVar long V00 arg0 u:2 (last use) $80
-------------------------------------------------------------------------------------------------------------------
*************** In OptimizeRangeChecks()
Blocks/trees before phase
-------------------------------------------------------------------------------------------------------------------------------------
BBnum descAddr ref try hnd preds weight [IL range] [jump] [EH region] [flags]
-------------------------------------------------------------------------------------------------------------------------------------
BB01 [0008F2EC] 1 1 [000..002) (return) i label target
-------------------------------------------------------------------------------------------------------------------------------------
------------ BB01 [000..002) (return), preds={} succs={}
***** BB01, stmt 1
( 7, 5) [000003] ------------- ▌ stmtExpr void (IL 0x000...0x001)
N002 ( 7, 5) [000002] ------------- └──▌ return long $100
N001 ( 6, 4) [000001] ------------- └──▌ lclVar long V00 arg0 u:2 (last use) $80
-------------------------------------------------------------------------------------------------------------------
*************** In fgDetermineFirstColdBlock()
No procedure splitting will be done for this method
*************** In fgLocalVarLiveness()
*************** In fgPerBlockLocalVarLiveness()
BB01 USE(1)={V00}
DEF(0)={ }
*************** In fgInterBlockLocalVarLiveness()
BB liveness after fgLiveVarAnalysis():
BB01 IN (1)={V00}
OUT(0)={ }
*************** In fgDebugCheckBBlist
*************** In lvaAssignFrameOffsets(PRE_REGALLOC_FRAME_LAYOUT)
Assign V00 arg0, size=8, stkOffs=-0x50
; Pre-RegAlloc local variable assignments
;
; V00 arg0 [V00,T00] ( 3, 3 ) long -> [sp+0x08]
;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [sp+0x00]
*************** In raAssignVars()
Clearing modified regs.
Var. interference graph for Test:LongId(long):long
V00,T00 and T00
Compiler::rpPredictAssignRegVars pass #0
Available registers = [r5-r10 f16-f31]
*************** In fgDebugCheckBBlist
; V00 arg0 T00 (refcnt= 3,refwtd= 3 ) predicted to be assigned to r6:r5
; V01 OutArgs (refcnt= 1,refwtd= 1 ) not enregistered
; refCntStk = 1
; Register predicting pass# 1
Register predicting BB01, stmt 1
N002 ( 7, 5) [000002] ------------- ▌ return long $100
N001 ( 6, 4) [000001] ------------- └──▌ lclVar long V00 arg0 u:2 r6:r5 (last use) $80
Live vars: {V00} => {}
Marking regs modified: [r0-r1] ([] => [r0-r1])
Reg. interference graph for Test:LongId(long):long
V00,T00 and
Compiler::rpPredictAssignRegVars pass #1
Available registers = [r0-r10 r12 lr f0-f31]
*************** In fgDebugCheckBBlist
; V00 arg0 T00 (refcnt= 3,refwtd= 3 ) predicted to be assigned to r1:r0
; V01 OutArgs (refcnt= 1,refwtd= 1 ) not enregistered
; refCntStk = 1
rpStkPredict is 0; previous feasible reg prediction is 0.
Clearing modified regs.
Marking regs modified: [r0-r1] ([] => [r0-r1])
# rpPasses was 1 for Test:LongId(long):long
rpStkPredict was 0
*************** In genGenerateCode()
-------------------------------------------------------------------------------------------------------------------------------------
BBnum descAddr ref try hnd preds weight [IL range] [jump] [EH region] [flags]
-------------------------------------------------------------------------------------------------------------------------------------
BB01 [0008F2EC] 1 1 [000..002) (return) i label target
-------------------------------------------------------------------------------------------------------------------------------------
*************** In fgDebugCheckBBlist
*************** In lvaAssignFrameOffsets(TENTATIVE_FRAME_LAYOUT)
; Tentative local variable assignments
;
; V00 arg0 [V00,T00] ( 3, 3 ) long -> r1:r0
;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [sp+0x00]
;
; Lcl frame size = 28
=============== Generating BB01 [000..002) (return), preds={} succs={} flags=0x00000000.00030020: i label target
BB01 IN (1)={V00}
OUT(0)={ }
Change life 00000000 {} -> 00000001 {V00}
V00 in reg r1:r0 is becoming live [------]
Live regs: 0000 {} => 0003 {r0 r1}
Live regs: (unchanged) 0003 {r0 r1}
L_M55297_BB01:
Label: IG02, GCvars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}
Scope info: begin block BB01, IL range [000..002)
Scope info: open scopes =
0 (V00 arg0) [000..002)
Added IP mapping: 0x0000 STACK_EMPTY (G_M55297_IG02,ins#0,ofs#0) label
Generating BB01, stmt 1 Holding variables: [r0-r1]
( 7, 5) [000003] ------------- ▌ stmtExpr void (IL 0x000...0x001)
N002 ( 7, 5) [000002] ------------- └──▌ return long $100
N001 ( 6, 4) [000001] ------------- └──▌ lclVar long V00 arg0 u:2 r1:r0 (last use) $80
Execution Order:
N001 ( 6, 4) [000001] ------------- ▌ lclVar long V00 arg0 u:2 r1:r0 (last use) $80
N002 ( 7, 5) [000002] ------------- ▌ return long $100
V00 in reg r1:r0 is becoming dead [000001]
Live regs: 0003 {r0 r1} => 0000 {}
Live vars: {V00} => {}
The register r0 currently holds
[000001]/lo32
The register r1 currently holds
[000001]/hi32
The register r0 no longer holds [000001][------]
The register r1 no longer holds [000001][------]
Scope info: end block BB01, IL range [000..002)
Scope info: ending scope, LVnum=0 [000..002)
Scope info: open scopes =
<none>
Added IP mapping: EPILOG STACK_EMPTY (G_M55297_IG02,ins#0,ofs#0) label
Reserving epilog IG for block BB01
*************** After placeholder IG creation
G_M55297_IG01: ; func=00, offs=000000H, size=0000H, gcrefRegs=0000 {} <-- Prolog IG
G_M55297_IG02: ; epilog placeholder, next placeholder=<END>, BB=0008F2ECH (BB01), epilog <-- First placeholder <-- Last placeholder
; PrevGCVars=00000000 {}, PrevGCrefRegs=0000 {}, PrevByrefRegs=0000 {}
; InitGCVars=00000000 {}, InitGCrefRegs=0000 {}, InitByrefRegs=0000 {}
Liveness not changing: 00000000 {}
# totalCostEx = 700, totalCostSz = 5 Test:LongId(long):long
*************** Before prolog / epilog generation
G_M55297_IG01: ; func=00, offs=000000H, size=0000H, gcrefRegs=0000 {} <-- Prolog IG
G_M55297_IG02: ; epilog placeholder, next placeholder=<END>, BB=0008F2ECH (BB01), epilog <-- First placeholder <-- Last placeholder
; PrevGCVars=00000000 {}, PrevGCrefRegs=0000 {}, PrevByrefRegs=0000 {}
; InitGCVars=00000000 {}, InitGCrefRegs=0000 {}, InitByrefRegs=0000 {}
*************** In genFnProlog()
Finalizing stack frame
Modified regs: [r0-r1]
Callee-saved registers pushed: 2 [r11 lr]
*************** In lvaAssignFrameOffsets(FINAL_FRAME_LAYOUT)
; Final local variable assignments
;
; V00 arg0 [V00,T00] ( 3, 3 ) long -> r1:r0
;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [sp+0x00]
;
; Lcl frame size = 0
Added IP mapping to front: PROLOG STACK_EMPTY (G_M55297_IG01,ins#0,ofs#0) label
__prolog:
IN0001: push {r11,lr}
IN0002: mov r11, sp
*************** In genFnPrologCalleeRegArgs() for int regs
*************** In genEnregisterIncomingStackArgs()
G_M55297_IG01: ; offs=000000H, funclet=00
*************** In genFnEpilog()
__epilog:
gcVarPtrSetCur=00000000 {}, gcRegGCrefSetCur=0000 {}, gcRegByrefSetCur=0000 {}
IN0003: pop {r11,pc}
G_M55297_IG02: ; offs=000000H, funclet=00
0 prologs, 1 epilogs, 0 funclet prologs, 0 funclet epilogs
*************** After prolog / epilog generation
G_M55297_IG01: ; func=00, offs=000000H, size=0006H, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
G_M55297_IG02: ; offs=000006H, size=0004H, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
*************** In emitJumpDistBind()
Hot code size = 0xA bytes
Cold code size = 0x0 bytes
reserveUnwindInfo(isFunclet=FALSE, isColdCode=FALSE, unwindSize=0x8)
*************** In emitEndCodeGen()
***************************************************************************
Instructions as they come out of the scheduler
G_M55297_IG01: ; func=00, offs=000000H, size=0006H, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
IN0001: 000000 E92D 4800 push {r11,lr}
IN0002: 000004 46EB mov r11, sp
G_M55297_IG02: ; func=00, offs=000006H, size=0004H, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
IN0003: 000006 E8BD 8800 pop {r11,pc}
Allocated method code size = 10 , actual size = 10
*************** After end code gen, before unwindEmit()
G_M55297_IG01: ; func=00, offs=000000H, size=0006H, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
IN0001: 000000 push {r11,lr}
IN0002: 000004 mov r11, sp
G_M55297_IG02: ; offs=000006H, size=0004H, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
IN0003: 000006 pop {r11,pc}
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0x00000a (not in unwind data)
Code Words : 1
Epilog Count : 0
F bit : 0
E bit : 1
X bit : 0
Vers : 0
Function Length : 5 (0x00005) Actual length = 10 (0x00000a)
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
A8 00 pop {r11,lr} ; opsize 32
FF end
FF end
allocUnwindInfo(pHotCode=0xB1DBB460, pColdCode=0x00000000, startOffset=0x0, endOffset=0xa, unwindSize=0x8, pUnwindBlock=0x000901C2, funKind=0 (main function))
*************** In genIPmappingGen()
IP mapping count : 3
IL offs PROLOG : 0x00000000 ( STACK_EMPTY )
IL offs 0x0000 : 0x00000006 ( STACK_EMPTY )
IL offs EPILOG : 0x00000006 ( STACK_EMPTY )
*************** In genSetScopeInfo()
VarLocInfo count is 1
*************** Variable debug info
1 vars
0( UNKNOWN) : From 00000000h to 00000006h, in r0
*************** In gcInfoBlockHdrSave()
Set code length to 10.
Set ReturnKind to Scalar.
Set stack base register to r11.
Set Outgoing stack arg area size to 0.
Defining 0 call sites:
Allocations for Test:LongId(long):long (MethodHash=0f9627fe)
count: 142, size: 17688, max = 2560
allocateMemory: 65536, nraUsed: 26588
Alloc'd bytes by kind:
kind | size | pct
---------------------+------------+--------
AssertionProp | 0 | 0.00%
ASTNode | 544 | 3.08%
InstDesc | 2056 | 11.62%
ImpStack | 0 | 0.00%
BasicBlock | 388 | 2.19%
fgArgInfo | 0 | 0.00%
fgArgInfoPtrArr | 0 | 0.00%
FlowList | 0 | 0.00%
TreeStatementList | 0 | 0.00%
SiScope | 84 | 0.47%
FlatFPStateX87 | 0 | 0.00%
DominatorMemory | 32 | 0.18%
LSRA | 0 | 0.00%
LSRA_Interval | 0 | 0.00%
LSRA_RefPosition | 0 | 0.00%
Reachability | 8 | 0.05%
SSA | 180 | 1.02%
ValueNumber | 4140 | 23.41%
LvaTable | 1544 | 8.73%
UnwindInfo | 16 | 0.09%
hashBv | 20 | 0.11%
bitset | 64 | 0.36%
FixedBitVect | 0 | 0.00%
AsIAllocator | 5916 | 33.45%
IndirAssignMap | 0 | 0.00%
FieldSeqStore | 0 | 0.00%
ZeroOffsetFieldMap | 0 | 0.00%
ArrayInfoMap | 0 | 0.00%
HeapPhiArg | 0 | 0.00%
CSE | 512 | 2.89%
GC | 912 | 5.16%
CorSig | 0 | 0.00%
Inlining | 56 | 0.32%
ArrayStack | 0 | 0.00%
DebugInfo | 88 | 0.50%
DebugOnly | 1100 | 6.22%
Codegen | 0 | 0.00%
LoopOpt | 0 | 0.00%
LoopHoist | 0 | 0.00%
Unknown | 28 | 0.16%
****** DONE compiling Test:LongId(long):long
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment