Assembly Diffs
linux x64
Diffs are based on 2,516,692 contexts (991,070 MinOpts, 1,525,622 FullOpts).
MISSED contexts: base: 8 (0.00%), diff: 1,217 (0.05%)
Overall (-35,373 bytes)
Collection |
Base size (bytes) |
Diff size (bytes) |
benchmarks.run.linux.x64.checked.mch |
14,336,549 |
-458 |
benchmarks.run_pgo.linux.x64.checked.mch |
71,273,045 |
-238 |
benchmarks.run_tiered.linux.x64.checked.mch |
21,435,743 |
-138 |
coreclr_tests.run.linux.x64.checked.mch |
403,519,732 |
-6,229 |
libraries.crossgen2.linux.x64.checked.mch |
38,727,192 |
-1,101 |
libraries.pmi.linux.x64.checked.mch |
60,418,410 |
-1,691 |
libraries_tests.run.linux.x64.Release.mch |
335,624,331 |
-20,727 |
librariestestsnotieredcompilation.run.linux.x64.Release.mch |
132,556,965 |
-1,757 |
realworld.run.linux.x64.checked.mch |
13,174,803 |
+56 |
smoke_tests.nativeaot.linux.x64.checked.mch |
4,234,485 |
-3,090 |
FullOpts (-35,373 bytes)
Collection |
Base size (bytes) |
Diff size (bytes) |
benchmarks.run.linux.x64.checked.mch |
14,037,246 |
-458 |
benchmarks.run_pgo.linux.x64.checked.mch |
47,473,056 |
-238 |
benchmarks.run_tiered.linux.x64.checked.mch |
3,694,963 |
-138 |
coreclr_tests.run.linux.x64.checked.mch |
123,765,030 |
-6,229 |
libraries.crossgen2.linux.x64.checked.mch |
38,725,994 |
-1,101 |
libraries.pmi.linux.x64.checked.mch |
60,305,553 |
-1,691 |
libraries_tests.run.linux.x64.Release.mch |
151,864,638 |
-20,727 |
librariestestsnotieredcompilation.run.linux.x64.Release.mch |
121,939,197 |
-1,757 |
realworld.run.linux.x64.checked.mch |
12,788,919 |
+56 |
smoke_tests.nativeaot.linux.x64.checked.mch |
4,233,536 |
-3,090 |
Example diffs
benchmarks.run.linux.x64.checked.mch
-35 (-44.30%) : 9883.dasm - System.Int32:Equals(System.Object):ubyte:this (FullOpts)
@@ -8,75 +8,53 @@
; Final local variable assignments
;
; V00 this [V00,T02] ( 3, 2.50) byref -> rdi this single-def
-; V01 arg1 [V01,T00] ( 5, 3.75) ref -> rbx class-hnd single-def <System.Object>
+; V01 arg1 [V01,T00] ( 4, 3.50) ref -> rsi class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03,T01] ( 3, 4.50) ref -> rax class-hnd "spilling QMark2" <System.Int32>
-; V04 tmp2 [V04,T03] ( 2, 2 ) int -> r15 "impAppendStmt"
-; V05 cse0 [V05,T04] ( 4, 1.25) long -> rcx "CSE - moderate"
-; V06 cse1 [V06,T05] ( 3, 1 ) long -> rsi "CSE - moderate"
+; V04 tmp2 [V04,T03] ( 2, 2 ) int -> rax "impAppendStmt"
;
; Lcl frame size = 0
-G_M40448_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M40448_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
push rbp
- push r15
- push rbx
- lea rbp, [rsp+0x10]
- mov rbx, rsi
- ; gcrRegs +[rbx]
- ;; size=12 bbWeight=1 PerfScore 3.75
-G_M40448_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0080 {rdi}, byref, isz
+ mov rbp, rsp
+ ;; size=4 bbWeight=1 PerfScore 1.25
+G_M40448_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi}, byref, isz
+ ; gcrRegs +[rsi]
; byrRegs +[rdi]
- mov rax, rbx
+ mov rax, rsi
; gcrRegs +[rax]
test rax, rax
je SHORT G_M40448_IG04
;; size=8 bbWeight=1 PerfScore 1.50
-G_M40448_IG03: ; bbWeight=0.25, gcrefRegs=0009 {rax rbx}, byrefRegs=0080 {rdi}, byref, isz
- mov rsi, qword ptr [rax]
+G_M40448_IG03: ; bbWeight=0.25, gcrefRegs=0041 {rax rsi}, byrefRegs=0080 {rdi}, byref, isz
mov rcx, 0xD1FFAB1E ; System.Int32
- cmp rsi, rcx
+ cmp qword ptr [rax], rcx
je SHORT G_M40448_IG06
- ;; size=18 bbWeight=0.25 PerfScore 0.88
+ ;; size=15 bbWeight=0.25 PerfScore 1.06
G_M40448_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax rbx]
+ ; gcrRegs -[rax rsi]
; byrRegs -[rdi]
xor eax, eax
;; size=2 bbWeight=0.50 PerfScore 0.12
G_M40448_IG05: ; bbWeight=0.50, epilog, nogc, extend
- pop rbx
- pop r15
pop rbp
ret
- ;; size=5 bbWeight=0.50 PerfScore 1.25
-G_M40448_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0080 {rdi}, gcvars, byref, isz
- ; gcrRegs +[rbx]
- ; byrRegs +[rdi]
- mov r15d, dword ptr [rdi]
- cmp rsi, rcx
- je SHORT G_M40448_IG08
- ;; size=8 bbWeight=0.50 PerfScore 1.62
-G_M40448_IG07: ; bbWeight=0.25, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- ; byrRegs -[rdi]
- mov rsi, rbx
+ ;; size=2 bbWeight=0.50 PerfScore 0.75
+G_M40448_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi}, gcvars, byref
; gcrRegs +[rsi]
- mov rdi, rcx
- call [CORINFO_HELP_UNBOX]
- ; gcrRegs -[rsi]
- ;; size=12 bbWeight=0.25 PerfScore 0.88
-G_M40448_IG08: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- xor eax, eax
- cmp r15d, dword ptr [rbx+0x08]
+ ; byrRegs +[rdi]
+ mov eax, dword ptr [rdi]
+ cmp eax, dword ptr [rsi+0x08]
sete al
- ;; size=9 bbWeight=0.50 PerfScore 2.12
-G_M40448_IG09: ; bbWeight=0.50, epilog, nogc, extend
- pop rbx
- pop r15
+ movzx rax, al
+ ;; size=11 bbWeight=0.50 PerfScore 3.12
+G_M40448_IG07: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
ret
- ;; size=5 bbWeight=0.50 PerfScore 1.25
+ ;; size=2 bbWeight=0.50 PerfScore 0.75
-; Total bytes of code 79, prolog size 9, PerfScore 13.38, instruction count 30, allocated bytes for code 79 (MethodHash=d61e61ff) for method System.Int32:Equals(System.Object):ubyte:this (FullOpts)
+; Total bytes of code 44, prolog size 4, PerfScore 8.56, instruction count 17, allocated bytes for code 44 (MethodHash=d61e61ff) for method System.Int32:Equals(System.Object):ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -84,11 +62,9 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x04
- CountOfUnwindCodes: 3
+ SizeOfProlog : 0x01
+ CountOfUnwindCodes: 1
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
-32 (-30.48%) : 6536.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan1[uint],System.ReadOnlySpan
1[uint]):int (FullOpts)
@@ -9,14 +9,16 @@
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[uint]>
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[uint]>
-; V02 loc0 [V02,T00] ( 7, 24.50) int -> registers
+; V02 loc0 [V02,T00] ( 7, 24.50) int -> rax
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T01] ( 6, 20 ) int -> r8 "dup spill"
-; V05 tmp2 [V05,T05] ( 3, 5.50) byref -> rdi single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V06 tmp3 [V06,T04] ( 5, 7 ) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP
-; V07 tmp4 [V07,T06] ( 3, 5.50) byref -> rdx single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V08 tmp5 [V08,T03] ( 6, 7.50) int -> rcx single-def "field V01._length (fldOffset=0x8)" P-INDEP
-; V09 cse0 [V09,T02] ( 6, 13.50) long -> r9 multi-def "CSE - aggressive"
+; V04 tmp1 [V04,T01] ( 2, 16 ) int -> rax "dup spill"
+; V05 tmp2 [V05,T07] ( 2, 5 ) byref -> rdi single-def "field V00._reference (fldOffset=0x0)" P-INDEP
+; V06 tmp3 [V06,T04] ( 4, 6.50) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V07 tmp4 [V07,T08] ( 2, 5 ) byref -> rdx single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V08 tmp5 [V08,T03] ( 5, 7 ) int -> rcx single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V09 cse0 [V09,T05] ( 3, 8.50) int -> r9 "CSE - aggressive"
+; V10 cse1 [V10,T06] ( 3, 8.50) int -> r8 "CSE - aggressive"
+; V11 cse2 [V11,T02] ( 3, 12 ) long -> r8 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -32,72 +34,59 @@ G_M264_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, b
G_M264_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rdx rdi]
cmp esi, ecx
- jl SHORT G_M264_IG12
- jmp SHORT G_M264_IG10
+ jl SHORT G_M264_IG11
+ jmp SHORT G_M264_IG07
;; size=6 bbWeight=0.50 PerfScore 1.62
G_M264_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, byref
; byrRegs +[rdx rdi]
- mov r8d, ecx
- ;; size=3 bbWeight=0.50 PerfScore 0.12
+ mov eax, ecx
+ ;; size=2 bbWeight=0.50 PerfScore 0.12
G_M264_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, byref, isz
- dec r8d
- mov eax, r8d
- test eax, eax
- jl SHORT G_M264_IG06
+ dec eax
+ js SHORT G_M264_IG09
cmp eax, esi
- jae SHORT G_M264_IG14
- mov r9d, eax
- mov r10d, dword ptr [rdi+4*r9]
- cmp eax, ecx
- jae SHORT G_M264_IG14
- cmp r10d, dword ptr [rdx+4*r9]
- je SHORT G_M264_IG08
- ;; size=31 bbWeight=4 PerfScore 42.00
-G_M264_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, byref, isz
- test r8d, r8d
- jge SHORT G_M264_IG09
- xor eax, eax
- ;; size=7 bbWeight=0.50 PerfScore 0.75
-G_M264_IG07: ; bbWeight=0.50, epilog, nogc, extend
- pop rbp
- ret
- ;; size=2 bbWeight=0.50 PerfScore 0.75
-G_M264_IG08: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, gcvars, byref, isz
+ jae SHORT G_M264_IG13
mov r8d, eax
- jmp SHORT G_M264_IG05
- ;; size=5 bbWeight=2 PerfScore 4.50
-G_M264_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, byref, isz
- cmp r8d, esi
- jae SHORT G_M264_IG14
- mov r9d, r8d
- mov eax, dword ptr [rdi+4*r9]
- cmp r8d, ecx
- jae SHORT G_M264_IG14
- cmp eax, dword ptr [rdx+4*r9]
- jb SHORT G_M264_IG12
- ;; size=23 bbWeight=0.50 PerfScore 4.38
-G_M264_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov r9d, dword ptr [rdi+4*r8]
+ cmp eax, ecx
+ jae SHORT G_M264_IG13
+ mov r8d, dword ptr [rdx+4*r8]
+ cmp r9d, r8d
+ je SHORT G_M264_IG05
+ ;; size=28 bbWeight=4 PerfScore 37.00
+G_M264_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rdx rdi]
+ cmp r8d, r9d
+ ja SHORT G_M264_IG11
+ ;; size=5 bbWeight=0.50 PerfScore 0.62
+G_M264_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov eax, 1
;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M264_IG11: ; bbWeight=0.50, epilog, nogc, extend
+G_M264_IG08: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
ret
;; size=2 bbWeight=0.50 PerfScore 0.75
-G_M264_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M264_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ xor eax, eax
+ ;; size=2 bbWeight=0.50 PerfScore 0.12
+G_M264_IG10: ; bbWeight=0.50, epilog, nogc, extend
+ pop rbp
+ ret
+ ;; size=2 bbWeight=0.50 PerfScore 0.75
+G_M264_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov eax, -1
;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M264_IG13: ; bbWeight=0.50, epilog, nogc, extend
+G_M264_IG12: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
ret
;; size=2 bbWeight=0.50 PerfScore 0.75
-G_M264_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M264_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 105, prolog size 4, PerfScore 58.38, instruction count 43, allocated bytes for code 105 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
+; Total bytes of code 73, prolog size 4, PerfScore 44.50, instruction count 32, allocated bytes for code 73 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
; ============================================================
Unwind Info:
-5 (-7.94%) : 4086.dasm - System.Buffers.ReadOnlySequence1[ubyte]:SeekMultiSegment(System.Buffers.ReadOnlySequenceSegment
1[ubyte],System.Object,int,long,int):System.SequencePosition (FullOpts)
@@ -8,7 +8,7 @@
; 0 inlinees with PGO data; 4 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 9, 21.50) ref -> rdi class-hnd <System.Buffers.ReadOnlySequenceSegment`1[ubyte]>
+; V00 arg0 [V00,T00] ( 8, 21 ) ref -> rdi class-hnd <System.Buffers.ReadOnlySequenceSegment`1[ubyte]>
; V01 arg1 [V01,T02] ( 3, 6 ) ref -> rsi class-hnd single-def <System.Object>
; V02 arg2 [V02,T04] ( 3, 2.50) int -> rdx single-def
; V03 arg3 [V03,T01] ( 7, 9.50) long -> rcx
@@ -45,7 +45,7 @@ G_M36051_IG03: ; bbWeight=2, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {},
;; size=17 bbWeight=2 PerfScore 11.50
G_M36051_IG04: ; bbWeight=8, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, isz
test rdi, rdi
- je SHORT G_M36051_IG06
+ je SHORT G_M36051_IG09
;; size=5 bbWeight=8 PerfScore 10.00
G_M36051_IG05: ; bbWeight=4, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, isz
cmp rdi, rsi
@@ -53,12 +53,10 @@ G_M36051_IG05: ; bbWeight=4, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {},
;; size=5 bbWeight=4 PerfScore 5.00
G_M36051_IG06: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rsi]
- test rdi, rdi
- je SHORT G_M36051_IG09
movsxd rax, edx
cmp rax, rcx
jl SHORT G_M36051_IG09
- ;; size=13 bbWeight=0.50 PerfScore 1.38
+ ;; size=8 bbWeight=0.50 PerfScore 0.75
G_M36051_IG07: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
mov edx, ecx
mov rax, rdi
@@ -76,7 +74,7 @@ G_M36051_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
int3
;; size=10 bbWeight=0 PerfScore 0.00
-; Total bytes of code 63, prolog size 4, PerfScore 33.12, instruction count 25, allocated bytes for code 63 (MethodHash=6911732c) for method System.Buffers.ReadOnlySequence`1[ubyte]:SeekMultiSegment(System.Buffers.ReadOnlySequenceSegment`1[ubyte],System.Object,int,long,int):System.SequencePosition (FullOpts)
+; Total bytes of code 58, prolog size 4, PerfScore 32.50, instruction count 23, allocated bytes for code 58 (MethodHash=6911732c) for method System.Buffers.ReadOnlySequence`1[ubyte]:SeekMultiSegment(System.Buffers.ReadOnlySequenceSegment`1[ubyte],System.Object,int,long,int):System.SequencePosition (FullOpts)
; ============================================================
Unwind Info:
+27 (+3.00%) : 3851.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
@@ -9,9 +9,9 @@
; Final local variable assignments
;
; V00 arg0 [V00,T07] ( 22, 23 ) ref -> rbx class-hnd single-def <System.Collections.Generic.List`1[System.String]>
-; V01 loc0 [V01,T02] ( 13, 47.50) ref -> r15 class-hnd exact single-def <System.String>
+; V01 loc0 [V01,T03] ( 13, 47.50) ref -> r15 class-hnd exact single-def <System.String>
; V02 loc1 [V02 ] ( 20, 54 ) struct (16) [rbp-0x38] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Span`1[ushort]>
-; V03 loc2 [V03,T00] ( 40,153.08) int -> r13
+; V03 loc2 [V03,T00] ( 42,187.08) int -> r13
; V04 loc3 [V04,T20] ( 4, 2 ) int -> rdi
;* V05 loc4 [V05 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[ushort]>
; V06 loc5 [V06,T06] ( 9, 25.50) int -> r14
@@ -46,13 +46,13 @@
; V35 cse2 [V35,T11] ( 3, 12 ) int -> rdx "CSE - moderate"
; V36 cse3 [V36,T10] ( 3, 12 ) ref -> rsi "CSE - moderate"
; V37 cse4 [V37,T26] ( 3, 1.50) long -> r12 "CSE - moderate"
-; V38 cse5 [V38,T03] ( 15, 30.54) int -> r14 "CSE - aggressive"
+; V38 cse5 [V38,T01] ( 17, 64.54) int -> r14 "CSE - aggressive"
; V39 cse6 [V39,T25] ( 3, 1.50) ref -> rsi "CSE - moderate"
; V40 cse7 [V40,T16] ( 2, 8 ) int -> rax "CSE - moderate"
; V41 cse8 [V41,T12] ( 3, 11.88) int -> rdi "CSE - moderate"
; V42 cse9 [V42,T18] ( 7, 3.50) int -> [rbp-0x3C] spill-single-def "CSE - moderate"
; V43 cse10 [V43,T17] ( 3, 6 ) int -> rdx "CSE - moderate"
-; V44 cse11 [V44,T01] ( 3, 48 ) long -> rsi "CSE - aggressive"
+; V44 cse11 [V44,T02] ( 3, 48 ) long -> rsi "CSE - aggressive"
;
; Lcl frame size = 40
@@ -74,24 +74,24 @@ G_M28069_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=42 bbWeight=1 PerfScore 9.50
G_M28069_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
cmp dword ptr [rbx+0x10], 0
- je G_M28069_IG27
+ je G_M28069_IG26
;; size=10 bbWeight=1 PerfScore 4.00
G_M28069_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov rax, gword ptr [rbx+0x08]
; gcrRegs +[rax]
cmp dword ptr [rax+0x08], 0
- jbe G_M28069_IG31
+ jbe G_M28069_IG30
mov r15, gword ptr [rax+0x10]
; gcrRegs +[r15]
mov r14d, dword ptr [r15+0x08]
cmp r14d, 100
- jg G_M28069_IG27
+ jg G_M28069_IG26
lea edi, [r14+0x02]
mov eax, edi
; gcrRegs -[rax]
mov esi, 2
mul rdx:rax, rsi
- jb G_M28069_IG30
+ jb G_M28069_IG29
mov rsi, rax
test rsi, rsi
je SHORT G_M28069_IG05
@@ -112,100 +112,100 @@ G_M28069_IG04: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000
;; size=22 bbWeight=0.50 PerfScore 2.62
G_M28069_IG05: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
test edi, edi
- jl G_M28069_IG32
+ jl G_M28069_IG31
mov bword ptr [rbp-0x38], rsi
mov dword ptr [rbp-0x30], edi
xor r13d, r13d
test r14d, r14d
- jle G_M28069_IG14
+ jle G_M28069_IG13
;; size=27 bbWeight=0.50 PerfScore 2.38
G_M28069_IG06: ; bbWeight=4, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
mov edi, r13d
movzx rdi, word ptr [r15+2*rdi+0x0C]
cmp edi, 39
- jne SHORT G_M28069_IG10
+ jne SHORT G_M28069_IG09
;; size=14 bbWeight=4 PerfScore 14.00
G_M28069_IG07: ; bbWeight=16, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
cmp r13d, dword ptr [rbp-0x30]
- jae G_M28069_IG31
+ jae G_M28069_IG30
mov rdi, bword ptr [rbp-0x38]
; byrRegs +[rdi]
mov esi, r13d
+ cmp r13d, r14d
+ jae G_M28069_IG30
movzx rax, word ptr [r15+2*rsi+0x0C]
mov word ptr [rdi+2*rsi], ax
inc r13d
cmp r14d, r13d
- jle SHORT G_M28069_IG08
+ jle G_M28069_IG26
+ cmp r13d, r14d
+ jae G_M28069_IG30
mov edi, r13d
; byrRegs -[rdi]
cmp word ptr [r15+2*rdi+0x0C], 39
jne SHORT G_M28069_IG07
- ;; size=47 bbWeight=16 PerfScore 208.00
-G_M28069_IG08: ; bbWeight=2, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
- cmp r14d, r13d
- jg SHORT G_M28069_IG11
- ;; size=5 bbWeight=2 PerfScore 2.50
-G_M28069_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbx r15]
- jmp G_M28069_IG27
- ;; size=5 bbWeight=0.50 PerfScore 1.00
-G_M28069_IG10: ; bbWeight=2, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[rbx r15]
+ ;; size=69 bbWeight=16 PerfScore 248.00
+G_M28069_IG08: ; bbWeight=4, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+ jmp SHORT G_M28069_IG10
+ ;; size=2 bbWeight=4 PerfScore 8.00
+G_M28069_IG09: ; bbWeight=2, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
cmp edi, 121
- je SHORT G_M28069_IG13
+ je SHORT G_M28069_IG12
;; size=5 bbWeight=2 PerfScore 2.50
-G_M28069_IG11: ; bbWeight=4, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M28069_IG10: ; bbWeight=4, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
cmp r13d, dword ptr [rbp-0x30]
- jae G_M28069_IG31
+ jae G_M28069_IG30
mov rdi, bword ptr [rbp-0x38]
; byrRegs +[rdi]
mov esi, r13d
+ cmp r13d, r14d
+ jae G_M28069_IG30
mov eax, r13d
movzx rax, word ptr [r15+2*rax+0x0C]
mov word ptr [rdi+2*rsi], ax
inc r13d
cmp r14d, r13d
- jg SHORT G_M28069_IG06
- ;; size=38 bbWeight=4 PerfScore 36.00
-G_M28069_IG12: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+ jg G_M28069_IG06
+ ;; size=51 bbWeight=4 PerfScore 41.00
+G_M28069_IG11: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rdi]
- jmp SHORT G_M28069_IG14
+ jmp SHORT G_M28069_IG13
;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M28069_IG13: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+G_M28069_IG12: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
cmp r13d, dword ptr [rbp-0x30]
- jae G_M28069_IG31
+ jae G_M28069_IG30
mov rdi, bword ptr [rbp-0x38]
; byrRegs +[rdi]
mov esi, r13d
mov word ptr [rdi+2*rsi], 121
;; size=23 bbWeight=0.50 PerfScore 2.62
-G_M28069_IG14: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M28069_IG13: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rdi]
lea edi, [r14-0x01]
cmp edi, r13d
- jle G_M28069_IG27
+ jle G_M28069_IG26
lea edi, [r13+0x01]
cmp edi, r14d
- jae G_M28069_IG31
+ jae G_M28069_IG30
lea edi, [r13+0x01]
mov r12d, edi
cmp word ptr [r15+2*r12+0x0C], 121
- jne G_M28069_IG27
+ jne G_M28069_IG26
lea eax, [r13+0x02]
mov dword ptr [rbp-0x3C], eax
cmp r14d, eax
- jle SHORT G_M28069_IG15
+ jle SHORT G_M28069_IG14
cmp eax, r14d
- jae G_M28069_IG31
+ jae G_M28069_IG30
mov edi, eax
cmp word ptr [r15+2*rdi+0x0C], 121
mov eax, dword ptr [rbp-0x3C]
- je G_M28069_IG27
+ je G_M28069_IG26
;; size=85 bbWeight=0.50 PerfScore 8.75
-G_M28069_IG15: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M28069_IG14: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
lea edi, [r13+0x03]
cmp edi, dword ptr [rbp-0x30]
- jl SHORT G_M28069_IG16
+ jl SHORT G_M28069_IG15
mov rsi, 0xD1FFAB1E
; gcrRegs +[rsi]
mov rdi, rsi
@@ -215,37 +215,37 @@ G_M28069_IG15: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000
; gcr arg pop 0
mov eax, dword ptr [rbp-0x3C]
;; size=31 bbWeight=0.50 PerfScore 4.00
-G_M28069_IG16: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M28069_IG15: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
lea edi, [r13+0x01]
cmp edi, dword ptr [rbp-0x30]
- jae G_M28069_IG31
+ jae G_M28069_IG30
mov rdi, bword ptr [rbp-0x38]
; byrRegs +[rdi]
mov word ptr [rdi+2*r12], 121
cmp eax, dword ptr [rbp-0x30]
- jae G_M28069_IG31
+ jae G_M28069_IG30
mov rdi, bword ptr [rbp-0x38]
mov ecx, eax
mov word ptr [rdi+2*rcx], 121
lea edi, [r13+0x03]
; byrRegs -[rdi]
cmp edi, dword ptr [rbp-0x30]
- jae G_M28069_IG31
+ jae G_M28069_IG30
mov rdi, bword ptr [rbp-0x38]
; byrRegs +[rdi]
lea ecx, [r13+0x03]
mov word ptr [rdi+2*rcx], 121
mov r13d, eax
cmp r14d, r13d
- jle SHORT G_M28069_IG20
+ jle SHORT G_M28069_IG19
test r13d, r13d
- jl SHORT G_M28069_IG19
+ jl SHORT G_M28069_IG18
;; size=85 bbWeight=0.50 PerfScore 9.75
-G_M28069_IG17: ; bbWeight=3.96, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M28069_IG16: ; bbWeight=3.96, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rdi]
lea edi, [r13+0x02]
cmp edi, dword ptr [rbp-0x30]
- jae G_M28069_IG31
+ jae G_M28069_IG30
mov rax, bword ptr [rbp-0x38]
; byrRegs +[rax]
mov ecx, r13d
@@ -253,29 +253,29 @@ G_M28069_IG17: ; bbWeight=3.96, gcrefRegs=8008 {rbx r15}, byrefRegs=0000
mov word ptr [rax+2*rdi], cx
inc r13d
cmp r14d, r13d
- jg SHORT G_M28069_IG17
+ jg SHORT G_M28069_IG16
;; size=38 bbWeight=3.96 PerfScore 36.63
-G_M28069_IG18: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M28069_IG17: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rax]
- jmp SHORT G_M28069_IG20
+ jmp SHORT G_M28069_IG19
...
+2 (+3.23%) : 5919.dasm - System.Net.Http.HttpConnectionPool:GetSslOptionsForRequest(System.Net.Http.HttpRequestMessage):System.Net.Security.SslClientAuthenticationOptions:this (FullOpts)
@@ -13,6 +13,7 @@
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V03 tmp1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Version>
;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Version>
+; V05 cse0 [V05,T02] ( 2, 1 ) int -> rax "CSE - moderate"
;
; Lcl frame size = 0
@@ -28,12 +29,15 @@ G_M47920_IG02: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {},
G_M47920_IG03: ; bbWeight=0.50, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, isz
mov rax, gword ptr [rsi+0x20]
; gcrRegs +[rax]
- cmp dword ptr [rax+0x08], 2
+ mov eax, dword ptr [rax+0x08]
+ ; gcrRegs -[rax]
+ cmp eax, 2
jl SHORT G_M47920_IG05
cmp dword ptr [rsi+0x3C], 0
je SHORT G_M47920_IG06
mov rax, gword ptr [rdi+0x98]
- ;; size=23 bbWeight=0.50 PerfScore 6.00
+ ; gcrRegs +[rax]
+ ;; size=25 bbWeight=0.50 PerfScore 5.62
G_M47920_IG04: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
ret
@@ -62,7 +66,7 @@ G_M47920_IG09: ; bbWeight=0.50, epilog, nogc, extend
ret
;; size=2 bbWeight=0.50 PerfScore 0.75
-; Total bytes of code 62, prolog size 4, PerfScore 17.50, instruction count 20, allocated bytes for code 62 (MethodHash=a75444cf) for method System.Net.Http.HttpConnectionPool:GetSslOptionsForRequest(System.Net.Http.HttpRequestMessage):System.Net.Security.SslClientAuthenticationOptions:this (FullOpts)
+; Total bytes of code 64, prolog size 4, PerfScore 17.12, instruction count 21, allocated bytes for code 64 (MethodHash=a75444cf) for method System.Net.Http.HttpConnectionPool:GetSslOptionsForRequest(System.Net.Http.HttpRequestMessage):System.Net.Security.SslClientAuthenticationOptions:this (FullOpts)
; ============================================================
Unwind Info:
+3 (+3.70%) : 1868.dasm - System.Security.Cryptography.UniversalCryptoDecryptor:Dispose(ubyte):this (FullOpts)
@@ -8,11 +8,12 @@
; 0 inlinees with PGO data; 2 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 5, 4 ) ref -> rbx this class-hnd single-def <System.Security.Cryptography.UniversalCryptoDecryptor>
-; V01 arg1 [V01,T02] ( 3, 3 ) ubyte -> rsi single-def
-; V02 loc0 [V02,T03] ( 3, 1.50) ref -> rdi class-hnd single-def <<unknown class>>
+; V00 this [V00,T00] ( 5, 3.50) ref -> rbx this class-hnd single-def <System.Security.Cryptography.UniversalCryptoDecryptor>
+; V01 arg1 [V01,T01] ( 3, 3 ) ubyte -> rsi single-def
+; V02 loc0 [V02,T04] ( 3, 1.50) ref -> rdi class-hnd single-def <<unknown class>>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T00] ( 4, 8 ) ref -> rbx class-hnd single-def "Inlining Arg" <System.Security.Cryptography.BasicSymmetricCipher>
+; V04 tmp1 [V04,T02] ( 4, 4 ) ref -> rbx class-hnd single-def "Inlining Arg" <System.Security.Cryptography.BasicSymmetricCipher>
+; V05 cse0 [V05,T03] ( 2, 2 ) int -> rdi "CSE - aggressive"
;
; Lcl frame size = 8
@@ -25,9 +26,10 @@ G_M4640_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}
; gcrRegs +[rbx]
;; size=11 bbWeight=1 PerfScore 3.75
G_M4640_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- test sil, sil
+ movzx rdi, sil
+ test edi, edi
je SHORT G_M4640_IG06
- ;; size=5 bbWeight=1 PerfScore 1.25
+ ;; size=8 bbWeight=1 PerfScore 1.50
G_M4640_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov rdi, gword ptr [rbx+0x18]
; gcrRegs +[rdi]
@@ -39,7 +41,7 @@ G_M4640_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, b
call [System.Array:Clear(System.Array)]
; gcrRegs -[rax rdi]
;; size=21 bbWeight=0.50 PerfScore 3.75
-G_M4640_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M4640_IG04: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rbx, gword ptr [rbx+0x08]
mov rdi, rbx
; gcrRegs +[rdi]
@@ -50,13 +52,13 @@ G_M4640_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byre
; gcrRegs -[rdi]
mov rdi, rbx
; gcrRegs +[rdi]
- ;; size=25 bbWeight=1 PerfScore 9.75
-G_M4640_IG05: ; bbWeight=1, epilog, nogc, extend
+ ;; size=25 bbWeight=0.50 PerfScore 4.88
+G_M4640_IG05: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 8
pop rbx
pop rbp
tail.jmp [System.GC:SuppressFinalize(System.Object)]
- ;; size=12 bbWeight=1 PerfScore 3.25
+ ;; size=12 bbWeight=0.50 PerfScore 1.62
G_M4640_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rbx rdi]
add rsp, 8
@@ -65,7 +67,7 @@ G_M4640_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byre
ret
;; size=7 bbWeight=0.50 PerfScore 1.12
-; Total bytes of code 81, prolog size 8, PerfScore 22.88, instruction count 28, allocated bytes for code 81 (MethodHash=97d5eddf) for method System.Security.Cryptography.UniversalCryptoDecryptor:Dispose(ubyte):this (FullOpts)
+; Total bytes of code 84, prolog size 8, PerfScore 16.62, instruction count 29, allocated bytes for code 84 (MethodHash=97d5eddf) for method System.Security.Cryptography.UniversalCryptoDecryptor:Dispose(ubyte):this (FullOpts)
; ============================================================
Unwind Info:
benchmarks.run_pgo.linux.x64.checked.mch
-35 (-42.68%) : 147653.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
@@ -9,77 +9,58 @@
; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T02] ( 3, 3 ) byref -> r15 this single-def
-; V01 arg1 [V01,T00] ( 5, 4.50) ref -> rbx class-hnd single-def <System.Object>
+; V00 this [V00,T02] ( 3, 3 ) byref -> rdi this single-def
+; V01 arg1 [V01,T00] ( 4, 4 ) ref -> rsi class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03,T01] ( 3, 5 ) ref -> rax class-hnd "spilling QMark2" <System.Reflection.MetadataImport>
;* V04 tmp2 [V04 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.Reflection.MetadataImport>
;* V05 tmp3 [V05 ] ( 0, 0 ) ref -> zero-ref "field V04.m_keepalive (fldOffset=0x0)" P-INDEP
-; V06 tmp4 [V06,T05] ( 2, 2 ) long -> rax "field V04.m_metadataImport2 (fldOffset=0x8)" P-INDEP
-; V07 cse0 [V07,T03] ( 4, 2.50) long -> rdi "CSE - aggressive"
-; V08 cse1 [V08,T04] ( 3, 2 ) long -> rsi "CSE - aggressive"
+; V06 tmp4 [V06,T03] ( 2, 2 ) long -> rax "field V04.m_metadataImport2 (fldOffset=0x8)" P-INDEP
+; V07 cse0 [V07,T04] ( 2, 1 ) long -> rcx "CSE - moderate"
;
; Lcl frame size = 0
G_M38955_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
- push r15
- push rbx
- lea rbp, [rsp+0x10]
- mov r15, rdi
- ; byrRegs +[r15]
- mov rbx, rsi
- ; gcrRegs +[rbx]
- ;; size=15 bbWeight=1 PerfScore 4.00
-G_M38955_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, byref, isz
- mov rax, rbx
+ mov rbp, rsp
+ ;; size=4 bbWeight=1 PerfScore 1.25
+G_M38955_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi}, byref, isz
+ ; gcrRegs +[rsi]
+ ; byrRegs +[rdi]
+ mov rax, rsi
; gcrRegs +[rax]
test rax, rax
- je SHORT G_M38955_IG08
+ jne SHORT G_M38955_IG05
;; size=8 bbWeight=1 PerfScore 1.50
-G_M38955_IG03: ; bbWeight=0.50, gcrefRegs=0009 {rax rbx}, byrefRegs=8000 {r15}, byref, isz
- mov rsi, qword ptr [rax]
- mov rdi, 0xD1FFAB1E ; System.Reflection.MetadataImport
- cmp rsi, rdi
- jne SHORT G_M38955_IG08
- ;; size=18 bbWeight=0.50 PerfScore 1.75
-G_M38955_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, byref, isz
+G_M38955_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rax rsi]
+ ; byrRegs -[rdi]
+ xor eax, eax
+ ;; size=2 bbWeight=1 PerfScore 0.25
+G_M38955_IG04: ; bbWeight=1, epilog, nogc, extend
+ pop rbp
+ ret
+ ;; size=2 bbWeight=1 PerfScore 1.50
+G_M38955_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0041 {rax rsi}, byrefRegs=0080 {rdi}, gcvars, byref, isz
+ ; gcrRegs +[rax rsi]
+ ; byrRegs +[rdi]
+ mov rcx, 0xD1FFAB1E ; System.Reflection.MetadataImport
+ cmp qword ptr [rax], rcx
+ jne SHORT G_M38955_IG03
+ ;; size=15 bbWeight=0.50 PerfScore 2.12
+G_M38955_IG06: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi}, byref
; gcrRegs -[rax]
- cmp rsi, rdi
- jne SHORT G_M38955_IG07
- ;; size=5 bbWeight=1 PerfScore 1.25
-G_M38955_IG05: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, byref
- mov rax, qword ptr [rbx+0x10]
- cmp rax, qword ptr [r15+0x08]
+ mov rax, qword ptr [rsi+0x10]
+ cmp rax, qword ptr [rdi+0x08]
sete al
movzx rax, al
;; size=14 bbWeight=1 PerfScore 6.25
-G_M38955_IG06: ; bbWeight=1, epilog, nogc, extend
- pop rbx
- pop r15
+G_M38955_IG07: ; bbWeight=1, epilog, nogc, extend
pop rbp
ret
- ;; size=5 bbWeight=1 PerfScore 2.50
-G_M38955_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, gcvars, byref, isz
- mov rsi, rbx
- ; gcrRegs +[rsi]
- call CORINFO_HELP_UNBOX
- ; gcrRegs -[rsi]
- jmp SHORT G_M38955_IG05
- ;; size=10 bbWeight=0.50 PerfScore 1.62
-G_M38955_IG08: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbx]
- ; byrRegs -[r15]
- xor eax, eax
- ;; size=2 bbWeight=0.25 PerfScore 0.06
-G_M38955_IG09: ; bbWeight=0.25, epilog, nogc, extend
- pop rbx
- pop r15
- pop rbp
- ret
- ;; size=5 bbWeight=0.25 PerfScore 0.62
+ ;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 82, prolog size 9, PerfScore 19.56, instruction count 31, allocated bytes for code 82 (MethodHash=885867d4) for method System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
+; Total bytes of code 47, prolog size 4, PerfScore 14.38, instruction count 17, allocated bytes for code 47 (MethodHash=885867d4) for method System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
; ============================================================
Unwind Info:
@@ -87,11 +68,9 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x04
- CountOfUnwindCodes: 3
+ SizeOfProlog : 0x01
+ CountOfUnwindCodes: 1
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
-35 (-42.68%) : 45195.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
@@ -9,77 +9,58 @@
; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T02] ( 3, 3 ) byref -> r15 this single-def
-; V01 arg1 [V01,T00] ( 5, 4.50) ref -> rbx class-hnd single-def <System.Object>
+; V00 this [V00,T02] ( 3, 3 ) byref -> rdi this single-def
+; V01 arg1 [V01,T00] ( 4, 4 ) ref -> rsi class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03,T01] ( 3, 5 ) ref -> rax class-hnd "spilling QMark2" <System.Reflection.MetadataImport>
;* V04 tmp2 [V04 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.Reflection.MetadataImport>
;* V05 tmp3 [V05 ] ( 0, 0 ) ref -> zero-ref "field V04.m_keepalive (fldOffset=0x0)" P-INDEP
-; V06 tmp4 [V06,T05] ( 2, 2 ) long -> rax "field V04.m_metadataImport2 (fldOffset=0x8)" P-INDEP
-; V07 cse0 [V07,T03] ( 4, 2.50) long -> rdi "CSE - aggressive"
-; V08 cse1 [V08,T04] ( 3, 2 ) long -> rsi "CSE - aggressive"
+; V06 tmp4 [V06,T03] ( 2, 2 ) long -> rax "field V04.m_metadataImport2 (fldOffset=0x8)" P-INDEP
+; V07 cse0 [V07,T04] ( 2, 1 ) long -> rcx "CSE - moderate"
;
; Lcl frame size = 0
G_M38955_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
- push r15
- push rbx
- lea rbp, [rsp+0x10]
- mov r15, rdi
- ; byrRegs +[r15]
- mov rbx, rsi
- ; gcrRegs +[rbx]
- ;; size=15 bbWeight=1 PerfScore 4.00
-G_M38955_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, byref, isz
- mov rax, rbx
+ mov rbp, rsp
+ ;; size=4 bbWeight=1 PerfScore 1.25
+G_M38955_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi}, byref, isz
+ ; gcrRegs +[rsi]
+ ; byrRegs +[rdi]
+ mov rax, rsi
; gcrRegs +[rax]
test rax, rax
- je SHORT G_M38955_IG08
+ jne SHORT G_M38955_IG05
;; size=8 bbWeight=1 PerfScore 1.50
-G_M38955_IG03: ; bbWeight=0.50, gcrefRegs=0009 {rax rbx}, byrefRegs=8000 {r15}, byref, isz
- mov rsi, qword ptr [rax]
- mov rdi, 0xD1FFAB1E ; System.Reflection.MetadataImport
- cmp rsi, rdi
- jne SHORT G_M38955_IG08
- ;; size=18 bbWeight=0.50 PerfScore 1.75
-G_M38955_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, byref, isz
+G_M38955_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rax rsi]
+ ; byrRegs -[rdi]
+ xor eax, eax
+ ;; size=2 bbWeight=1 PerfScore 0.25
+G_M38955_IG04: ; bbWeight=1, epilog, nogc, extend
+ pop rbp
+ ret
+ ;; size=2 bbWeight=1 PerfScore 1.50
+G_M38955_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0041 {rax rsi}, byrefRegs=0080 {rdi}, gcvars, byref, isz
+ ; gcrRegs +[rax rsi]
+ ; byrRegs +[rdi]
+ mov rcx, 0xD1FFAB1E ; System.Reflection.MetadataImport
+ cmp qword ptr [rax], rcx
+ jne SHORT G_M38955_IG03
+ ;; size=15 bbWeight=0.50 PerfScore 2.12
+G_M38955_IG06: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi}, byref
; gcrRegs -[rax]
- cmp rsi, rdi
- jne SHORT G_M38955_IG07
- ;; size=5 bbWeight=1 PerfScore 1.25
-G_M38955_IG05: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, byref
- mov rax, qword ptr [rbx+0x10]
- cmp rax, qword ptr [r15+0x08]
+ mov rax, qword ptr [rsi+0x10]
+ cmp rax, qword ptr [rdi+0x08]
sete al
movzx rax, al
;; size=14 bbWeight=1 PerfScore 6.25
-G_M38955_IG06: ; bbWeight=1, epilog, nogc, extend
- pop rbx
- pop r15
+G_M38955_IG07: ; bbWeight=1, epilog, nogc, extend
pop rbp
ret
- ;; size=5 bbWeight=1 PerfScore 2.50
-G_M38955_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, gcvars, byref, isz
- mov rsi, rbx
- ; gcrRegs +[rsi]
- call CORINFO_HELP_UNBOX
- ; gcrRegs -[rsi]
- jmp SHORT G_M38955_IG05
- ;; size=10 bbWeight=0.50 PerfScore 1.62
-G_M38955_IG08: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbx]
- ; byrRegs -[r15]
- xor eax, eax
- ;; size=2 bbWeight=0.25 PerfScore 0.06
-G_M38955_IG09: ; bbWeight=0.25, epilog, nogc, extend
- pop rbx
- pop r15
- pop rbp
- ret
- ;; size=5 bbWeight=0.25 PerfScore 0.62
+ ;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 82, prolog size 9, PerfScore 19.56, instruction count 31, allocated bytes for code 82 (MethodHash=885867d4) for method System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
+; Total bytes of code 47, prolog size 4, PerfScore 14.38, instruction count 17, allocated bytes for code 47 (MethodHash=885867d4) for method System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
; ============================================================
Unwind Info:
@@ -87,11 +68,9 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x04
- CountOfUnwindCodes: 3
+ SizeOfProlog : 0x01
+ CountOfUnwindCodes: 1
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
-29 (-29.00%) : 137448.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan1[uint],System.ReadOnlySpan
1[uint]):int (Tier1)
@@ -5,19 +5,21 @@
; optimized using Dynamic PGO
; rbp based frame
; fully interruptible
-; with Dynamic PGO: edge weights are valid, and fgCalledCount is 8127
+; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 8127
; Final local variable assignments
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[uint]>
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[uint]>
-; V02 loc0 [V02,T02] ( 7, 6.95) int -> registers
+; V02 loc0 [V02,T00] ( 7, 6.95) int -> rax
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T00] ( 6, 11.74) int -> rax "dup spill"
-; V05 tmp2 [V05,T05] ( 3, 2.97) byref -> rdi single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V06 tmp3 [V06,T03] ( 5, 4.00) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP
-; V07 tmp4 [V07,T06] ( 3, 2.97) byref -> rdx single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V08 tmp5 [V08,T01] ( 6, 4.97) int -> rcx single-def "field V01._length (fldOffset=0x8)" P-INDEP
-; V09 cse0 [V09,T04] ( 6, 5.90) long -> r9 multi-def "CSE - aggressive"
+; V04 tmp1 [V04,T05] ( 2, 3.99) int -> rax "dup spill"
+; V05 tmp2 [V05,T03] ( 2, 2.00) byref -> rdi single-def "field V00._reference (fldOffset=0x0)" P-INDEP
+; V06 tmp3 [V06,T02] ( 4, 3.03) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V07 tmp4 [V07,T04] ( 2, 2.00) byref -> rdx single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V08 tmp5 [V08,T01] ( 5, 4.00) int -> rcx single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V09 cse0 [V09,T07] ( 3, 2.96) int -> r9 "CSE - aggressive"
+; V10 cse1 [V10,T08] ( 3, 2.96) int -> r8 "CSE - aggressive"
+; V11 cse2 [V11,T06] ( 3, 2.99) long -> r8 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -28,76 +30,61 @@ G_M264_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, n
G_M264_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, byref, isz
; byrRegs +[rdx rdi]
cmp esi, ecx
- jne SHORT G_M264_IG09
+ jne SHORT G_M264_IG10
;; size=4 bbWeight=1 PerfScore 1.25
G_M264_IG03: ; bbWeight=0.97, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, byref
mov eax, ecx
;; size=2 bbWeight=0.97 PerfScore 0.24
G_M264_IG04: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, byref, isz
dec eax
- mov r8d, eax
- test r8d, r8d
- jl SHORT G_M264_IG05
- cmp r8d, esi
- jae SHORT G_M264_IG12
- mov r9d, r8d
- mov r10d, dword ptr [rdi+4*r9]
- cmp r8d, ecx
- jae SHORT G_M264_IG12
- cmp r10d, dword ptr [rdx+4*r9]
- je SHORT G_M264_IG08
- ;; size=33 bbWeight=1.00 PerfScore 10.47
-G_M264_IG05: ; bbWeight=0.97, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, byref, isz
- test eax, eax
- jl SHORT G_M264_IG13
+ js SHORT G_M264_IG08
cmp eax, esi
- jae SHORT G_M264_IG12
- mov r9d, eax
- mov edi, dword ptr [rdi+4*r9]
- ; byrRegs -[rdi]
+ jae SHORT G_M264_IG13
+ mov r8d, eax
+ mov r9d, dword ptr [rdi+4*r8]
cmp eax, ecx
- jae SHORT G_M264_IG12
- cmp edi, dword ptr [rdx+4*r9]
- jb SHORT G_M264_IG10
- ;; size=25 bbWeight=0.97 PerfScore 9.69
+ jae SHORT G_M264_IG13
+ mov r8d, dword ptr [rdx+4*r8]
+ cmp r9d, r8d
+ je SHORT G_M264_IG04
+ ;; size=28 bbWeight=1.00 PerfScore 9.23
+G_M264_IG05: ; bbWeight=0.97, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; byrRegs -[rdx rdi]
+ cmp r8d, r9d
+ ja SHORT G_M264_IG11
+ ;; size=5 bbWeight=0.97 PerfScore 1.21
G_M264_IG06: ; bbWeight=0.74, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[rdx]
mov eax, 1
;; size=5 bbWeight=0.74 PerfScore 0.18
G_M264_IG07: ; bbWeight=0.74, epilog, nogc, extend
pop rbp
ret
;; size=2 bbWeight=0.74 PerfScore 1.10
-G_M264_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, gcvars, byref, isz
- ; byrRegs +[rdx rdi]
- mov eax, r8d
- jmp SHORT G_M264_IG04
- ;; size=5 bbWeight=0.50 PerfScore 1.12
-G_M264_IG09: ; bbWeight=0.03, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[rdx rdi]
+G_M264_IG08: ; bbWeight=0.97, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ xor eax, eax
+ ;; size=2 bbWeight=0.97 PerfScore 0.24
+G_M264_IG09: ; bbWeight=0.97, epilog, nogc, extend
+ pop rbp
+ ret
+ ;; size=2 bbWeight=0.97 PerfScore 1.45
+G_M264_IG10: ; bbWeight=0.03, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
cmp esi, ecx
jge SHORT G_M264_IG06
;; size=4 bbWeight=0.03 PerfScore 0.04
-G_M264_IG10: ; bbWeight=0.26, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M264_IG11: ; bbWeight=0.26, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov eax, -1
;; size=5 bbWeight=0.26 PerfScore 0.07
-G_M264_IG11: ; bbWeight=0.26, epilog, nogc, extend
+G_M264_IG12: ; bbWeight=0.26, epilog, nogc, extend
pop rbp
ret
;; size=2 bbWeight=0.26 PerfScore 0.40
-G_M264_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M264_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
- ;; size=5 bbWeight=0 PerfScore 0.00
-G_M264_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- xor eax, eax
- ;; size=2 bbWeight=0 PerfScore 0.00
-G_M264_IG14: ; bbWeight=0, epilog, nogc, extend
- pop rbp
- ret
- ;; size=2 bbWeight=0 PerfScore 0.00
+ int3
+ ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 100, prolog size 4, PerfScore 25.81, instruction count 41, allocated bytes for code 100 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
+; Total bytes of code 71, prolog size 4, PerfScore 16.66, instruction count 31, allocated bytes for code 71 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
; ============================================================
Unwind Info:
+31 (+9.84%) : 96806.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_IsDelaySigned():ubyte:this (Tier1)
@@ -20,16 +20,16 @@
;* V08 tmp6 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.CSharpCompilationOptions>
;* V09 tmp7 [V09 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V10 tmp8 [V10,T10] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
-; V11 tmp9 [V11,T03] ( 5, 5 ) ubyte -> r14 "Inline stloc first use temp"
+; V11 tmp9 [V11,T06] ( 5, 3 ) ubyte -> r14 "Inline stloc first use temp"
;* V12 tmp10 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
;* V13 tmp11 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
-; V14 tmp12 [V14,T06] ( 5, 4 ) ref -> r13 class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CustomAttributesBag`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]>
-; V15 tmp13 [V15,T04] ( 3, 4.50) ref -> rsi single-def "CASTCLASS eval op1"
+; V14 tmp12 [V14,T05] ( 5, 4 ) ref -> r13 class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CustomAttributesBag`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]>
+; V15 tmp13 [V15,T03] ( 3, 4.50) ref -> rsi single-def "CASTCLASS eval op1"
; V16 tmp14 [V16,T08] ( 3, 2.50) long -> rdi "fgMakeTemp is creating a new local variable"
-; V17 tmp15 [V17,T01] ( 5, 7.50) ref -> rax class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
-; V18 tmp16 [V18,T05] ( 3, 4.50) ref -> rsi single-def "CASTCLASS eval op1"
+; V17 tmp15 [V17,T01] ( 5, 5.50) ref -> rax class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
+; V18 tmp16 [V18,T04] ( 3, 4.50) ref -> rsi single-def "CASTCLASS eval op1"
; V19 tmp17 [V19,T09] ( 3, 2.50) long -> rdi "fgMakeTemp is creating a new local variable"
-; V20 tmp18 [V20,T02] ( 5, 7.50) ref -> rax class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
+; V20 tmp18 [V20,T02] ( 5, 5.50) ref -> rcx class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
;* V21 tmp19 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.CustomAttributesBag`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]>
; V22 tmp20 [V22 ] ( 4, 2 ) ubyte -> [rbp-0x28] do-not-enreg[X] addr-exposed "field V01.hasValue (fldOffset=0x0)" P-DEP
; V23 tmp21 [V23 ] ( 3, 1 ) ubyte -> [rbp-0x27] do-not-enreg[X] addr-exposed "field V01.value (fldOffset=0x1)" P-DEP
@@ -57,16 +57,16 @@ G_M43884_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
; gcrRegs -[rdi]
mov word ptr [rbp-0x28], di
cmp byte ptr [rbp-0x28], 0
- jne G_M43884_IG14
+ jne G_M43884_IG12
cmp byte ptr [r15+0x88], 0
- jne G_M43884_IG16
+ jne G_M43884_IG14
xor r14d, r14d
mov r13, gword ptr [rbx+0x80]
; gcrRegs +[r13]
test r13, r13
- je G_M43884_IG18
+ je G_M43884_IG16
test byte ptr [r13+0x18], 2
- je G_M43884_IG18
+ je G_M43884_IG16
;; size=74 bbWeight=1 PerfScore 21.50
G_M43884_IG03: ; bbWeight=1, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r15]
@@ -75,60 +75,58 @@ G_M43884_IG03: ; bbWeight=1, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {},
mov rax, rsi
; gcrRegs +[rax]
test rax, rax
- je SHORT G_M43884_IG07
+ je SHORT G_M43884_IG06
;; size=12 bbWeight=1 PerfScore 3.50
-G_M43884_IG04: ; bbWeight=0.50, gcrefRegs=0049 {rax rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M43884_IG04: ; bbWeight=0.50, gcrefRegs=0049 {rax rbx rsi}, byrefRegs=0000 {}, byref
; gcrRegs -[r13]
mov rdi, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]
cmp qword ptr [rax], rdi
- je SHORT G_M43884_IG06
- ;; size=15 bbWeight=0.50 PerfScore 2.12
+ je G_M43884_IG17
+ ;; size=19 bbWeight=0.50 PerfScore 2.12
G_M43884_IG05: ; bbWeight=0.25, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
call CORINFO_HELP_CHKCASTCLASS_SPECIAL
; gcrRegs -[rsi] +[rax]
- ;; size=5 bbWeight=0.25 PerfScore 0.25
-G_M43884_IG06: ; bbWeight=1, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref
- movzx r14, byte ptr [rax+0x84]
- ;; size=8 bbWeight=1 PerfScore 2.00
-G_M43884_IG07: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ jmp G_M43884_IG17
+ ;; size=10 bbWeight=0.25 PerfScore 0.75
+G_M43884_IG06: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
test r14d, r14d
- jne SHORT G_M43884_IG12
+ jne SHORT G_M43884_IG10
cmp gword ptr [rbx+0x88], 0
- je G_M43884_IG19
+ je G_M43884_IG18
;; size=19 bbWeight=1 PerfScore 5.25
-G_M43884_IG08: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M43884_IG07: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov rdi, gword ptr [rbx+0x88]
; gcrRegs +[rdi]
mov rsi, gword ptr [rdi+0x08]
; gcrRegs +[rsi]
- mov rax, rsi
- ; gcrRegs +[rax]
- test rax, rax
- je SHORT G_M43884_IG12
+ mov rcx, rsi
+ ; gcrRegs +[rcx]
+ test rcx, rcx
+ je SHORT G_M43884_IG10
;; size=19 bbWeight=1 PerfScore 5.50
-G_M43884_IG09: ; bbWeight=0.50, gcrefRegs=0041 {rax rsi}, byrefRegs=0000 {}, byref, isz
+G_M43884_IG08: ; bbWeight=0.50, gcrefRegs=0042 {rcx rsi}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx rdi]
mov rdi, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]
- cmp qword ptr [rax], rdi
- je SHORT G_M43884_IG11
- ;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M43884_IG10: ; bbWeight=0.25, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
+ cmp qword ptr [rcx], rdi
+ je G_M43884_IG19
+ ;; size=19 bbWeight=0.50 PerfScore 2.12
+G_M43884_IG09: ; bbWeight=0.25, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rcx]
call CORINFO_HELP_CHKCASTCLASS_SPECIAL
; gcrRegs -[rsi] +[rax]
- ;; size=5 bbWeight=0.25 PerfScore 0.25
-G_M43884_IG11: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
- movzx r14, byte ptr [rax+0x84]
- ;; size=8 bbWeight=1 PerfScore 2.00
-G_M43884_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
+ mov rcx, rax
+ ; gcrRegs +[rcx]
+ jmp G_M43884_IG19
+ ;; size=13 bbWeight=0.25 PerfScore 0.81
+G_M43884_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rax rcx]
xor eax, eax
cmp r14d, 2
sete al
;; size=9 bbWeight=1 PerfScore 1.50
-G_M43884_IG13: ; bbWeight=1, epilog, nogc, extend
+G_M43884_IG11: ; bbWeight=1, epilog, nogc, extend
add rsp, 16
pop rbx
pop r13
@@ -137,7 +135,7 @@ G_M43884_IG13: ; bbWeight=1, epilog, nogc, extend
pop rbp
ret
;; size=13 bbWeight=1 PerfScore 3.75
-G_M43884_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, gcvars, byref
+G_M43884_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[r15]
mov di, word ptr [r15+0x98]
mov word ptr [rbp-0x28], di
@@ -146,6 +144,18 @@ G_M43884_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=8000 {
; gcrRegs -[r15]
nop
;; size=23 bbWeight=0 PerfScore 0.00
+G_M43884_IG13: ; bbWeight=0, epilog, nogc, extend
+ add rsp, 16
+ pop rbx
+ pop r13
+ pop r14
+ pop r15
+ pop rbp
+ ret
+ ;; size=13 bbWeight=0 PerfScore 0.00
+G_M43884_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ xor eax, eax
+ ;; size=2 bbWeight=0 PerfScore 0.00
G_M43884_IG15: ; bbWeight=0, epilog, nogc, extend
add rsp, 16
pop rbx
@@ -155,19 +165,7 @@ G_M43884_IG15: ; bbWeight=0, epilog, nogc, extend
pop rbp
ret
;; size=13 bbWeight=0 PerfScore 0.00
-G_M43884_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- xor eax, eax
- ;; size=2 bbWeight=0 PerfScore 0.00
-G_M43884_IG17: ; bbWeight=0, epilog, nogc, extend
- add rsp, 16
- pop rbx
- pop r13
- pop r14
- pop r15
- pop rbp
- ret
- ;; size=13 bbWeight=0 PerfScore 0.00
-G_M43884_IG18: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
+G_M43884_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rbx]
mov rdi, rbx
; gcrRegs +[rdi]
@@ -177,8 +175,13 @@ G_M43884_IG18: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {
; gcrRegs +[r13]
jmp G_M43884_IG03
;; size=21 bbWeight=0 PerfScore 0.00
-G_M43884_IG19: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r13]
+G_M43884_IG17: ; bbWeight=0, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r13] +[rax]
+ movzx r14, byte ptr [rax+0x84]
+ jmp G_M43884_IG06
+ ;; size=13 bbWeight=0 PerfScore 0.00
+G_M43884_IG18: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rax]
lea rsi, bword ptr [rbx+0x88]
; byrRegs +[rsi]
mov rdi, rbx
@@ -186,10 +189,15 @@ G_M43884_IG19: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
call [<unknown method>]
; gcrRegs -[rdi]
; byrRegs -[rsi]
- jmp G_M43884_IG08
+ jmp G_M43884_IG07
;; size=21 bbWeight=0 PerfScore 0.00
+G_M43884_IG19: ; bbWeight=0, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rbx] +[rcx]
+ movzx r14, byte ptr [rcx+0x84]
+ jmp G_M43884_IG10
+ ;; size=13 bbWeight=0 PerfScore 0.00
-; Total bytes of code 315, prolog size 17, PerfScore 55.75, instruction count 83, allocated bytes for code 315 (MethodHash=8b225493) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_IsDelaySigned():ubyte:this (Tier1)
+; Total bytes of code 346, prolog size 17, PerfScore 52.81, instruction count 88, allocated bytes for code 346 (MethodHash=8b225493) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_IsDelaySigned():ubyte:this (Tier1)
; ============================================================
Unwind Info:
+19 (+10.44%) : 98035.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyFlags():int:this (Tier1)
@@ -9,18 +9,18 @@
; 3 inlinees with PGO data; 8 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T02] ( 9, 5 ) ref -> rbx this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol>
-; V01 loc0 [V01,T03] ( 5, 5 ) int -> r15
+; V00 this [V00,T00] ( 10, 5 ) ref -> rbx this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol>
+; V01 loc0 [V01,T08] ( 5, 2 ) int -> r15
;* V02 loc1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
-; V05 tmp2 [V05,T06] ( 5, 4 ) ref -> r14 class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CustomAttributesBag`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]>
-; V06 tmp3 [V06,T04] ( 3, 4.50) ref -> rsi single-def "CASTCLASS eval op1"
-; V07 tmp4 [V07,T07] ( 3, 2.50) long -> rdi "fgMakeTemp is creating a new local variable"
-; V08 tmp5 [V08,T00] ( 5, 7.50) ref -> rax class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
-; V09 tmp6 [V09,T05] ( 3, 4.50) ref -> rsi single-def "CASTCLASS eval op1"
-; V10 tmp7 [V10,T08] ( 3, 2.50) long -> rdi "fgMakeTemp is creating a new local variable"
-; V11 tmp8 [V11,T01] ( 5, 7.50) ref -> rax class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
+; V05 tmp2 [V05,T05] ( 5, 4 ) ref -> r14 class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CustomAttributesBag`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]>
+; V06 tmp3 [V06,T03] ( 3, 4.50) ref -> rsi single-def "CASTCLASS eval op1"
+; V07 tmp4 [V07,T06] ( 3, 2.50) long -> rdi "fgMakeTemp is creating a new local variable"
+; V08 tmp5 [V08,T01] ( 5, 5.50) ref -> rax class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
+; V09 tmp6 [V09,T04] ( 3, 4.50) ref -> rsi single-def "CASTCLASS eval op1"
+; V10 tmp7 [V10,T07] ( 3, 2.50) long -> rdi "fgMakeTemp is creating a new local variable"
+; V11 tmp8 [V11,T02] ( 5, 5.50) ref -> rcx class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
;* V12 tmp9 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.CustomAttributesBag`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]>
;
; Lcl frame size = 8
@@ -40,9 +40,9 @@ G_M4380_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byre
mov r14, gword ptr [rbx+0x80]
; gcrRegs +[r14]
test r14, r14
- je SHORT G_M4380_IG14
+ je SHORT G_M4380_IG12
test byte ptr [r14+0x18], 2
- je SHORT G_M4380_IG14
+ je SHORT G_M4380_IG12
;; size=22 bbWeight=1 PerfScore 7.50
G_M4380_IG03: ; bbWeight=1, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz
mov rsi, gword ptr [r14+0x08]
@@ -50,56 +50,54 @@ G_M4380_IG03: ; bbWeight=1, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {},
mov rax, rsi
; gcrRegs +[rax]
test rax, rax
- je SHORT G_M4380_IG07
+ je SHORT G_M4380_IG06
;; size=12 bbWeight=1 PerfScore 3.50
G_M4380_IG04: ; bbWeight=0.50, gcrefRegs=0049 {rax rbx rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r14]
mov rdi, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]
cmp qword ptr [rax], rdi
- je SHORT G_M4380_IG06
+ je SHORT G_M4380_IG13
;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M4380_IG05: ; bbWeight=0.25, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+G_M4380_IG05: ; bbWeight=0.25, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
call CORINFO_HELP_CHKCASTCLASS_SPECIAL
; gcrRegs -[rsi] +[rax]
- ;; size=5 bbWeight=0.25 PerfScore 0.25
-G_M4380_IG06: ; bbWeight=1, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref
- mov r15d, dword ptr [rax+0x80]
- ;; size=7 bbWeight=1 PerfScore 2.00
-G_M4380_IG07: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ jmp SHORT G_M4380_IG13
+ ;; size=7 bbWeight=0.25 PerfScore 0.75
+G_M4380_IG06: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
cmp gword ptr [rbx+0x88], 0
- je SHORT G_M4380_IG15
+ je SHORT G_M4380_IG14
;; size=10 bbWeight=1 PerfScore 4.00
-G_M4380_IG08: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M4380_IG07: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov rdi, gword ptr [rbx+0x88]
; gcrRegs +[rdi]
mov rsi, gword ptr [rdi+0x08]
; gcrRegs +[rsi]
- mov rax, rsi
- ; gcrRegs +[rax]
- test rax, rax
- je SHORT G_M4380_IG12
+ mov rcx, rsi
+ ; gcrRegs +[rcx]
+ test rcx, rcx
+ je SHORT G_M4380_IG10
;; size=19 bbWeight=1 PerfScore 5.50
-G_M4380_IG09: ; bbWeight=0.50, gcrefRegs=0041 {rax rsi}, byrefRegs=0000 {}, byref, isz
+G_M4380_IG08: ; bbWeight=0.50, gcrefRegs=0042 {rcx rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rbx rdi]
mov rdi, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]
- cmp qword ptr [rax], rdi
- je SHORT G_M4380_IG11
+ cmp qword ptr [rcx], rdi
+ je SHORT G_M4380_IG15
;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M4380_IG10: ; bbWeight=0.25, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
+G_M4380_IG09: ; bbWeight=0.25, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rcx]
call CORINFO_HELP_CHKCASTCLASS_SPECIAL
; gcrRegs -[rsi] +[rax]
- ;; size=5 bbWeight=0.25 PerfScore 0.25
-G_M4380_IG11: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
- or r15d, dword ptr [rax+0x80]
- ;; size=7 bbWeight=1 PerfScore 3.00
-G_M4380_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
+ mov rcx, rax
+ ; gcrRegs +[rcx]
+ jmp SHORT G_M4380_IG15
+ ;; size=10 bbWeight=0.25 PerfScore 0.81
+G_M4380_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rax rcx]
mov eax, r15d
;; size=3 bbWeight=1 PerfScore 0.25
-G_M4380_IG13: ; bbWeight=1, epilog, nogc, extend
+G_M4380_IG11: ; bbWeight=1, epilog, nogc, extend
add rsp, 8
pop rbx
pop r14
@@ -107,7 +105,7 @@ G_M4380_IG13: ; bbWeight=1, epilog, nogc, extend
pop rbp
ret
;; size=11 bbWeight=1 PerfScore 3.25
-G_M4380_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M4380_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rbx]
mov rdi, rbx
; gcrRegs +[rdi]
@@ -117,8 +115,14 @@ G_M4380_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {r
; gcrRegs +[r14]
jmp SHORT G_M4380_IG03
;; size=18 bbWeight=0 PerfScore 0.00
-G_M4380_IG15: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r14]
+G_M4380_IG13: ; bbWeight=0, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r14] +[rax]
+ mov r15d, dword ptr [rax+0x80]
+ cmp gword ptr [rbx+0x88], 0
+ jne SHORT G_M4380_IG07
+ ;; size=17 bbWeight=0 PerfScore 0.00
+G_M4380_IG14: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rax]
lea rsi, bword ptr [rbx+0x88]
; byrRegs +[rsi]
mov rdi, rbx
@@ -126,10 +130,15 @@ G_M4380_IG15: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byre
call [<unknown method>]
; gcrRegs -[rdi]
; byrRegs -[rsi]
- jmp SHORT G_M4380_IG08
+ jmp SHORT G_M4380_IG07
;; size=18 bbWeight=0 PerfScore 0.00
+G_M4380_IG15: ; bbWeight=0, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rbx] +[rcx]
+ or r15d, dword ptr [rcx+0x80]
+ jmp SHORT G_M4380_IG10
+ ;; size=9 bbWeight=0 PerfScore 0.00
-; Total bytes of code 182, prolog size 12, PerfScore 39.50, instruction count 49, allocated bytes for code 182 (MethodHash=64b3eee3) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyFlags():int:this (Tier1)
+; Total bytes of code 201, prolog size 12, PerfScore 35.56, instruction count 55, allocated bytes for code 201 (MethodHash=64b3eee3) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyFlags():int:this (Tier1)
; ============================================================
Unwind Info:
+47 (+13.17%) : 145196.dasm - System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLengthLessThan4,System.Buffers.StringSearchValuesHelper+CaseSensitive]:TryMatch(byref,int,byref,uint,byref):ubyte:this (Tier1)
@@ -5,22 +5,22 @@
; optimized using Dynamic PGO
; rbp based frame
; partially interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 45560
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 45560
; 8 inlinees with PGO data; 19 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T03] ( 3, 3 ) ref -> r14 this class-hnd single-def <System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLengthLessThan4,System.Buffers.StringSearchValuesHelper+CaseSensitive]>
-; V01 arg1 [V01,T01] ( 4, 4 ) byref -> r15 single-def
-; V02 arg2 [V02,T00] ( 5, 4 ) int -> rbx single-def
-; V03 arg3 [V03,T04] ( 3, 3 ) byref -> r13 single-def
+; V00 this [V00,T03] ( 4, 3 ) ref -> r14 this class-hnd single-def <System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLengthLessThan4,System.Buffers.StringSearchValuesHelper+CaseSensitive]>
+; V01 arg1 [V01,T01] ( 5, 4 ) byref -> r15 single-def
+; V02 arg2 [V02,T00] ( 6, 4 ) int -> rbx single-def
+; V03 arg3 [V03,T04] ( 4, 3 ) byref -> r13 single-def
; V04 arg4 [V04,T06] ( 3, 3 ) int -> r8 single-def
; V05 arg5 [V05,T05] ( 3, 3 ) byref -> r12 single-def
-; V06 loc0 [V06,T09] ( 3, 3 ) int -> [rbp-0x2C] spill-single-def
-; V07 loc1 [V07,T08] ( 3, 3 ) byref -> r13
+; V06 loc0 [V06,T09] ( 4, 3 ) int -> [rbp-0x2C] spill-single-def
+; V07 loc1 [V07,T08] ( 5, 3 ) byref -> r13
;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V09 tmp1 [V09 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V10 tmp2 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V11 tmp3 [V11,T07] ( 3, 4 ) int -> r14 "Inlining Arg"
+; V11 tmp3 [V11,T07] ( 4, 4 ) int -> r14 "Inlining Arg"
;* V12 tmp4 [V12 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
;* V13 tmp5 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V14 tmp6 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -29,7 +29,7 @@
;* V17 tmp9 [V17 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V18 tmp10 [V18 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V19 tmp11 [V19 ] ( 0, 0 ) byref -> zero-ref "Spilling op1 side effects for Unsafe.ByteOffset"
-; V20 tmp12 [V20,T02] ( 8, 5 ) long -> [rbp-0x38] spill-single-def "Inline stloc first use temp"
+; V20 tmp12 [V20,T02] ( 10, 5 ) long -> [rbp-0x38] "Inline stloc first use temp"
;* V21 tmp13 [V21 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V22 tmp14 [V22 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V23 tmp15 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -83,45 +83,33 @@ G_M44984_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov r12, r9
; byrRegs +[r12]
;; size=33 bbWeight=1 PerfScore 8.00
-G_M44984_IG02: ; bbWeight=1, gcrefRegs=4000 {r14}, byrefRegs=B000 {r12 r13 r15}, byref
- xor eax, eax
- tzcnt eax, r8d
- mov dword ptr [rbp-0x2C], eax
- test al, 1
- jne G_M44984_IG09
- ;; size=18 bbWeight=1 PerfScore 4.50
-G_M44984_IG03: ; bbWeight=1, gcrefRegs=4000 {r14}, byrefRegs=B000 {r12 r13 r15}, byref, isz
- cdqe
+G_M44984_IG02: ; bbWeight=1, gcrefRegs=4000 {r14}, byrefRegs=B000 {r12 r13 r15}, byref, isz
+ xor ecx, ecx
+ tzcnt ecx, r8d
+ mov dword ptr [rbp-0x2C], ecx
+ test cl, 1
+ jne SHORT G_M44984_IG10
+ movsxd rax, ecx
add r13, rax
- mov rdi, gword ptr [r14+0x10]
- ; gcrRegs +[rdi]
- mov r14d, dword ptr [rdi+0x08]
+ mov rax, gword ptr [r14+0x10]
+ ; gcrRegs +[rax]
+ mov r14d, dword ptr [rax+0x08]
; gcrRegs -[r14]
test ebx, ebx
- jge SHORT G_M44984_IG04
- mov rdi, 0xD1FFAB1E
- mov rsi, 0xD1FFAB1E
- ; gcrRegs +[rsi]
- call [<unknown method>]
- ; gcrRegs -[rsi rdi]
- mov rdi, 0xD1FFAB1E
- ; gcrRegs +[rdi]
- mov rsi, 0xD1FFAB1E
- ; gcrRegs +[rsi]
- call [<unknown method>]
- ; gcrRegs -[rsi rdi]
- ;; size=69 bbWeight=1 PerfScore 12.75
-G_M44984_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=B000 {r12 r13 r15}, byref, isz
+ jl G_M44984_IG11
+ ;; size=37 bbWeight=1 PerfScore 10.25
+G_M44984_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=B000 {r12 r13 r15}, byref, isz
+ ; gcrRegs -[rax]
mov rax, r13
; byrRegs +[rax]
sub rax, r15
; byrRegs -[rax]
- mov qword ptr [rbp-0x38], rax
- test rax, rax
- jl SHORT G_M44984_IG10
+ js SHORT G_M44984_IG09
+ ;; size=8 bbWeight=1 PerfScore 1.50
+G_M44984_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=B000 {r12 r13 r15}, byref, isz
test al, 1
jne SHORT G_M44984_IG08
- ;; size=19 bbWeight=1 PerfScore 4.00
+ ;; size=4 bbWeight=1 PerfScore 1.25
G_M44984_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=B000 {r12 r13 r15}, byref
mov rdi, rax
shr rdi, 63
@@ -129,7 +117,7 @@ G_M44984_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=B000 {r12 r13 r
sar rax, 1
sub ebx, eax
cmp ebx, r14d
- jl G_M44984_IG12
+ jl G_M44984_IG14
;; size=24 bbWeight=1 PerfScore 3.00
G_M44984_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=B000 {r12 r13 r15}, byref
sub r13, r15
@@ -148,11 +136,16 @@ G_M44984_IG07: ; bbWeight=1, epilog, nogc, extend
pop rbp
ret
;; size=15 bbWeight=1 PerfScore 4.25
-G_M44984_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=B000 {r12 r13 r15}, gcvars, byref, isz
+G_M44984_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=B000 {r12 r13 r15}, gcvars, byref
; byrRegs +[r13]
- jmp SHORT G_M44984_IG11
- ;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M44984_IG09: ; bbWeight=0, gcrefRegs=4000 {r14}, byrefRegs=B000 {r12 r13 r15}, byref
+ mov qword ptr [rbp-0x38], rax
+ jmp G_M44984_IG13
+ ;; size=9 bbWeight=0.50 PerfScore 1.50
+G_M44984_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=B000 {r12 r13 r15}, byref, isz
+ mov qword ptr [rbp-0x38], rax
+ jmp SHORT G_M44984_IG12
+ ;; size=6 bbWeight=0.50 PerfScore 1.50
+G_M44984_IG10: ; bbWeight=0, gcrefRegs=4000 {r14}, byrefRegs=B000 {r12 r13 r15}, byref, isz
; gcrRegs +[r14]
mov rdi, 0xD1FFAB1E
; gcrRegs +[rdi]
@@ -160,11 +153,38 @@ G_M44984_IG09: ; bbWeight=0, gcrefRegs=4000 {r14}, byrefRegs=B000 {r12 r1
; gcrRegs +[rsi]
call [<unknown method>]
; gcrRegs -[rsi rdi]
- mov eax, dword ptr [rbp-0x2C]
- jmp G_M44984_IG03
- ;; size=34 bbWeight=0 PerfScore 0.00
-G_M44984_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=B000 {r12 r13 r15}, byref, isz
+ movsxd rdi, dword ptr [rbp-0x2C]
+ add r13, rdi
+ mov rdi, gword ptr [r14+0x10]
+ ; gcrRegs +[rdi]
+ mov r14d, dword ptr [rdi+0x08]
; gcrRegs -[r14]
+ test ebx, ebx
+ jge SHORT G_M44984_IG03
+ ;; size=45 bbWeight=0 PerfScore 0.00
+G_M44984_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=B000 {r12 r13 r15}, byref
+ ; gcrRegs -[rdi]
+ mov rdi, 0xD1FFAB1E
+ ; gcrRegs +[rdi]
+ mov rsi, 0xD1FFAB1E
+ ; gcrRegs +[rsi]
+ call [<unknown method>]
+ ; gcrRegs -[rsi rdi]
+ mov rdi, 0xD1FFAB1E
+ ; gcrRegs +[rdi]
+ mov rsi, 0xD1FFAB1E
+ ; gcrRegs +[rsi]
+ call [<unknown method>]
+ ; gcrRegs -[rsi rdi]
+ mov rax, r13
+ ; byrRegs +[rax]
+ sub rax, r15
+ ; byrRegs -[rax]
+ mov qword ptr [rbp-0x38], rax
+ test rax, rax
+ jge G_M44984_IG16
+ ;; size=71 bbWeight=0 PerfScore 0.00
+G_M44984_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=B000 {r12 r13 r15}, byref, isz
mov rdi, 0xD1FFAB1E
; gcrRegs +[rdi]
mov rsi, 0xD1FFAB1E
@@ -172,9 +192,9 @@ G_M44984_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=B000 {r12 r13 r
call [<unknown method>]
; gcrRegs -[rsi rdi]
test byte ptr [rbp-0x38], 1
- je SHORT G_M44984_IG13
+ je SHORT G_M44984_IG15
;; size=32 bbWeight=0 PerfScore 0.00
-G_M44984_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=B000 {r12 r13 r15}, byref
+G_M44984_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=B000 {r12 r13 r15}, byref
mov rdi, 0xD1FFAB1E
; gcrRegs +[rdi]
mov rsi, 0xD1FFAB1E
@@ -191,7 +211,7 @@ G_M44984_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=B000 {r12 r13 r
cmp edi, r14d
jge G_M44984_IG06
;; size=56 bbWeight=0 PerfScore 0.00
-G_M44984_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=B000 {r12 r13 r15}, byref
+G_M44984_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=B000 {r12 r13 r15}, byref
mov rdi, 0xD1FFAB1E
; gcrRegs +[rdi]
mov rsi, 0xD1FFAB1E
@@ -200,12 +220,16 @@ G_M44984_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=B000 {r12 r13 r
; gcrRegs -[rsi rdi]
jmp G_M44984_IG06
;; size=31 bbWeight=0 PerfScore 0.00
-G_M44984_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=B000 {r12 r13 r15}, byref
+G_M44984_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=B000 {r12 r13 r15}, byref
mov rax, qword ptr [rbp-0x38]
jmp G_M44984_IG05
;; size=9 bbWeight=0 PerfScore 0.00
+G_M44984_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=B000 {r12 r13 r15}, byref
+ mov rax, qword ptr [rbp-0x38]
+ jmp G_M44984_IG04
+ ;; size=9 bbWeight=0 PerfScore 0.00
-; Total bytes of code 357, prolog size 19, PerfScore 39.50, instruction count 85, allocated bytes for code 357 (MethodHash=d0aa5047) for method System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLengthLessThan4,System.Buffers.StringSearchValuesHelper+CaseSensitive]:TryMatch(byref,int,byref,uint,byref):ubyte:this (Tier1)
+; Total bytes of code 404, prolog size 19, PerfScore 33.25, instruction count 97, allocated bytes for code 404 (MethodHash=d0aa5047) for method System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLengthLessThan4,System.Buffers.StringSearchValuesHelper+CaseSensitive]:TryMatch(byref,int,byref,uint,byref):ubyte:this (Tier1)
; ============================================================
Unwind Info:
benchmarks.run_tiered.linux.x64.checked.mch
-33 (-41.25%) : 9995.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
@@ -8,77 +8,56 @@
; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T02] ( 3, 2.50) byref -> r15 this single-def
-; V01 arg1 [V01,T00] ( 5, 3.75) ref -> rbx class-hnd single-def <System.Object>
+; V00 this [V00,T02] ( 3, 2.50) byref -> rdi this single-def
+; V01 arg1 [V01,T00] ( 4, 3.50) ref -> rsi class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03,T01] ( 3, 4.50) ref -> rax class-hnd "spilling QMark2" <System.Reflection.MetadataImport>
;* V04 tmp2 [V04 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.Reflection.MetadataImport>
;* V05 tmp3 [V05 ] ( 0, 0 ) ref -> zero-ref "field V04.m_keepalive (fldOffset=0x0)" P-INDEP
-; V06 tmp4 [V06,T05] ( 2, 1 ) long -> rax "field V04.m_metadataImport2 (fldOffset=0x8)" P-INDEP
-; V07 cse0 [V07,T03] ( 4, 1.25) long -> rdi "CSE - moderate"
-; V08 cse1 [V08,T04] ( 3, 1 ) long -> rsi "CSE - moderate"
+; V06 tmp4 [V06,T03] ( 2, 1 ) long -> rax "field V04.m_metadataImport2 (fldOffset=0x8)" P-INDEP
;
; Lcl frame size = 0
-G_M38955_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M38955_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
push rbp
- push r15
- push rbx
- lea rbp, [rsp+0x10]
- mov r15, rdi
- ; byrRegs +[r15]
- mov rbx, rsi
- ; gcrRegs +[rbx]
- ;; size=15 bbWeight=1 PerfScore 4.00
-G_M38955_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, byref, isz
- mov rax, rbx
+ mov rbp, rsp
+ ;; size=4 bbWeight=1 PerfScore 1.25
+G_M38955_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi}, byref, isz
+ ; gcrRegs +[rsi]
+ ; byrRegs +[rdi]
+ mov rax, rsi
; gcrRegs +[rax]
test rax, rax
je SHORT G_M38955_IG04
;; size=8 bbWeight=1 PerfScore 1.50
-G_M38955_IG03: ; bbWeight=0.25, gcrefRegs=0009 {rax rbx}, byrefRegs=8000 {r15}, byref, isz
- mov rsi, qword ptr [rax]
- mov rdi, 0xD1FFAB1E ; System.Reflection.MetadataImport
- cmp rsi, rdi
+G_M38955_IG03: ; bbWeight=0.25, gcrefRegs=0041 {rax rsi}, byrefRegs=0080 {rdi}, byref, isz
+ mov rcx, 0xD1FFAB1E ; System.Reflection.MetadataImport
+ cmp qword ptr [rax], rcx
je SHORT G_M38955_IG06
- ;; size=18 bbWeight=0.25 PerfScore 0.88
+ ;; size=15 bbWeight=0.25 PerfScore 1.06
G_M38955_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax rbx]
- ; byrRegs -[r15]
+ ; gcrRegs -[rax rsi]
+ ; byrRegs -[rdi]
xor eax, eax
;; size=2 bbWeight=0.50 PerfScore 0.12
G_M38955_IG05: ; bbWeight=0.50, epilog, nogc, extend
- pop rbx
- pop r15
pop rbp
ret
- ;; size=5 bbWeight=0.50 PerfScore 1.25
-G_M38955_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, gcvars, byref, isz
- ; gcrRegs +[rbx]
- ; byrRegs +[r15]
- cmp rsi, rdi
- je SHORT G_M38955_IG08
- ;; size=5 bbWeight=0.50 PerfScore 0.62
-G_M38955_IG07: ; bbWeight=0.25, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, byref
- mov rsi, rbx
+ ;; size=2 bbWeight=0.50 PerfScore 0.75
+G_M38955_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi}, gcvars, byref
; gcrRegs +[rsi]
- call CORINFO_HELP_UNBOX
- ; gcrRegs -[rsi]
- ;; size=8 bbWeight=0.25 PerfScore 0.31
-G_M38955_IG08: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, byref
- mov rax, qword ptr [rbx+0x10]
- cmp rax, qword ptr [r15+0x08]
+ ; byrRegs +[rdi]
+ mov rax, qword ptr [rsi+0x10]
+ cmp rax, qword ptr [rdi+0x08]
sete al
movzx rax, al
;; size=14 bbWeight=0.50 PerfScore 3.12
-G_M38955_IG09: ; bbWeight=0.50, epilog, nogc, extend
- pop rbx
- pop r15
+G_M38955_IG07: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
ret
- ;; size=5 bbWeight=0.50 PerfScore 1.25
+ ;; size=2 bbWeight=0.50 PerfScore 0.75
-; Total bytes of code 80, prolog size 9, PerfScore 13.06, instruction count 30, allocated bytes for code 80 (MethodHash=885867d4) for method System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
+; Total bytes of code 47, prolog size 4, PerfScore 8.56, instruction count 17, allocated bytes for code 47 (MethodHash=885867d4) for method System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
; ============================================================
Unwind Info:
@@ -86,11 +65,9 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x04
- CountOfUnwindCodes: 3
+ SizeOfProlog : 0x01
+ CountOfUnwindCodes: 1
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
-32 (-30.48%) : 60259.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan1[uint],System.ReadOnlySpan
1[uint]):int (Tier1)
@@ -9,14 +9,16 @@
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[uint]>
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[uint]>
-; V02 loc0 [V02,T00] ( 7, 24.50) int -> registers
+; V02 loc0 [V02,T00] ( 7, 24.50) int -> rax
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T01] ( 6, 20 ) int -> r8 "dup spill"
-; V05 tmp2 [V05,T05] ( 3, 5.50) byref -> rdi single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V06 tmp3 [V06,T04] ( 5, 7 ) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP
-; V07 tmp4 [V07,T06] ( 3, 5.50) byref -> rdx single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V08 tmp5 [V08,T03] ( 6, 7.50) int -> rcx single-def "field V01._length (fldOffset=0x8)" P-INDEP
-; V09 cse0 [V09,T02] ( 6, 13.50) long -> r9 multi-def "CSE - aggressive"
+; V04 tmp1 [V04,T01] ( 2, 16 ) int -> rax "dup spill"
+; V05 tmp2 [V05,T07] ( 2, 5 ) byref -> rdi single-def "field V00._reference (fldOffset=0x0)" P-INDEP
+; V06 tmp3 [V06,T04] ( 4, 6.50) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V07 tmp4 [V07,T08] ( 2, 5 ) byref -> rdx single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V08 tmp5 [V08,T03] ( 5, 7 ) int -> rcx single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V09 cse0 [V09,T05] ( 3, 8.50) int -> r9 "CSE - aggressive"
+; V10 cse1 [V10,T06] ( 3, 8.50) int -> r8 "CSE - aggressive"
+; V11 cse2 [V11,T02] ( 3, 12 ) long -> r8 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -32,72 +34,59 @@ G_M264_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, b
G_M264_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rdx rdi]
cmp esi, ecx
- jl SHORT G_M264_IG12
- jmp SHORT G_M264_IG10
+ jl SHORT G_M264_IG11
+ jmp SHORT G_M264_IG07
;; size=6 bbWeight=0.50 PerfScore 1.62
G_M264_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, byref
; byrRegs +[rdx rdi]
- mov r8d, ecx
- ;; size=3 bbWeight=0.50 PerfScore 0.12
+ mov eax, ecx
+ ;; size=2 bbWeight=0.50 PerfScore 0.12
G_M264_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, byref, isz
- dec r8d
- mov eax, r8d
- test eax, eax
- jl SHORT G_M264_IG06
+ dec eax
+ js SHORT G_M264_IG09
cmp eax, esi
- jae SHORT G_M264_IG14
- mov r9d, eax
- mov r10d, dword ptr [rdi+4*r9]
- cmp eax, ecx
- jae SHORT G_M264_IG14
- cmp r10d, dword ptr [rdx+4*r9]
- je SHORT G_M264_IG08
- ;; size=31 bbWeight=4 PerfScore 42.00
-G_M264_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, byref, isz
- test r8d, r8d
- jge SHORT G_M264_IG09
- xor eax, eax
- ;; size=7 bbWeight=0.50 PerfScore 0.75
-G_M264_IG07: ; bbWeight=0.50, epilog, nogc, extend
- pop rbp
- ret
- ;; size=2 bbWeight=0.50 PerfScore 0.75
-G_M264_IG08: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, gcvars, byref, isz
+ jae SHORT G_M264_IG13
mov r8d, eax
- jmp SHORT G_M264_IG05
- ;; size=5 bbWeight=2 PerfScore 4.50
-G_M264_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, byref, isz
- cmp r8d, esi
- jae SHORT G_M264_IG14
- mov r9d, r8d
- mov eax, dword ptr [rdi+4*r9]
- cmp r8d, ecx
- jae SHORT G_M264_IG14
- cmp eax, dword ptr [rdx+4*r9]
- jb SHORT G_M264_IG12
- ;; size=23 bbWeight=0.50 PerfScore 4.38
-G_M264_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov r9d, dword ptr [rdi+4*r8]
+ cmp eax, ecx
+ jae SHORT G_M264_IG13
+ mov r8d, dword ptr [rdx+4*r8]
+ cmp r9d, r8d
+ je SHORT G_M264_IG05
+ ;; size=28 bbWeight=4 PerfScore 37.00
+G_M264_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rdx rdi]
+ cmp r8d, r9d
+ ja SHORT G_M264_IG11
+ ;; size=5 bbWeight=0.50 PerfScore 0.62
+G_M264_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov eax, 1
;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M264_IG11: ; bbWeight=0.50, epilog, nogc, extend
+G_M264_IG08: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
ret
;; size=2 bbWeight=0.50 PerfScore 0.75
-G_M264_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M264_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ xor eax, eax
+ ;; size=2 bbWeight=0.50 PerfScore 0.12
+G_M264_IG10: ; bbWeight=0.50, epilog, nogc, extend
+ pop rbp
+ ret
+ ;; size=2 bbWeight=0.50 PerfScore 0.75
+G_M264_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov eax, -1
;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M264_IG13: ; bbWeight=0.50, epilog, nogc, extend
+G_M264_IG12: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
ret
;; size=2 bbWeight=0.50 PerfScore 0.75
-G_M264_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M264_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 105, prolog size 4, PerfScore 58.38, instruction count 43, allocated bytes for code 105 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
+; Total bytes of code 73, prolog size 4, PerfScore 44.50, instruction count 32, allocated bytes for code 73 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
; ============================================================
Unwind Info:
-16 (-7.17%) : 10084.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (Tier1)
@@ -12,7 +12,7 @@
; V01 arg1 [V01,T06] ( 7, 4.50) byref -> rdx single-def
; V02 loc0 [V02,T07] ( 5, 3 ) ushort -> rcx
; V03 loc1 [V03,T05] ( 5, 7 ) int -> rax
-; V04 loc2 [V04,T00] ( 7, 13.50) int -> r8
+; V04 loc2 [V04,T00] ( 5, 12.50) int -> r8
; V05 loc3 [V05,T09] ( 3, 1.50) int -> rax
; V06 loc4 [V06,T10] ( 3, 1.50) int -> rax
; V07 loc5 [V07,T11] ( 3, 1.50) int -> r8
@@ -20,9 +20,9 @@
; V09 tmp1 [V09,T04] ( 2, 8 ) int -> r8 "impSpillLclRefs"
;* V10 tmp2 [V10 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg"
; V11 tmp3 [V11,T08] ( 2, 2 ) int -> rcx "Single return block return value"
-; V12 tmp4 [V12,T03] ( 7, 7.50) byref -> rdi single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V13 tmp5 [V13,T02] ( 8, 8.50) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP
-; V14 cse0 [V14,T01] ( 5, 11 ) int -> r9 multi-def "CSE - aggressive"
+; V12 tmp4 [V12,T03] ( 6, 7 ) byref -> rdi single-def "field V00._reference (fldOffset=0x0)" P-INDEP
+; V13 tmp5 [V13,T02] ( 7, 8 ) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V14 cse0 [V14,T01] ( 4, 10.50) int -> r9 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -46,8 +46,8 @@ G_M3969_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi
cmp esi, 1
jne SHORT G_M3969_IG04
mov dword ptr [rdx], -1
- jmp G_M3969_IG11
- ;; size=36 bbWeight=0.50 PerfScore 4.12
+ jmp SHORT G_M3969_IG11
+ ;; size=33 bbWeight=0.50 PerfScore 4.12
G_M3969_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, byref, isz
cmp esi, 2
jne SHORT G_M3969_IG05
@@ -89,23 +89,19 @@ G_M3969_IG07: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi},
;; size=18 bbWeight=2 PerfScore 6.00
G_M3969_IG08: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, byref, isz
cmp r8d, esi
- jae SHORT G_M3969_IG09
+ jae SHORT G_M3969_IG10
mov r9d, r8d
movzx r9, word ptr [rdi+2*r9]
lea r10d, [r9-0x30]
cmp r10d, 9
jbe SHORT G_M3969_IG07
;; size=23 bbWeight=4 PerfScore 21.00
-G_M3969_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, byref, isz
- cmp r8d, esi
- jae SHORT G_M3969_IG10
- mov r9d, r8d
- movzx r9, word ptr [rdi+2*r9]
+G_M3969_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0004 {rdx}, byref, isz
+ ; byrRegs -[rdi]
test r9d, r9d
jne SHORT G_M3969_IG13
- ;; size=18 bbWeight=0.50 PerfScore 2.38
+ ;; size=5 bbWeight=0.50 PerfScore 0.62
G_M3969_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0004 {rdx}, byref
- ; byrRegs -[rdi]
mov dword ptr [rdx], eax
;; size=2 bbWeight=0.50 PerfScore 0.50
G_M3969_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
@@ -143,7 +139,7 @@ G_M3969_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}
int3
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 223, prolog size 4, PerfScore 52.38, instruction count 76, allocated bytes for code 223 (MethodHash=db41f07e) for method System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (Tier1)
+; Total bytes of code 207, prolog size 4, PerfScore 50.62, instruction count 72, allocated bytes for code 207 (MethodHash=db41f07e) for method System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (Tier1)
; ============================================================
Unwind Info:
+27 (+2.32%) : 5290.dasm - System.Reflection.AssemblyNameParser:GetNextToken(byref):int:this (Tier0-FullOpts)
@@ -10,14 +10,14 @@
;
; V00 this [V00,T00] ( 27, 55.50) byref -> rbx this single-def
; V01 arg1 [V01,T19] ( 4, 3.50) byref -> r15 single-def
-; V02 loc0 [V02,T01] ( 18, 55.50) ushort -> r12
+; V02 loc0 [V02,T01] ( 18, 57.50) ushort -> r12
; V03 loc1 [V03 ] ( 36, 70.50) struct (32) [rbp-0x48] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Text.ValueStringBuilder>
-; V04 loc2 [V04,T04] ( 8, 16 ) ushort -> [rbp-0x4C]
+; V04 loc2 [V04,T09] ( 6, 8 ) ushort -> [rbp-0x4C]
;* V05 loc3 [V05 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[ushort]>
;* V06 loc4 [V06 ] ( 0, 0 ) int -> zero-ref
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V08 tmp1 [V08 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V09 tmp2 [V09,T07] ( 5, 14.50) ushort -> r13 "Inline stloc first use temp"
+; V09 tmp2 [V09,T06] ( 5, 14.50) ushort -> r13 "Inline stloc first use temp"
; V10 tmp3 [V10,T10] ( 4, 8 ) int -> rdi "Inline stloc first use temp"
;* V11 tmp4 [V11 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
; V12 tmp5 [V12,T32] ( 2, 2 ) long -> rax "Inlining Arg"
@@ -25,7 +25,7 @@
; V14 tmp7 [V14,T31] ( 4, 2 ) int -> rax "Inline stloc first use temp"
;* V15 tmp8 [V15 ] ( 0, 0 ) byref -> zero-ref single-def "impAppendStmt"
; V16 tmp9 [V16,T02] ( 16, 32 ) ushort -> rsi "Inline stloc first use temp"
-; V17 tmp10 [V17,T11] ( 4, 8 ) int -> r13 "Inline stloc first use temp"
+; V17 tmp10 [V17,T11] ( 4, 8 ) int -> rdi "Inline stloc first use temp"
;* V18 tmp11 [V18 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
; V19 tmp12 [V19,T12] ( 4, 8 ) int -> rdi "Inline stloc first use temp"
;* V20 tmp13 [V20 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]>
@@ -37,14 +37,14 @@
;* V26 tmp19 [V26 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]>
; V27 tmp20 [V27,T16] ( 4, 8 ) int -> rdi "Inline stloc first use temp"
;* V28 tmp21 [V28 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]>
-; V29 tmp22 [V29,T09] ( 4, 10 ) ushort -> r12 "Inline stloc first use temp"
+; V29 tmp22 [V29,T08] ( 4, 10 ) ushort -> r12 "Inline stloc first use temp"
; V30 tmp23 [V30,T17] ( 4, 8 ) int -> rdi "Inline stloc first use temp"
;* V31 tmp24 [V31 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
-; V32 tmp25 [V32,T05] ( 4, 16 ) int -> rbx "Inlining Arg"
+; V32 tmp25 [V32,T04] ( 4, 16 ) int -> rbx "Inlining Arg"
;* V33 tmp26 [V33 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V34 tmp27 [V34 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V35 tmp28 [V35 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V36 tmp29 [V36,T03] ( 4, 32 ) int -> rbx "Inlining Arg"
+; V36 tmp29 [V36,T03] ( 4, 32 ) int -> r12 "Inlining Arg"
;* V37 tmp30 [V37 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V38 tmp31 [V38 ] ( 0, 0 ) byref -> zero-ref single-def "field V05._reference (fldOffset=0x0)" P-INDEP
;* V39 tmp32 [V39 ] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP
@@ -63,8 +63,8 @@
; V52 GsCookie [V52 ] ( 1, 1 ) long -> [rbp-0x58] do-not-enreg[X] addr-exposed "GSSecurityCookie"
; V53 cse0 [V53,T18] ( 5, 7 ) int -> r13 multi-def "CSE - moderate"
; V54 cse1 [V54,T33] ( 3, 1.50) int -> rax "CSE - conservative"
-; V55 cse2 [V55,T08] ( 8, 14 ) ref -> r14 "CSE - aggressive"
-; V56 cse3 [V56,T06] ( 4, 16 ) int -> rdi "CSE - aggressive"
+; V55 cse2 [V55,T07] ( 8, 14 ) ref -> r14 "CSE - aggressive"
+; V56 cse3 [V56,T05] ( 4, 16 ) int -> rdi "CSE - aggressive"
;
; Lcl frame size = 56
@@ -103,31 +103,31 @@ G_M25128_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15},
G_M25128_IG03: ; bbWeight=8, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref
mov edi, dword ptr [rbx+0x10]
cmp edi, dword ptr [rbx+0x08]
- jge G_M25128_IG24
+ jge G_M25128_IG20
;; size=12 bbWeight=8 PerfScore 48.00
G_M25128_IG04: ; bbWeight=2, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref
mov edi, dword ptr [rbx+0x10]
lea eax, [rdi+0x01]
mov dword ptr [rbx+0x10], eax
cmp edi, dword ptr [rbx+0x08]
- jae G_M25128_IG61
+ jae G_M25128_IG59
mov rax, bword ptr [rbx]
; byrRegs +[rax]
movzx r13, word ptr [rax+2*rdi]
test r13d, r13d
- je G_M25128_IG62
+ je G_M25128_IG60
;; size=35 bbWeight=2 PerfScore 25.50
G_M25128_IG05: ; bbWeight=8, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref
; byrRegs -[rax]
mov r12d, r13d
test r12d, r12d
- je G_M25128_IG31
+ je G_M25128_IG27
;; size=12 bbWeight=8 PerfScore 12.00
G_M25128_IG06: ; bbWeight=4, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref, isz
cmp r12d, 44
- je G_M25128_IG25
+ je G_M25128_IG21
cmp r12d, 61
- je G_M25128_IG28
+ je G_M25128_IG24
mov edi, r12d
call [System.Reflection.AssemblyNameParser:IsWhiteSpace(ushort):ubyte]
; gcr arg pop 0
@@ -159,132 +159,110 @@ G_M25128_IG10: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx
mov ecx, r13d
mov eax, dword ptr [rbx+0x10]
cmp eax, dword ptr [rbx+0x08]
- jge G_M25128_IG34
+ jge G_M25128_IG30
lea edi, [rax+0x01]
mov dword ptr [rbx+0x10], edi
cmp eax, dword ptr [rbx+0x08]
- jae G_M25128_IG61
+ jae G_M25128_IG59
mov rdi, bword ptr [rbx]
; byrRegs +[rdi]
movzx r12, word ptr [rdi+2*rax]
test r12d, r12d
- je G_M25128_IG62
+ je G_M25128_IG60
;; size=47 bbWeight=0.50 PerfScore 8.50
-G_M25128_IG11: ; bbWeight=4, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref, isz
+G_M25128_IG11: ; bbWeight=4, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref
; byrRegs -[rdi]
test r12d, r12d
- je G_M25128_IG49
+ je G_M25128_IG47
test ecx, ecx
- je SHORT G_M25128_IG13
- ;; size=13 bbWeight=4 PerfScore 10.00
+ je G_M25128_IG31
+ ;; size=17 bbWeight=4 PerfScore 10.00
G_M25128_IG12: ; bbWeight=2, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref
cmp r12d, ecx
- je G_M25128_IG50
+ je G_M25128_IG48
;; size=9 bbWeight=2 PerfScore 2.50
-G_M25128_IG13: ; bbWeight=4, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref, isz
- test ecx, ecx
- jne SHORT G_M25128_IG15
- ;; size=4 bbWeight=4 PerfScore 5.00
-G_M25128_IG14: ; bbWeight=2, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref
- cmp r12d, 44
- je G_M25128_IG57
- cmp r12d, 61
- je G_M25128_IG57
- ;; size=20 bbWeight=2 PerfScore 5.00
-G_M25128_IG15: ; bbWeight=4, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref, isz
- mov dword ptr [rbp-0x4C], ecx
- test ecx, ecx
- jne SHORT G_M25128_IG17
- ;; size=7 bbWeight=4 PerfScore 9.00
-G_M25128_IG16: ; bbWeight=2, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref
- cmp r12d, 39
- je G_M25128_IG62
- cmp r12d, 34
- je G_M25128_IG62
- ;; size=20 bbWeight=2 PerfScore 5.00
-G_M25128_IG17: ; bbWeight=4, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref
+G_M25128_IG13: ; bbWeight=4, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref
cmp r12d, 92
- jne G_M25128_IG46
+ jne G_M25128_IG44
;; size=10 bbWeight=4 PerfScore 5.00
-G_M25128_IG18: ; bbWeight=2, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref
+G_M25128_IG14: ; bbWeight=2, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref
mov r13d, dword ptr [rbx+0x10]
cmp r13d, dword ptr [rbx+0x08]
- jge G_M25128_IG35
- lea edi, [r13+0x01]
- mov dword ptr [rbx+0x10], edi
- cmp r13d, dword ptr [rbx+0x08]
- jae G_M25128_IG61
- mov rdi, bword ptr [rbx]
- ; byrRegs +[rdi]
- mov esi, r13d
- movzx rsi, word ptr [rdi+2*rsi]
+ jge G_M25128_IG33
+ mov edi, r13d
+ lea esi, [rdi+0x01]
+ mov dword ptr [rbx+0x10], esi
+ cmp edi, dword ptr [rbx+0x08]
+ jae G_M25128_IG59
+ mov rsi, bword ptr [rbx]
+ ; byrRegs +[rsi]
+ movzx rsi, word ptr [rsi+2*rdi]
+ ; byrRegs -[rsi]
test esi, esi
- je G_M25128_IG62
- ;; size=49 bbWeight=2 PerfScore 34.00
-G_M25128_IG19: ; bbWeight=2, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref, isz
- ; byrRegs -[rdi]
+ je G_M25128_IG60
+ ;; size=47 bbWeight=2 PerfScore 34.00
+G_M25128_IG15: ; bbWeight=2, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref, isz
cmp esi, 61
- ja G_M25128_IG37
+ ja G_M25128_IG35
cmp esi, 39
- ja G_M25128_IG36
+ ja G_M25128_IG34
cmp esi, 34
- je SHORT G_M25128_IG20
+ je SHORT G_M25128_IG16
cmp esi, 39
- jne G_M25128_IG62
+ jne G_M25128_IG60
;; size=32 bbWeight=2 PerfScore 10.00
-G_M25128_IG20: ; bbWeight=2, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref
+G_M25128_IG16: ; bbWeight=2, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref
mov edi, dword ptr [rbp-0x40]
mov rax, bword ptr [rbp-0x38]
; byrRegs +[rax]
mov edx, dword ptr [rbp-0x30]
cmp edi, edx
- jae G_M25128_IG39
+ jae G_M25128_IG37
mov edx, edi
mov word ptr [rax+2*rdx], si
inc edi
mov dword ptr [rbp-0x40], edi
;; size=29 bbWeight=2 PerfScore 13.50
-G_M25128_IG21: ; bbWeight=4, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref
+G_M25128_IG17: ; bbWeight=4, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref
; byrRegs -[rax]
mov edi, dword ptr [rbx+0x10]
cmp edi, dword ptr [rbx+0x08]
- jge G_M25128_IG48
+ jge G_M25128_IG46
;; size=12 bbWeight=4 PerfScore 24.00
-G_M25128_IG22: ; bbWeight=2, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref
+G_M25128_IG18: ; bbWeight=2, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref
mov edi, dword ptr [rbx+0x10]
- lea esi, [rdi+0x01]
- mov dword ptr [rbx+0x10], esi
+ lea eax, [rdi+0x01]
+ mov dword ptr [rbx+0x10], eax
cmp edi, dword ptr [rbx+0x08]
- jae G_M25128_IG61
- mov rsi, bword ptr [rbx]
- ; byrRegs +[rsi]
- movzx r12, word ptr [rsi+2*rdi]
+ jae G_M25128_IG59
+ mov rax, bword ptr [rbx]
+ ; byrRegs +[rax]
+ movzx r12, word ptr [rax+2*rdi]
test r12d, r12d
- je G_M25128_IG62
+ je G_M25128_IG60
;; size=35 bbWeight=2 PerfScore 25.50
-G_M25128_IG23: ; bbWeight=4, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref
- ; byrRegs -[rsi]
- mov ecx, dword ptr [rbp-0x4C]
+G_M25128_IG19: ; bbWeight=4, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref
+ ; byrRegs -[rax]
jmp G_M25128_IG11
- ;; size=8 bbWeight=4 PerfScore 12.00
-G_M25128_IG24: ; bbWeight=2, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref
+ ;; size=5 bbWeight=4 PerfScore 8.00
...
+27 (+3.00%) : 7330.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (Tier0-FullOpts)
@@ -9,9 +9,9 @@
; Final local variable assignments
;
; V00 arg0 [V00,T07] ( 22, 23 ) ref -> rbx class-hnd single-def <System.Collections.Generic.List`1[System.String]>
-; V01 loc0 [V01,T02] ( 13, 47.50) ref -> r15 class-hnd exact single-def <System.String>
+; V01 loc0 [V01,T03] ( 13, 47.50) ref -> r15 class-hnd exact single-def <System.String>
; V02 loc1 [V02 ] ( 20, 54 ) struct (16) [rbp-0x38] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Span`1[ushort]>
-; V03 loc2 [V03,T00] ( 40,153.08) int -> r13
+; V03 loc2 [V03,T00] ( 42,187.08) int -> r13
; V04 loc3 [V04,T20] ( 4, 2 ) int -> rdi
;* V05 loc4 [V05 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[ushort]>
; V06 loc5 [V06,T06] ( 9, 25.50) int -> r14
@@ -46,13 +46,13 @@
; V35 cse2 [V35,T11] ( 3, 12 ) int -> rdx "CSE - moderate"
; V36 cse3 [V36,T10] ( 3, 12 ) ref -> rsi "CSE - moderate"
; V37 cse4 [V37,T26] ( 3, 1.50) long -> r12 "CSE - moderate"
-; V38 cse5 [V38,T03] ( 15, 30.54) int -> r14 "CSE - aggressive"
+; V38 cse5 [V38,T01] ( 17, 64.54) int -> r14 "CSE - aggressive"
; V39 cse6 [V39,T25] ( 3, 1.50) ref -> rsi "CSE - moderate"
; V40 cse7 [V40,T16] ( 2, 8 ) int -> rax "CSE - moderate"
; V41 cse8 [V41,T12] ( 3, 11.88) int -> rdi "CSE - moderate"
; V42 cse9 [V42,T18] ( 7, 3.50) int -> [rbp-0x3C] spill-single-def "CSE - moderate"
; V43 cse10 [V43,T17] ( 3, 6 ) int -> rdx "CSE - moderate"
-; V44 cse11 [V44,T01] ( 3, 48 ) long -> rsi "CSE - aggressive"
+; V44 cse11 [V44,T02] ( 3, 48 ) long -> rsi "CSE - aggressive"
;
; Lcl frame size = 40
@@ -74,24 +74,24 @@ G_M28069_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=42 bbWeight=1 PerfScore 9.50
G_M28069_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
cmp dword ptr [rbx+0x10], 0
- je G_M28069_IG27
+ je G_M28069_IG26
;; size=10 bbWeight=1 PerfScore 4.00
G_M28069_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov rax, gword ptr [rbx+0x08]
; gcrRegs +[rax]
cmp dword ptr [rax+0x08], 0
- jbe G_M28069_IG31
+ jbe G_M28069_IG30
mov r15, gword ptr [rax+0x10]
; gcrRegs +[r15]
mov r14d, dword ptr [r15+0x08]
cmp r14d, 100
- jg G_M28069_IG27
+ jg G_M28069_IG26
lea edi, [r14+0x02]
mov eax, edi
; gcrRegs -[rax]
mov esi, 2
mul rdx:rax, rsi
- jb G_M28069_IG30
+ jb G_M28069_IG29
mov rsi, rax
test rsi, rsi
je SHORT G_M28069_IG05
@@ -112,100 +112,100 @@ G_M28069_IG04: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000
;; size=22 bbWeight=0.50 PerfScore 2.62
G_M28069_IG05: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
test edi, edi
- jl G_M28069_IG32
+ jl G_M28069_IG31
mov bword ptr [rbp-0x38], rsi
mov dword ptr [rbp-0x30], edi
xor r13d, r13d
test r14d, r14d
- jle G_M28069_IG14
+ jle G_M28069_IG13
;; size=27 bbWeight=0.50 PerfScore 2.38
G_M28069_IG06: ; bbWeight=4, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
mov edi, r13d
movzx rdi, word ptr [r15+2*rdi+0x0C]
cmp edi, 39
- jne SHORT G_M28069_IG10
+ jne SHORT G_M28069_IG09
;; size=14 bbWeight=4 PerfScore 14.00
G_M28069_IG07: ; bbWeight=16, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
cmp r13d, dword ptr [rbp-0x30]
- jae G_M28069_IG31
+ jae G_M28069_IG30
mov rdi, bword ptr [rbp-0x38]
; byrRegs +[rdi]
mov esi, r13d
+ cmp r13d, r14d
+ jae G_M28069_IG30
movzx rax, word ptr [r15+2*rsi+0x0C]
mov word ptr [rdi+2*rsi], ax
inc r13d
cmp r14d, r13d
- jle SHORT G_M28069_IG08
+ jle G_M28069_IG26
+ cmp r13d, r14d
+ jae G_M28069_IG30
mov edi, r13d
; byrRegs -[rdi]
cmp word ptr [r15+2*rdi+0x0C], 39
jne SHORT G_M28069_IG07
- ;; size=47 bbWeight=16 PerfScore 208.00
-G_M28069_IG08: ; bbWeight=2, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
- cmp r14d, r13d
- jg SHORT G_M28069_IG11
- ;; size=5 bbWeight=2 PerfScore 2.50
-G_M28069_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbx r15]
- jmp G_M28069_IG27
- ;; size=5 bbWeight=0.50 PerfScore 1.00
-G_M28069_IG10: ; bbWeight=2, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[rbx r15]
+ ;; size=69 bbWeight=16 PerfScore 248.00
+G_M28069_IG08: ; bbWeight=4, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+ jmp SHORT G_M28069_IG10
+ ;; size=2 bbWeight=4 PerfScore 8.00
+G_M28069_IG09: ; bbWeight=2, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
cmp edi, 121
- je SHORT G_M28069_IG13
+ je SHORT G_M28069_IG12
;; size=5 bbWeight=2 PerfScore 2.50
-G_M28069_IG11: ; bbWeight=4, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M28069_IG10: ; bbWeight=4, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
cmp r13d, dword ptr [rbp-0x30]
- jae G_M28069_IG31
+ jae G_M28069_IG30
mov rdi, bword ptr [rbp-0x38]
; byrRegs +[rdi]
mov esi, r13d
+ cmp r13d, r14d
+ jae G_M28069_IG30
mov eax, r13d
movzx rax, word ptr [r15+2*rax+0x0C]
mov word ptr [rdi+2*rsi], ax
inc r13d
cmp r14d, r13d
- jg SHORT G_M28069_IG06
- ;; size=38 bbWeight=4 PerfScore 36.00
-G_M28069_IG12: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+ jg G_M28069_IG06
+ ;; size=51 bbWeight=4 PerfScore 41.00
+G_M28069_IG11: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rdi]
- jmp SHORT G_M28069_IG14
+ jmp SHORT G_M28069_IG13
;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M28069_IG13: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+G_M28069_IG12: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
cmp r13d, dword ptr [rbp-0x30]
- jae G_M28069_IG31
+ jae G_M28069_IG30
mov rdi, bword ptr [rbp-0x38]
; byrRegs +[rdi]
mov esi, r13d
mov word ptr [rdi+2*rsi], 121
;; size=23 bbWeight=0.50 PerfScore 2.62
-G_M28069_IG14: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M28069_IG13: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rdi]
lea edi, [r14-0x01]
cmp edi, r13d
- jle G_M28069_IG27
+ jle G_M28069_IG26
lea edi, [r13+0x01]
cmp edi, r14d
- jae G_M28069_IG31
+ jae G_M28069_IG30
lea edi, [r13+0x01]
mov r12d, edi
cmp word ptr [r15+2*r12+0x0C], 121
- jne G_M28069_IG27
+ jne G_M28069_IG26
lea eax, [r13+0x02]
mov dword ptr [rbp-0x3C], eax
cmp r14d, eax
- jle SHORT G_M28069_IG15
+ jle SHORT G_M28069_IG14
cmp eax, r14d
- jae G_M28069_IG31
+ jae G_M28069_IG30
mov edi, eax
cmp word ptr [r15+2*rdi+0x0C], 121
mov eax, dword ptr [rbp-0x3C]
- je G_M28069_IG27
+ je G_M28069_IG26
;; size=85 bbWeight=0.50 PerfScore 8.75
-G_M28069_IG15: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M28069_IG14: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
lea edi, [r13+0x03]
cmp edi, dword ptr [rbp-0x30]
- jl SHORT G_M28069_IG16
+ jl SHORT G_M28069_IG15
mov rsi, 0xD1FFAB1E
; gcrRegs +[rsi]
mov rdi, rsi
@@ -215,37 +215,37 @@ G_M28069_IG15: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000
; gcr arg pop 0
mov eax, dword ptr [rbp-0x3C]
;; size=31 bbWeight=0.50 PerfScore 4.00
-G_M28069_IG16: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M28069_IG15: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
lea edi, [r13+0x01]
cmp edi, dword ptr [rbp-0x30]
- jae G_M28069_IG31
+ jae G_M28069_IG30
mov rdi, bword ptr [rbp-0x38]
; byrRegs +[rdi]
mov word ptr [rdi+2*r12], 121
cmp eax, dword ptr [rbp-0x30]
- jae G_M28069_IG31
+ jae G_M28069_IG30
mov rdi, bword ptr [rbp-0x38]
mov ecx, eax
mov word ptr [rdi+2*rcx], 121
lea edi, [r13+0x03]
; byrRegs -[rdi]
cmp edi, dword ptr [rbp-0x30]
- jae G_M28069_IG31
+ jae G_M28069_IG30
mov rdi, bword ptr [rbp-0x38]
; byrRegs +[rdi]
lea ecx, [r13+0x03]
mov word ptr [rdi+2*rcx], 121
mov r13d, eax
cmp r14d, r13d
- jle SHORT G_M28069_IG20
+ jle SHORT G_M28069_IG19
test r13d, r13d
- jl SHORT G_M28069_IG19
+ jl SHORT G_M28069_IG18
;; size=85 bbWeight=0.50 PerfScore 9.75
-G_M28069_IG17: ; bbWeight=3.96, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M28069_IG16: ; bbWeight=3.96, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rdi]
lea edi, [r13+0x02]
cmp edi, dword ptr [rbp-0x30]
- jae G_M28069_IG31
+ jae G_M28069_IG30
mov rax, bword ptr [rbp-0x38]
; byrRegs +[rax]
mov ecx, r13d
@@ -253,29 +253,29 @@ G_M28069_IG17: ; bbWeight=3.96, gcrefRegs=8008 {rbx r15}, byrefRegs=0000
mov word ptr [rax+2*rdi], cx
inc r13d
cmp r14d, r13d
- jg SHORT G_M28069_IG17
+ jg SHORT G_M28069_IG16
;; size=38 bbWeight=3.96 PerfScore 36.63
-G_M28069_IG18: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M28069_IG17: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rax]
- jmp SHORT G_M28069_IG20
+ jmp SHORT G_M28069_IG19
...
+3 (+3.70%) : 14597.dasm - System.Security.Cryptography.UniversalCryptoDecryptor:Dispose(ubyte):this (Tier1)
@@ -8,11 +8,12 @@
; 0 inlinees with PGO data; 2 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 5, 4 ) ref -> rbx this class-hnd single-def <System.Security.Cryptography.UniversalCryptoDecryptor>
-; V01 arg1 [V01,T02] ( 3, 3 ) ubyte -> rsi single-def
-; V02 loc0 [V02,T03] ( 3, 1.50) ref -> rdi class-hnd single-def <<unknown class>>
+; V00 this [V00,T00] ( 5, 3.50) ref -> rbx this class-hnd single-def <System.Security.Cryptography.UniversalCryptoDecryptor>
+; V01 arg1 [V01,T01] ( 3, 3 ) ubyte -> rsi single-def
+; V02 loc0 [V02,T04] ( 3, 1.50) ref -> rdi class-hnd single-def <<unknown class>>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T00] ( 4, 8 ) ref -> rbx class-hnd single-def "Inlining Arg" <System.Security.Cryptography.BasicSymmetricCipher>
+; V04 tmp1 [V04,T02] ( 4, 4 ) ref -> rbx class-hnd single-def "Inlining Arg" <System.Security.Cryptography.BasicSymmetricCipher>
+; V05 cse0 [V05,T03] ( 2, 2 ) int -> rdi "CSE - aggressive"
;
; Lcl frame size = 8
@@ -25,9 +26,10 @@ G_M4640_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}
; gcrRegs +[rbx]
;; size=11 bbWeight=1 PerfScore 3.75
G_M4640_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- test sil, sil
+ movzx rdi, sil
+ test edi, edi
je SHORT G_M4640_IG06
- ;; size=5 bbWeight=1 PerfScore 1.25
+ ;; size=8 bbWeight=1 PerfScore 1.50
G_M4640_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov rdi, gword ptr [rbx+0x18]
; gcrRegs +[rdi]
@@ -39,7 +41,7 @@ G_M4640_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, b
call [System.Array:Clear(System.Array)]
; gcrRegs -[rax rdi]
;; size=21 bbWeight=0.50 PerfScore 3.75
-G_M4640_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M4640_IG04: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rbx, gword ptr [rbx+0x08]
mov rdi, rbx
; gcrRegs +[rdi]
@@ -50,13 +52,13 @@ G_M4640_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byre
; gcrRegs -[rdi]
mov rdi, rbx
; gcrRegs +[rdi]
- ;; size=25 bbWeight=1 PerfScore 9.75
-G_M4640_IG05: ; bbWeight=1, epilog, nogc, extend
+ ;; size=25 bbWeight=0.50 PerfScore 4.88
+G_M4640_IG05: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 8
pop rbx
pop rbp
tail.jmp [System.GC:SuppressFinalize(System.Object)]
- ;; size=12 bbWeight=1 PerfScore 3.25
+ ;; size=12 bbWeight=0.50 PerfScore 1.62
G_M4640_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rbx rdi]
add rsp, 8
@@ -65,7 +67,7 @@ G_M4640_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byre
ret
;; size=7 bbWeight=0.50 PerfScore 1.12
-; Total bytes of code 81, prolog size 8, PerfScore 22.88, instruction count 28, allocated bytes for code 81 (MethodHash=97d5eddf) for method System.Security.Cryptography.UniversalCryptoDecryptor:Dispose(ubyte):this (Tier1)
+; Total bytes of code 84, prolog size 8, PerfScore 16.62, instruction count 29, allocated bytes for code 84 (MethodHash=97d5eddf) for method System.Security.Cryptography.UniversalCryptoDecryptor:Dispose(ubyte):this (Tier1)
; ============================================================
Unwind Info:
coreclr_tests.run.linux.x64.checked.mch
-37 (-45.68%) : 222553.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
@@ -9,74 +9,55 @@
; Final local variable assignments
;
; V00 this [V00,T02] ( 3, 3 ) byref -> rdi this single-def
-; V01 arg1 [V01,T00] ( 5, 4.50) ref -> rbx class-hnd single-def <System.Object>
+; V01 arg1 [V01,T00] ( 4, 4 ) ref -> rsi class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03,T01] ( 3, 5 ) ref -> rax class-hnd "spilling QMark2" <System.Int32>
-; V04 tmp2 [V04,T03] ( 2, 4 ) int -> r15 "impAppendStmt"
-; V05 cse0 [V05,T04] ( 4, 2.50) long -> rcx "CSE - aggressive"
-; V06 cse1 [V06,T05] ( 3, 2 ) long -> rsi "CSE - aggressive"
+; V04 tmp2 [V04,T03] ( 2, 4 ) int -> rax "impAppendStmt"
+; V05 cse0 [V05,T04] ( 2, 1 ) long -> rcx "CSE - moderate"
;
; Lcl frame size = 0
G_M40448_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
- push r15
- push rbx
- lea rbp, [rsp+0x10]
- mov rbx, rsi
- ; gcrRegs +[rbx]
- ;; size=12 bbWeight=1 PerfScore 3.75
-G_M40448_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0080 {rdi}, byref, isz
+ mov rbp, rsp
+ ;; size=4 bbWeight=1 PerfScore 1.25
+G_M40448_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi}, byref, isz
+ ; gcrRegs +[rsi]
; byrRegs +[rdi]
- mov rax, rbx
+ mov rax, rsi
; gcrRegs +[rax]
test rax, rax
- je SHORT G_M40448_IG08
+ jne SHORT G_M40448_IG05
;; size=8 bbWeight=1 PerfScore 1.50
-G_M40448_IG03: ; bbWeight=0.50, gcrefRegs=0009 {rax rbx}, byrefRegs=0080 {rdi}, byref, isz
- mov rsi, qword ptr [rax]
- mov rcx, 0xD1FFAB1E ; System.Int32
- cmp rsi, rcx
- jne SHORT G_M40448_IG08
- ;; size=18 bbWeight=0.50 PerfScore 1.75
-G_M40448_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0080 {rdi}, byref, isz
- ; gcrRegs -[rax]
- mov r15d, dword ptr [rdi]
- cmp rsi, rcx
- jne SHORT G_M40448_IG07
- ;; size=8 bbWeight=1 PerfScore 3.25
-G_M40448_IG05: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M40448_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rax rsi]
; byrRegs -[rdi]
xor eax, eax
- cmp r15d, dword ptr [rbx+0x08]
+ ;; size=2 bbWeight=1 PerfScore 0.25
+G_M40448_IG04: ; bbWeight=1, epilog, nogc, extend
+ pop rbp
+ ret
+ ;; size=2 bbWeight=1 PerfScore 1.50
+G_M40448_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0041 {rax rsi}, byrefRegs=0080 {rdi}, gcvars, byref, isz
+ ; gcrRegs +[rax rsi]
+ ; byrRegs +[rdi]
+ mov rcx, 0xD1FFAB1E ; System.Int32
+ cmp qword ptr [rax], rcx
+ jne SHORT G_M40448_IG03
+ ;; size=15 bbWeight=0.50 PerfScore 2.12
+G_M40448_IG06: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi}, byref
+ ; gcrRegs -[rax]
+ mov eax, dword ptr [rdi]
+ cmp eax, dword ptr [rsi+0x08]
sete al
- ;; size=9 bbWeight=1 PerfScore 4.25
-G_M40448_IG06: ; bbWeight=1, epilog, nogc, extend
- pop rbx
- pop r15
+ movzx rax, al
+ ;; size=11 bbWeight=1 PerfScore 6.25
+G_M40448_IG07: ; bbWeight=1, epilog, nogc, extend
pop rbp
ret
- ;; size=5 bbWeight=1 PerfScore 2.50
-G_M40448_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
- mov rsi, rbx
- ; gcrRegs +[rsi]
- mov rdi, rcx
- call [CORINFO_HELP_UNBOX]
- ; gcrRegs -[rsi]
- jmp SHORT G_M40448_IG05
- ;; size=14 bbWeight=0.50 PerfScore 2.75
-G_M40448_IG08: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbx]
- xor eax, eax
- ;; size=2 bbWeight=0.25 PerfScore 0.06
-G_M40448_IG09: ; bbWeight=0.25, epilog, nogc, extend
- pop rbx
- pop r15
- pop rbp
- ret
- ;; size=5 bbWeight=0.25 PerfScore 0.62
+ ;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 81, prolog size 9, PerfScore 20.44, instruction count 31, allocated bytes for code 81 (MethodHash=d61e61ff) for method System.Int32:Equals(System.Object):ubyte:this (Tier1)
+; Total bytes of code 44, prolog size 4, PerfScore 14.38, instruction count 17, allocated bytes for code 44 (MethodHash=d61e61ff) for method System.Int32:Equals(System.Object):ubyte:this (Tier1)
; ============================================================
Unwind Info:
@@ -84,11 +65,9 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x04
- CountOfUnwindCodes: 3
+ SizeOfProlog : 0x01
+ CountOfUnwindCodes: 1
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
-37 (-45.68%) : 23834.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
@@ -9,74 +9,55 @@
; Final local variable assignments
;
; V00 this [V00,T02] ( 3, 3 ) byref -> rdi this single-def
-; V01 arg1 [V01,T00] ( 5, 4.50) ref -> rbx class-hnd single-def <System.Object>
+; V01 arg1 [V01,T00] ( 4, 4 ) ref -> rsi class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03,T01] ( 3, 5 ) ref -> rax class-hnd "spilling QMark2" <System.Int32>
-; V04 tmp2 [V04,T03] ( 2, 4 ) int -> r15 "impAppendStmt"
-; V05 cse0 [V05,T04] ( 4, 2.50) long -> rcx "CSE - aggressive"
-; V06 cse1 [V06,T05] ( 3, 2 ) long -> rsi "CSE - aggressive"
+; V04 tmp2 [V04,T03] ( 2, 4 ) int -> rax "impAppendStmt"
+; V05 cse0 [V05,T04] ( 2, 1 ) long -> rcx "CSE - moderate"
;
; Lcl frame size = 0
G_M40448_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
- push r15
- push rbx
- lea rbp, [rsp+0x10]
- mov rbx, rsi
- ; gcrRegs +[rbx]
- ;; size=12 bbWeight=1 PerfScore 3.75
-G_M40448_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0080 {rdi}, byref, isz
+ mov rbp, rsp
+ ;; size=4 bbWeight=1 PerfScore 1.25
+G_M40448_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi}, byref, isz
+ ; gcrRegs +[rsi]
; byrRegs +[rdi]
- mov rax, rbx
+ mov rax, rsi
; gcrRegs +[rax]
test rax, rax
- je SHORT G_M40448_IG08
+ jne SHORT G_M40448_IG05
;; size=8 bbWeight=1 PerfScore 1.50
-G_M40448_IG03: ; bbWeight=0.50, gcrefRegs=0009 {rax rbx}, byrefRegs=0080 {rdi}, byref, isz
- mov rsi, qword ptr [rax]
- mov rcx, 0xD1FFAB1E ; System.Int32
- cmp rsi, rcx
- jne SHORT G_M40448_IG08
- ;; size=18 bbWeight=0.50 PerfScore 1.75
-G_M40448_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0080 {rdi}, byref, isz
- ; gcrRegs -[rax]
- mov r15d, dword ptr [rdi]
- cmp rsi, rcx
- jne SHORT G_M40448_IG07
- ;; size=8 bbWeight=1 PerfScore 3.25
-G_M40448_IG05: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M40448_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rax rsi]
; byrRegs -[rdi]
xor eax, eax
- cmp r15d, dword ptr [rbx+0x08]
+ ;; size=2 bbWeight=1 PerfScore 0.25
+G_M40448_IG04: ; bbWeight=1, epilog, nogc, extend
+ pop rbp
+ ret
+ ;; size=2 bbWeight=1 PerfScore 1.50
+G_M40448_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0041 {rax rsi}, byrefRegs=0080 {rdi}, gcvars, byref, isz
+ ; gcrRegs +[rax rsi]
+ ; byrRegs +[rdi]
+ mov rcx, 0xD1FFAB1E ; System.Int32
+ cmp qword ptr [rax], rcx
+ jne SHORT G_M40448_IG03
+ ;; size=15 bbWeight=0.50 PerfScore 2.12
+G_M40448_IG06: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi}, byref
+ ; gcrRegs -[rax]
+ mov eax, dword ptr [rdi]
+ cmp eax, dword ptr [rsi+0x08]
sete al
- ;; size=9 bbWeight=1 PerfScore 4.25
-G_M40448_IG06: ; bbWeight=1, epilog, nogc, extend
- pop rbx
- pop r15
+ movzx rax, al
+ ;; size=11 bbWeight=1 PerfScore 6.25
+G_M40448_IG07: ; bbWeight=1, epilog, nogc, extend
pop rbp
ret
- ;; size=5 bbWeight=1 PerfScore 2.50
-G_M40448_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
- mov rsi, rbx
- ; gcrRegs +[rsi]
- mov rdi, rcx
- call [CORINFO_HELP_UNBOX]
- ; gcrRegs -[rsi]
- jmp SHORT G_M40448_IG05
- ;; size=14 bbWeight=0.50 PerfScore 2.75
-G_M40448_IG08: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbx]
- xor eax, eax
- ;; size=2 bbWeight=0.25 PerfScore 0.06
-G_M40448_IG09: ; bbWeight=0.25, epilog, nogc, extend
- pop rbx
- pop r15
- pop rbp
- ret
- ;; size=5 bbWeight=0.25 PerfScore 0.62
+ ;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 81, prolog size 9, PerfScore 20.44, instruction count 31, allocated bytes for code 81 (MethodHash=d61e61ff) for method System.Int32:Equals(System.Object):ubyte:this (Tier1)
+; Total bytes of code 44, prolog size 4, PerfScore 14.38, instruction count 17, allocated bytes for code 44 (MethodHash=d61e61ff) for method System.Int32:Equals(System.Object):ubyte:this (Tier1)
; ============================================================
Unwind Info:
@@ -84,11 +65,9 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x04
- CountOfUnwindCodes: 3
+ SizeOfProlog : 0x01
+ CountOfUnwindCodes: 1
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
-35 (-44.30%) : 207261.dasm - System.UInt32:Equals(System.Object):ubyte:this (Tier1)
@@ -9,73 +9,54 @@
; Final local variable assignments
;
; V00 this [V00,T02] ( 3, 3 ) byref -> rdi this single-def
-; V01 arg1 [V01,T00] ( 5, 4.50) ref -> rbx class-hnd single-def <System.Object>
+; V01 arg1 [V01,T00] ( 4, 4 ) ref -> rsi class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 5 ) ref -> rsi class-hnd "spilling QMark2" <System.UInt32>
-; V04 tmp2 [V04,T03] ( 2, 4 ) int -> r15 "impAppendStmt"
-; V05 cse0 [V05,T04] ( 4, 2.50) long -> rax "CSE - aggressive"
-; V06 cse1 [V06,T05] ( 3, 2 ) long -> rsi "CSE - aggressive"
+; V03 tmp1 [V03,T01] ( 3, 5 ) ref -> rax class-hnd "spilling QMark2" <System.UInt32>
+; V04 tmp2 [V04,T03] ( 2, 4 ) int -> rax "impAppendStmt"
+; V05 cse0 [V05,T04] ( 2, 1 ) long -> rcx "CSE - moderate"
;
; Lcl frame size = 0
G_M22229_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
push rbp
- push r15
- push rbx
- lea rbp, [rsp+0x10]
- mov rbx, rsi
- ; gcrRegs +[rbx]
- ;; size=12 bbWeight=1 PerfScore 3.75
-G_M22229_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0080 {rdi}, byref, isz
+ mov rbp, rsp
+ ;; size=4 bbWeight=1 PerfScore 1.25
+G_M22229_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi}, byref, isz
+ ; gcrRegs +[rsi]
; byrRegs +[rdi]
- mov rsi, rbx
- ; gcrRegs +[rsi]
- test rsi, rsi
- je SHORT G_M22229_IG08
+ mov rax, rsi
+ ; gcrRegs +[rax]
+ test rax, rax
+ je SHORT G_M22229_IG04
;; size=8 bbWeight=1 PerfScore 1.50
-G_M22229_IG03: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0080 {rdi}, byref, isz
- mov rsi, qword ptr [rsi]
- ; gcrRegs -[rsi]
- mov rax, 0xD1FFAB1E ; System.UInt32
- cmp rsi, rax
- jne SHORT G_M22229_IG08
- ;; size=18 bbWeight=0.50 PerfScore 1.75
-G_M22229_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0080 {rdi}, byref, isz
- mov r15d, dword ptr [rdi]
- cmp rsi, rax
+G_M22229_IG03: ; bbWeight=0.50, gcrefRegs=0041 {rax rsi}, byrefRegs=0080 {rdi}, byref, isz
+ mov rcx, 0xD1FFAB1E ; System.UInt32
+ cmp qword ptr [rax], rcx
je SHORT G_M22229_IG06
- ;; size=8 bbWeight=1 PerfScore 3.25
-G_M22229_IG05: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ ;; size=15 bbWeight=0.50 PerfScore 2.12
+G_M22229_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rax rsi]
; byrRegs -[rdi]
- mov rsi, rbx
+ xor eax, eax
+ ;; size=2 bbWeight=1 PerfScore 0.25
+G_M22229_IG05: ; bbWeight=1, epilog, nogc, extend
+ pop rbp
+ ret
+ ;; size=2 bbWeight=1 PerfScore 1.50
+G_M22229_IG06: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi}, gcvars, byref
; gcrRegs +[rsi]
- mov rdi, rax
- call [CORINFO_HELP_UNBOX]
- ; gcrRegs -[rsi]
- ;; size=12 bbWeight=0.50 PerfScore 1.75
-G_M22229_IG06: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- xor eax, eax
- cmp r15d, dword ptr [rbx+0x08]
+ ; byrRegs +[rdi]
+ mov eax, dword ptr [rdi]
+ cmp eax, dword ptr [rsi+0x08]
sete al
- ;; size=9 bbWeight=1 PerfScore 4.25
+ movzx rax, al
+ ;; size=11 bbWeight=1 PerfScore 6.25
G_M22229_IG07: ; bbWeight=1, epilog, nogc, extend
- pop rbx
- pop r15
pop rbp
ret
- ;; size=5 bbWeight=1 PerfScore 2.50
-G_M22229_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[rbx]
- xor eax, eax
- ;; size=2 bbWeight=0 PerfScore 0.00
-G_M22229_IG09: ; bbWeight=0, epilog, nogc, extend
- pop rbx
- pop r15
- pop rbp
- ret
- ;; size=5 bbWeight=0 PerfScore 0.00
+ ;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 79, prolog size 9, PerfScore 18.75, instruction count 30, allocated bytes for code 79 (MethodHash=4843a92a) for method System.UInt32:Equals(System.Object):ubyte:this (Tier1)
+; Total bytes of code 44, prolog size 4, PerfScore 14.38, instruction count 17, allocated bytes for code 44 (MethodHash=4843a92a) for method System.UInt32:Equals(System.Object):ubyte:this (Tier1)
; ============================================================
Unwind Info:
@@ -83,11 +64,9 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x04
- CountOfUnwindCodes: 3
+ SizeOfProlog : 0x01
+ CountOfUnwindCodes: 1
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+16 (+5.23%) : 398519.dasm - Internal.TypeSystem.TypeSystemHelpers:HasLayout(Internal.TypeSystem.MetadataType):ubyte (Tier1)
@@ -9,61 +9,66 @@
; 4 inlinees with PGO data; 16 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 9, 7.08) ref -> rbx class-hnd single-def <Internal.TypeSystem.MetadataType>
+; V00 arg0 [V00,T00] ( 7, 5.77) ref -> rbx class-hnd single-def <Internal.TypeSystem.MetadataType>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T11] ( 2, 2 ) int -> rax "guarded devirt return temp"
+; V02 tmp1 [V02,T12] ( 2, 2 ) int -> rax "guarded devirt return temp"
;* V03 tmp2 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
-; V04 tmp3 [V04,T13] ( 3, 1.92) int -> r15 "guarded devirt return temp"
+; V04 tmp3 [V04,T15] ( 3, 1.92) int -> r14 "guarded devirt return temp"
;* V05 tmp4 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
-; V06 tmp5 [V06,T14] ( 3, 1.62) int -> r15 "Inline return value spill temp"
+; V06 tmp5 [V06,T16] ( 3, 1.62) int -> r14 "Inline return value spill temp"
; V07 tmp6 [V07,T03] ( 4, 4.86) byref -> rdi single-def "Inlining Arg"
-; V08 tmp7 [V08,T01] ( 4, 6.48) byref -> r15 single-def "impAppendStmt"
+; V08 tmp7 [V08,T01] ( 4, 6.48) byref -> r14 single-def "impAppendStmt"
;* V09 tmp8 [V09 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Reflection.Metadata.TypeDefinitionHandle>
;* V10 tmp9 [V10 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V11 tmp10 [V11 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Reflection.Metadata.TypeDefinitionHandle>
;* V12 tmp11 [V12 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Reflection.Metadata.TypeDefinitionHandle>
-; V13 tmp12 [V13,T15] ( 2, 1.62) int -> rax "Inline stloc first use temp"
+; V13 tmp12 [V13,T17] ( 2, 1.62) int -> rax "Inline stloc first use temp"
;* V14 tmp13 [V14 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
; V15 tmp14 [V15,T04] ( 3, 4.86) byref -> rdi single-def "Inlining Arg"
; V16 tmp15 [V16,T05] ( 3, 4.86) int -> rax "Inlining Arg"
;* V17 tmp16 [V17 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V18 tmp17 [V18,T17] ( 3, 1.30) int -> r15 "Inline return value spill temp"
+; V18 tmp17 [V18,T19] ( 3, 1.30) int -> r14 "Inline return value spill temp"
; V19 tmp18 [V19,T07] ( 4, 3.91) byref -> rdi single-def "Inlining Arg"
; V20 tmp19 [V20,T02] ( 4, 5.22) byref -> rdi single-def "impAppendStmt"
;* V21 tmp20 [V21 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Reflection.Metadata.TypeDefinitionHandle>
;* V22 tmp21 [V22 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V23 tmp22 [V23 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Reflection.Metadata.TypeDefinitionHandle>
;* V24 tmp23 [V24 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Reflection.Metadata.TypeDefinitionHandle>
-; V25 tmp24 [V25,T18] ( 2, 1.30) int -> rax "Inline stloc first use temp"
+; V25 tmp24 [V25,T20] ( 2, 1.30) int -> rax "Inline stloc first use temp"
;* V26 tmp25 [V26 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
; V27 tmp26 [V27,T08] ( 3, 3.91) byref -> rcx single-def "Inlining Arg"
; V28 tmp27 [V28,T09] ( 3, 3.91) int -> rax "Inlining Arg"
;* V29 tmp28 [V29 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V30 tmp29 [V30 ] ( 0, 0 ) int -> zero-ref "field V09._rowId (fldOffset=0x0)" P-INDEP
-; V31 tmp30 [V31,T16] ( 2, 1.62) int -> rax "field V11._rowId (fldOffset=0x0)" P-INDEP
+; V31 tmp30 [V31,T18] ( 2, 1.62) int -> rax "field V11._rowId (fldOffset=0x0)" P-INDEP
;* V32 tmp31 [V32 ] ( 0, 0 ) int -> zero-ref "field V12._rowId (fldOffset=0x0)" P-INDEP
;* V33 tmp32 [V33 ] ( 0, 0 ) int -> zero-ref "field V21._rowId (fldOffset=0x0)" P-INDEP
-; V34 tmp33 [V34,T19] ( 2, 1.30) int -> rax "field V23._rowId (fldOffset=0x0)" P-INDEP
+; V34 tmp33 [V34,T21] ( 2, 1.30) int -> rax "field V23._rowId (fldOffset=0x0)" P-INDEP
;* V35 tmp34 [V35 ] ( 0, 0 ) int -> zero-ref "field V24._rowId (fldOffset=0x0)" P-INDEP
-; V36 tmp35 [V36,T06] ( 6, 4.39) ref -> r15 "Field obj"
-; V37 cse0 [V37,T10] ( 3, 2.43) int -> rax "CSE - moderate"
-; V38 cse1 [V38,T12] ( 3, 1.96) int -> rax "CSE - moderate"
+; V36 tmp35 [V36,T06] ( 6, 4.39) ref -> r14 "Field obj"
+; V37 cse0 [V37,T11] ( 3, 2.43) int -> rax "CSE - moderate"
+; V38 cse1 [V38,T14] ( 3, 1.96) int -> rax "CSE - moderate"
+; V39 cse2 [V39,T10] ( 4, 3.31) long -> r15 "CSE - moderate"
+; V40 cse3 [V40,T13] ( 2, 2 ) long -> rdi "CSE - moderate"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M18137_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
push r15
+ push r14
push rbx
- lea rbp, [rsp+0x10]
+ push rax
+ lea rbp, [rsp+0x20]
mov rbx, rdi
; gcrRegs +[rbx]
- ;; size=12 bbWeight=1 PerfScore 3.75
+ ;; size=15 bbWeight=1 PerfScore 5.75
G_M18137_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ mov r15, qword ptr [rbx]
mov rdi, 0xD1FFAB1E ; Internal.TypeSystem.Ecma.EcmaType
- cmp qword ptr [rbx], rdi
+ cmp r15, rdi
jne SHORT G_M18137_IG05
- ;; size=15 bbWeight=1 PerfScore 4.25
+ ;; size=18 bbWeight=1 PerfScore 3.50
G_M18137_IG03: ; bbWeight=0.81, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
lea rdi, bword ptr [rbx+0x90]
; byrRegs +[rdi]
@@ -73,17 +78,17 @@ G_M18137_IG03: ; bbWeight=0.81, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
movzx rcx, cl
test ecx, ecx
jne G_M18137_IG14
- mov r15, gword ptr [rdi]
- ; gcrRegs +[r15]
- cmp byte ptr [r15], r15b
- add r15, 280
- ; gcrRegs -[r15]
- ; byrRegs +[r15]
+ mov r14, gword ptr [rdi]
+ ; gcrRegs +[r14]
+ cmp byte ptr [r14], r14b
+ add r14, 280
+ ; gcrRegs -[r14]
+ ; byrRegs +[r14]
and eax, 0xD1FFAB1E
dec eax
- imul eax, dword ptr [r15+0x20]
- lea rdi, bword ptr [r15+0x28]
- add eax, dword ptr [r15+0x08]
+ imul eax, dword ptr [r14+0x20]
+ lea rdi, bword ptr [r14+0x28]
+ add eax, dword ptr [r14+0x08]
mov ecx, eax
add rcx, 4
movsxd rdx, dword ptr [rdi+0x08]
@@ -92,27 +97,26 @@ G_M18137_IG03: ; bbWeight=0.81, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
mov rdi, qword ptr [rdi]
; byrRegs -[rdi]
cdqe
- mov r15d, dword ptr [rdi+rax]
- ; byrRegs -[r15]
+ mov r14d, dword ptr [rdi+rax]
+ ; byrRegs -[r14]
;; size=87 bbWeight=0.81 PerfScore 23.49
G_M18137_IG04: ; bbWeight=0.81, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- test r15b, 8
+ test r14b, 8
jne G_M18137_IG12
jmp SHORT G_M18137_IG07
;; size=12 bbWeight=0.81 PerfScore 2.63
-G_M18137_IG05: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M18137_IG05: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rdi, rbx
; gcrRegs +[rdi]
- mov rax, qword ptr [rbx]
- mov rax, qword ptr [rax+0x70]
+ mov rax, qword ptr [r15+0x70]
call [rax]<unknown method>
; gcrRegs -[rdi]
test eax, eax
- jne SHORT G_M18137_IG12
- ;; size=16 bbWeight=1 PerfScore 8.50
-G_M18137_IG06: ; bbWeight=0.96, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ jne G_M18137_IG12
+ ;; size=17 bbWeight=1 PerfScore 6.50
+G_M18137_IG06: ; bbWeight=0.31, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
jmp SHORT G_M18137_IG11
- ;; size=2 bbWeight=0.96 PerfScore 1.92
+ ;; size=2 bbWeight=0.31 PerfScore 0.61
G_M18137_IG07: ; bbWeight=0.65, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
lea rdi, bword ptr [rbx+0x90]
; byrRegs +[rdi]
@@ -122,10 +126,10 @@ G_M18137_IG07: ; bbWeight=0.65, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
movzx rcx, cl
test ecx, ecx
jne G_M18137_IG16
- mov r15, gword ptr [rdi]
- ; gcrRegs +[r15]
- cmp byte ptr [r15], r15b
- lea rdi, bword ptr [r15+0x118]
+ mov r14, gword ptr [rdi]
+ ; gcrRegs +[r14]
+ cmp byte ptr [r14], r14b
+ lea rdi, bword ptr [r14+0x118]
and eax, 0xD1FFAB1E
dec eax
imul eax, dword ptr [rdi+0x20]
@@ -140,51 +144,54 @@ G_M18137_IG07: ; bbWeight=0.65, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
ja SHORT G_M18137_IG15
mov rdi, qword ptr [rcx]
cdqe
- mov r15d, dword ptr [rdi+rax]
- ; gcrRegs -[r15]
+ mov r14d, dword ptr [rdi+rax]
+ ; gcrRegs -[r14]
;; size=81 bbWeight=0.65 PerfScore 19.07
G_M18137_IG08: ; bbWeight=0.65, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx]
; byrRegs -[rcx]
- test r15b, 16
- setne r15b
- movzx r15, r15b
+ test r14b, 16
+ setne r14b
+ movzx r14, r14b
;; size=12 bbWeight=0.65 PerfScore 0.98
G_M18137_IG09: ; bbWeight=0.96, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- movzx rax, r15b
+ movzx rax, r14b
;; size=4 bbWeight=0.96 PerfScore 0.24
G_M18137_IG10: ; bbWeight=0.96, epilog, nogc, extend
+ add rsp, 8
pop rbx
+ pop r14
pop r15
pop rbp
ret
- ;; size=5 bbWeight=0.96 PerfScore 2.40
+ ;; size=11 bbWeight=0.96 PerfScore 3.12
G_M18137_IG11: ; bbWeight=0.31, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rbx]
mov rdi, rbx
; gcrRegs +[rdi]
- mov rax, qword ptr [rbx]
- mov rax, qword ptr [rax+0x68]
+ mov rax, qword ptr [r15+0x68]
call [rax+0x38]<unknown method>
; gcrRegs -[rbx rdi]
- mov r15d, eax
+ mov r14d, eax
jmp SHORT G_M18137_IG09
- ;; size=18 bbWeight=0.31 PerfScore 2.92
+ ;; size=15 bbWeight=0.31 PerfScore 2.30
G_M18137_IG12: ; bbWeight=0.04, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov eax, 1
;; size=5 bbWeight=0.04 PerfScore 0.01
G_M18137_IG13: ; bbWeight=0.04, epilog, nogc, extend
+ add rsp, 8
pop rbx
+ pop r14
pop r15
pop rbp
ret
- ;; size=5 bbWeight=0.04 PerfScore 0.10
+ ;; size=11 bbWeight=0.04 PerfScore 0.13
G_M18137_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0080 {rdi}, gcvars, byref
; gcrRegs +[rbx]
; byrRegs +[rdi]
call [<unknown method>]
; byrRegs -[rdi]
- mov r15d, eax
+ mov r14d, eax
jmp G_M18137_IG04
;; size=14 bbWeight=0 PerfScore 0.00
G_M18137_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
@@ -196,11 +203,11 @@ G_M18137_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byr
; byrRegs +[rdi]
call [<unknown method>]
; byrRegs -[rdi]
- mov r15d, eax
+ mov r14d, eax
jmp SHORT G_M18137_IG08
;; size=11 bbWeight=0 PerfScore 0.00
-; Total bytes of code 306, prolog size 9, PerfScore 70.26, instruction count 91, allocated bytes for code 306 (MethodHash=3025b926) for method Internal.TypeSystem.TypeSystemHelpers:HasLayout(Internal.TypeSystem.MetadataType):ubyte (Tier1)
+; Total bytes of code 322, prolog size 12, PerfScore 68.34, instruction count 96, allocated bytes for code 322 (MethodHash=3025b926) for method Internal.TypeSystem.TypeSystemHelpers:HasLayout(Internal.TypeSystem.MetadataType):ubyte (Tier1)
; ============================================================
Unwind Info:
@@ -208,11 +215,13 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
...
+40 (+7.92%) : 217049.dasm - System.Reflection.RuntimeAssembly:GetType(System.String,ubyte,ubyte):System.Type:this (Instrumented Tier1)
@@ -15,7 +15,7 @@
;* V04 loc0 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.Reflection.RuntimeAssembly>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V06 tmp1 [V06,T21] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V07 tmp2 [V07 ] ( 37, 32.82) struct (64) [rbp-0x60] do-not-enreg[XSF] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" <System.Reflection.TypeNameParser>
+; V07 tmp2 [V07 ] ( 37, 32.32) struct (64) [rbp-0x68] do-not-enreg[XSF] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" <System.Reflection.TypeNameParser>
;* V08 tmp3 [V08 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
;* V09 tmp4 [V09 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
;* V10 tmp5 [V10 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
@@ -25,14 +25,14 @@
;* V14 tmp9 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V15 tmp10 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V16 tmp11 [V16 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V17 tmp12 [V17,T17] ( 3, 1.50) ref -> rax class-hnd "Inline return value spill temp" <System.Type>
-; V18 tmp13 [V18,T09] ( 6, 3 ) ref -> r15 class-hnd single-def "Inline stloc first use temp" <System.Reflection.TypeNameParser+TypeName>
-; V19 tmp14 [V19,T18] ( 5, 1 ) ref -> r14 class-hnd "Inline stloc first use temp" <System.String>
+; V17 tmp12 [V17,T16] ( 3, 1.50) ref -> rax class-hnd "Inline return value spill temp" <System.Type>
+; V18 tmp13 [V18,T09] ( 7, 3 ) ref -> r15 class-hnd single-def "Inline stloc first use temp" <System.Reflection.TypeNameParser+TypeName>
+; V19 tmp14 [V19,T17] ( 5, 1 ) ref -> r14 class-hnd "Inline stloc first use temp" <System.String>
;* V20 tmp15 [V20 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
; V21 tmp16 [V21,T19] ( 3, 1 ) ref -> rax "guarded devirt return temp"
;* V22 tmp17 [V22 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Reflection.TypeNameParser+NamespaceTypeName>
;* V23 tmp18 [V23 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-; V24 tmp19 [V24,T12] ( 4, 2 ) int -> rbx "Inline stloc first use temp"
+; V24 tmp19 [V24,T18] ( 4, 1 ) int -> r12 "Inline stloc first use temp"
; V25 tmp20 [V25,T22] ( 3, 0 ) int -> rdi "Span.get_Item index"
; V26 tmp21 [V26,T20] ( 3, 1 ) int -> r13
;* V27 tmp22 [V27 ] ( 0, 0 ) ushort -> zero-ref "Inline stloc first use temp"
@@ -48,10 +48,10 @@
;* V37 tmp32 [V37 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V38 tmp33 [V38 ] ( 0, 0 ) byref -> zero-ref single-def "field V08._reference (fldOffset=0x0)" P-INDEP
;* V39 tmp34 [V39 ] ( 0, 0 ) int -> zero-ref "field V08._length (fldOffset=0x8)" P-INDEP
-; V40 tmp35 [V40,T13] ( 2, 2 ) byref -> rax "field V09._reference (fldOffset=0x0)" P-INDEP
-; V41 tmp36 [V41,T15] ( 2, 2 ) int -> rsi "field V09._length (fldOffset=0x8)" P-INDEP
-; V42 tmp37 [V42,T14] ( 2, 2 ) byref -> rax single-def "field V10._reference (fldOffset=0x0)" P-INDEP
-; V43 tmp38 [V43,T16] ( 2, 2 ) int -> rsi "field V10._length (fldOffset=0x8)" P-INDEP
+; V40 tmp35 [V40,T12] ( 2, 2 ) byref -> rax "field V09._reference (fldOffset=0x0)" P-INDEP
+; V41 tmp36 [V41,T14] ( 2, 2 ) int -> rsi "field V09._length (fldOffset=0x8)" P-INDEP
+; V42 tmp37 [V42,T13] ( 2, 2 ) byref -> rax single-def "field V10._reference (fldOffset=0x0)" P-INDEP
+; V43 tmp38 [V43,T15] ( 2, 2 ) int -> rsi "field V10._length (fldOffset=0x8)" P-INDEP
;* V44 tmp39 [V44 ] ( 0, 0 ) byref -> zero-ref single-def "field V11._reference (fldOffset=0x0)" P-INDEP
;* V45 tmp40 [V45 ] ( 0, 0 ) int -> zero-ref "field V11._length (fldOffset=0x8)" P-INDEP
;* V46 tmp41 [V46 ] ( 0, 0 ) byref -> zero-ref "field V31._reference (fldOffset=0x0)" P-INDEP
@@ -70,30 +70,34 @@
; V59 cse0 [V59,T02] ( 3, 11.82) int -> rdi "CSE - aggressive"
; V60 cse1 [V60,T03] ( 3, 11.82) int -> rax "CSE - aggressive"
;
-; Lcl frame size = 64
+; Lcl frame size = 72
G_M21860_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
push r15
push r14
push r13
+ push r12
push rbx
- sub rsp, 64
- lea rbp, [rsp+0x60]
+ sub rsp, 72
+ lea rbp, [rsp+0x70]
+ xor eax, eax
+ mov qword ptr [rbp-0x68], rax
vxorps xmm8, xmm8, xmm8
vmovdqu ymmword ptr [rbp-0x60], ymm8
- vmovdqu ymmword ptr [rbp-0x40], ymm8
+ vmovdqa xmmword ptr [rbp-0x40], xmm8
+ mov qword ptr [rbp-0x30], rax
mov rbx, rsi
; gcrRegs +[rbx]
- ;; size=35 bbWeight=1 PerfScore 10.33
+ ;; size=47 bbWeight=1 PerfScore 13.58
G_M21860_IG02: ; bbWeight=1, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
; gcrRegs +[rdi]
test rbx, rbx
- je G_M21860_IG23
+ je G_M21860_IG21
;; size=9 bbWeight=1 PerfScore 1.25
G_M21860_IG03: ; bbWeight=0.47, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
cmp dword ptr [rbx+0x08], 0
- je G_M21860_IG23
+ je G_M21860_IG21
;; size=10 bbWeight=0.47 PerfScore 1.88
G_M21860_IG04: ; bbWeight=1, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
lea rax, bword ptr [rbx+0x0C]
@@ -101,36 +105,36 @@ G_M21860_IG04: ; bbWeight=1, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {},
mov esi, dword ptr [rbx+0x08]
xor r8, r8
; gcrRegs +[r8]
- mov gword ptr [rbp-0x60], r8
+ mov gword ptr [rbp-0x68], r8
;; size=14 bbWeight=1 PerfScore 3.75
G_M21860_IG05: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0001 {rax}, byref
; gcrRegs -[rbx r8]
- mov gword ptr [rbp-0x58], r8
- mov byte ptr [rbp-0x38], 0
- mov byte ptr [rbp-0x37], 0
- mov byte ptr [rbp-0x36], 0
- mov byte ptr [rbp-0x35], 0
- mov byte ptr [rbp-0x34], 0
+ mov gword ptr [rbp-0x60], r8
+ mov byte ptr [rbp-0x40], 0
+ mov byte ptr [rbp-0x3F], 0
+ mov byte ptr [rbp-0x3E], 0
+ mov byte ptr [rbp-0x3D], 0
+ mov byte ptr [rbp-0x3C], 0
;; size=24 bbWeight=1 PerfScore 6.00
G_M21860_IG06: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0001 {rax}, byref
- mov gword ptr [rbp-0x50], r8
+ mov gword ptr [rbp-0x58], r8
;; size=4 bbWeight=1 PerfScore 1.00
G_M21860_IG07: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0001 {rax}, byref
- mov gword ptr [rbp-0x48], r8
- mov bword ptr [rbp-0x30], rax
- mov dword ptr [rbp-0x28], esi
+ mov gword ptr [rbp-0x50], r8
+ mov bword ptr [rbp-0x38], rax
+ mov dword ptr [rbp-0x30], esi
;; size=11 bbWeight=1 PerfScore 3.00
G_M21860_IG08: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
; byrRegs -[rax]
- mov dword ptr [rbp-0x40], r8d
+ mov dword ptr [rbp-0x48], r8d
;; size=4 bbWeight=1 PerfScore 1.00
G_M21860_IG09: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
- mov dword ptr [rbp-0x3C], r8d
- mov byte ptr [rbp-0x38], dl
- mov byte ptr [rbp-0x37], cl
- mov gword ptr [rbp-0x48], rdi
+ mov dword ptr [rbp-0x44], r8d
+ mov byte ptr [rbp-0x40], dl
+ mov byte ptr [rbp-0x3F], cl
mov gword ptr [rbp-0x50], rdi
- lea rdi, [rbp-0x60]
+ mov gword ptr [rbp-0x58], rdi
+ lea rdi, [rbp-0x68]
; gcrRegs -[rdi]
call [<unknown method>]
; gcrRegs +[rax]
@@ -138,25 +142,25 @@ G_M21860_IG09: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byr
mov r15, rax
; gcrRegs +[r15]
test r15, r15
- je G_M21860_IG24
+ je G_M21860_IG22
;; size=40 bbWeight=1 PerfScore 10.00
G_M21860_IG10: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
xor r14, r14
; gcrRegs +[r14]
- mov edi, dword ptr [rbp-0x40]
- mov dword ptr [rbp-0x3C], edi
+ mov edi, dword ptr [rbp-0x48]
+ mov dword ptr [rbp-0x44], edi
;; size=9 bbWeight=0.50 PerfScore 1.12
G_M21860_IG11: ; bbWeight=4, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref, isz
- mov edi, dword ptr [rbp-0x40]
- mov eax, dword ptr [rbp-0x28]
+ mov edi, dword ptr [rbp-0x48]
+ mov eax, dword ptr [rbp-0x30]
cmp edi, eax
jge SHORT G_M21860_IG15
;; size=10 bbWeight=4 PerfScore 13.00
G_M21860_IG12: ; bbWeight=3.82, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref, isz
cmp edi, eax
- jae G_M21860_IG22
- mov rax, bword ptr [rbp-0x30]
+ jae G_M21860_IG20
+ mov rax, bword ptr [rbp-0x38]
; byrRegs +[rax]
mov edi, edi
movzx rdi, word ptr [rax+2*rdi]
@@ -166,7 +170,7 @@ G_M21860_IG12: ; bbWeight=3.82, gcrefRegs=C000 {r14 r15}, byrefRegs=0000
; byrRegs -[rax]
; gcr arg pop 0
test eax, eax
- jne G_M21860_IG25
+ jne G_M21860_IG23
;; size=40 bbWeight=3.82 PerfScore 38.18
G_M21860_IG13: ; bbWeight=0.50, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref, isz
jmp SHORT G_M21860_IG15
@@ -175,61 +179,27 @@ G_M21860_IG14: ; bbWeight=3.82, gcrefRegs=C000 {r14 r15}, byrefRegs=0000
mov edi, edi
mov rax, 0xD1FFAB1E ; static handle
test byte ptr [rdi+rax], 128
- jne G_M21860_IG25
+ jne G_M21860_IG23
;; size=22 bbWeight=3.82 PerfScore 17.18
G_M21860_IG15: ; bbWeight=0.50, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref
- mov edi, dword ptr [rbp-0x40]
- cmp edi, dword ptr [rbp-0x28]
- jl G_M21860_IG26
+ mov edi, dword ptr [rbp-0x48]
+ cmp edi, dword ptr [rbp-0x30]
+ jl G_M21860_IG24
xor r13d, r13d
;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M21860_IG16: ; bbWeight=0.50, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref, isz
+G_M21860_IG16: ; bbWeight=0.50, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref
movzx rdi, r13w
call [System.Reflection.TypeNameParser:CharToToken(ushort):int]
; gcr arg pop 0
- mov ebx, eax
- test ebx, ebx
- je SHORT G_M21860_IG19
- cmp ebx, 7
- je SHORT G_M21860_IG17
- lea rdi, [rbp-0x60]
- call [System.Reflection.TypeNameParser:Skip():this]
- ; gcrRegs -[r14]
- ; gcr arg pop 0
- ;; size=31 bbWeight=0.50 PerfScore 4.75
-G_M21860_IG17: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref
- cmp ebx, 3
- jne G_M21860_IG27
- ;; size=9 bbWeight=0.50 PerfScore 0.62
-G_M21860_IG18: ; bbWeight=0, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref, isz
- lea rdi, [rbp-0x60]
- call [System.Reflection.TypeNameParser:CheckTopLevelAssemblyQualifiedName():ubyte:this]
- ; gcr arg pop 0
- test eax, eax
- je G_M21860_IG24
- lea rdi, [rbp-0x60]
- call [System.Reflection.TypeNameParser:GetNextAssemblyName():System.String:this]
- ; gcrRegs +[rax]
- ; gcr arg pop 0
- mov r14, rax
- ; gcrRegs +[r14]
- test r14, r14
- je SHORT G_M21860_IG24
- lea rdi, [rbp-0x60]
- call [System.Reflection.TypeNameParser:get_Peek():int:this]
- ; gcrRegs -[rax]
- ; gcr arg pop 0
- xor edi, edi
- test eax, eax
- sete dil
- call [System.Diagnostics.Debug:Assert(ubyte)]
- ; gcr arg pop 0
- ;; size=60 bbWeight=0 PerfScore 0.00
-G_M21860_IG19: ; bbWeight=0.50, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref, isz
+ mov r12d, eax
+ test r12d, r12d
+ jne G_M21860_IG25
mov rsi, 0xD1FFAB1E ; System.Reflection.TypeNameParser+NamespaceTypeName
cmp qword ptr [r15], rsi
- jne SHORT G_M21860_IG28
- lea rsi, [rbp-0x60]
+ jne G_M21860_IG28
+ ;; size=41 bbWeight=0.50 PerfScore 4.50
...
+10 (+12.20%) : 538409.dasm - Runtime_49101:Test(int,int,int,int,int,int,int,int,int,float,float,float,float,float,float,float,float,float,System.Numerics.Vector3):int (FullOpts)
@@ -26,11 +26,12 @@
;* V15 arg15 [V15 ] ( 0, 0 ) float -> zero-ref single-def
;* V16 arg16 [V16 ] ( 0, 0 ) float -> zero-ref single-def
;* V17 arg17 [V17 ] ( 0, 0 ) float -> zero-ref single-def
-; V18 arg18 [V18,T01] ( 1, 1 ) simd12 -> [rsp+0x30] single-def <System.Numerics.Vector3>
+; V18 arg18 [V18,T02] ( 1, 1 ) simd12 -> [rsp+0x30] single-def <System.Numerics.Vector3>
;# V19 OutArgs [V19 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V20 tmp1 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V21 tmp2 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V22 cse0 [V22,T00] ( 3, 3 ) ref -> rsi "CSE - moderate"
+; V22 cse0 [V22,T00] ( 2, 2 ) int -> rdi "CSE - aggressive"
+; V23 cse1 [V23,T01] ( 3, 1.50) ref -> rsi "CSE - moderate"
;
; Lcl frame size = 8
@@ -46,7 +47,12 @@ G_M16340_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
vmovmskps rdi, xmm0
and edi, 7
cmp edi, 7
- je SHORT G_M16340_IG04
+ sete dil
+ movzx rdi, dil
+ test edi, edi
+ jne SHORT G_M16340_IG05
+ ;; size=41 bbWeight=1 PerfScore 14.00
+G_M16340_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rsi, 0xD1FFAB1E
; gcrRegs +[rsi]
mov rdi, rsi
@@ -55,22 +61,22 @@ G_M16340_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs -[rsi rdi]
; gcr arg pop 0
mov eax, 101
- ;; size=55 bbWeight=1 PerfScore 16.25
-G_M16340_IG03: ; bbWeight=1, epilog, nogc, extend
+ ;; size=24 bbWeight=0.50 PerfScore 1.88
+G_M16340_IG04: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 8
ret
- ;; size=5 bbWeight=1 PerfScore 1.25
-G_M16340_IG04: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=5 bbWeight=0.50 PerfScore 0.62
+G_M16340_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov eax, 100
;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M16340_IG05: ; bbWeight=0.50, epilog, nogc, extend
+G_M16340_IG06: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 8
ret
;; size=5 bbWeight=0.50 PerfScore 0.62
RWD00 dq 3F8000003F800000h, 000000003F800000h
-; Total bytes of code 82, prolog size 4, PerfScore 21.25, instruction count 19, allocated bytes for code 82 (MethodHash=48a0c02b) for method Runtime_49101:Test(int,int,int,int,int,int,int,int,int,float,float,float,float,float,float,float,float,float,System.Numerics.Vector3):int (FullOpts)
+; Total bytes of code 92, prolog size 4, PerfScore 20.25, instruction count 22, allocated bytes for code 92 (MethodHash=48a0c02b) for method Runtime_49101:Test(int,int,int,int,int,int,int,int,int,float,float,float,float,float,float,float,float,float,System.Numerics.Vector3):int (FullOpts)
; ============================================================
Unwind Info:
libraries.crossgen2.linux.x64.checked.mch
-32 (-30.19%) : 226656.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan1[uint],System.ReadOnlySpan
1[uint]):int (FullOpts)
@@ -10,14 +10,16 @@
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[uint]>
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[uint]>
-; V02 loc0 [V02,T00] ( 7, 24.50) int -> registers
+; V02 loc0 [V02,T00] ( 7, 24.50) int -> rax
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T01] ( 6, 20 ) int -> r8 "dup spill"
-; V05 tmp2 [V05,T05] ( 3, 5.50) byref -> rdi single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V06 tmp3 [V06,T04] ( 5, 7 ) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP
-; V07 tmp4 [V07,T06] ( 3, 5.50) byref -> rdx single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V08 tmp5 [V08,T03] ( 6, 7.50) int -> rcx single-def "field V01._length (fldOffset=0x8)" P-INDEP
-; V09 cse0 [V09,T02] ( 6, 13.50) long -> r9 multi-def "CSE - aggressive"
+; V04 tmp1 [V04,T01] ( 2, 16 ) int -> rax "dup spill"
+; V05 tmp2 [V05,T07] ( 2, 5 ) byref -> rdi single-def "field V00._reference (fldOffset=0x0)" P-INDEP
+; V06 tmp3 [V06,T04] ( 4, 6.50) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V07 tmp4 [V07,T08] ( 2, 5 ) byref -> rdx single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V08 tmp5 [V08,T03] ( 5, 7 ) int -> rcx single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V09 cse0 [V09,T05] ( 3, 8.50) int -> r9 "CSE - aggressive"
+; V10 cse1 [V10,T06] ( 3, 8.50) int -> r8 "CSE - aggressive"
+; V11 cse2 [V11,T02] ( 3, 12 ) long -> r8 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -33,72 +35,59 @@ G_M264_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, b
G_M264_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rdx rdi]
cmp esi, ecx
- jl SHORT G_M264_IG12
- jmp SHORT G_M264_IG10
+ jl SHORT G_M264_IG11
+ jmp SHORT G_M264_IG07
;; size=6 bbWeight=0.50 PerfScore 1.62
G_M264_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, byref
; byrRegs +[rdx rdi]
- mov r8d, ecx
- ;; size=3 bbWeight=0.50 PerfScore 0.12
+ mov eax, ecx
+ ;; size=2 bbWeight=0.50 PerfScore 0.12
G_M264_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, byref, isz
- dec r8d
- mov eax, r8d
- test eax, eax
- jl SHORT G_M264_IG06
+ dec eax
+ js SHORT G_M264_IG09
cmp eax, esi
- jae SHORT G_M264_IG14
- mov r9d, eax
- mov r10d, dword ptr [rdi+4*r9]
- cmp eax, ecx
- jae SHORT G_M264_IG14
- cmp r10d, dword ptr [rdx+4*r9]
- je SHORT G_M264_IG08
- ;; size=31 bbWeight=4 PerfScore 42.00
-G_M264_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, byref, isz
- test r8d, r8d
- jge SHORT G_M264_IG09
- xor eax, eax
- ;; size=7 bbWeight=0.50 PerfScore 0.75
-G_M264_IG07: ; bbWeight=0.50, epilog, nogc, extend
- pop rbp
- ret
- ;; size=2 bbWeight=0.50 PerfScore 0.75
-G_M264_IG08: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, gcvars, byref, isz
+ jae SHORT G_M264_IG13
mov r8d, eax
- jmp SHORT G_M264_IG05
- ;; size=5 bbWeight=2 PerfScore 4.50
-G_M264_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, byref, isz
- cmp r8d, esi
- jae SHORT G_M264_IG14
- mov r9d, r8d
- mov eax, dword ptr [rdi+4*r9]
- cmp r8d, ecx
- jae SHORT G_M264_IG14
- cmp eax, dword ptr [rdx+4*r9]
- jb SHORT G_M264_IG12
- ;; size=23 bbWeight=0.50 PerfScore 4.38
-G_M264_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov r9d, dword ptr [rdi+4*r8]
+ cmp eax, ecx
+ jae SHORT G_M264_IG13
+ mov r8d, dword ptr [rdx+4*r8]
+ cmp r9d, r8d
+ je SHORT G_M264_IG05
+ ;; size=28 bbWeight=4 PerfScore 37.00
+G_M264_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rdx rdi]
+ cmp r8d, r9d
+ ja SHORT G_M264_IG11
+ ;; size=5 bbWeight=0.50 PerfScore 0.62
+G_M264_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov eax, 1
;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M264_IG11: ; bbWeight=0.50, epilog, nogc, extend
+G_M264_IG08: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
ret
;; size=2 bbWeight=0.50 PerfScore 0.75
-G_M264_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M264_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ xor eax, eax
+ ;; size=2 bbWeight=0.50 PerfScore 0.12
+G_M264_IG10: ; bbWeight=0.50, epilog, nogc, extend
+ pop rbp
+ ret
+ ;; size=2 bbWeight=0.50 PerfScore 0.75
+G_M264_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov eax, -1
;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M264_IG13: ; bbWeight=0.50, epilog, nogc, extend
+G_M264_IG12: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
ret
;; size=2 bbWeight=0.50 PerfScore 0.75
-G_M264_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M264_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call [CORINFO_HELP_RNGCHKFAIL]
; gcr arg pop 0
int3
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 106, prolog size 4, PerfScore 58.38, instruction count 43, allocated bytes for code 106 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
+; Total bytes of code 74, prolog size 4, PerfScore 44.50, instruction count 32, allocated bytes for code 74 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
; ============================================================
Unwind Info:
-29 (-25.66%) : 127211.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
@@ -8,15 +8,17 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T04] ( 5, 7.50) ref -> rdi class-hnd single-def <System.String>
-; V01 arg1 [V01,T02] ( 6, 11 ) ref -> rsi class-hnd single-def <System.String>
-; V02 arg2 [V02,T05] ( 4, 6.50) int -> rdx single-def
-; V03 arg3 [V03,T07] ( 5, 4.50) int -> rcx single-def
-; V04 loc0 [V04,T03] ( 6, 13 ) int -> r8
-; V05 loc1 [V05,T00] ( 11, 27.50) int -> r9
+; V00 arg0 [V00,T04] ( 4, 7 ) ref -> rdi class-hnd single-def <System.String>
+; V01 arg1 [V01,T02] ( 4, 10 ) ref -> rsi class-hnd single-def <System.String>
+; V02 arg2 [V02,T07] ( 3, 6 ) int -> rdx single-def
+; V03 arg3 [V03,T08] ( 5, 4.50) int -> rcx single-def
+; V04 loc0 [V04,T01] ( 5, 12 ) int -> r8
+; V05 loc1 [V05,T00] ( 7, 25 ) int -> r9
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 cse0 [V07,T06] ( 5, 7 ) int -> rax "CSE - aggressive"
-; V08 cse1 [V08,T01] ( 6, 13.50) int -> r11 multi-def "CSE - aggressive"
+; V07 cse0 [V07,T05] ( 3, 8.50) int -> r11 "CSE - aggressive"
+; V08 cse1 [V08,T06] ( 3, 8.50) int -> r10 "CSE - aggressive"
+; V09 cse2 [V09,T09] ( 4, 6.50) int -> rax "CSE - aggressive"
+; V10 cse3 [V10,T03] ( 3, 12 ) int -> r11 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -38,54 +40,43 @@ G_M6389_IG03: ; bbWeight=2, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {},
;; size=3 bbWeight=2 PerfScore 0.50
G_M6389_IG04: ; bbWeight=8, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, isz
cmp r9d, r8d
- jge SHORT G_M6389_IG06
+ jge SHORT G_M6389_IG08
;; size=5 bbWeight=8 PerfScore 10.00
G_M6389_IG05: ; bbWeight=4, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, isz
cmp r9d, eax
- jae SHORT G_M6389_IG11
+ jae SHORT G_M6389_IG10
mov r10d, r9d
movzx r10, word ptr [rdi+2*r10+0x0C]
lea r11d, [rdx+r9]
cmp r11d, dword ptr [rsi+0x08]
- jae SHORT G_M6389_IG11
- cmp r10w, word ptr [rsi+2*r11+0x0C]
+ jae SHORT G_M6389_IG10
+ movzx r11, word ptr [rsi+2*r11+0x0C]
+ cmp r10d, r11d
je SHORT G_M6389_IG03
- ;; size=32 bbWeight=4 PerfScore 48.00
-G_M6389_IG06: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, isz
- cmp r9d, r8d
- jge SHORT G_M6389_IG09
- ;; size=5 bbWeight=1 PerfScore 1.25
-G_M6389_IG07: ; bbWeight=0.50, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, isz
- cmp r9d, eax
- jae SHORT G_M6389_IG11
- mov eax, r9d
- movzx rax, word ptr [rdi+2*rax+0x0C]
- lea r11d, [rdx+r9]
- cmp r11d, dword ptr [rsi+0x08]
- jae SHORT G_M6389_IG11
- mov ecx, r11d
- movzx rcx, word ptr [rsi+2*rcx+0x0C]
- sub eax, ecx
- ;; size=33 bbWeight=0.50 PerfScore 5.25
-G_M6389_IG08: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=35 bbWeight=4 PerfScore 45.00
+G_M6389_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rsi rdi]
+ mov eax, r10d
+ sub eax, r11d
+ ;; size=6 bbWeight=0.50 PerfScore 0.25
+G_M6389_IG07: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
ret
;; size=2 bbWeight=0.50 PerfScore 0.75
-G_M6389_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[rsi rdi]
+G_M6389_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
sub eax, ecx
;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M6389_IG10: ; bbWeight=0.50, epilog, nogc, extend
+G_M6389_IG09: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
ret
;; size=2 bbWeight=0.50 PerfScore 0.75
-G_M6389_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M6389_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call [CORINFO_HELP_RNGCHKFAIL]
; gcr arg pop 0
int3
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 113, prolog size 4, PerfScore 72.88, instruction count 39, allocated bytes for code 113 (MethodHash=2d88e70a) for method System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
+; Total bytes of code 84, prolog size 4, PerfScore 63.62, instruction count 30, allocated bytes for code 84 (MethodHash=2d88e70a) for method System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
; ============================================================
Unwind Info:
-16 (-9.30%) : 141961.dasm - System.Configuration.Internal.WriteFileContext:ReplaceFile(System.String,System.String):this (FullOpts)
@@ -11,31 +11,29 @@
; V00 this [V00,T02] ( 3, 10 ) ref -> r15 this class-hnd single-def <System.Configuration.Internal.WriteFileContext>
; V01 arg1 [V01,T03] ( 3, 10 ) ref -> r14 class-hnd single-def <System.String>
; V02 arg2 [V02,T00] ( 6, 18 ) ref -> rbx class-hnd single-def <System.String>
-; V03 loc0 [V03,T01] ( 3, 17 ) ubyte -> r12
+; V03 loc0 [V03,T01] ( 2, 16 ) ubyte -> rax
; V04 loc1 [V04,T04] ( 4, 9 ) int -> r13
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V06 tmp1 [V06,T05] ( 3, 0 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
; V07 tmp2 [V07,T06] ( 2, 0 ) ref -> rdi single-def "argument with side effect"
; V08 tmp3 [V08,T07] ( 2, 0 ) ref -> rsi single-def "argument with side effect"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M51267_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
push r15
push r14
push r13
- push r12
push rbx
- push rax
- lea rbp, [rsp+0x30]
+ lea rbp, [rsp+0x20]
mov r15, rdi
; gcrRegs +[r15]
mov r14, rsi
; gcrRegs +[r14]
mov rbx, rdx
; gcrRegs +[rbx]
- ;; size=25 bbWeight=1 PerfScore 8.25
+ ;; size=22 bbWeight=1 PerfScore 6.25
G_M51267_IG02: ; bbWeight=1, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
xor r13d, r13d
jmp SHORT G_M51267_IG04
@@ -54,10 +52,9 @@ G_M51267_IG04: ; bbWeight=8, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000
; gcrRegs +[rdx]
call [<unknown method>]
; gcrRegs -[rdx rsi rdi]
- mov r12d, eax
- test r12d, r12d
- jne SHORT G_M51267_IG06
- ;; size=23 bbWeight=8 PerfScore 42.00
+ test eax, eax
+ jne SHORT G_M51267_IG07
+ ;; size=19 bbWeight=8 PerfScore 40.00
G_M51267_IG05: ; bbWeight=4, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
cmp r13d, 0x2710
jge SHORT G_M51267_IG08
@@ -72,24 +69,22 @@ G_M51267_IG05: ; bbWeight=4, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000
call [<unknown method>]
; gcrRegs -[rdi]
test eax, eax
- je SHORT G_M51267_IG03
+ jne SHORT G_M51267_IG08
;; size=35 bbWeight=4 PerfScore 41.00
-G_M51267_IG06: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r14-r15]
- test r12d, r12d
- je SHORT G_M51267_IG08
- ;; size=5 bbWeight=1 PerfScore 1.25
-G_M51267_IG07: ; bbWeight=1, epilog, nogc, extend
- add rsp, 8
+G_M51267_IG06: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
+ jmp SHORT G_M51267_IG03
+ ;; size=2 bbWeight=2 PerfScore 4.00
+G_M51267_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ; gcrRegs -[rbx r14-r15]
pop rbx
- pop r12
pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=15 bbWeight=1 PerfScore 4.25
+ ;; size=9 bbWeight=1 PerfScore 3.50
G_M51267_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs +[rbx]
call [CORINFO_HELP_READYTORUN_NEW]
; gcrRegs +[rax]
mov r15, rax
@@ -114,7 +109,7 @@ G_M51267_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {
int3
;; size=49 bbWeight=0 PerfScore 0.00
-; Total bytes of code 172, prolog size 16, PerfScore 106.00, instruction count 55, allocated bytes for code 172 (MethodHash=338d37bc) for method System.Configuration.Internal.WriteFileContext:ReplaceFile(System.String,System.String):this (FullOpts)
+; Total bytes of code 156, prolog size 13, PerfScore 104.00, instruction count 49, allocated bytes for code 156 (MethodHash=338d37bc) for method System.Configuration.Internal.WriteFileContext:ReplaceFile(System.String,System.String):this (FullOpts)
; ============================================================
Unwind Info:
@@ -122,14 +117,12 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x0B
- CountOfUnwindCodes: 7
+ SizeOfProlog : 0x08
+ CountOfUnwindCodes: 5
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x0B UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
- CodeOffset: 0x0A UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x09 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r12 (12)
+ CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r13 (13)
CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
+3 (+11.11%) : 174846.dasm - System.Security.Cryptography.SHA1CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
@@ -9,9 +9,10 @@
; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 4, 4 ) ref -> rbx this class-hnd single-def <System.Security.Cryptography.SHA1CryptoServiceProvider>
+; V00 this [V00,T00] ( 4, 3 ) ref -> rbx this class-hnd single-def <System.Security.Cryptography.SHA1CryptoServiceProvider>
; V01 arg1 [V01,T01] ( 3, 3 ) ubyte -> rsi single-def
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+; V03 cse0 [V03,T02] ( 2, 2 ) int -> rdi "CSE - aggressive"
;
; Lcl frame size = 0
@@ -21,8 +22,11 @@ G_M54186_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs +[rbx]
;; size=4 bbWeight=1 PerfScore 1.25
G_M54186_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- test sil, sil
- je SHORT G_M54186_IG03
+ movzx rdi, sil
+ test edi, edi
+ je SHORT G_M54186_IG04
+ ;; size=8 bbWeight=1 PerfScore 1.50
+G_M54186_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rdi, gword ptr [rbx+0x20]
; gcrRegs +[rdi]
cmp dword ptr [rdi], edi
@@ -30,14 +34,14 @@ G_M54186_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
; gcrRegs -[rdi]
; gcr arg pop 0
mov byte ptr [rbx+0x18], 1
- ;; size=21 bbWeight=1 PerfScore 10.25
-G_M54186_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=16 bbWeight=0.50 PerfScore 4.50
+G_M54186_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rbx]
pop rbx
ret
;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 27, prolog size 1, PerfScore 13.00, instruction count 10, allocated bytes for code 27 (MethodHash=9cf42c55) for method System.Security.Cryptography.SHA1CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
+; Total bytes of code 30, prolog size 1, PerfScore 8.75, instruction count 11, allocated bytes for code 30 (MethodHash=9cf42c55) for method System.Security.Cryptography.SHA1CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
; ============================================================
Unwind Info:
+3 (+11.11%) : 174939.dasm - System.Security.Cryptography.SHA512CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
@@ -9,9 +9,10 @@
; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 4, 4 ) ref -> rbx this class-hnd single-def <System.Security.Cryptography.SHA512CryptoServiceProvider>
+; V00 this [V00,T00] ( 4, 3 ) ref -> rbx this class-hnd single-def <System.Security.Cryptography.SHA512CryptoServiceProvider>
; V01 arg1 [V01,T01] ( 3, 3 ) ubyte -> rsi single-def
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+; V03 cse0 [V03,T02] ( 2, 2 ) int -> rdi "CSE - aggressive"
;
; Lcl frame size = 0
@@ -21,8 +22,11 @@ G_M31021_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs +[rbx]
;; size=4 bbWeight=1 PerfScore 1.25
G_M31021_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- test sil, sil
- je SHORT G_M31021_IG03
+ movzx rdi, sil
+ test edi, edi
+ je SHORT G_M31021_IG04
+ ;; size=8 bbWeight=1 PerfScore 1.50
+G_M31021_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rdi, gword ptr [rbx+0x20]
; gcrRegs +[rdi]
cmp dword ptr [rdi], edi
@@ -30,14 +34,14 @@ G_M31021_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
; gcrRegs -[rdi]
; gcr arg pop 0
mov byte ptr [rbx+0x18], 1
- ;; size=21 bbWeight=1 PerfScore 10.25
-G_M31021_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=16 bbWeight=0.50 PerfScore 4.50
+G_M31021_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rbx]
pop rbx
ret
;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 27, prolog size 1, PerfScore 13.00, instruction count 10, allocated bytes for code 27 (MethodHash=150886d2) for method System.Security.Cryptography.SHA512CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
+; Total bytes of code 30, prolog size 1, PerfScore 8.75, instruction count 11, allocated bytes for code 30 (MethodHash=150886d2) for method System.Security.Cryptography.SHA512CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
; ============================================================
Unwind Info:
+3 (+11.11%) : 174908.dasm - System.Security.Cryptography.SHA384CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
@@ -9,9 +9,10 @@
; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 4, 4 ) ref -> rbx this class-hnd single-def <System.Security.Cryptography.SHA384CryptoServiceProvider>
+; V00 this [V00,T00] ( 4, 3 ) ref -> rbx this class-hnd single-def <System.Security.Cryptography.SHA384CryptoServiceProvider>
; V01 arg1 [V01,T01] ( 3, 3 ) ubyte -> rsi single-def
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+; V03 cse0 [V03,T02] ( 2, 2 ) int -> rdi "CSE - aggressive"
;
; Lcl frame size = 0
@@ -21,8 +22,11 @@ G_M59236_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs +[rbx]
;; size=4 bbWeight=1 PerfScore 1.25
G_M59236_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- test sil, sil
- je SHORT G_M59236_IG03
+ movzx rdi, sil
+ test edi, edi
+ je SHORT G_M59236_IG04
+ ;; size=8 bbWeight=1 PerfScore 1.50
+G_M59236_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rdi, gword ptr [rbx+0x20]
; gcrRegs +[rdi]
cmp dword ptr [rdi], edi
@@ -30,14 +34,14 @@ G_M59236_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
; gcrRegs -[rdi]
; gcr arg pop 0
mov byte ptr [rbx+0x18], 1
- ;; size=21 bbWeight=1 PerfScore 10.25
-G_M59236_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=16 bbWeight=0.50 PerfScore 4.50
+G_M59236_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rbx]
pop rbx
ret
;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 27, prolog size 1, PerfScore 13.00, instruction count 10, allocated bytes for code 27 (MethodHash=ebc3189b) for method System.Security.Cryptography.SHA384CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
+; Total bytes of code 30, prolog size 1, PerfScore 8.75, instruction count 11, allocated bytes for code 30 (MethodHash=ebc3189b) for method System.Security.Cryptography.SHA384CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
; ============================================================
Unwind Info:
libraries.pmi.linux.x64.checked.mch
-36 (-39.56%) : 63028.dasm - ILCompiler.IBC.IBCProfileParser+IBCBlobKey:Equals(System.Object):ubyte:this (FullOpts)
@@ -8,87 +8,66 @@
; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 4, 3 ) byref -> r15 this single-def
-; V01 arg1 [V01,T00] ( 6, 4.25) ref -> rbx class-hnd single-def <System.Object>
+; V00 this [V00,T01] ( 4, 3 ) byref -> rdi this single-def
+; V01 arg1 [V01,T00] ( 5, 4 ) ref -> rsi class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03,T02] ( 3, 4.50) ref -> rax class-hnd "spilling QMark2" <ILCompiler.IBC.IBCProfileParser+IBCBlobKey>
; V04 tmp2 [V04,T03] ( 3, 1.50) ubyte -> rax "Inline return value spill temp"
;* V05 tmp3 [V05 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <ILCompiler.IBC.IBCProfileParser+IBCBlobKey>
-; V06 tmp4 [V06,T06] ( 2, 1 ) int -> rax "field V05.Token (fldOffset=0x0)" P-INDEP
-; V07 tmp5 [V07,T07] ( 2, 1 ) int -> rcx "field V05.Type (fldOffset=0x4)" P-INDEP
-; V08 cse0 [V08,T04] ( 4, 1.25) long -> rdi "CSE - moderate"
-; V09 cse1 [V09,T05] ( 3, 1 ) long -> rsi "CSE - moderate"
+; V06 tmp4 [V06,T04] ( 2, 1 ) int -> rax "field V05.Token (fldOffset=0x0)" P-INDEP
+; V07 tmp5 [V07,T05] ( 2, 1 ) int -> rcx "field V05.Type (fldOffset=0x4)" P-INDEP
;
; Lcl frame size = 0
G_M25636_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
- push r15
- push rbx
- lea rbp, [rsp+0x10]
- mov r15, rdi
- ; byrRegs +[r15]
- mov rbx, rsi
- ; gcrRegs +[rbx]
- ;; size=15 bbWeight=1 PerfScore 4.00
-G_M25636_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, byref, isz
- mov rax, rbx
+ mov rbp, rsp
+ ;; size=4 bbWeight=1 PerfScore 1.25
+G_M25636_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi}, byref, isz
+ ; gcrRegs +[rsi]
+ ; byrRegs +[rdi]
+ mov rax, rsi
; gcrRegs +[rax]
test rax, rax
je SHORT G_M25636_IG04
;; size=8 bbWeight=1 PerfScore 1.50
-G_M25636_IG03: ; bbWeight=0.25, gcrefRegs=0009 {rax rbx}, byrefRegs=8000 {r15}, byref, isz
- mov rsi, qword ptr [rax]
- mov rdi, 0xD1FFAB1E ; ILCompiler.IBC.IBCProfileParser+IBCBlobKey
- cmp rsi, rdi
+G_M25636_IG03: ; bbWeight=0.25, gcrefRegs=0041 {rax rsi}, byrefRegs=0080 {rdi}, byref, isz
+ mov rcx, 0xD1FFAB1E ; ILCompiler.IBC.IBCProfileParser+IBCBlobKey
+ cmp qword ptr [rax], rcx
je SHORT G_M25636_IG06
- ;; size=18 bbWeight=0.25 PerfScore 0.88
+ ;; size=15 bbWeight=0.25 PerfScore 1.06
G_M25636_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax rbx]
- ; byrRegs -[r15]
+ ; gcrRegs -[rax rsi]
+ ; byrRegs -[rdi]
xor eax, eax
;; size=2 bbWeight=0.50 PerfScore 0.12
G_M25636_IG05: ; bbWeight=0.50, epilog, nogc, extend
- pop rbx
- pop r15
pop rbp
ret
- ;; size=5 bbWeight=0.50 PerfScore 1.25
-G_M25636_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, gcvars, byref, isz
- ; gcrRegs +[rbx]
- ; byrRegs +[r15]
- cmp rsi, rdi
- je SHORT G_M25636_IG08
- ;; size=5 bbWeight=0.50 PerfScore 0.62
-G_M25636_IG07: ; bbWeight=0.25, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, byref
- mov rsi, rbx
+ ;; size=2 bbWeight=0.50 PerfScore 0.75
+G_M25636_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi}, gcvars, byref, isz
; gcrRegs +[rsi]
- call [CORINFO_HELP_UNBOX]
- ; gcrRegs -[rsi]
- ;; size=9 bbWeight=0.25 PerfScore 0.81
-G_M25636_IG08: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, byref, isz
- mov eax, dword ptr [rbx+0x08]
- mov ecx, dword ptr [rbx+0x0C]
- cmp eax, dword ptr [r15]
- jne SHORT G_M25636_IG09
+ ; byrRegs +[rdi]
+ mov eax, dword ptr [rsi+0x08]
+ mov ecx, dword ptr [rsi+0x0C]
+ cmp eax, dword ptr [rdi]
+ jne SHORT G_M25636_IG07
xor eax, eax
- cmp ecx, dword ptr [r15+0x04]
+ cmp ecx, dword ptr [rdi+0x04]
sete al
- jmp SHORT G_M25636_IG10
- ;; size=22 bbWeight=0.50 PerfScore 7.12
-G_M25636_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbx]
- ; byrRegs -[r15]
+ jmp SHORT G_M25636_IG08
+ ;; size=20 bbWeight=0.50 PerfScore 7.12
+G_M25636_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rsi]
+ ; byrRegs -[rdi]
xor eax, eax
;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M25636_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- pop rbx
- pop r15
+G_M25636_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
pop rbp
ret
- ;; size=5 bbWeight=0.50 PerfScore 1.25
+ ;; size=2 bbWeight=0.50 PerfScore 0.75
-; Total bytes of code 91, prolog size 9, PerfScore 17.69, instruction count 35, allocated bytes for code 91 (MethodHash=acaf9bdb) for method ILCompiler.IBC.IBCProfileParser+IBCBlobKey:Equals(System.Object):ubyte:this (FullOpts)
+; Total bytes of code 55, prolog size 4, PerfScore 12.69, instruction count 22, allocated bytes for code 55 (MethodHash=acaf9bdb) for method ILCompiler.IBC.IBCProfileParser+IBCBlobKey:Equals(System.Object):ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -96,11 +75,9 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x04
- CountOfUnwindCodes: 3
+ SizeOfProlog : 0x01
+ CountOfUnwindCodes: 1
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
-35 (-38.04%) : 58829.dasm - Microsoft.Diagnostics.Tracing.CLRRuntimeActivityComputer+IdOfIncompleteAction:Equals(System.Object):ubyte:this (FullOpts)
@@ -8,87 +8,66 @@
; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 4, 3 ) byref -> r15 this single-def
-; V01 arg1 [V01,T00] ( 6, 4.25) ref -> rbx class-hnd single-def <System.Object>
+; V00 this [V00,T01] ( 4, 3 ) byref -> rdi this single-def
+; V01 arg1 [V01,T00] ( 5, 4 ) ref -> rsi class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03,T02] ( 3, 4.50) ref -> rax class-hnd "spilling QMark2" <Microsoft.Diagnostics.Tracing.CLRRuntimeActivityComputer+IdOfIncompleteAction>
; V04 tmp2 [V04,T03] ( 3, 1.50) ubyte -> rax "Inline return value spill temp"
;* V05 tmp3 [V05 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <Microsoft.Diagnostics.Tracing.CLRRuntimeActivityComputer+IdOfIncompleteAction>
-; V06 tmp4 [V06,T06] ( 2, 1 ) long -> rax "field V05.Identifier (fldOffset=0x0)" P-INDEP
-; V07 tmp5 [V07,T07] ( 2, 1 ) int -> rcx "field V05.ThreadID (fldOffset=0x8)" P-INDEP
-; V08 cse0 [V08,T04] ( 4, 1.25) long -> rdi "CSE - moderate"
-; V09 cse1 [V09,T05] ( 3, 1 ) long -> rsi "CSE - moderate"
+; V06 tmp4 [V06,T04] ( 2, 1 ) long -> rax "field V05.Identifier (fldOffset=0x0)" P-INDEP
+; V07 tmp5 [V07,T05] ( 2, 1 ) int -> rcx "field V05.ThreadID (fldOffset=0x8)" P-INDEP
;
; Lcl frame size = 0
G_M52071_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
- push r15
- push rbx
- lea rbp, [rsp+0x10]
- mov r15, rdi
- ; byrRegs +[r15]
- mov rbx, rsi
- ; gcrRegs +[rbx]
- ;; size=15 bbWeight=1 PerfScore 4.00
-G_M52071_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, byref, isz
- mov rax, rbx
+ mov rbp, rsp
+ ;; size=4 bbWeight=1 PerfScore 1.25
+G_M52071_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi}, byref, isz
+ ; gcrRegs +[rsi]
+ ; byrRegs +[rdi]
+ mov rax, rsi
; gcrRegs +[rax]
test rax, rax
je SHORT G_M52071_IG04
;; size=8 bbWeight=1 PerfScore 1.50
-G_M52071_IG03: ; bbWeight=0.25, gcrefRegs=0009 {rax rbx}, byrefRegs=8000 {r15}, byref, isz
- mov rsi, qword ptr [rax]
- mov rdi, 0xD1FFAB1E ; Microsoft.Diagnostics.Tracing.CLRRuntimeActivityComputer+IdOfIncompleteAction
- cmp rsi, rdi
+G_M52071_IG03: ; bbWeight=0.25, gcrefRegs=0041 {rax rsi}, byrefRegs=0080 {rdi}, byref, isz
+ mov rcx, 0xD1FFAB1E ; Microsoft.Diagnostics.Tracing.CLRRuntimeActivityComputer+IdOfIncompleteAction
+ cmp qword ptr [rax], rcx
je SHORT G_M52071_IG06
- ;; size=18 bbWeight=0.25 PerfScore 0.88
+ ;; size=15 bbWeight=0.25 PerfScore 1.06
G_M52071_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax rbx]
- ; byrRegs -[r15]
+ ; gcrRegs -[rax rsi]
+ ; byrRegs -[rdi]
xor eax, eax
;; size=2 bbWeight=0.50 PerfScore 0.12
G_M52071_IG05: ; bbWeight=0.50, epilog, nogc, extend
- pop rbx
- pop r15
pop rbp
ret
- ;; size=5 bbWeight=0.50 PerfScore 1.25
-G_M52071_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, gcvars, byref, isz
- ; gcrRegs +[rbx]
- ; byrRegs +[r15]
- cmp rsi, rdi
- je SHORT G_M52071_IG08
- ;; size=5 bbWeight=0.50 PerfScore 0.62
-G_M52071_IG07: ; bbWeight=0.25, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, byref
- mov rsi, rbx
+ ;; size=2 bbWeight=0.50 PerfScore 0.75
+G_M52071_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi}, gcvars, byref, isz
; gcrRegs +[rsi]
- call [CORINFO_HELP_UNBOX]
- ; gcrRegs -[rsi]
- ;; size=9 bbWeight=0.25 PerfScore 0.81
-G_M52071_IG08: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, byref, isz
- mov rax, qword ptr [rbx+0x08]
- mov ecx, dword ptr [rbx+0x10]
- cmp qword ptr [r15], rax
- jne SHORT G_M52071_IG09
+ ; byrRegs +[rdi]
+ mov rax, qword ptr [rsi+0x08]
+ mov ecx, dword ptr [rsi+0x10]
+ cmp qword ptr [rdi], rax
+ jne SHORT G_M52071_IG07
xor eax, eax
- cmp dword ptr [r15+0x08], ecx
+ cmp dword ptr [rdi+0x08], ecx
sete al
- jmp SHORT G_M52071_IG10
- ;; size=23 bbWeight=0.50 PerfScore 7.12
-G_M52071_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbx]
- ; byrRegs -[r15]
+ jmp SHORT G_M52071_IG08
+ ;; size=22 bbWeight=0.50 PerfScore 7.12
+G_M52071_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rsi]
+ ; byrRegs -[rdi]
xor eax, eax
;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M52071_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- pop rbx
- pop r15
+G_M52071_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
pop rbp
ret
- ;; size=5 bbWeight=0.50 PerfScore 1.25
+ ;; size=2 bbWeight=0.50 PerfScore 0.75
-; Total bytes of code 92, prolog size 9, PerfScore 17.69, instruction count 35, allocated bytes for code 92 (MethodHash=cc1f3498) for method Microsoft.Diagnostics.Tracing.CLRRuntimeActivityComputer+IdOfIncompleteAction:Equals(System.Object):ubyte:this (FullOpts)
+; Total bytes of code 57, prolog size 4, PerfScore 12.69, instruction count 22, allocated bytes for code 57 (MethodHash=cc1f3498) for method Microsoft.Diagnostics.Tracing.CLRRuntimeActivityComputer+IdOfIncompleteAction:Equals(System.Object):ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -96,11 +75,9 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x04
- CountOfUnwindCodes: 3
+ SizeOfProlog : 0x01
+ CountOfUnwindCodes: 1
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
-32 (-30.48%) : 291734.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan1[uint],System.ReadOnlySpan
1[uint]):int (FullOpts)
@@ -9,14 +9,16 @@
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[uint]>
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[uint]>
-; V02 loc0 [V02,T00] ( 7, 24.50) int -> registers
+; V02 loc0 [V02,T00] ( 7, 24.50) int -> rax
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T01] ( 6, 20 ) int -> r8 "dup spill"
-; V05 tmp2 [V05,T05] ( 3, 5.50) byref -> rdi single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V06 tmp3 [V06,T04] ( 5, 7 ) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP
-; V07 tmp4 [V07,T06] ( 3, 5.50) byref -> rdx single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V08 tmp5 [V08,T03] ( 6, 7.50) int -> rcx single-def "field V01._length (fldOffset=0x8)" P-INDEP
-; V09 cse0 [V09,T02] ( 6, 13.50) long -> r9 multi-def "CSE - aggressive"
+; V04 tmp1 [V04,T01] ( 2, 16 ) int -> rax "dup spill"
+; V05 tmp2 [V05,T07] ( 2, 5 ) byref -> rdi single-def "field V00._reference (fldOffset=0x0)" P-INDEP
+; V06 tmp3 [V06,T04] ( 4, 6.50) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V07 tmp4 [V07,T08] ( 2, 5 ) byref -> rdx single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V08 tmp5 [V08,T03] ( 5, 7 ) int -> rcx single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V09 cse0 [V09,T05] ( 3, 8.50) int -> r9 "CSE - aggressive"
+; V10 cse1 [V10,T06] ( 3, 8.50) int -> r8 "CSE - aggressive"
+; V11 cse2 [V11,T02] ( 3, 12 ) long -> r8 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -32,72 +34,59 @@ G_M264_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, b
G_M264_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rdx rdi]
cmp esi, ecx
- jl SHORT G_M264_IG12
- jmp SHORT G_M264_IG10
+ jl SHORT G_M264_IG11
+ jmp SHORT G_M264_IG07
;; size=6 bbWeight=0.50 PerfScore 1.62
G_M264_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, byref
; byrRegs +[rdx rdi]
- mov r8d, ecx
- ;; size=3 bbWeight=0.50 PerfScore 0.12
+ mov eax, ecx
+ ;; size=2 bbWeight=0.50 PerfScore 0.12
G_M264_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, byref, isz
- dec r8d
- mov eax, r8d
- test eax, eax
- jl SHORT G_M264_IG06
+ dec eax
+ js SHORT G_M264_IG09
cmp eax, esi
- jae SHORT G_M264_IG14
- mov r9d, eax
- mov r10d, dword ptr [rdi+4*r9]
- cmp eax, ecx
- jae SHORT G_M264_IG14
- cmp r10d, dword ptr [rdx+4*r9]
- je SHORT G_M264_IG08
- ;; size=31 bbWeight=4 PerfScore 42.00
-G_M264_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, byref, isz
- test r8d, r8d
- jge SHORT G_M264_IG09
- xor eax, eax
- ;; size=7 bbWeight=0.50 PerfScore 0.75
-G_M264_IG07: ; bbWeight=0.50, epilog, nogc, extend
- pop rbp
- ret
- ;; size=2 bbWeight=0.50 PerfScore 0.75
-G_M264_IG08: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, gcvars, byref, isz
+ jae SHORT G_M264_IG13
mov r8d, eax
- jmp SHORT G_M264_IG05
- ;; size=5 bbWeight=2 PerfScore 4.50
-G_M264_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, byref, isz
- cmp r8d, esi
- jae SHORT G_M264_IG14
- mov r9d, r8d
- mov eax, dword ptr [rdi+4*r9]
- cmp r8d, ecx
- jae SHORT G_M264_IG14
- cmp eax, dword ptr [rdx+4*r9]
- jb SHORT G_M264_IG12
- ;; size=23 bbWeight=0.50 PerfScore 4.38
-G_M264_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov r9d, dword ptr [rdi+4*r8]
+ cmp eax, ecx
+ jae SHORT G_M264_IG13
+ mov r8d, dword ptr [rdx+4*r8]
+ cmp r9d, r8d
+ je SHORT G_M264_IG05
+ ;; size=28 bbWeight=4 PerfScore 37.00
+G_M264_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rdx rdi]
+ cmp r8d, r9d
+ ja SHORT G_M264_IG11
+ ;; size=5 bbWeight=0.50 PerfScore 0.62
+G_M264_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov eax, 1
;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M264_IG11: ; bbWeight=0.50, epilog, nogc, extend
+G_M264_IG08: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
ret
;; size=2 bbWeight=0.50 PerfScore 0.75
-G_M264_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M264_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ xor eax, eax
+ ;; size=2 bbWeight=0.50 PerfScore 0.12
+G_M264_IG10: ; bbWeight=0.50, epilog, nogc, extend
+ pop rbp
+ ret
+ ;; size=2 bbWeight=0.50 PerfScore 0.75
+G_M264_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov eax, -1
;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M264_IG13: ; bbWeight=0.50, epilog, nogc, extend
+G_M264_IG12: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
ret
;; size=2 bbWeight=0.50 PerfScore 0.75
-G_M264_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M264_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 105, prolog size 4, PerfScore 58.38, instruction count 43, allocated bytes for code 105 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
+; Total bytes of code 73, prolog size 4, PerfScore 44.50, instruction count 32, allocated bytes for code 73 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
; ============================================================
Unwind Info:
+3 (+11.11%) : 223676.dasm - System.Security.Cryptography.SHA512CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
@@ -8,9 +8,10 @@
; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 4, 4 ) ref -> rbx this class-hnd single-def <System.Security.Cryptography.SHA512CryptoServiceProvider>
+; V00 this [V00,T00] ( 4, 3 ) ref -> rbx this class-hnd single-def <System.Security.Cryptography.SHA512CryptoServiceProvider>
; V01 arg1 [V01,T01] ( 3, 3 ) ubyte -> rsi single-def
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+; V03 cse0 [V03,T02] ( 2, 2 ) int -> rdi "CSE - aggressive"
;
; Lcl frame size = 0
@@ -20,8 +21,11 @@ G_M31021_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs +[rbx]
;; size=4 bbWeight=1 PerfScore 1.25
G_M31021_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- test sil, sil
- je SHORT G_M31021_IG03
+ movzx rdi, sil
+ test edi, edi
+ je SHORT G_M31021_IG04
+ ;; size=8 bbWeight=1 PerfScore 1.50
+G_M31021_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rdi, gword ptr [rbx+0x20]
; gcrRegs +[rdi]
cmp dword ptr [rdi], edi
@@ -29,14 +33,14 @@ G_M31021_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
; gcrRegs -[rdi]
; gcr arg pop 0
mov byte ptr [rbx+0x18], 1
- ;; size=21 bbWeight=1 PerfScore 10.25
-G_M31021_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=16 bbWeight=0.50 PerfScore 4.50
+G_M31021_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rbx]
pop rbx
ret
;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 27, prolog size 1, PerfScore 13.00, instruction count 10, allocated bytes for code 27 (MethodHash=150886d2) for method System.Security.Cryptography.SHA512CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
+; Total bytes of code 30, prolog size 1, PerfScore 8.75, instruction count 11, allocated bytes for code 30 (MethodHash=150886d2) for method System.Security.Cryptography.SHA512CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
; ============================================================
Unwind Info:
+14 (+16.09%) : 138480.dasm - System.Xml.DocumentXPathNavigator:get_ValueDocument():System.String:this (FullOpts)
@@ -14,15 +14,18 @@
;* V03 tmp1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Xml.XmlDocument>
; V04 tmp2 [V04,T03] ( 3, 4.25) ref -> rax single-def "CASTCLASS eval op1"
; V05 tmp3 [V05,T04] ( 3, 1.25) long -> rsi "fgMakeTemp is creating a new local variable"
-; V06 tmp4 [V06,T00] ( 6, 8.75) ref -> rdi class-hnd "spilling QMark2" <System.Xml.XmlElement>
-; V07 tmp5 [V07,T01] ( 3, 6 ) ref -> rdi single-def "argument with side effect"
+; V06 tmp4 [V06,T01] ( 5, 5.75) ref -> rdi class-hnd "spilling QMark2" <System.Xml.XmlElement>
+; V07 tmp5 [V07,T00] ( 3, 6 ) ref -> rdi single-def "argument with side effect"
+; V08 cse0 [V08,T05] ( 3, 1 ) long -> rbx "CSE - moderate"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M56653_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
push rbp
- mov rbp, rsp
- ;; size=4 bbWeight=1 PerfScore 1.25
+ push rbx
+ push rax
+ lea rbp, [rsp+0x10]
+ ;; size=8 bbWeight=1 PerfScore 3.50
G_M56653_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rdi]
mov rdi, gword ptr [rdi+0x08]
@@ -37,10 +40,11 @@ G_M56653_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byr
je SHORT G_M56653_IG07
;; size=30 bbWeight=1 PerfScore 10.75
G_M56653_IG03: ; bbWeight=0.25, gcrefRegs=0081 {rax rdi}, byrefRegs=0000 {}, byref, isz
+ mov rbx, qword ptr [rdi]
mov rsi, 0xD1FFAB1E ; System.Xml.XmlElement
- cmp qword ptr [rdi], rsi
+ cmp rbx, rsi
je SHORT G_M56653_IG05
- ;; size=15 bbWeight=0.25 PerfScore 1.06
+ ;; size=18 bbWeight=0.25 PerfScore 0.88
G_M56653_IG04: ; bbWeight=0.12, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
; gcrRegs -[rdi]
mov rdi, rsi
@@ -51,26 +55,29 @@ G_M56653_IG04: ; bbWeight=0.12, gcrefRegs=0001 {rax}, byrefRegs=0000 {},
mov rdi, rax
; gcrRegs +[rdi]
;; size=14 bbWeight=0.12 PerfScore 0.22
-G_M56653_IG05: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
+G_M56653_IG05: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
- mov rax, qword ptr [rdi]
- mov rax, qword ptr [rax+0x70]
- ;; size=7 bbWeight=1 PerfScore 4.00
-G_M56653_IG06: ; bbWeight=1, epilog, nogc, extend
+ mov rax, qword ptr [rbx+0x70]
+ ;; size=4 bbWeight=0.50 PerfScore 1.00
+G_M56653_IG06: ; bbWeight=0.50, epilog, nogc, extend
+ add rsp, 8
+ pop rbx
pop rbp
tail.jmp [rax+0x18]<unknown method>
- ;; size=5 bbWeight=1 PerfScore 2.50
+ ;; size=10 bbWeight=0.50 PerfScore 1.62
G_M56653_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rdi]
mov rax, 0xD1FFAB1E
; gcrRegs +[rax]
;; size=10 bbWeight=0.50 PerfScore 0.12
G_M56653_IG08: ; bbWeight=0.50, epilog, nogc, extend
+ add rsp, 8
+ pop rbx
pop rbp
ret
- ;; size=2 bbWeight=0.50 PerfScore 0.75
+ ;; size=7 bbWeight=0.50 PerfScore 1.12
-; Total bytes of code 87, prolog size 4, PerfScore 20.66, instruction count 24, allocated bytes for code 87 (MethodHash=6dd022b2) for method System.Xml.DocumentXPathNavigator:get_ValueDocument():System.String:this (FullOpts)
+; Total bytes of code 101, prolog size 8, PerfScore 19.22, instruction count 30, allocated bytes for code 101 (MethodHash=6dd022b2) for method System.Xml.DocumentXPathNavigator:get_ValueDocument():System.String:this (FullOpts)
; ============================================================
Unwind Info:
@@ -78,9 +85,11 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x01
- CountOfUnwindCodes: 1
+ SizeOfProlog : 0x03
+ CountOfUnwindCodes: 3
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
+ CodeOffset: 0x03 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
+ CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+14 (+17.95%) : 237018.dasm - Microsoft.Build.Internal.ProjectXmlUtilities:GetAttributeValue(Microsoft.Build.Construction.XmlElementWithLocation,System.String):System.String (FullOpts)
@@ -8,20 +8,23 @@
; 0 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T01] ( 4, 4 ) ref -> rdi class-hnd single-def <Microsoft.Build.Construction.XmlElementWithLocation>
-; V01 arg1 [V01,T03] ( 3, 3 ) ref -> rsi class-hnd single-def <System.String>
+; V00 arg0 [V00,T00] ( 4, 4 ) ref -> rdi class-hnd single-def <Microsoft.Build.Construction.XmlElementWithLocation>
+; V01 arg1 [V01,T02] ( 3, 3 ) ref -> rsi class-hnd single-def <System.String>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T02] ( 3, 6 ) ref -> rax single-def "CASTCLASS eval op1"
-; V04 tmp2 [V04,T04] ( 3, 3 ) long -> rsi "fgMakeTemp is creating a new local variable"
-; V05 tmp3 [V05,T00] ( 6, 8.50) ref -> rdi class-hnd "spilling QMark2" <Microsoft.Build.Construction.XmlAttributeWithLocation>
+; V03 tmp1 [V03,T03] ( 3, 4.25) ref -> rax single-def "CASTCLASS eval op1"
+; V04 tmp2 [V04,T04] ( 3, 1.25) long -> rsi "fgMakeTemp is creating a new local variable"
+; V05 tmp3 [V05,T01] ( 5, 5.75) ref -> rdi class-hnd "spilling QMark2" <Microsoft.Build.Construction.XmlAttributeWithLocation>
;* V06 tmp4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline return value spill temp" <System.String>
+; V07 cse0 [V07,T05] ( 3, 1 ) long -> rbx "CSE - moderate"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M36414_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
push rbp
- mov rbp, rsp
- ;; size=4 bbWeight=1 PerfScore 1.25
+ push rbx
+ push rax
+ lea rbp, [rsp+0x10]
+ ;; size=8 bbWeight=1 PerfScore 3.50
G_M36414_IG02: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rsi rdi]
mov rax, qword ptr [rdi]
@@ -34,11 +37,12 @@ G_M36414_IG02: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {},
je SHORT G_M36414_IG07
;; size=21 bbWeight=1 PerfScore 8.50
G_M36414_IG03: ; bbWeight=0.25, gcrefRegs=0081 {rax rdi}, byrefRegs=0000 {}, byref, isz
+ mov rbx, qword ptr [rdi]
mov rsi, 0xD1FFAB1E ; Microsoft.Build.Construction.XmlAttributeWithLocation
- cmp qword ptr [rdi], rsi
+ cmp rbx, rsi
je SHORT G_M36414_IG05
- ;; size=15 bbWeight=0.25 PerfScore 1.06
-G_M36414_IG04: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
+ ;; size=18 bbWeight=0.25 PerfScore 0.88
+G_M36414_IG04: ; bbWeight=0.12, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
; gcrRegs -[rdi]
mov rdi, rsi
mov rsi, rax
@@ -47,27 +51,30 @@ G_M36414_IG04: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byr
; gcrRegs -[rsi]
mov rdi, rax
; gcrRegs +[rdi]
- ;; size=14 bbWeight=1 PerfScore 1.75
+ ;; size=14 bbWeight=0.12 PerfScore 0.22
G_M36414_IG05: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
- mov rax, qword ptr [rdi]
- mov rax, qword ptr [rax+0x48]
- ;; size=7 bbWeight=0.50 PerfScore 2.00
+ mov rax, qword ptr [rbx+0x48]
+ ;; size=4 bbWeight=0.50 PerfScore 1.00
G_M36414_IG06: ; bbWeight=0.50, epilog, nogc, extend
+ add rsp, 8
+ pop rbx
pop rbp
tail.jmp [rax+0x30]<unknown method>
- ;; size=5 bbWeight=0.50 PerfScore 1.25
+ ;; size=10 bbWeight=0.50 PerfScore 1.62
G_M36414_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rdi]
mov rax, 0xD1FFAB1E
; gcrRegs +[rax]
;; size=10 bbWeight=0.50 PerfScore 0.12
G_M36414_IG08: ; bbWeight=0.50, epilog, nogc, extend
+ add rsp, 8
+ pop rbx
pop rbp
ret
- ;; size=2 bbWeight=0.50 PerfScore 0.75
+ ;; size=7 bbWeight=0.50 PerfScore 1.12
-; Total bytes of code 78, prolog size 4, PerfScore 16.69, instruction count 22, allocated bytes for code 78 (MethodHash=f66a71c1) for method Microsoft.Build.Internal.ProjectXmlUtilities:GetAttributeValue(Microsoft.Build.Construction.XmlElementWithLocation,System.String):System.String (FullOpts)
+; Total bytes of code 92, prolog size 8, PerfScore 16.97, instruction count 28, allocated bytes for code 92 (MethodHash=f66a71c1) for method Microsoft.Build.Internal.ProjectXmlUtilities:GetAttributeValue(Microsoft.Build.Construction.XmlElementWithLocation,System.String):System.String (FullOpts)
; ============================================================
Unwind Info:
@@ -75,9 +82,11 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x01
- CountOfUnwindCodes: 1
+ SizeOfProlog : 0x03
+ CountOfUnwindCodes: 3
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
+ CodeOffset: 0x03 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
+ CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
libraries_tests.run.linux.x64.Release.mch
-34 (-43.59%) : 268653.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
@@ -9,73 +9,53 @@
; Final local variable assignments
;
; V00 this [V00,T02] ( 3, 3 ) byref -> rdi this single-def
-; V01 arg1 [V01,T00] ( 5, 4.50) ref -> rbx class-hnd single-def <System.Object>
+; V01 arg1 [V01,T00] ( 4, 4 ) ref -> rsi class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03,T01] ( 3, 5 ) ref -> rax class-hnd "spilling QMark2" <System.Int32>
-; V04 tmp2 [V04,T03] ( 2, 4 ) int -> r15 "impAppendStmt"
-; V05 cse0 [V05,T04] ( 4, 2.50) long -> rcx "CSE - aggressive"
-; V06 cse1 [V06,T05] ( 3, 2 ) long -> rsi "CSE - aggressive"
+; V04 tmp2 [V04,T03] ( 2, 4 ) int -> rax "impAppendStmt"
+; V05 cse0 [V05,T04] ( 2, 1 ) long -> rcx "CSE - moderate"
;
; Lcl frame size = 0
G_M40448_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
push rbp
- push r15
- push rbx
- lea rbp, [rsp+0x10]
- mov rbx, rsi
- ; gcrRegs +[rbx]
- ;; size=12 bbWeight=1 PerfScore 3.75
-G_M40448_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0080 {rdi}, byref, isz
+ mov rbp, rsp
+ ;; size=4 bbWeight=1 PerfScore 1.25
+G_M40448_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi}, byref, isz
+ ; gcrRegs +[rsi]
; byrRegs +[rdi]
- mov rax, rbx
+ mov rax, rsi
; gcrRegs +[rax]
test rax, rax
- je SHORT G_M40448_IG08
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M40448_IG03: ; bbWeight=0.50, gcrefRegs=0009 {rax rbx}, byrefRegs=0080 {rdi}, byref, isz
- mov rsi, qword ptr [rax]
- mov rcx, 0xD1FFAB1E ; System.Int32
- cmp rsi, rcx
- jne SHORT G_M40448_IG08
- ;; size=18 bbWeight=0.50 PerfScore 1.75
-G_M40448_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0080 {rdi}, byref, isz
- ; gcrRegs -[rax]
- mov r15d, dword ptr [rdi]
- cmp rsi, rcx
je SHORT G_M40448_IG06
- ;; size=8 bbWeight=1 PerfScore 3.25
-G_M40448_IG05: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- ; byrRegs -[rdi]
- mov rsi, rbx
- ; gcrRegs +[rsi]
- mov rdi, rcx
- call CORINFO_HELP_UNBOX
- ; gcrRegs -[rsi]
- ;; size=11 bbWeight=0.50 PerfScore 0.75
-G_M40448_IG06: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- xor eax, eax
- cmp r15d, dword ptr [rbx+0x08]
+ ;; size=8 bbWeight=1 PerfScore 1.50
+G_M40448_IG03: ; bbWeight=0.50, gcrefRegs=0041 {rax rsi}, byrefRegs=0080 {rdi}, byref, isz
+ mov rcx, 0xD1FFAB1E ; System.Int32
+ cmp qword ptr [rax], rcx
+ jne SHORT G_M40448_IG06
+ ;; size=15 bbWeight=0.50 PerfScore 2.12
+G_M40448_IG04: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi}, byref
+ ; gcrRegs -[rax]
+ mov eax, dword ptr [rdi]
+ cmp eax, dword ptr [rsi+0x08]
sete al
- ;; size=9 bbWeight=1 PerfScore 4.25
-G_M40448_IG07: ; bbWeight=1, epilog, nogc, extend
- pop rbx
- pop r15
+ movzx rax, al
+ ;; size=11 bbWeight=1 PerfScore 6.25
+G_M40448_IG05: ; bbWeight=1, epilog, nogc, extend
pop rbp
ret
- ;; size=5 bbWeight=1 PerfScore 2.50
-G_M40448_IG08: ; bbWeight=0.25, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[rbx]
+ ;; size=2 bbWeight=1 PerfScore 1.50
+G_M40448_IG06: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rsi]
+ ; byrRegs -[rdi]
xor eax, eax
- ;; size=2 bbWeight=0.25 PerfScore 0.06
-G_M40448_IG09: ; bbWeight=0.25, epilog, nogc, extend
- pop rbx
- pop r15
+ ;; size=2 bbWeight=1 PerfScore 0.25
+G_M40448_IG07: ; bbWeight=1, epilog, nogc, extend
pop rbp
ret
- ;; size=5 bbWeight=0.25 PerfScore 0.62
+ ;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 78, prolog size 9, PerfScore 18.44, instruction count 30, allocated bytes for code 78 (MethodHash=d61e61ff) for method System.Int32:Equals(System.Object):ubyte:this (Tier1)
+; Total bytes of code 44, prolog size 4, PerfScore 14.38, instruction count 17, allocated bytes for code 44 (MethodHash=d61e61ff) for method System.Int32:Equals(System.Object):ubyte:this (Tier1)
; ============================================================
Unwind Info:
@@ -83,11 +63,9 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x04
- CountOfUnwindCodes: 3
+ SizeOfProlog : 0x01
+ CountOfUnwindCodes: 1
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
-34 (-43.59%) : 679785.dasm - System.UInt32:Equals(System.Object):ubyte:this (Tier1)
@@ -9,73 +9,53 @@
; Final local variable assignments
;
; V00 this [V00,T02] ( 3, 3 ) byref -> rdi this single-def
-; V01 arg1 [V01,T00] ( 5, 4.50) ref -> rbx class-hnd single-def <System.Object>
+; V01 arg1 [V01,T00] ( 4, 4 ) ref -> rsi class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03,T01] ( 3, 5 ) ref -> rax class-hnd "spilling QMark2" <System.UInt32>
-; V04 tmp2 [V04,T03] ( 2, 4 ) int -> r15 "impAppendStmt"
-; V05 cse0 [V05,T04] ( 4, 2.50) long -> rcx "CSE - aggressive"
-; V06 cse1 [V06,T05] ( 3, 2 ) long -> rsi "CSE - aggressive"
+; V04 tmp2 [V04,T03] ( 2, 4 ) int -> rax "impAppendStmt"
+; V05 cse0 [V05,T04] ( 2, 1 ) long -> rcx "CSE - moderate"
;
; Lcl frame size = 0
G_M22229_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
push rbp
- push r15
- push rbx
- lea rbp, [rsp+0x10]
- mov rbx, rsi
- ; gcrRegs +[rbx]
- ;; size=12 bbWeight=1 PerfScore 3.75
-G_M22229_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0080 {rdi}, byref, isz
+ mov rbp, rsp
+ ;; size=4 bbWeight=1 PerfScore 1.25
+G_M22229_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi}, byref, isz
+ ; gcrRegs +[rsi]
; byrRegs +[rdi]
- mov rax, rbx
+ mov rax, rsi
; gcrRegs +[rax]
test rax, rax
- je SHORT G_M22229_IG08
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M22229_IG03: ; bbWeight=0.50, gcrefRegs=0009 {rax rbx}, byrefRegs=0080 {rdi}, byref, isz
- mov rsi, qword ptr [rax]
- mov rcx, 0xD1FFAB1E ; System.UInt32
- cmp rsi, rcx
- jne SHORT G_M22229_IG08
- ;; size=18 bbWeight=0.50 PerfScore 1.75
-G_M22229_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0080 {rdi}, byref, isz
- ; gcrRegs -[rax]
- mov r15d, dword ptr [rdi]
- cmp rsi, rcx
je SHORT G_M22229_IG06
- ;; size=8 bbWeight=1 PerfScore 3.25
-G_M22229_IG05: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- ; byrRegs -[rdi]
- mov rsi, rbx
- ; gcrRegs +[rsi]
- mov rdi, rcx
- call CORINFO_HELP_UNBOX
- ; gcrRegs -[rsi]
- ;; size=11 bbWeight=0.50 PerfScore 0.75
-G_M22229_IG06: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- xor eax, eax
- cmp r15d, dword ptr [rbx+0x08]
+ ;; size=8 bbWeight=1 PerfScore 1.50
+G_M22229_IG03: ; bbWeight=0.50, gcrefRegs=0041 {rax rsi}, byrefRegs=0080 {rdi}, byref, isz
+ mov rcx, 0xD1FFAB1E ; System.UInt32
+ cmp qword ptr [rax], rcx
+ jne SHORT G_M22229_IG06
+ ;; size=15 bbWeight=0.50 PerfScore 2.12
+G_M22229_IG04: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi}, byref
+ ; gcrRegs -[rax]
+ mov eax, dword ptr [rdi]
+ cmp eax, dword ptr [rsi+0x08]
sete al
- ;; size=9 bbWeight=1 PerfScore 4.25
-G_M22229_IG07: ; bbWeight=1, epilog, nogc, extend
- pop rbx
- pop r15
+ movzx rax, al
+ ;; size=11 bbWeight=1 PerfScore 6.25
+G_M22229_IG05: ; bbWeight=1, epilog, nogc, extend
pop rbp
ret
- ;; size=5 bbWeight=1 PerfScore 2.50
-G_M22229_IG08: ; bbWeight=0.25, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[rbx]
+ ;; size=2 bbWeight=1 PerfScore 1.50
+G_M22229_IG06: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rsi]
+ ; byrRegs -[rdi]
xor eax, eax
- ;; size=2 bbWeight=0.25 PerfScore 0.06
-G_M22229_IG09: ; bbWeight=0.25, epilog, nogc, extend
- pop rbx
- pop r15
+ ;; size=2 bbWeight=1 PerfScore 0.25
+G_M22229_IG07: ; bbWeight=1, epilog, nogc, extend
pop rbp
ret
- ;; size=5 bbWeight=0.25 PerfScore 0.62
+ ;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 78, prolog size 9, PerfScore 18.44, instruction count 30, allocated bytes for code 78 (MethodHash=4843a92a) for method System.UInt32:Equals(System.Object):ubyte:this (Tier1)
+; Total bytes of code 44, prolog size 4, PerfScore 14.38, instruction count 17, allocated bytes for code 44 (MethodHash=4843a92a) for method System.UInt32:Equals(System.Object):ubyte:this (Tier1)
; ============================================================
Unwind Info:
@@ -83,11 +63,9 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x04
- CountOfUnwindCodes: 3
+ SizeOfProlog : 0x01
+ CountOfUnwindCodes: 1
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
-34 (-43.59%) : 692589.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
@@ -9,73 +9,54 @@
; Final local variable assignments
;
; V00 this [V00,T02] ( 3, 3 ) byref -> rdi this single-def
-; V01 arg1 [V01,T00] ( 5, 4.50) ref -> rbx class-hnd single-def <System.Object>
+; V01 arg1 [V01,T00] ( 4, 4 ) ref -> rsi class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 5 ) ref -> rsi class-hnd "spilling QMark2" <System.Int32>
-; V04 tmp2 [V04,T03] ( 2, 4 ) int -> r15 "impAppendStmt"
-; V05 cse0 [V05,T04] ( 4, 2.50) long -> rax "CSE - aggressive"
-; V06 cse1 [V06,T05] ( 3, 2 ) long -> rsi "CSE - aggressive"
+; V03 tmp1 [V03,T01] ( 3, 5 ) ref -> rax class-hnd "spilling QMark2" <System.Int32>
+; V04 tmp2 [V04,T03] ( 2, 4 ) int -> rax "impAppendStmt"
+; V05 cse0 [V05,T04] ( 2, 1 ) long -> rcx "CSE - moderate"
;
; Lcl frame size = 0
G_M40448_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
push rbp
- push r15
- push rbx
- lea rbp, [rsp+0x10]
- mov rbx, rsi
- ; gcrRegs +[rbx]
- ;; size=12 bbWeight=1 PerfScore 3.75
-G_M40448_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0080 {rdi}, byref, isz
+ mov rbp, rsp
+ ;; size=4 bbWeight=1 PerfScore 1.25
+G_M40448_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi}, byref, isz
+ ; gcrRegs +[rsi]
; byrRegs +[rdi]
- mov rsi, rbx
- ; gcrRegs +[rsi]
- test rsi, rsi
- je SHORT G_M40448_IG08
+ mov rax, rsi
+ ; gcrRegs +[rax]
+ test rax, rax
+ je SHORT G_M40448_IG04
;; size=8 bbWeight=1 PerfScore 1.50
-G_M40448_IG03: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0080 {rdi}, byref, isz
- mov rsi, qword ptr [rsi]
- ; gcrRegs -[rsi]
- mov rax, 0xD1FFAB1E ; System.Int32
- cmp rsi, rax
- jne SHORT G_M40448_IG08
- ;; size=18 bbWeight=0.50 PerfScore 1.75
-G_M40448_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0080 {rdi}, byref, isz
- mov r15d, dword ptr [rdi]
- cmp rsi, rax
+G_M40448_IG03: ; bbWeight=0.50, gcrefRegs=0041 {rax rsi}, byrefRegs=0080 {rdi}, byref, isz
+ mov rcx, 0xD1FFAB1E ; System.Int32
+ cmp qword ptr [rax], rcx
je SHORT G_M40448_IG06
- ;; size=8 bbWeight=1 PerfScore 3.25
-G_M40448_IG05: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ ;; size=15 bbWeight=0.50 PerfScore 2.12
+G_M40448_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rax rsi]
; byrRegs -[rdi]
- mov rsi, rbx
+ xor eax, eax
+ ;; size=2 bbWeight=1 PerfScore 0.25
+G_M40448_IG05: ; bbWeight=1, epilog, nogc, extend
+ pop rbp
+ ret
+ ;; size=2 bbWeight=1 PerfScore 1.50
+G_M40448_IG06: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi}, gcvars, byref
; gcrRegs +[rsi]
- mov rdi, rax
- call CORINFO_HELP_UNBOX
- ; gcrRegs -[rsi]
- ;; size=11 bbWeight=0.50 PerfScore 0.75
-G_M40448_IG06: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- xor eax, eax
- cmp r15d, dword ptr [rbx+0x08]
+ ; byrRegs +[rdi]
+ mov eax, dword ptr [rdi]
+ cmp eax, dword ptr [rsi+0x08]
sete al
- ;; size=9 bbWeight=1 PerfScore 4.25
+ movzx rax, al
+ ;; size=11 bbWeight=1 PerfScore 6.25
G_M40448_IG07: ; bbWeight=1, epilog, nogc, extend
- pop rbx
- pop r15
pop rbp
ret
- ;; size=5 bbWeight=1 PerfScore 2.50
-G_M40448_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[rbx]
- xor eax, eax
- ;; size=2 bbWeight=0 PerfScore 0.00
-G_M40448_IG09: ; bbWeight=0, epilog, nogc, extend
- pop rbx
- pop r15
- pop rbp
- ret
- ;; size=5 bbWeight=0 PerfScore 0.00
+ ;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 78, prolog size 9, PerfScore 17.75, instruction count 30, allocated bytes for code 78 (MethodHash=d61e61ff) for method System.Int32:Equals(System.Object):ubyte:this (Tier1)
+; Total bytes of code 44, prolog size 4, PerfScore 14.38, instruction count 17, allocated bytes for code 44 (MethodHash=d61e61ff) for method System.Int32:Equals(System.Object):ubyte:this (Tier1)
; ============================================================
Unwind Info:
@@ -83,11 +64,9 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x04
- CountOfUnwindCodes: 3
+ SizeOfProlog : 0x01
+ CountOfUnwindCodes: 1
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+29 (+11.11%) : 246225.dasm - System.Collections.Tests.IEnumerableGenericTests1[System.Collections.Generic.KeyValuePair
2[int,int]]:b_552(System.Collections.Generic.IEnumerator1[System.Collections.Generic.KeyValuePair
2[int,int]],System.Collections.Generic.KeyValuePair`2[int,int][],int):this (Tier1)
@@ -10,7 +10,7 @@
; Final local variable assignments
;
; V00 this [V00,T03] ( 4, 3 ) ref -> rdi this class-hnd single-def <System.Collections.Tests.IEnumerable_Generic_Tests`1[System.Collections.Generic.KeyValuePair`2[int,int]]>
-; V01 arg1 [V01,T00] ( 11, 4.10) ref -> rbx class-hnd single-def <System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[int,int]]>
+; V01 arg1 [V01,T00] ( 11, 3.90) ref -> rbx class-hnd single-def <System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[int,int]]>
; V02 arg2 [V02,T01] ( 6, 4 ) ref -> rdx class-hnd single-def <System.Collections.Generic.KeyValuePair`2[int,int][]>
; V03 arg3 [V03,T02] ( 4, 3.80) int -> r15 single-def
; V04 OutArgs [V04 ] ( 1, 1 ) struct ( 8) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -18,28 +18,32 @@
;* V06 tmp2 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Collections.Generic.SortedDictionary`2+Enumerator[int,int]>
;* V07 tmp3 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Collections.Generic.SortedDictionary`2+Enumerator[int,int]>
;* V08 tmp4 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Collections.Generic.SortedDictionary`2+Enumerator[int,int]>
-; V09 tmp5 [V09,T05] ( 2, 0.40) byref -> rbx single-def "Inlining Arg"
-;* V10 tmp6 [V10,T07] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
-; V11 tmp7 [V11,T06] ( 2, 0.40) byref -> rbx single-def "Inlining Arg"
-;* V12 tmp8 [V12,T08] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
-; V13 cse0 [V13,T04] ( 6, 0.60) byref -> rbx multi-def "CSE - conservative"
+; V09 tmp5 [V09,T07] ( 2, 0.40) byref -> rbx single-def "Inlining Arg"
+;* V10 tmp6 [V10,T09] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
+; V11 tmp7 [V11,T08] ( 2, 0.40) byref -> rbx single-def "Inlining Arg"
+;* V12 tmp8 [V12,T10] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
+; V13 cse0 [V13,T06] ( 6, 0.60) byref -> rbx multi-def "CSE - conservative"
+; V14 cse1 [V14,T04] ( 4, 0.80) long -> r14 multi-def "CSE - moderate"
+; V15 cse2 [V15,T05] ( 4, 0.80) long -> r13 multi-def "CSE - moderate"
;
; Lcl frame size = 16
-G_M2566_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M2566_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
push r15
+ push r14
+ push r13
push rbx
sub rsp, 16
- lea rbp, [rsp+0x20]
+ lea rbp, [rsp+0x30]
mov rbx, rsi
; gcrRegs +[rbx]
mov r15d, ecx
- ;; size=19 bbWeight=1 PerfScore 4.25
+ ;; size=23 bbWeight=1 PerfScore 6.25
G_M2566_IG02: ; bbWeight=1, gcrefRegs=008C {rdx rbx rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rdx rdi]
cmp r15d, 1
- je SHORT G_M2566_IG06
+ je SHORT G_M2566_IG07
;; size=6 bbWeight=1 PerfScore 1.25
G_M2566_IG03: ; bbWeight=0.80, gcrefRegs=008C {rdx rbx rdi}, byrefRegs=0000 {}, byref, isz
mov dword ptr [rsp], 1
@@ -57,23 +61,23 @@ G_M2566_IG04: ; bbWeight=0.60, gcrefRegs=0000 {}, byrefRegs=0000 {}, byre
; gcrRegs -[rbx]
add rsp, 16
pop rbx
+ pop r13
+ pop r14
pop r15
pop rbp
ret
- ;; size=9 bbWeight=0.60 PerfScore 1.65
-G_M2566_IG05: ; bbWeight=0.20, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=13 bbWeight=0.60 PerfScore 2.25
+G_M2566_IG05: ; bbWeight=0.20, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rbx]
- mov rdi, 0xD1FFAB1E ; System.Collections.Generic.SortedDictionary`2+Enumerator[int,int]
- cmp qword ptr [rbx], rdi
- je G_M2566_IG11
- mov rdi, rbx
- ; gcrRegs +[rdi]
- mov r11, 0xD1FFAB1E ; code for <unknown method>
- call [r11]<unknown method>
- ; gcrRegs -[rdi]
- jmp SHORT G_M2566_IG09
- ;; size=37 bbWeight=0.20 PerfScore 1.95
-G_M2566_IG06: ; bbWeight=0.20, gcrefRegs=008C {rdx rbx rdi}, byrefRegs=0000 {}, byref, isz
+ mov r14, qword ptr [rbx]
+ mov r13, 0xD1FFAB1E ; System.Collections.Generic.SortedDictionary`2+Enumerator[int,int]
+ cmp r14, r13
+ jne G_M2566_IG15
+ ;; size=22 bbWeight=0.20 PerfScore 0.70
+G_M2566_IG06: ; bbWeight=0.10, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ jmp G_M2566_IG13
+ ;; size=5 bbWeight=0.10 PerfScore 0.20
+G_M2566_IG07: ; bbWeight=0.20, gcrefRegs=008C {rdx rbx rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rdx rdi]
xor r8d, r8d
mov dword ptr [rsp], r8d
@@ -85,17 +89,12 @@ G_M2566_IG06: ; bbWeight=0.20, gcrefRegs=008C {rdx rbx rdi}, byrefRegs=00
mov r9d, 1
call [System.Collections.Tests.IEnumerable_Generic_Tests`1[System.Collections.Generic.KeyValuePair`2[int,int]]:VerifyEnumerator(System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[int,int]],System.Collections.Generic.KeyValuePair`2[int,int][],int,int,ubyte,ubyte):this]
; gcrRegs -[rdx rsi rdi]
- mov rdi, 0xD1FFAB1E ; System.Collections.Generic.SortedDictionary`2+Enumerator[int,int]
- cmp qword ptr [rbx], rdi
- je SHORT G_M2566_IG07
- mov rdi, rbx
- ; gcrRegs +[rdi]
- mov r11, 0xD1FFAB1E ; code for <unknown method>
- call [r11]<unknown method>
- ; gcrRegs -[rdi]
- jmp SHORT G_M2566_IG09
- ;; size=64 bbWeight=0.20 PerfScore 3.45
-G_M2566_IG07: ; bbWeight=0.10, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ mov r14, qword ptr [rbx]
+ mov r13, 0xD1FFAB1E ; System.Collections.Generic.SortedDictionary`2+Enumerator[int,int]
+ cmp r14, r13
+ jne SHORT G_M2566_IG10
+ ;; size=49 bbWeight=0.20 PerfScore 2.20
+G_M2566_IG08: ; bbWeight=0.10, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
add rbx, 8
; gcrRegs -[rbx]
; byrRegs +[rbx]
@@ -107,28 +106,39 @@ G_M2566_IG07: ; bbWeight=0.10, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, b
mov rdi, rbx
; byrRegs +[rdi]
;; size=20 bbWeight=0.10 PerfScore 0.40
-G_M2566_IG08: ; bbWeight=0.10, epilog, nogc, extend
+G_M2566_IG09: ; bbWeight=0.10, epilog, nogc, extend
add rsp, 16
pop rbx
+ pop r13
+ pop r14
pop r15
pop rbp
tail.jmp [System.Collections.Generic.SortedSet`1+Enumerator[System.Collections.Generic.KeyValuePair`2[int,int]]:Reset():this]
- ;; size=14 bbWeight=0.10 PerfScore 0.38
-G_M2566_IG09: ; bbWeight=0.10, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=18 bbWeight=0.10 PerfScore 0.47
+G_M2566_IG10: ; bbWeight=0.10, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rbx]
; byrRegs -[rbx rdi]
+ mov rdi, rbx
+ ; gcrRegs +[rdi]
+ mov r11, 0xD1FFAB1E ; code for <unknown method>
+ call [r11]<unknown method>
+ ; gcrRegs -[rdi]
+ ;; size=16 bbWeight=0.10 PerfScore 0.35
+G_M2566_IG11: ; bbWeight=0.10, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rdi, rbx
; gcrRegs +[rdi]
mov r11, 0xD1FFAB1E ; code for <unknown method>
;; size=13 bbWeight=0.10 PerfScore 0.05
-G_M2566_IG10: ; bbWeight=0.10, epilog, nogc, extend
+G_M2566_IG12: ; bbWeight=0.10, epilog, nogc, extend
add rsp, 16
pop rbx
+ pop r13
+ pop r14
pop r15
pop rbp
tail.jmp [r11]<unknown method>
- ;; size=11 bbWeight=0.10 PerfScore 0.38
-G_M2566_IG11: ; bbWeight=0.10, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=15 bbWeight=0.10 PerfScore 0.47
+G_M2566_IG13: ; bbWeight=0.10, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rdi]
add rbx, 8
; gcrRegs -[rbx]
@@ -141,15 +151,27 @@ G_M2566_IG11: ; bbWeight=0.10, gcVars=0000000000000000 {}, gcrefRegs=0008
mov rdi, rbx
; byrRegs +[rdi]
;; size=20 bbWeight=0.10 PerfScore 0.40
-G_M2566_IG12: ; bbWeight=0.10, epilog, nogc, extend
+G_M2566_IG14: ; bbWeight=0.10, epilog, nogc, extend
add rsp, 16
pop rbx
+ pop r13
+ pop r14
pop r15
pop rbp
tail.jmp [System.Collections.Generic.SortedSet`1+Enumerator[System.Collections.Generic.KeyValuePair`2[int,int]]:Reset():this]
- ;; size=14 bbWeight=0.10 PerfScore 0.38
+ ;; size=18 bbWeight=0.10 PerfScore 0.47
+G_M2566_IG15: ; bbWeight=0.10, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[rbx]
+ ; byrRegs -[rbx rdi]
+ mov rdi, rbx
+ ; gcrRegs +[rdi]
+ mov r11, 0xD1FFAB1E ; code for <unknown method>
+ call [r11]<unknown method>
+ ; gcrRegs -[rdi]
+ jmp SHORT G_M2566_IG11
+ ;; size=18 bbWeight=0.10 PerfScore 0.55
-; Total bytes of code 261, prolog size 13, PerfScore 20.92, instruction count 71, allocated bytes for code 261 (MethodHash=d52ff5f9) for method System.Collections.Tests.IEnumerable_Generic_Tests`1[System.Collections.Generic.KeyValuePair`2[int,int]]:<IEnumerable_Generic_Enumerator_Reset>b__55_2(System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[int,int]],System.Collections.Generic.KeyValuePair`2[int,int][],int):this (Tier1)
+; Total bytes of code 290, prolog size 17, PerfScore 22.42, instruction count 83, allocated bytes for code 290 (MethodHash=d52ff5f9) for method System.Collections.Tests.IEnumerable_Generic_Tests`1[System.Collections.Generic.KeyValuePair`2[int,int]]:<IEnumerable_Generic_Enumerator_Reset>b__55_2(System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[int,int]],System.Collections.Generic.KeyValuePair`2[int,int][],int):this (Tier1)
; ============================================================
Unwind Info:
@@ -157,12 +179,14 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x08
- CountOfUnwindCodes: 4
+ SizeOfProlog : 0x0C
+ CountOfUnwindCodes: 6
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10
- CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x0C UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10
+ CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r13 (13)
+ CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+29 (+11.65%) : 243509.dasm - System.Collections.Tests.IEnumerableGenericTests1[int]:<IEnumerable_Generic_Enumerator_Reset>b__55_2(System.Collections.Generic.IEnumerator
1[int],int[],int):this (Tier1)
@@ -10,7 +10,7 @@
; Final local variable assignments
;
; V00 this [V00,T03] ( 4, 3 ) ref -> rdi this class-hnd single-def <System.Collections.Tests.IEnumerable_Generic_Tests`1[int]>
-; V01 arg1 [V01,T00] ( 13, 4.30) ref -> rbx class-hnd single-def <System.Collections.Generic.IEnumerator`1[int]>
+; V01 arg1 [V01,T00] ( 13, 4.10) ref -> rbx class-hnd single-def <System.Collections.Generic.IEnumerator`1[int]>
; V02 arg2 [V02,T01] ( 6, 4 ) ref -> rdx class-hnd single-def <int[]>
; V03 arg3 [V03,T02] ( 4, 3.80) int -> r15 single-def
; V04 OutArgs [V04 ] ( 1, 1 ) struct ( 8) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -18,23 +18,27 @@
;* V06 tmp2 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Collections.Generic.Stack`1+Enumerator[int]>
;* V07 tmp3 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Collections.Generic.Stack`1+Enumerator[int]>
;* V08 tmp4 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Collections.Generic.Stack`1+Enumerator[int]>
+; V09 cse0 [V09,T04] ( 4, 0.80) long -> r14 multi-def "CSE - moderate"
+; V10 cse1 [V10,T05] ( 4, 0.80) long -> r13 multi-def "CSE - moderate"
;
; Lcl frame size = 16
-G_M34564_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M34564_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
push r15
+ push r14
+ push r13
push rbx
sub rsp, 16
- lea rbp, [rsp+0x20]
+ lea rbp, [rsp+0x30]
mov rbx, rsi
; gcrRegs +[rbx]
mov r15d, ecx
- ;; size=19 bbWeight=1 PerfScore 4.25
+ ;; size=23 bbWeight=1 PerfScore 6.25
G_M34564_IG02: ; bbWeight=1, gcrefRegs=008C {rdx rbx rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rdx rdi]
cmp r15d, 1
- je SHORT G_M34564_IG06
+ je SHORT G_M34564_IG07
;; size=6 bbWeight=1 PerfScore 1.25
G_M34564_IG03: ; bbWeight=0.80, gcrefRegs=008C {rdx rbx rdi}, byrefRegs=0000 {}, byref, isz
mov dword ptr [rsp], 1
@@ -52,23 +56,23 @@ G_M34564_IG04: ; bbWeight=0.60, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
; gcrRegs -[rbx]
add rsp, 16
pop rbx
+ pop r13
+ pop r14
pop r15
pop rbp
ret
- ;; size=9 bbWeight=0.60 PerfScore 1.65
-G_M34564_IG05: ; bbWeight=0.20, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=13 bbWeight=0.60 PerfScore 2.25
+G_M34564_IG05: ; bbWeight=0.20, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rbx]
- mov rdi, 0xD1FFAB1E ; System.Collections.Generic.Stack`1+Enumerator[int]
- cmp qword ptr [rbx], rdi
- je G_M34564_IG11
- mov rdi, rbx
- ; gcrRegs +[rdi]
- mov r11, 0xD1FFAB1E ; code for <unknown method>
- call [r11]<unknown method>
- ; gcrRegs -[rdi]
- jmp SHORT G_M34564_IG09
- ;; size=37 bbWeight=0.20 PerfScore 1.95
-G_M34564_IG06: ; bbWeight=0.20, gcrefRegs=008C {rdx rbx rdi}, byrefRegs=0000 {}, byref, isz
+ mov r14, qword ptr [rbx]
+ mov r13, 0xD1FFAB1E ; System.Collections.Generic.Stack`1+Enumerator[int]
+ cmp r14, r13
+ jne G_M34564_IG15
+ ;; size=22 bbWeight=0.20 PerfScore 0.70
+G_M34564_IG06: ; bbWeight=0.10, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ jmp G_M34564_IG13
+ ;; size=5 bbWeight=0.10 PerfScore 0.20
+G_M34564_IG07: ; bbWeight=0.20, gcrefRegs=008C {rdx rbx rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rdx rdi]
xor r8d, r8d
mov dword ptr [rsp], r8d
@@ -80,45 +84,51 @@ G_M34564_IG06: ; bbWeight=0.20, gcrefRegs=008C {rdx rbx rdi}, byrefRegs=0
mov r9d, 1
call [<unknown method>]
; gcrRegs -[rdx rsi rdi]
- mov rdi, 0xD1FFAB1E ; System.Collections.Generic.Stack`1+Enumerator[int]
- cmp qword ptr [rbx], rdi
- je SHORT G_M34564_IG07
+ mov r14, qword ptr [rbx]
+ mov r13, 0xD1FFAB1E ; System.Collections.Generic.Stack`1+Enumerator[int]
+ cmp r14, r13
+ jne SHORT G_M34564_IG10
+ ;; size=49 bbWeight=0.20 PerfScore 2.20
+G_M34564_IG08: ; bbWeight=0.10, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ lea rdi, bword ptr [rbx+0x08]
+ ; byrRegs +[rdi]
+ call [System.Collections.Generic.Stack`1+Enumerator[int]:System.Collections.IEnumerator.Reset():this]
+ ; byrRegs -[rdi]
+ lea rdi, bword ptr [rbx+0x08]
+ ; byrRegs +[rdi]
+ ;; size=14 bbWeight=0.10 PerfScore 0.40
+G_M34564_IG09: ; bbWeight=0.10, epilog, nogc, extend
+ add rsp, 16
+ pop rbx
+ pop r13
+ pop r14
+ pop r15
+ pop rbp
+ tail.jmp [System.Collections.Generic.Stack`1+Enumerator[int]:System.Collections.IEnumerator.Reset():this]
+ ;; size=18 bbWeight=0.10 PerfScore 0.47
+G_M34564_IG10: ; bbWeight=0.10, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
+ ; byrRegs -[rdi]
mov rdi, rbx
; gcrRegs +[rdi]
mov r11, 0xD1FFAB1E ; code for <unknown method>
call [r11]<unknown method>
; gcrRegs -[rdi]
- jmp SHORT G_M34564_IG09
- ;; size=64 bbWeight=0.20 PerfScore 3.45
-G_M34564_IG07: ; bbWeight=0.10, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- lea rdi, bword ptr [rbx+0x08]
- ; byrRegs +[rdi]
- call [System.Collections.Generic.Stack`1+Enumerator[int]:System.Collections.IEnumerator.Reset():this]
- ; byrRegs -[rdi]
- lea rdi, bword ptr [rbx+0x08]
- ; byrRegs +[rdi]
- ;; size=14 bbWeight=0.10 PerfScore 0.40
-G_M34564_IG08: ; bbWeight=0.10, epilog, nogc, extend
- add rsp, 16
- pop rbx
- pop r15
- pop rbp
- tail.jmp [System.Collections.Generic.Stack`1+Enumerator[int]:System.Collections.IEnumerator.Reset():this]
- ;; size=14 bbWeight=0.10 PerfScore 0.38
-G_M34564_IG09: ; bbWeight=0.10, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
- ; byrRegs -[rdi]
+ ;; size=16 bbWeight=0.10 PerfScore 0.35
+G_M34564_IG11: ; bbWeight=0.10, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rdi, rbx
; gcrRegs +[rdi]
mov r11, 0xD1FFAB1E ; code for <unknown method>
;; size=13 bbWeight=0.10 PerfScore 0.05
-G_M34564_IG10: ; bbWeight=0.10, epilog, nogc, extend
+G_M34564_IG12: ; bbWeight=0.10, epilog, nogc, extend
add rsp, 16
pop rbx
+ pop r13
+ pop r14
pop r15
pop rbp
tail.jmp [r11]<unknown method>
- ;; size=11 bbWeight=0.10 PerfScore 0.38
-G_M34564_IG11: ; bbWeight=0.10, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=15 bbWeight=0.10 PerfScore 0.47
+G_M34564_IG13: ; bbWeight=0.10, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rdi]
lea rdi, bword ptr [rbx+0x08]
; byrRegs +[rdi]
@@ -127,15 +137,26 @@ G_M34564_IG11: ; bbWeight=0.10, gcVars=0000000000000000 {}, gcrefRegs=000
lea rdi, bword ptr [rbx+0x08]
; byrRegs +[rdi]
;; size=14 bbWeight=0.10 PerfScore 0.40
-G_M34564_IG12: ; bbWeight=0.10, epilog, nogc, extend
+G_M34564_IG14: ; bbWeight=0.10, epilog, nogc, extend
add rsp, 16
pop rbx
+ pop r13
+ pop r14
pop r15
pop rbp
tail.jmp [System.Collections.Generic.Stack`1+Enumerator[int]:System.Collections.IEnumerator.Reset():this]
- ;; size=14 bbWeight=0.10 PerfScore 0.38
+ ;; size=18 bbWeight=0.10 PerfScore 0.47
+G_M34564_IG15: ; bbWeight=0.10, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; byrRegs -[rdi]
+ mov rdi, rbx
+ ; gcrRegs +[rdi]
+ mov r11, 0xD1FFAB1E ; code for <unknown method>
+ call [r11]<unknown method>
+ ; gcrRegs -[rdi]
+ jmp SHORT G_M34564_IG11
+ ;; size=18 bbWeight=0.10 PerfScore 0.55
-; Total bytes of code 249, prolog size 13, PerfScore 20.93, instruction count 67, allocated bytes for code 249 (MethodHash=4e7b78fb) for method System.Collections.Tests.IEnumerable_Generic_Tests`1[int]:<IEnumerable_Generic_Enumerator_Reset>b__55_2(System.Collections.Generic.IEnumerator`1[int],int[],int):this (Tier1)
+; Total bytes of code 278, prolog size 17, PerfScore 22.43, instruction count 79, allocated bytes for code 278 (MethodHash=4e7b78fb) for method System.Collections.Tests.IEnumerable_Generic_Tests`1[int]:<IEnumerable_Generic_Enumerator_Reset>b__55_2(System.Collections.Generic.IEnumerator`1[int],int[],int):this (Tier1)
; ============================================================
Unwind Info:
@@ -143,12 +164,14 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x08
- CountOfUnwindCodes: 4
+ SizeOfProlog : 0x0C
+ CountOfUnwindCodes: 6
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10
- CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x0C UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10
+ CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r13 (13)
+ CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+26 (+13.33%) : 606818.dasm - System.Dynamic.Utils.TypeUtils:AreReferenceAssignable(System.Type,System.Type):ubyte (Tier1)
@@ -13,58 +13,66 @@
; V01 arg1 [V01,T01] ( 9, 4 ) ref -> r15 class-hnd single-def <System.Type>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03,T05] ( 2, 2 ) ubyte -> rax "Inline return value spill temp"
-; V04 tmp2 [V04,T04] ( 5, 2 ) int -> rcx "guarded devirt return temp"
+; V04 tmp2 [V04,T02] ( 5, 3 ) int -> r14 "guarded devirt return temp"
;* V05 tmp3 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.RuntimeType>
;* V06 tmp4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType>
-; V07 tmp5 [V07,T02] ( 3, 2.50) ref -> rdi class-hnd exact "Inline stloc first use temp" <System.RuntimeType>
-; V08 cse0 [V08,T03] ( 3, 2.50) long -> rax "CSE - aggressive"
+; V07 tmp5 [V07,T03] ( 3, 2.50) ref -> rdi class-hnd exact "Inline stloc first use temp" <System.RuntimeType>
+; V08 cse0 [V08,T04] ( 3, 2.50) long -> rax "CSE - aggressive"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M56504_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
push r15
+ push r14
push rbx
- lea rbp, [rsp+0x10]
+ push rax
+ lea rbp, [rsp+0x20]
mov rbx, rdi
; gcrRegs +[rbx]
mov r15, rsi
; gcrRegs +[r15]
- ;; size=15 bbWeight=1 PerfScore 4.00
+ ;; size=18 bbWeight=1 PerfScore 6.00
G_M56504_IG02: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
test rbx, rbx
- je SHORT G_M56504_IG07
+ je SHORT G_M56504_IG08
mov rax, 0xD1FFAB1E ; System.RuntimeType
cmp qword ptr [rbx], rax
jne G_M56504_IG13
mov rdi, r15
; gcrRegs +[rdi]
test rdi, rdi
- je SHORT G_M56504_IG11
+ je SHORT G_M56504_IG04
;; size=32 bbWeight=1 PerfScore 7.00
G_M56504_IG03: ; bbWeight=0.50, gcrefRegs=8088 {rbx rdi r15}, byrefRegs=0000 {}, byref, isz
cmp qword ptr [rdi], rax
- jne SHORT G_M56504_IG11
+ je SHORT G_M56504_IG05
;; size=5 bbWeight=0.50 PerfScore 2.00
G_M56504_IG04: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rdi]
+ xor r14d, r14d
+ jmp SHORT G_M56504_IG06
+ ;; size=5 bbWeight=1 PerfScore 2.25
+G_M56504_IG05: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
cmp r15, rbx
jne SHORT G_M56504_IG12
- mov ecx, 1
- ;; size=10 bbWeight=1 PerfScore 1.50
-G_M56504_IG05: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
- movzx rax, cl
+ mov r14d, 1
+ ;; size=11 bbWeight=1 PerfScore 1.50
+G_M56504_IG06: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+ movzx rax, r14b
test eax, eax
- je SHORT G_M56504_IG07
+ je SHORT G_M56504_IG08
mov eax, 1
- ;; size=12 bbWeight=1 PerfScore 1.75
-G_M56504_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=13 bbWeight=1 PerfScore 1.75
+G_M56504_IG07: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 8
pop rbx
+ pop r14
pop r15
pop rbp
ret
- ;; size=5 bbWeight=1 PerfScore 2.50
-G_M56504_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=11 bbWeight=1 PerfScore 3.25
+G_M56504_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref, isz
mov rdi, rbx
; gcrRegs +[rdi]
mov rax, qword ptr [rbx]
@@ -72,7 +80,7 @@ G_M56504_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=8008 {
call [rax+0x08]<unknown method>
; gcrRegs -[rdi]
test eax, eax
- jne SHORT G_M56504_IG09
+ jne SHORT G_M56504_IG10
mov rdi, r15
; gcrRegs +[rdi]
mov rax, qword ptr [r15]
@@ -80,7 +88,7 @@ G_M56504_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=8008 {
call [rax+0x08]<unknown method>
; gcrRegs -[rdi]
test eax, eax
- jne SHORT G_M56504_IG09
+ jne SHORT G_M56504_IG10
mov rdi, rbx
; gcrRegs +[rdi]
mov rsi, r15
@@ -88,37 +96,37 @@ G_M56504_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=8008 {
mov rax, qword ptr [rbx]
mov rax, qword ptr [rax+0xB8]
;; size=56 bbWeight=0 PerfScore 0.00
-G_M56504_IG08: ; bbWeight=0, epilog, nogc, extend
+G_M56504_IG09: ; bbWeight=0, epilog, nogc, extend
+ add rsp, 8
pop rbx
+ pop r14
pop r15
pop rbp
tail.jmp [rax+0x20]<unknown method>
- ;; size=8 bbWeight=0 PerfScore 0.00
-G_M56504_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=14 bbWeight=0 PerfScore 0.00
+G_M56504_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rbx rsi rdi r15]
xor eax, eax
;; size=2 bbWeight=0 PerfScore 0.00
-G_M56504_IG10: ; bbWeight=0, epilog, nogc, extend
+G_M56504_IG11: ; bbWeight=0, epilog, nogc, extend
+ add rsp, 8
pop rbx
+ pop r14
pop r15
pop rbp
ret
- ;; size=5 bbWeight=0 PerfScore 0.00
-G_M56504_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=11 bbWeight=0 PerfScore 0.00
+G_M56504_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rbx r15]
- xor ecx, ecx
- jmp SHORT G_M56504_IG05
- ;; size=4 bbWeight=0 PerfScore 0.00
-G_M56504_IG12: ; bbWeight=0, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
mov rdi, rbx
; gcrRegs +[rdi]
mov rsi, r15
; gcrRegs +[rsi]
call <unknown method>
; gcrRegs -[rsi rdi]
- mov ecx, eax
- jmp SHORT G_M56504_IG05
- ;; size=15 bbWeight=0 PerfScore 0.00
+ mov r14d, eax
+ jmp SHORT G_M56504_IG06
+ ;; size=16 bbWeight=0 PerfScore 0.00
G_M56504_IG13: ; bbWeight=0, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
mov rdi, rbx
; gcrRegs +[rdi]
@@ -128,11 +136,11 @@ G_M56504_IG13: ; bbWeight=0, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {},
mov rax, qword ptr [rax+0xA8]
call [rax+0x10]<unknown method>
; gcrRegs -[rsi rdi]
- mov ecx, eax
- jmp G_M56504_IG05
- ;; size=26 bbWeight=0 PerfScore 0.00
+ mov r14d, eax
+ jmp G_M56504_IG06
+ ;; size=27 bbWeight=0 PerfScore 0.00
-; Total bytes of code 195, prolog size 9, PerfScore 18.75, instruction count 66, allocated bytes for code 195 (MethodHash=986e2347) for method System.Dynamic.Utils.TypeUtils:AreReferenceAssignable(System.Type,System.Type):ubyte (Tier1)
+; Total bytes of code 221, prolog size 12, PerfScore 23.75, instruction count 74, allocated bytes for code 221 (MethodHash=986e2347) for method System.Dynamic.Utils.TypeUtils:AreReferenceAssignable(System.Type,System.Type):ubyte (Tier1)
; ============================================================
Unwind Info:
@@ -140,11 +148,13 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x04
- CountOfUnwindCodes: 3
+ SizeOfProlog : 0x07
+ CountOfUnwindCodes: 5
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
+ CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
librariestestsnotieredcompilation.run.linux.x64.Release.mch
-36 (-44.44%) : 193646.dasm - System.Runtime.Serialization.Formatters.Tests.StructContainingArraysOfOtherStructs:Equals(System.Object):ubyte:this (FullOpts)
@@ -8,79 +8,54 @@
; Final local variable assignments
;
; V00 this [V00,T02] ( 3, 2.50) byref -> rdi this single-def
-; V01 arg1 [V01,T00] ( 5, 3.75) ref -> rbx class-hnd single-def <System.Object>
+; V01 arg1 [V01,T00] ( 4, 3.50) ref -> rsi class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03,T01] ( 3, 4.50) ref -> rax class-hnd "spilling QMark2" <System.Runtime.Serialization.Formatters.Tests.StructContainingArraysOfOtherStructs>
-; V04 tmp2 [V04,T03] ( 2, 2 ) ref -> r15 class-hnd exact single-def "impAppendStmt" <System.Runtime.Serialization.Formatters.Tests.StructContainingOtherStructs[]>
-; V05 cse0 [V05,T04] ( 4, 1.25) long -> rcx "CSE - moderate"
-; V06 cse1 [V06,T05] ( 3, 1 ) long -> rsi "CSE - moderate"
+; V04 tmp2 [V04,T03] ( 2, 2 ) ref -> rdi class-hnd exact single-def "impAppendStmt" <System.Runtime.Serialization.Formatters.Tests.StructContainingOtherStructs[]>
;
; Lcl frame size = 0
-G_M20050_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M20050_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
push rbp
- push r15
- push rbx
- lea rbp, [rsp+0x10]
- mov rbx, rsi
- ; gcrRegs +[rbx]
- ;; size=12 bbWeight=1 PerfScore 3.75
-G_M20050_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0080 {rdi}, byref, isz
+ mov rbp, rsp
+ ;; size=4 bbWeight=1 PerfScore 1.25
+G_M20050_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi}, byref, isz
+ ; gcrRegs +[rsi]
; byrRegs +[rdi]
- mov rax, rbx
+ mov rax, rsi
; gcrRegs +[rax]
test rax, rax
je SHORT G_M20050_IG04
;; size=8 bbWeight=1 PerfScore 1.50
-G_M20050_IG03: ; bbWeight=0.25, gcrefRegs=0009 {rax rbx}, byrefRegs=0080 {rdi}, byref, isz
- mov rsi, qword ptr [rax]
+G_M20050_IG03: ; bbWeight=0.25, gcrefRegs=0041 {rax rsi}, byrefRegs=0080 {rdi}, byref, isz
mov rcx, 0xD1FFAB1E ; System.Runtime.Serialization.Formatters.Tests.StructContainingArraysOfOtherStructs
- cmp rsi, rcx
+ cmp qword ptr [rax], rcx
je SHORT G_M20050_IG06
- ;; size=18 bbWeight=0.25 PerfScore 0.88
+ ;; size=15 bbWeight=0.25 PerfScore 1.06
G_M20050_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax rbx]
+ ; gcrRegs -[rax rsi]
; byrRegs -[rdi]
xor eax, eax
;; size=2 bbWeight=0.50 PerfScore 0.12
G_M20050_IG05: ; bbWeight=0.50, epilog, nogc, extend
- pop rbx
- pop r15
pop rbp
ret
- ;; size=5 bbWeight=0.50 PerfScore 1.25
-G_M20050_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0080 {rdi}, gcvars, byref, isz
- ; gcrRegs +[rbx]
+ ;; size=2 bbWeight=0.50 PerfScore 0.75
+G_M20050_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi}, gcvars, byref
+ ; gcrRegs +[rsi]
; byrRegs +[rdi]
- mov r15, gword ptr [rdi]
- ; gcrRegs +[r15]
- cmp rsi, rcx
- je SHORT G_M20050_IG08
- ;; size=8 bbWeight=0.50 PerfScore 1.62
-G_M20050_IG07: ; bbWeight=0.25, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
- ; byrRegs -[rdi]
- mov rsi, rbx
- ; gcrRegs +[rsi]
- mov rdi, rcx
- call CORINFO_HELP_UNBOX
- ; gcrRegs -[rsi]
- ; gcr arg pop 0
- ;; size=11 bbWeight=0.25 PerfScore 0.38
-G_M20050_IG08: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
- mov rsi, gword ptr [rbx+0x08]
- ; gcrRegs +[rsi]
- mov rdi, r15
+ mov rdi, gword ptr [rdi]
; gcrRegs +[rdi]
- ;; size=7 bbWeight=0.50 PerfScore 1.12
-G_M20050_IG09: ; bbWeight=0.50, epilog, nogc, extend
- pop rbx
- pop r15
+ ; byrRegs -[rdi]
+ mov rsi, gword ptr [rsi+0x08]
+ ;; size=7 bbWeight=0.50 PerfScore 2.00
+G_M20050_IG07: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
tail.jmp [System.Runtime.Serialization.Formatters.Tests.EqualityHelpers:ArraysAreEqual[System.Runtime.Serialization.Formatters.Tests.StructContainingOtherStructs](System.Runtime.Serialization.Formatters.Tests.StructContainingOtherStructs[],System.Runtime.Serialization.Formatters.Tests.StructContainingOtherStructs[]):ubyte]
; gcr arg pop 0
- ;; size=10 bbWeight=0.50 PerfScore 1.75
+ ;; size=7 bbWeight=0.50 PerfScore 1.25
-; Total bytes of code 81, prolog size 12, PerfScore 12.38, instruction count 29, allocated bytes for code 81 (MethodHash=8ccbb1ad) for method System.Runtime.Serialization.Formatters.Tests.StructContainingArraysOfOtherStructs:Equals(System.Object):ubyte:this (FullOpts)
+; Total bytes of code 45, prolog size 4, PerfScore 7.94, instruction count 15, allocated bytes for code 45 (MethodHash=8ccbb1ad) for method System.Runtime.Serialization.Formatters.Tests.StructContainingArraysOfOtherStructs:Equals(System.Object):ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -88,11 +63,9 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x04
- CountOfUnwindCodes: 3
+ SizeOfProlog : 0x01
+ CountOfUnwindCodes: 1
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
-32 (-30.48%) : 31533.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan1[uint],System.ReadOnlySpan
1[uint]):int (FullOpts)
@@ -9,14 +9,16 @@
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[uint]>
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[uint]>
-; V02 loc0 [V02,T00] ( 7, 24.50) int -> registers
+; V02 loc0 [V02,T00] ( 7, 24.50) int -> rax
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T01] ( 6, 20 ) int -> r8 "dup spill"
-; V05 tmp2 [V05,T05] ( 3, 5.50) byref -> rdi single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V06 tmp3 [V06,T04] ( 5, 7 ) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP
-; V07 tmp4 [V07,T06] ( 3, 5.50) byref -> rdx single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V08 tmp5 [V08,T03] ( 6, 7.50) int -> rcx single-def "field V01._length (fldOffset=0x8)" P-INDEP
-; V09 cse0 [V09,T02] ( 6, 13.50) long -> r9 multi-def "CSE - aggressive"
+; V04 tmp1 [V04,T01] ( 2, 16 ) int -> rax "dup spill"
+; V05 tmp2 [V05,T07] ( 2, 5 ) byref -> rdi single-def "field V00._reference (fldOffset=0x0)" P-INDEP
+; V06 tmp3 [V06,T04] ( 4, 6.50) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V07 tmp4 [V07,T08] ( 2, 5 ) byref -> rdx single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V08 tmp5 [V08,T03] ( 5, 7 ) int -> rcx single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V09 cse0 [V09,T05] ( 3, 8.50) int -> r9 "CSE - aggressive"
+; V10 cse1 [V10,T06] ( 3, 8.50) int -> r8 "CSE - aggressive"
+; V11 cse2 [V11,T02] ( 3, 12 ) long -> r8 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -32,72 +34,59 @@ G_M264_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, b
G_M264_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rdx rdi]
cmp esi, ecx
- jl SHORT G_M264_IG12
- jmp SHORT G_M264_IG10
+ jl SHORT G_M264_IG11
+ jmp SHORT G_M264_IG07
;; size=6 bbWeight=0.50 PerfScore 1.62
G_M264_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, byref
; byrRegs +[rdx rdi]
- mov r8d, ecx
- ;; size=3 bbWeight=0.50 PerfScore 0.12
+ mov eax, ecx
+ ;; size=2 bbWeight=0.50 PerfScore 0.12
G_M264_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, byref, isz
- dec r8d
- mov eax, r8d
- test eax, eax
- jl SHORT G_M264_IG06
+ dec eax
+ js SHORT G_M264_IG09
cmp eax, esi
- jae SHORT G_M264_IG14
- mov r9d, eax
- mov r10d, dword ptr [rdi+4*r9]
- cmp eax, ecx
- jae SHORT G_M264_IG14
- cmp r10d, dword ptr [rdx+4*r9]
- je SHORT G_M264_IG08
- ;; size=31 bbWeight=4 PerfScore 42.00
-G_M264_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, byref, isz
- test r8d, r8d
- jge SHORT G_M264_IG09
- xor eax, eax
- ;; size=7 bbWeight=0.50 PerfScore 0.75
-G_M264_IG07: ; bbWeight=0.50, epilog, nogc, extend
- pop rbp
- ret
- ;; size=2 bbWeight=0.50 PerfScore 0.75
-G_M264_IG08: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, gcvars, byref, isz
+ jae SHORT G_M264_IG13
mov r8d, eax
- jmp SHORT G_M264_IG05
- ;; size=5 bbWeight=2 PerfScore 4.50
-G_M264_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, byref, isz
- cmp r8d, esi
- jae SHORT G_M264_IG14
- mov r9d, r8d
- mov eax, dword ptr [rdi+4*r9]
- cmp r8d, ecx
- jae SHORT G_M264_IG14
- cmp eax, dword ptr [rdx+4*r9]
- jb SHORT G_M264_IG12
- ;; size=23 bbWeight=0.50 PerfScore 4.38
-G_M264_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov r9d, dword ptr [rdi+4*r8]
+ cmp eax, ecx
+ jae SHORT G_M264_IG13
+ mov r8d, dword ptr [rdx+4*r8]
+ cmp r9d, r8d
+ je SHORT G_M264_IG05
+ ;; size=28 bbWeight=4 PerfScore 37.00
+G_M264_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rdx rdi]
+ cmp r8d, r9d
+ ja SHORT G_M264_IG11
+ ;; size=5 bbWeight=0.50 PerfScore 0.62
+G_M264_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov eax, 1
;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M264_IG11: ; bbWeight=0.50, epilog, nogc, extend
+G_M264_IG08: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
ret
;; size=2 bbWeight=0.50 PerfScore 0.75
-G_M264_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M264_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ xor eax, eax
+ ;; size=2 bbWeight=0.50 PerfScore 0.12
+G_M264_IG10: ; bbWeight=0.50, epilog, nogc, extend
+ pop rbp
+ ret
+ ;; size=2 bbWeight=0.50 PerfScore 0.75
+G_M264_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov eax, -1
;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M264_IG13: ; bbWeight=0.50, epilog, nogc, extend
+G_M264_IG12: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
ret
;; size=2 bbWeight=0.50 PerfScore 0.75
-G_M264_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M264_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 105, prolog size 4, PerfScore 58.38, instruction count 43, allocated bytes for code 105 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
+; Total bytes of code 73, prolog size 4, PerfScore 44.50, instruction count 32, allocated bytes for code 73 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
; ============================================================
Unwind Info:
-29 (-25.89%) : 97293.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
@@ -7,15 +7,17 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T04] ( 5, 7.50) ref -> rdi class-hnd single-def <System.String>
-; V01 arg1 [V01,T02] ( 6, 11 ) ref -> rsi class-hnd single-def <System.String>
-; V02 arg2 [V02,T05] ( 4, 6.50) int -> rdx single-def
-; V03 arg3 [V03,T07] ( 5, 4.50) int -> rcx single-def
-; V04 loc0 [V04,T03] ( 6, 13 ) int -> r8
-; V05 loc1 [V05,T00] ( 11, 27.50) int -> r9
+; V00 arg0 [V00,T04] ( 4, 7 ) ref -> rdi class-hnd single-def <System.String>
+; V01 arg1 [V01,T02] ( 4, 10 ) ref -> rsi class-hnd single-def <System.String>
+; V02 arg2 [V02,T07] ( 3, 6 ) int -> rdx single-def
+; V03 arg3 [V03,T08] ( 5, 4.50) int -> rcx single-def
+; V04 loc0 [V04,T01] ( 5, 12 ) int -> r8
+; V05 loc1 [V05,T00] ( 7, 25 ) int -> r9
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 cse0 [V07,T06] ( 5, 7 ) int -> rax "CSE - aggressive"
-; V08 cse1 [V08,T01] ( 6, 13.50) int -> r11 multi-def "CSE - aggressive"
+; V07 cse0 [V07,T05] ( 3, 8.50) int -> r11 "CSE - aggressive"
+; V08 cse1 [V08,T06] ( 3, 8.50) int -> r10 "CSE - aggressive"
+; V09 cse2 [V09,T09] ( 4, 6.50) int -> rax "CSE - aggressive"
+; V10 cse3 [V10,T03] ( 3, 12 ) int -> r11 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -37,54 +39,43 @@ G_M6389_IG03: ; bbWeight=2, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {},
;; size=3 bbWeight=2 PerfScore 0.50
G_M6389_IG04: ; bbWeight=8, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, isz
cmp r9d, r8d
- jge SHORT G_M6389_IG06
+ jge SHORT G_M6389_IG08
;; size=5 bbWeight=8 PerfScore 10.00
G_M6389_IG05: ; bbWeight=4, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, isz
cmp r9d, eax
- jae SHORT G_M6389_IG11
+ jae SHORT G_M6389_IG10
mov r10d, r9d
movzx r10, word ptr [rdi+2*r10+0x0C]
lea r11d, [rdx+r9]
cmp r11d, dword ptr [rsi+0x08]
- jae SHORT G_M6389_IG11
- cmp r10w, word ptr [rsi+2*r11+0x0C]
+ jae SHORT G_M6389_IG10
+ movzx r11, word ptr [rsi+2*r11+0x0C]
+ cmp r10d, r11d
je SHORT G_M6389_IG03
- ;; size=32 bbWeight=4 PerfScore 48.00
-G_M6389_IG06: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, isz
- cmp r9d, r8d
- jge SHORT G_M6389_IG09
- ;; size=5 bbWeight=1 PerfScore 1.25
-G_M6389_IG07: ; bbWeight=0.50, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, isz
- cmp r9d, eax
- jae SHORT G_M6389_IG11
- mov eax, r9d
- movzx rax, word ptr [rdi+2*rax+0x0C]
- lea r11d, [rdx+r9]
- cmp r11d, dword ptr [rsi+0x08]
- jae SHORT G_M6389_IG11
- mov ecx, r11d
- movzx rcx, word ptr [rsi+2*rcx+0x0C]
- sub eax, ecx
- ;; size=33 bbWeight=0.50 PerfScore 5.25
-G_M6389_IG08: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=35 bbWeight=4 PerfScore 45.00
+G_M6389_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rsi rdi]
+ mov eax, r10d
+ sub eax, r11d
+ ;; size=6 bbWeight=0.50 PerfScore 0.25
+G_M6389_IG07: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
ret
;; size=2 bbWeight=0.50 PerfScore 0.75
-G_M6389_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[rsi rdi]
+G_M6389_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
sub eax, ecx
;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M6389_IG10: ; bbWeight=0.50, epilog, nogc, extend
+G_M6389_IG09: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
ret
;; size=2 bbWeight=0.50 PerfScore 0.75
-G_M6389_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M6389_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 112, prolog size 4, PerfScore 72.88, instruction count 39, allocated bytes for code 112 (MethodHash=2d88e70a) for method System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
+; Total bytes of code 83, prolog size 4, PerfScore 63.62, instruction count 30, allocated bytes for code 83 (MethodHash=2d88e70a) for method System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
; ============================================================
Unwind Info:
+3 (+11.11%) : 215580.dasm - System.Security.Cryptography.SHA1CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
@@ -8,9 +8,10 @@
; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 4, 4 ) ref -> rbx this class-hnd single-def <System.Security.Cryptography.SHA1CryptoServiceProvider>
+; V00 this [V00,T00] ( 4, 3 ) ref -> rbx this class-hnd single-def <System.Security.Cryptography.SHA1CryptoServiceProvider>
; V01 arg1 [V01,T01] ( 3, 3 ) ubyte -> rsi single-def
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+; V03 cse0 [V03,T02] ( 2, 2 ) int -> rdi "CSE - aggressive"
;
; Lcl frame size = 0
@@ -20,8 +21,11 @@ G_M54186_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs +[rbx]
;; size=4 bbWeight=1 PerfScore 1.25
G_M54186_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- test sil, sil
- je SHORT G_M54186_IG03
+ movzx rdi, sil
+ test edi, edi
+ je SHORT G_M54186_IG04
+ ;; size=8 bbWeight=1 PerfScore 1.50
+G_M54186_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rdi, gword ptr [rbx+0x20]
; gcrRegs +[rdi]
cmp dword ptr [rdi], edi
@@ -29,14 +33,14 @@ G_M54186_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
; gcrRegs -[rdi]
; gcr arg pop 0
mov byte ptr [rbx+0x18], 1
- ;; size=21 bbWeight=1 PerfScore 10.25
-G_M54186_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=16 bbWeight=0.50 PerfScore 4.50
+G_M54186_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rbx]
pop rbx
ret
;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 27, prolog size 1, PerfScore 13.00, instruction count 10, allocated bytes for code 27 (MethodHash=9cf42c55) for method System.Security.Cryptography.SHA1CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
+; Total bytes of code 30, prolog size 1, PerfScore 8.75, instruction count 11, allocated bytes for code 30 (MethodHash=9cf42c55) for method System.Security.Cryptography.SHA1CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
; ============================================================
Unwind Info:
+3 (+15.79%) : 151838.dasm - System.Net.NetworkInformation.Tests.PingTest+FinalizingPing:Dispose(ubyte):this (FullOpts)
@@ -11,6 +11,7 @@
; V00 this [V00,T01] ( 3, 2.50) ref -> rdi this class-hnd single-def <System.Net.NetworkInformation.Tests.PingTest+FinalizingPing>
; V01 arg1 [V01,T00] ( 3, 3 ) ubyte -> rsi single-def
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+; V03 cse0 [V03,T02] ( 2, 2 ) int -> rax "CSE - aggressive"
;
; Lcl frame size = 0
@@ -18,19 +19,24 @@ G_M50330_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {
;; size=0 bbWeight=1 PerfScore 0.00
G_M50330_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rdi]
- test sil, sil
- jne SHORT G_M50330_IG04
+ movzx rax, sil
+ test eax, eax
+ jne SHORT G_M50330_IG05
+ ;; size=8 bbWeight=1 PerfScore 1.50
+G_M50330_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rdi]
mov byte ptr [(reloc)], 1 ; data for <unknown class>:<unknown field>
- ;; size=12 bbWeight=1 PerfScore 2.25
-G_M50330_IG03: ; bbWeight=1, epilog, nogc, extend
+ ;; size=7 bbWeight=0.50 PerfScore 0.50
+G_M50330_IG04: ; bbWeight=0.50, epilog, nogc, extend
ret
- ;; size=1 bbWeight=1 PerfScore 1.00
-G_M50330_IG04: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=1 bbWeight=0.50 PerfScore 0.50
+G_M50330_IG05: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, epilog, nogc
+ ; gcrRegs +[rdi]
tail.jmp [<unknown method>]
; gcr arg pop 0
;; size=6 bbWeight=0.50 PerfScore 1.00
-; Total bytes of code 19, prolog size 0, PerfScore 4.25, instruction count 5, allocated bytes for code 19 (MethodHash=d3d63b65) for method System.Net.NetworkInformation.Tests.PingTest+FinalizingPing:Dispose(ubyte):this (FullOpts)
+; Total bytes of code 22, prolog size 0, PerfScore 3.50, instruction count 6, allocated bytes for code 22 (MethodHash=d3d63b65) for method System.Net.NetworkInformation.Tests.PingTest+FinalizingPing:Dispose(ubyte):this (FullOpts)
; ============================================================
Unwind Info:
+14 (+16.09%) : 167450.dasm - System.Xml.DocumentXPathNavigator:get_ValueDocument():System.String:this (FullOpts)
@@ -14,15 +14,18 @@
;* V03 tmp1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Xml.XmlDocument>
; V04 tmp2 [V04,T03] ( 3, 4.25) ref -> rax single-def "CASTCLASS eval op1"
; V05 tmp3 [V05,T04] ( 3, 1.25) long -> rsi "fgMakeTemp is creating a new local variable"
-; V06 tmp4 [V06,T00] ( 6, 8.75) ref -> rdi class-hnd "spilling QMark2" <System.Xml.XmlElement>
-; V07 tmp5 [V07,T01] ( 3, 6 ) ref -> rdi single-def "argument with side effect"
+; V06 tmp4 [V06,T01] ( 5, 5.75) ref -> rdi class-hnd "spilling QMark2" <System.Xml.XmlElement>
+; V07 tmp5 [V07,T00] ( 3, 6 ) ref -> rdi single-def "argument with side effect"
+; V08 cse0 [V08,T05] ( 3, 1 ) long -> rbx "CSE - moderate"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M56653_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
push rbp
- mov rbp, rsp
- ;; size=4 bbWeight=1 PerfScore 1.25
+ push rbx
+ push rax
+ lea rbp, [rsp+0x10]
+ ;; size=8 bbWeight=1 PerfScore 3.50
G_M56653_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rdi]
mov rdi, gword ptr [rdi+0x08]
@@ -37,10 +40,11 @@ G_M56653_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byr
je SHORT G_M56653_IG07
;; size=30 bbWeight=1 PerfScore 10.75
G_M56653_IG03: ; bbWeight=0.25, gcrefRegs=0081 {rax rdi}, byrefRegs=0000 {}, byref, isz
+ mov rbx, qword ptr [rdi]
mov rsi, 0xD1FFAB1E ; System.Xml.XmlElement
- cmp qword ptr [rdi], rsi
+ cmp rbx, rsi
je SHORT G_M56653_IG05
- ;; size=15 bbWeight=0.25 PerfScore 1.06
+ ;; size=18 bbWeight=0.25 PerfScore 0.88
G_M56653_IG04: ; bbWeight=0.12, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
; gcrRegs -[rdi]
mov rdi, rsi
@@ -51,26 +55,29 @@ G_M56653_IG04: ; bbWeight=0.12, gcrefRegs=0001 {rax}, byrefRegs=0000 {},
mov rdi, rax
; gcrRegs +[rdi]
;; size=14 bbWeight=0.12 PerfScore 0.22
-G_M56653_IG05: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
+G_M56653_IG05: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
- mov rax, qword ptr [rdi]
- mov rax, qword ptr [rax+0x70]
- ;; size=7 bbWeight=1 PerfScore 4.00
-G_M56653_IG06: ; bbWeight=1, epilog, nogc, extend
+ mov rax, qword ptr [rbx+0x70]
+ ;; size=4 bbWeight=0.50 PerfScore 1.00
+G_M56653_IG06: ; bbWeight=0.50, epilog, nogc, extend
+ add rsp, 8
+ pop rbx
pop rbp
tail.jmp [rax+0x18]<unknown method>
- ;; size=5 bbWeight=1 PerfScore 2.50
+ ;; size=10 bbWeight=0.50 PerfScore 1.62
G_M56653_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rdi]
mov rax, 0xD1FFAB1E
; gcrRegs +[rax]
;; size=10 bbWeight=0.50 PerfScore 0.12
G_M56653_IG08: ; bbWeight=0.50, epilog, nogc, extend
+ add rsp, 8
+ pop rbx
pop rbp
ret
- ;; size=2 bbWeight=0.50 PerfScore 0.75
+ ;; size=7 bbWeight=0.50 PerfScore 1.12
-; Total bytes of code 87, prolog size 4, PerfScore 20.66, instruction count 24, allocated bytes for code 87 (MethodHash=6dd022b2) for method System.Xml.DocumentXPathNavigator:get_ValueDocument():System.String:this (FullOpts)
+; Total bytes of code 101, prolog size 8, PerfScore 19.22, instruction count 30, allocated bytes for code 101 (MethodHash=6dd022b2) for method System.Xml.DocumentXPathNavigator:get_ValueDocument():System.String:this (FullOpts)
; ============================================================
Unwind Info:
@@ -78,9 +85,11 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x01
- CountOfUnwindCodes: 1
+ SizeOfProlog : 0x03
+ CountOfUnwindCodes: 3
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
+ CodeOffset: 0x03 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
+ CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
realworld.run.linux.x64.checked.mch
-35 (-44.30%) : 8852.dasm - System.Int32:Equals(System.Object):ubyte:this (FullOpts)
@@ -8,75 +8,53 @@
; Final local variable assignments
;
; V00 this [V00,T02] ( 3, 2.50) byref -> rdi this single-def
-; V01 arg1 [V01,T00] ( 5, 3.75) ref -> rbx class-hnd single-def <System.Object>
+; V01 arg1 [V01,T00] ( 4, 3.50) ref -> rsi class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03,T01] ( 3, 4.50) ref -> rax class-hnd "spilling QMark2" <System.Int32>
-; V04 tmp2 [V04,T03] ( 2, 2 ) int -> r15 "impAppendStmt"
-; V05 cse0 [V05,T04] ( 4, 1.25) long -> rcx "CSE - moderate"
-; V06 cse1 [V06,T05] ( 3, 1 ) long -> rsi "CSE - moderate"
+; V04 tmp2 [V04,T03] ( 2, 2 ) int -> rax "impAppendStmt"
;
; Lcl frame size = 0
-G_M40448_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M40448_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
push rbp
- push r15
- push rbx
- lea rbp, [rsp+0x10]
- mov rbx, rsi
- ; gcrRegs +[rbx]
- ;; size=12 bbWeight=1 PerfScore 3.75
-G_M40448_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0080 {rdi}, byref, isz
+ mov rbp, rsp
+ ;; size=4 bbWeight=1 PerfScore 1.25
+G_M40448_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi}, byref, isz
+ ; gcrRegs +[rsi]
; byrRegs +[rdi]
- mov rax, rbx
+ mov rax, rsi
; gcrRegs +[rax]
test rax, rax
je SHORT G_M40448_IG04
;; size=8 bbWeight=1 PerfScore 1.50
-G_M40448_IG03: ; bbWeight=0.25, gcrefRegs=0009 {rax rbx}, byrefRegs=0080 {rdi}, byref, isz
- mov rsi, qword ptr [rax]
+G_M40448_IG03: ; bbWeight=0.25, gcrefRegs=0041 {rax rsi}, byrefRegs=0080 {rdi}, byref, isz
mov rcx, 0xD1FFAB1E ; System.Int32
- cmp rsi, rcx
+ cmp qword ptr [rax], rcx
je SHORT G_M40448_IG06
- ;; size=18 bbWeight=0.25 PerfScore 0.88
+ ;; size=15 bbWeight=0.25 PerfScore 1.06
G_M40448_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax rbx]
+ ; gcrRegs -[rax rsi]
; byrRegs -[rdi]
xor eax, eax
;; size=2 bbWeight=0.50 PerfScore 0.12
G_M40448_IG05: ; bbWeight=0.50, epilog, nogc, extend
- pop rbx
- pop r15
pop rbp
ret
- ;; size=5 bbWeight=0.50 PerfScore 1.25
-G_M40448_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0080 {rdi}, gcvars, byref, isz
- ; gcrRegs +[rbx]
- ; byrRegs +[rdi]
- mov r15d, dword ptr [rdi]
- cmp rsi, rcx
- je SHORT G_M40448_IG08
- ;; size=8 bbWeight=0.50 PerfScore 1.62
-G_M40448_IG07: ; bbWeight=0.25, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- ; byrRegs -[rdi]
- mov rsi, rbx
+ ;; size=2 bbWeight=0.50 PerfScore 0.75
+G_M40448_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi}, gcvars, byref
; gcrRegs +[rsi]
- mov rdi, rcx
- call [CORINFO_HELP_UNBOX]
- ; gcrRegs -[rsi]
- ;; size=12 bbWeight=0.25 PerfScore 0.88
-G_M40448_IG08: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- xor eax, eax
- cmp r15d, dword ptr [rbx+0x08]
+ ; byrRegs +[rdi]
+ mov eax, dword ptr [rdi]
+ cmp eax, dword ptr [rsi+0x08]
sete al
- ;; size=9 bbWeight=0.50 PerfScore 2.12
-G_M40448_IG09: ; bbWeight=0.50, epilog, nogc, extend
- pop rbx
- pop r15
+ movzx rax, al
+ ;; size=11 bbWeight=0.50 PerfScore 3.12
+G_M40448_IG07: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
ret
- ;; size=5 bbWeight=0.50 PerfScore 1.25
+ ;; size=2 bbWeight=0.50 PerfScore 0.75
-; Total bytes of code 79, prolog size 9, PerfScore 13.38, instruction count 30, allocated bytes for code 79 (MethodHash=d61e61ff) for method System.Int32:Equals(System.Object):ubyte:this (FullOpts)
+; Total bytes of code 44, prolog size 4, PerfScore 8.56, instruction count 17, allocated bytes for code 44 (MethodHash=d61e61ff) for method System.Int32:Equals(System.Object):ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -84,11 +62,9 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x04
- CountOfUnwindCodes: 3
+ SizeOfProlog : 0x01
+ CountOfUnwindCodes: 1
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
-36 (-42.86%) : 7022.dasm - System.Boolean:Equals(System.Object):ubyte:this (FullOpts)
@@ -8,76 +8,54 @@
; Final local variable assignments
;
; V00 this [V00,T02] ( 3, 2.50) byref -> rdi this single-def
-; V01 arg1 [V01,T00] ( 5, 3.75) ref -> rbx class-hnd single-def <System.Object>
+; V01 arg1 [V01,T00] ( 4, 3.50) ref -> rsi class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03,T01] ( 3, 4.50) ref -> rax class-hnd "spilling QMark2" <System.Boolean>
-; V04 tmp2 [V04,T03] ( 2, 2 ) int -> r15 "impAppendStmt"
-; V05 cse0 [V05,T04] ( 4, 1.25) long -> rcx "CSE - moderate"
-; V06 cse1 [V06,T05] ( 3, 1 ) long -> rsi "CSE - moderate"
+; V04 tmp2 [V04,T03] ( 2, 2 ) int -> rax "impAppendStmt"
;
; Lcl frame size = 0
-G_M31030_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M31030_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
push rbp
- push r15
- push rbx
- lea rbp, [rsp+0x10]
- mov rbx, rsi
- ; gcrRegs +[rbx]
- ;; size=12 bbWeight=1 PerfScore 3.75
-G_M31030_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0080 {rdi}, byref, isz
+ mov rbp, rsp
+ ;; size=4 bbWeight=1 PerfScore 1.25
+G_M31030_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi}, byref, isz
+ ; gcrRegs +[rsi]
; byrRegs +[rdi]
- mov rax, rbx
+ mov rax, rsi
; gcrRegs +[rax]
test rax, rax
je SHORT G_M31030_IG04
;; size=8 bbWeight=1 PerfScore 1.50
-G_M31030_IG03: ; bbWeight=0.25, gcrefRegs=0009 {rax rbx}, byrefRegs=0080 {rdi}, byref, isz
- mov rsi, qword ptr [rax]
+G_M31030_IG03: ; bbWeight=0.25, gcrefRegs=0041 {rax rsi}, byrefRegs=0080 {rdi}, byref, isz
mov rcx, 0xD1FFAB1E ; System.Boolean
- cmp rsi, rcx
+ cmp qword ptr [rax], rcx
je SHORT G_M31030_IG06
- ;; size=18 bbWeight=0.25 PerfScore 0.88
+ ;; size=15 bbWeight=0.25 PerfScore 1.06
G_M31030_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax rbx]
+ ; gcrRegs -[rax rsi]
; byrRegs -[rdi]
xor eax, eax
;; size=2 bbWeight=0.50 PerfScore 0.12
G_M31030_IG05: ; bbWeight=0.50, epilog, nogc, extend
- pop rbx
- pop r15
pop rbp
ret
- ;; size=5 bbWeight=0.50 PerfScore 1.25
-G_M31030_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0080 {rdi}, gcvars, byref, isz
- ; gcrRegs +[rbx]
- ; byrRegs +[rdi]
- movzx r15, byte ptr [rdi]
- cmp rsi, rcx
- je SHORT G_M31030_IG08
- ;; size=9 bbWeight=0.50 PerfScore 1.62
-G_M31030_IG07: ; bbWeight=0.25, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- ; byrRegs -[rdi]
- mov rsi, rbx
+ ;; size=2 bbWeight=0.50 PerfScore 0.75
+G_M31030_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi}, gcvars, byref
; gcrRegs +[rsi]
- mov rdi, rcx
- call [CORINFO_HELP_UNBOX]
- ; gcrRegs -[rsi]
- ;; size=12 bbWeight=0.25 PerfScore 0.88
-G_M31030_IG08: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- movzx rax, byte ptr [rbx+0x08]
- cmp r15d, eax
+ ; byrRegs +[rdi]
+ movzx rax, byte ptr [rdi]
+ movzx rcx, byte ptr [rsi+0x08]
+ cmp eax, ecx
sete al
movzx rax, al
- ;; size=13 bbWeight=0.50 PerfScore 1.75
-G_M31030_IG09: ; bbWeight=0.50, epilog, nogc, extend
- pop rbx
- pop r15
+ ;; size=15 bbWeight=0.50 PerfScore 2.75
+G_M31030_IG07: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
ret
- ;; size=5 bbWeight=0.50 PerfScore 1.25
+ ;; size=2 bbWeight=0.50 PerfScore 0.75
-; Total bytes of code 84, prolog size 9, PerfScore 13.00, instruction count 31, allocated bytes for code 84 (MethodHash=c96e86c9) for method System.Boolean:Equals(System.Object):ubyte:this (FullOpts)
+; Total bytes of code 48, prolog size 4, PerfScore 8.19, instruction count 18, allocated bytes for code 48 (MethodHash=c96e86c9) for method System.Boolean:Equals(System.Object):ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -85,11 +63,9 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x04
- CountOfUnwindCodes: 3
+ SizeOfProlog : 0x01
+ CountOfUnwindCodes: 1
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
-36 (-42.86%) : 6712.dasm - System.Byte:Equals(System.Object):ubyte:this (FullOpts)
@@ -8,76 +8,54 @@
; Final local variable assignments
;
; V00 this [V00,T02] ( 3, 2.50) byref -> rdi this single-def
-; V01 arg1 [V01,T00] ( 5, 3.75) ref -> rbx class-hnd single-def <System.Object>
+; V01 arg1 [V01,T00] ( 4, 3.50) ref -> rsi class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03,T01] ( 3, 4.50) ref -> rax class-hnd "spilling QMark2" <System.Byte>
-; V04 tmp2 [V04,T03] ( 2, 2 ) int -> r15 "impAppendStmt"
-; V05 cse0 [V05,T04] ( 4, 1.25) long -> rcx "CSE - moderate"
-; V06 cse1 [V06,T05] ( 3, 1 ) long -> rsi "CSE - moderate"
+; V04 tmp2 [V04,T03] ( 2, 2 ) int -> rax "impAppendStmt"
;
; Lcl frame size = 0
-G_M19224_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M19224_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
push rbp
- push r15
- push rbx
- lea rbp, [rsp+0x10]
- mov rbx, rsi
- ; gcrRegs +[rbx]
- ;; size=12 bbWeight=1 PerfScore 3.75
-G_M19224_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0080 {rdi}, byref, isz
+ mov rbp, rsp
+ ;; size=4 bbWeight=1 PerfScore 1.25
+G_M19224_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi}, byref, isz
+ ; gcrRegs +[rsi]
; byrRegs +[rdi]
- mov rax, rbx
+ mov rax, rsi
; gcrRegs +[rax]
test rax, rax
je SHORT G_M19224_IG04
;; size=8 bbWeight=1 PerfScore 1.50
-G_M19224_IG03: ; bbWeight=0.25, gcrefRegs=0009 {rax rbx}, byrefRegs=0080 {rdi}, byref, isz
- mov rsi, qword ptr [rax]
+G_M19224_IG03: ; bbWeight=0.25, gcrefRegs=0041 {rax rsi}, byrefRegs=0080 {rdi}, byref, isz
mov rcx, 0xD1FFAB1E ; System.Byte
- cmp rsi, rcx
+ cmp qword ptr [rax], rcx
je SHORT G_M19224_IG06
- ;; size=18 bbWeight=0.25 PerfScore 0.88
+ ;; size=15 bbWeight=0.25 PerfScore 1.06
G_M19224_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax rbx]
+ ; gcrRegs -[rax rsi]
; byrRegs -[rdi]
xor eax, eax
;; size=2 bbWeight=0.50 PerfScore 0.12
G_M19224_IG05: ; bbWeight=0.50, epilog, nogc, extend
- pop rbx
- pop r15
pop rbp
ret
- ;; size=5 bbWeight=0.50 PerfScore 1.25
-G_M19224_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0080 {rdi}, gcvars, byref, isz
- ; gcrRegs +[rbx]
- ; byrRegs +[rdi]
- movzx r15, byte ptr [rdi]
- cmp rsi, rcx
- je SHORT G_M19224_IG08
- ;; size=9 bbWeight=0.50 PerfScore 1.62
-G_M19224_IG07: ; bbWeight=0.25, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- ; byrRegs -[rdi]
- mov rsi, rbx
+ ;; size=2 bbWeight=0.50 PerfScore 0.75
+G_M19224_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi}, gcvars, byref
; gcrRegs +[rsi]
- mov rdi, rcx
- call [CORINFO_HELP_UNBOX]
- ; gcrRegs -[rsi]
- ;; size=12 bbWeight=0.25 PerfScore 0.88
-G_M19224_IG08: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- movzx rax, byte ptr [rbx+0x08]
- cmp r15d, eax
+ ; byrRegs +[rdi]
+ movzx rax, byte ptr [rdi]
+ movzx rcx, byte ptr [rsi+0x08]
+ cmp eax, ecx
sete al
movzx rax, al
- ;; size=13 bbWeight=0.50 PerfScore 1.75
-G_M19224_IG09: ; bbWeight=0.50, epilog, nogc, extend
- pop rbx
- pop r15
+ ;; size=15 bbWeight=0.50 PerfScore 2.75
+G_M19224_IG07: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
ret
- ;; size=5 bbWeight=0.50 PerfScore 1.25
+ ;; size=2 bbWeight=0.50 PerfScore 0.75
-; Total bytes of code 84, prolog size 9, PerfScore 13.00, instruction count 31, allocated bytes for code 84 (MethodHash=3af2b4e7) for method System.Byte:Equals(System.Object):ubyte:this (FullOpts)
+; Total bytes of code 48, prolog size 4, PerfScore 8.19, instruction count 18, allocated bytes for code 48 (MethodHash=3af2b4e7) for method System.Byte:Equals(System.Object):ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -85,11 +63,9 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x04
- CountOfUnwindCodes: 3
+ SizeOfProlog : 0x01
+ CountOfUnwindCodes: 1
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+2 (+3.23%) : 14665.dasm - System.Net.Http.HttpConnectionPool:GetSslOptionsForRequest(System.Net.Http.HttpRequestMessage):System.Net.Security.SslClientAuthenticationOptions:this (FullOpts)
@@ -13,6 +13,7 @@
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V03 tmp1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Version>
;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Version>
+; V05 cse0 [V05,T02] ( 2, 1 ) int -> rax "CSE - moderate"
;
; Lcl frame size = 0
@@ -28,12 +29,15 @@ G_M47920_IG02: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {},
G_M47920_IG03: ; bbWeight=0.50, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, isz
mov rax, gword ptr [rsi+0x20]
; gcrRegs +[rax]
- cmp dword ptr [rax+0x08], 2
+ mov eax, dword ptr [rax+0x08]
+ ; gcrRegs -[rax]
+ cmp eax, 2
jl SHORT G_M47920_IG05
cmp dword ptr [rsi+0x3C], 0
je SHORT G_M47920_IG06
mov rax, gword ptr [rdi+0x98]
- ;; size=23 bbWeight=0.50 PerfScore 6.00
+ ; gcrRegs +[rax]
+ ;; size=25 bbWeight=0.50 PerfScore 5.62
G_M47920_IG04: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
ret
@@ -62,7 +66,7 @@ G_M47920_IG09: ; bbWeight=0.50, epilog, nogc, extend
ret
;; size=2 bbWeight=0.50 PerfScore 0.75
-; Total bytes of code 62, prolog size 4, PerfScore 17.50, instruction count 20, allocated bytes for code 62 (MethodHash=a75444cf) for method System.Net.Http.HttpConnectionPool:GetSslOptionsForRequest(System.Net.Http.HttpRequestMessage):System.Net.Security.SslClientAuthenticationOptions:this (FullOpts)
+; Total bytes of code 64, prolog size 4, PerfScore 17.12, instruction count 21, allocated bytes for code 64 (MethodHash=a75444cf) for method System.Net.Http.HttpConnectionPool:GetSslOptionsForRequest(System.Net.Http.HttpRequestMessage):System.Net.Security.SslClientAuthenticationOptions:this (FullOpts)
; ============================================================
Unwind Info:
+19 (+4.60%) : 19490.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:SetUpdatedSymbol(Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbol):this (FullOpts)
@@ -12,7 +12,7 @@
; V01 arg1 [V01,T04] ( 6, 4 ) ref -> r14 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundNode>
; V02 arg2 [V02,T02] ( 9, 5.50) ref -> rbx class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbol>
; V03 arg3 [V03,T03] ( 8, 5 ) ref -> r15 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbol>
-; V04 loc0 [V04,T14] ( 2, 1 ) ubyte -> rax
+; V04 loc0 [V04,T14] ( 3, 1.50) ubyte -> r12
; V05 loc1 [V05,T15] ( 3, 1.25) ref -> rsi class-hnd exact <Microsoft.CodeAnalysis.CSharp.BoundLambda>
; V06 loc2 [V06,T16] ( 3, 1.25) ref -> rsi class-hnd exact <Microsoft.CodeAnalysis.CSharp.Symbols.LambdaSymbol>
; V07 loc3 [V07,T11] ( 3, 1.50) ref -> rax class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol>
@@ -64,16 +64,17 @@
; V53 tmp45 [V53,T27] ( 2, 1 ) int -> rbx "field V31._countAdjustment (fldOffset=0x8)" P-INDEP
; V54 tmp46 [V54,T10] ( 2, 2 ) ref -> rsi single-def "argument with side effect"
;
-; Lcl frame size = 16
+; Lcl frame size = 24
G_M21353_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
push r15
push r14
push r13
+ push r12
push rbx
- sub rsp, 16
- lea rbp, [rsp+0x30]
+ sub rsp, 24
+ lea rbp, [rsp+0x40]
mov r13, rdi
; gcrRegs +[r13]
mov r14, rsi
@@ -82,32 +83,34 @@ G_M21353_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs +[rbx]
mov r15, rcx
; gcrRegs +[r15]
- ;; size=29 bbWeight=1 PerfScore 6.75
+ ;; size=31 bbWeight=1 PerfScore 7.75
G_M21353_IG02: ; bbWeight=1, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref, isz
cmp gword ptr [r13+0x160], 0
jne SHORT G_M21353_IG04
;; size=10 bbWeight=1 PerfScore 4.00
G_M21353_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rbx r13-r15]
- add rsp, 16
+ add rsp, 24
pop rbx
+ pop r12
pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=13 bbWeight=0.50 PerfScore 1.88
+ ;; size=15 bbWeight=0.50 PerfScore 2.12
G_M21353_IG04: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rbx r13-r15]
+ xor r12d, r12d
mov rsi, r14
; gcrRegs +[rsi]
test rsi, rsi
je SHORT G_M21353_IG09
- ;; size=8 bbWeight=0.50 PerfScore 0.75
+ ;; size=11 bbWeight=0.50 PerfScore 0.88
G_M21353_IG05: ; bbWeight=0.25, gcrefRegs=E048 {rbx rsi r13 r14 r15}, byrefRegs=0000 {}, byref, isz
mov rdi, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.BoundLambda
cmp qword ptr [rsi], rdi
- jne SHORT G_M21353_IG09
+ jne SHORT G_M21353_IG10
;; size=15 bbWeight=0.25 PerfScore 1.06
G_M21353_IG06: ; bbWeight=0.50, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rsi]
@@ -119,7 +122,7 @@ G_M21353_IG06: ; bbWeight=0.50, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRe
G_M21353_IG07: ; bbWeight=0.25, gcrefRegs=E048 {rbx rsi r13 r14 r15}, byrefRegs=0000 {}, byref, isz
mov rdi, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.Symbols.LambdaSymbol
cmp qword ptr [rsi], rdi
- jne SHORT G_M21353_IG09
+ jne SHORT G_M21353_IG10
;; size=15 bbWeight=0.25 PerfScore 1.06
G_M21353_IG08: ; bbWeight=0.50, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rsi]
@@ -129,7 +132,7 @@ G_M21353_IG08: ; bbWeight=0.50, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRe
call CORINFO_HELP_ISINSTANCEOFCLASS
; gcrRegs -[rsi] +[rax]
test rax, rax
- je SHORT G_M21353_IG09
+ je SHORT G_M21353_IG10
mov rdi, rbx
; gcrRegs +[rdi]
mov rsi, rax
@@ -152,17 +155,20 @@ G_M21353_IG08: ; bbWeight=0.50, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRe
mov rax, qword ptr [rax+0x78]
call [rax+0x20]<unknown method>
; gcrRegs -[rsi rdi]
- test eax, eax
- jne SHORT G_M21353_IG11
- ;; size=71 bbWeight=0.50 PerfScore 10.75
+ mov r12d, eax
+ ;; size=70 bbWeight=0.50 PerfScore 10.25
G_M21353_IG09: ; bbWeight=0.50, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref, isz
- test rbx, rbx
- jne SHORT G_M21353_IG10
- test r15, r15
- jne SHORT G_M21353_IG14
- jmp SHORT G_M21353_IG11
- ;; size=12 bbWeight=0.50 PerfScore 2.25
+ test r12d, r12d
+ jne SHORT G_M21353_IG12
+ ;; size=5 bbWeight=0.50 PerfScore 0.62
G_M21353_IG10: ; bbWeight=0.50, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref, isz
+ test rbx, rbx
+ jne SHORT G_M21353_IG11
+ test r15, r15
+ jne G_M21353_IG15
+ jmp SHORT G_M21353_IG12
+ ;; size=16 bbWeight=0.50 PerfScore 2.25
+G_M21353_IG11: ; bbWeight=0.50, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref, isz
mov rdi, rbx
; gcrRegs +[rdi]
mov rsi, r15
@@ -173,9 +179,9 @@ G_M21353_IG10: ; bbWeight=0.50, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRe
call [rax+0x20]<unknown method>
; gcrRegs -[rsi rdi]
test eax, eax
- je SHORT G_M21353_IG14
+ je SHORT G_M21353_IG15
;; size=22 bbWeight=0.50 PerfScore 4.50
-G_M21353_IG11: ; bbWeight=0.50, gcrefRegs=6008 {rbx r13 r14}, byrefRegs=0000 {}, byref, isz
+G_M21353_IG12: ; bbWeight=0.50, gcrefRegs=6008 {rbx r13 r14}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r15]
mov rdi, gword ptr [r13+0x160]
; gcrRegs +[rdi]
@@ -197,7 +203,7 @@ G_M21353_IG11: ; bbWeight=0.50, gcrefRegs=6008 {rbx r13 r14}, byrefRegs=0
mov r14d, edx
inc dword ptr [r13+0x2C]
cmp gword ptr [r13+0x08], rax
- je SHORT G_M21353_IG12
+ je SHORT G_M21353_IG13
lea rdi, bword ptr [r13+0x08]
; byrRegs +[rdi]
mov rsi, rax
@@ -209,20 +215,21 @@ G_M21353_IG11: ; bbWeight=0.50, gcrefRegs=6008 {rbx r13 r14}, byrefRegs=0
; gcrRegs +[rdi]
mov gword ptr [r13+0x18], rdi
;; size=81 bbWeight=0.50 PerfScore 12.62
-G_M21353_IG12: ; bbWeight=0.50, gcrefRegs=2000 {r13}, byrefRegs=0000 {}, byref
+G_M21353_IG13: ; bbWeight=0.50, gcrefRegs=2000 {r13}, byrefRegs=0000 {}, byref
; gcrRegs -[rdi]
add dword ptr [r13+0x28], r14d
;; size=4 bbWeight=0.50 PerfScore 1.50
-G_M21353_IG13: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 16
+G_M21353_IG14: ; bbWeight=0.50, epilog, nogc, extend
+ add rsp, 24
pop rbx
+ pop r12
pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=13 bbWeight=0.50 PerfScore 1.88
-G_M21353_IG14: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=15 bbWeight=0.50 PerfScore 2.12
+G_M21353_IG15: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rbx r14-r15]
mov rdi, gword ptr [r13+0x160]
; gcrRegs +[rdi]
@@ -249,7 +256,7 @@ G_M21353_IG14: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=E00
mov ebx, edx
inc dword ptr [r13+0x2C]
cmp gword ptr [r13+0x08], rax
- je SHORT G_M21353_IG15
+ je SHORT G_M21353_IG16
lea rdi, bword ptr [r13+0x08]
; byrRegs +[rdi]
mov rsi, rax
@@ -261,21 +268,22 @@ G_M21353_IG14: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=E00
; gcrRegs +[rax]
mov gword ptr [r13+0x18], rax
;; size=95 bbWeight=0.50 PerfScore 13.88
-G_M21353_IG15: ; bbWeight=0.50, gcrefRegs=2000 {r13}, byrefRegs=0000 {}, byref
+G_M21353_IG16: ; bbWeight=0.50, gcrefRegs=2000 {r13}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
add dword ptr [r13+0x28], ebx
;; size=4 bbWeight=0.50 PerfScore 1.50
-G_M21353_IG16: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 16
+G_M21353_IG17: ; bbWeight=0.50, epilog, nogc, extend
+ add rsp, 24
pop rbx
+ pop r12
pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=13 bbWeight=0.50 PerfScore 1.88
+ ;; size=15 bbWeight=0.50 PerfScore 2.12
-; Total bytes of code 413, prolog size 17, PerfScore 67.00, instruction count 123, allocated bytes for code 413 (MethodHash=7b46ac96) for method Microsoft.CodeAnalysis.CSharp.NullableWalker:SetUpdatedSymbol(Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbol):this (FullOpts)
+; Total bytes of code 432, prolog size 19, PerfScore 69.00, instruction count 129, allocated bytes for code 432 (MethodHash=7b46ac96) for method Microsoft.CodeAnalysis.CSharp.NullableWalker:SetUpdatedSymbol(Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbol):this (FullOpts)
; ============================================================
Unwind Info:
@@ -283,13 +291,14 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x0C
- CountOfUnwindCodes: 6
+ SizeOfProlog : 0x0E
+ CountOfUnwindCodes: 7
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x0C UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10
- CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x0E UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 2 * 8 + 8 = 24 = 0x18
+ CodeOffset: 0x0A UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x09 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r12 (12)
CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r13 (13)
CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
+29 (+4.82%) : 17244.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:g_getCloseQuote|4285(byref):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
@@ -23,26 +23,26 @@
; V12 tmp3 [V12,T00] ( 14, 15.50) ref -> r14 class-hnd exact single-def "non-inline candidate call" <System.String>
; V13 tmp4 [V13,T05] ( 6, 6 ) int -> rcx "Inline stloc first use temp"
; V14 tmp5 [V14,T10] ( 4, 3.50) int -> rdx "Inline stloc first use temp"
-; V15 tmp6 [V15,T18] ( 3, 2 ) ref -> r13 class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V15 tmp6 [V15,T18] ( 3, 2 ) ref -> r12 class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
; V16 tmp7 [V16,T03] ( 10, 11 ) ref -> rbx class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.GreenNode>
;* V17 tmp8 [V17 ] ( 0, 0 ) ref -> zero-ref single-def "spilling varStr"
;* V18 tmp9 [V18,T26] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
-; V19 tmp10 [V19,T22] ( 3, 1.50) ref -> r13 class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V19 tmp10 [V19,T22] ( 3, 1.50) ref -> r12 class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
; V20 tmp11 [V20,T11] ( 6, 3 ) ref -> r13 class-hnd exact single-def "Inline stloc first use temp" <System.String>
; V21 tmp12 [V21,T15] ( 2, 1 ) ubyte -> rax "Inline return value spill temp"
; V22 tmp13 [V22,T19] ( 2, 2 ) byref -> rdi single-def "impAppendStmt"
; V23 tmp14 [V23,T16] ( 2, 1 ) ubyte -> rax "Inline return value spill temp"
; V24 tmp15 [V24,T20] ( 2, 2 ) byref -> rdi single-def "impAppendStmt"
-; V25 tmp16 [V25,T01] ( 13, 13 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V25 tmp16 [V25,T01] ( 13, 13 ) ref -> r12 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
; V26 tmp17 [V26,T21] ( 2, 2 ) int -> rdi "Inlining Arg"
-; V27 tmp18 [V27,T02] ( 12, 12 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken+MissingTokenWithTrivia>
+; V27 tmp18 [V27,T02] ( 12, 12 ) ref -> r12 class-hnd exact single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken+MissingTokenWithTrivia>
;* V28 tmp19 [V28 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
; V29 tmp20 [V29,T12] ( 3, 3 ) int -> rdx single-def "field V04.<Start>k__BackingField (fldOffset=0x0)" P-INDEP
; V30 tmp21 [V30,T14] ( 3, 2.50) int -> rsi single-def "field V04.<End>k__BackingField (fldOffset=0x4)" P-INDEP
;* V31 tmp22 [V31 ] ( 0, 0 ) int -> zero-ref "field V08._value (fldOffset=0x0)" P-INDEP
; V32 tmp23 [V32,T07] ( 3, 6 ) ref -> rdi single-def "argument with side effect"
-; V33 cse0 [V33,T23] ( 3, 1.50) int -> [rbp-0x2C] spill-single-def "CSE - moderate"
-; V34 cse1 [V34,T24] ( 3, 1.50) long -> [rbp-0x38] spill-single-def "CSE - moderate"
+; V33 cse0 [V33,T23] ( 3, 1.50) int -> [rbp-0x2C] "CSE - moderate"
+; V34 cse1 [V34,T24] ( 3, 1.50) long -> [rbp-0x38] "CSE - moderate"
; V35 cse2 [V35,T25] ( 2, 1 ) int -> rdi "CSE - moderate"
; V36 cse3 [V36,T17] ( 4, 2 ) int -> r12 "CSE - moderate"
; V37 rat0 [V37,T08] ( 3, 6 ) int -> rdx "ReplaceWithLclVar is creating a new local variable"
@@ -64,7 +64,7 @@ G_M17349_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M17349_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
mov edx, dword ptr [rbx+0x20]
cmp edx, 3
- ja G_M17349_IG19
+ ja G_M17349_IG20
mov edi, 3
bt edi, edx
jae SHORT G_M17349_IG04
@@ -123,19 +123,19 @@ G_M17349_IG09: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
mov rdi, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken+MissingTokenWithTrivia
call CORINFO_HELP_NEWSFAST
; gcrRegs +[rax]
- mov r13, rax
- ; gcrRegs +[r13]
- mov word ptr [r13+0x0C], r15w
+ mov r12, rax
+ ; gcrRegs +[r12]
+ mov word ptr [r12+0x0C], r15w
xor eax, eax
; gcrRegs -[rax]
- mov dword ptr [r13+0x08], eax
- or byte ptr [r13+0x0E], 32
+ mov dword ptr [r12+0x08], eax
+ or byte ptr [r12+0x0E], 32
test rbx, rbx
- je G_M17349_IG16
- jmp G_M17349_IG15
- ;; size=48 bbWeight=0.50 PerfScore 5.00
+ je G_M17349_IG17
+ jmp G_M17349_IG16
+ ;; size=51 bbWeight=0.50 PerfScore 5.00
G_M17349_IG10: ; bbWeight=0.50, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r13] +[r14]
+ ; gcrRegs -[r12] +[r14]
mov edi, r15d
call [<unknown method>]
; gcrRegs +[rax]
@@ -144,17 +144,17 @@ G_M17349_IG10: ; bbWeight=0.50, gcrefRegs=4008 {rbx r14}, byrefRegs=0000
mov edi, r15d
sub edi, 0x2001
cmp edi, 303
- ja G_M17349_IG11
+ ja G_M17349_IG12
cmp r14, r13
- je G_M17349_IG13
+ je G_M17349_IG14
test r14, r14
- je G_M17349_IG11
+ je G_M17349_IG12
test r13, r13
- je G_M17349_IG11
+ je G_M17349_IG12
mov edi, dword ptr [r14+0x08]
mov r12d, dword ptr [r13+0x08]
cmp edi, r12d
- jne G_M17349_IG11
+ jne G_M17349_IG12
mov edi, 1
call [<unknown method>]
; gcrRegs -[rax]
@@ -178,9 +178,13 @@ G_M17349_IG10: ; bbWeight=0.50, gcrefRegs=4008 {rbx r14}, byrefRegs=0000
call [<unknown method>]
; byrRegs -[rsi rdi]
test eax, eax
- je SHORT G_M17349_IG11
+ je SHORT G_M17349_IG12
+ mov eax, dword ptr [rbp-0x2C]
+ mov rcx, qword ptr [rbp-0x38]
cmp dword ptr [r14+0x08], r12d
- jne SHORT G_M17349_IG11
+ mov dword ptr [rbp-0x2C], eax
+ mov qword ptr [rbp-0x38], rcx
+ jne SHORT G_M17349_IG12
mov edi, 1
call [<unknown method>]
mov edi, 1
@@ -196,26 +200,28 @@ G_M17349_IG10: ; bbWeight=0.50, gcrefRegs=4008 {rbx r14}, byrefRegs=0000
; gcrRegs -[r13]
; byrRegs -[rsi rdi]
test eax, eax
- jne SHORT G_M17349_IG13
- ;; size=211 bbWeight=0.50 PerfScore 29.50
-G_M17349_IG11: ; bbWeight=0.50, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz
+ ;; size=223 bbWeight=0.50 PerfScore 31.00
+G_M17349_IG11: ; bbWeight=0.50, isz, extend
+ jne SHORT G_M17349_IG14
+ ;; size=2 bbWeight=0.50 PerfScore 0.50
+G_M17349_IG12: ; bbWeight=0.50, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz
mov rdi, 0xD1FFAB1E ; <unknown class>
call CORINFO_HELP_NEWSFAST
; gcrRegs +[rax]
- mov r13, rax
- ; gcrRegs +[r13]
+ mov r12, rax
+ ; gcrRegs +[r12]
mov edi, dword ptr [r14+0x08]
- mov word ptr [r13+0x0C], r15w
- mov dword ptr [r13+0x08], edi
- or byte ptr [r13+0x0E], 32
- lea rdi, bword ptr [r13+0x10]
+ mov word ptr [r12+0x0C], r15w
+ mov dword ptr [r12+0x08], edi
+ or byte ptr [r12+0x0E], 32
+ lea rdi, bword ptr [r12+0x10]
; byrRegs +[rdi]
mov rsi, r14
; gcrRegs +[rsi]
call CORINFO_HELP_ASSIGN_REF
; gcrRegs -[rax rsi]
; byrRegs -[rdi]
- lea rdi, bword ptr [r13+0x18]
+ lea rdi, bword ptr [r12+0x18]
; byrRegs +[rdi]
mov rsi, r14
; gcrRegs +[rsi]
@@ -223,25 +229,25 @@ G_M17349_IG11: ; bbWeight=0.50, gcrefRegs=4008 {rbx r14}, byrefRegs=0000
; gcrRegs -[rsi r14]
; byrRegs -[rdi]
test rbx, rbx
- je SHORT G_M17349_IG12
+ je SHORT G_M17349_IG13
movzx rdi, byte ptr [rbx+0x0E]
and edi, 63
- or byte ptr [r13+0x0E], dil
+ or byte ptr [r12+0x0E], dil
mov edi, dword ptr [rbx+0x08]
- add dword ptr [r13+0x08], edi
- lea rdi, bword ptr [r13+0x28]
+ add dword ptr [r12+0x08], edi
+ lea rdi, bword ptr [r12+0x28]
; byrRegs +[rdi]
mov rsi, rbx
; gcrRegs +[rsi]
call CORINFO_HELP_ASSIGN_REF
; gcrRegs -[rbx rsi]
; byrRegs -[rdi]
- ;; size=96 bbWeight=0.50 PerfScore 12.62
-G_M17349_IG12: ; bbWeight=0.50, gcrefRegs=2000 {r13}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M17349_IG14
+ ;; size=104 bbWeight=0.50 PerfScore 12.62
+G_M17349_IG13: ; bbWeight=0.50, gcrefRegs=1000 {r12}, byrefRegs=0000 {}, byref, isz
+ jmp SHORT G_M17349_IG15
;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M17349_IG13: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r13] +[rbx]
+G_M17349_IG14: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r12] +[rbx]
mov edi, r15d
mov rdx, rbx
; gcrRegs +[rdx]
@@ -249,36 +255,36 @@ G_M17349_IG13: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
; gcrRegs +[rsi]
call [<unknown method>]
; gcrRegs -[rdx rbx rsi] +[rax]
- mov r13, rax
- ; gcrRegs +[r13]
+ mov r12, rax
+ ; gcrRegs +[r12]
;; size=17 bbWeight=0.50 PerfScore 2.00
-G_M17349_IG14: ; bbWeight=0.50, gcrefRegs=2000 {r13}, byrefRegs=0000 {}, byref, isz
+G_M17349_IG15: ; bbWeight=0.50, gcrefRegs=1000 {r12}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
- jmp SHORT G_M17349_IG17
+ jmp SHORT G_M17349_IG18
;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M17349_IG15: ; bbWeight=0.50, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref
+G_M17349_IG16: ; bbWeight=0.50, gcrefRegs=1008 {rbx r12}, byrefRegs=0000 {}, byref
; gcrRegs +[rbx]
movzx rdi, byte ptr [rbx+0x0E]
and edi, 63
- or byte ptr [r13+0x0E], dil
+ or byte ptr [r12+0x0E], dil
mov edi, dword ptr [rbx+0x08]
- mov dword ptr [r13+0x08], edi
- lea rdi, bword ptr [r13+0x18]
+ mov dword ptr [r12+0x08], edi
+ lea rdi, bword ptr [r12+0x18]
; byrRegs +[rdi]
mov rsi, rbx
; gcrRegs +[rsi]
call CORINFO_HELP_ASSIGN_REF
; gcrRegs -[rbx rsi]
; byrRegs -[rdi]
- ;; size=31 bbWeight=0.50 PerfScore 5.00
-G_M17349_IG16: ; bbWeight=0.50, gcrefRegs=2000 {r13}, byrefRegs=0000 {}, byref
- and byte ptr [r13+0x0E], 223
- ;; size=5 bbWeight=0.50 PerfScore 1.50
-G_M17349_IG17: ; bbWeight=1, gcrefRegs=2000 {r13}, byrefRegs=0000 {}, byref
- mov rax, r13
+ ;; size=34 bbWeight=0.50 PerfScore 5.00
+G_M17349_IG17: ; bbWeight=0.50, gcrefRegs=1000 {r12}, byrefRegs=0000 {}, byref
+ and byte ptr [r12+0x0E], 223
+ ;; size=6 bbWeight=0.50 PerfScore 1.50
+G_M17349_IG18: ; bbWeight=1, gcrefRegs=1000 {r12}, byrefRegs=0000 {}, byref
+ mov rax, r12
; gcrRegs +[rax]
;; size=3 bbWeight=1 PerfScore 0.25
-G_M17349_IG18: ; bbWeight=1, epilog, nogc, extend
+G_M17349_IG19: ; bbWeight=1, epilog, nogc, extend
add rsp, 24
pop rbx
pop r12
@@ -288,8 +294,8 @@ G_M17349_IG18: ; bbWeight=1, epilog, nogc, extend
pop rbp
ret
;; size=15 bbWeight=1 PerfScore 4.25
-G_M17349_IG19: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, gcvars, byref
- ; gcrRegs -[rax r13]
+G_M17349_IG20: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, gcvars, byref
+ ; gcrRegs -[rax r12]
; byrRegs +[rbx]
mov rdi, 0xD1FFAB1E ; <unknown class>
call CORINFO_HELP_NEWSFAST
@@ -308,7 +314,7 @@ G_M17349_IG19: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
int3
;; size=39 bbWeight=0 PerfScore 0.00
...
smoke_tests.nativeaot.linux.x64.checked.mch
-45 (-52.33%) : 145.dasm - System.Int32:Equals(System.Object):ubyte:this (FullOpts)
@@ -8,76 +8,53 @@
; Final local variable assignments
;
; V00 this [V00,T02] ( 3, 2.50) byref -> rdi this single-def
-; V01 arg1 [V01,T00] ( 5, 3.75) ref -> rbx class-hnd single-def <System.Object>
+; V01 arg1 [V01,T00] ( 4, 3.50) ref -> rsi class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03,T01] ( 3, 4.50) ref -> rax class-hnd exact "spilling QMark2" <System.Int32>
-; V04 tmp2 [V04,T03] ( 2, 2 ) int -> r15 "impAppendStmt"
-; V05 cse0 [V05,T04] ( 3, 1 ) long -> rsi "CSE - moderate"
+; V04 tmp2 [V04,T03] ( 2, 2 ) int -> rax "impAppendStmt"
;
; Lcl frame size = 0
-G_M40448_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M40448_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
push rbp
- push r15
- push rbx
- lea rbp, [rsp+0x10]
- mov rbx, rsi
- ; gcrRegs +[rbx]
- ;; size=12 bbWeight=1 PerfScore 3.75
-G_M40448_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0080 {rdi}, byref, isz
+ mov rbp, rsp
+ ;; size=4 bbWeight=1 PerfScore 1.25
+G_M40448_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi}, byref, isz
+ ; gcrRegs +[rsi]
; byrRegs +[rdi]
- mov rax, rbx
+ mov rax, rsi
; gcrRegs +[rax]
test rax, rax
je SHORT G_M40448_IG04
;; size=8 bbWeight=1 PerfScore 1.50
-G_M40448_IG03: ; bbWeight=0.25, gcrefRegs=0009 {rax rbx}, byrefRegs=0080 {rdi}, byref, isz
- mov rsi, qword ptr [rax]
- lea rax, [(reloc)] ; System.Int32
- ; gcrRegs -[rax]
- cmp rsi, rax
+G_M40448_IG03: ; bbWeight=0.25, gcrefRegs=0041 {rax rsi}, byrefRegs=0080 {rdi}, byref, isz
+ lea rcx, [(reloc)] ; System.Int32
+ cmp qword ptr [rax], rcx
je SHORT G_M40448_IG06
- ;; size=15 bbWeight=0.25 PerfScore 0.94
+ ;; size=12 bbWeight=0.25 PerfScore 1.12
G_M40448_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbx]
+ ; gcrRegs -[rax rsi]
; byrRegs -[rdi]
xor eax, eax
;; size=2 bbWeight=0.50 PerfScore 0.12
G_M40448_IG05: ; bbWeight=0.50, epilog, nogc, extend
- pop rbx
- pop r15
pop rbp
ret
- ;; size=5 bbWeight=0.50 PerfScore 1.25
-G_M40448_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0080 {rdi}, gcvars, byref, isz
- ; gcrRegs +[rbx]
- ; byrRegs +[rdi]
- mov r15d, dword ptr [rdi]
- lea rdi, [(reloc)] ; System.Int32
- ; byrRegs -[rdi]
- cmp rsi, rdi
- je SHORT G_M40448_IG08
- ;; size=15 bbWeight=0.50 PerfScore 1.88
-G_M40448_IG07: ; bbWeight=0.25, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- mov rsi, rbx
+ ;; size=2 bbWeight=0.50 PerfScore 0.75
+G_M40448_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi}, gcvars, byref
; gcrRegs +[rsi]
- lea rdi, [(reloc)] ; System.Int32
- call CORINFO_HELP_UNBOX
- ; gcrRegs -[rsi]
- ;; size=15 bbWeight=0.25 PerfScore 0.44
-G_M40448_IG08: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- xor eax, eax
- cmp r15d, dword ptr [rbx+0x08]
+ ; byrRegs +[rdi]
+ mov eax, dword ptr [rdi]
+ cmp eax, dword ptr [rsi+0x08]
sete al
- ;; size=9 bbWeight=0.50 PerfScore 2.12
-G_M40448_IG09: ; bbWeight=0.50, epilog, nogc, extend
- pop rbx
- pop r15
+ movzx rax, al
+ ;; size=11 bbWeight=0.50 PerfScore 3.12
+G_M40448_IG07: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
ret
- ;; size=5 bbWeight=0.50 PerfScore 1.25
+ ;; size=2 bbWeight=0.50 PerfScore 0.75
-; Total bytes of code 86, prolog size 9, PerfScore 13.25, instruction count 31, allocated bytes for code 86 (MethodHash=d61e61ff) for method System.Int32:Equals(System.Object):ubyte:this (FullOpts)
+; Total bytes of code 41, prolog size 4, PerfScore 8.62, instruction count 17, allocated bytes for code 41 (MethodHash=d61e61ff) for method System.Int32:Equals(System.Object):ubyte:this (FullOpts)
; ============================================================
Cfi Info:
@@ -85,7 +62,3 @@ Cfi Info:
>> End offset : 0xd1ffab1e
CodeOffset: 0x01 Op: AdjustCfaOffset Offset:0x8
CodeOffset: 0x01 Op: RelOffset DwarfReg:0x6 Offset:0x0
- CodeOffset: 0x03 Op: AdjustCfaOffset Offset:0x8
- CodeOffset: 0x03 Op: RelOffset DwarfReg:0xf Offset:0x0
- CodeOffset: 0x04 Op: AdjustCfaOffset Offset:0x8
- CodeOffset: 0x04 Op: RelOffset DwarfReg:0x3 Offset:0x0
-45 (-52.33%) : 17957.dasm - System.UInt32:Equals(System.Object):ubyte:this (FullOpts)
@@ -8,76 +8,53 @@
; Final local variable assignments
;
; V00 this [V00,T02] ( 3, 2.50) byref -> rdi this single-def
-; V01 arg1 [V01,T00] ( 5, 3.75) ref -> rbx class-hnd single-def <System.Object>
+; V01 arg1 [V01,T00] ( 4, 3.50) ref -> rsi class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03,T01] ( 3, 4.50) ref -> rax class-hnd exact "spilling QMark2" <System.UInt32>
-; V04 tmp2 [V04,T03] ( 2, 2 ) int -> r15 "impAppendStmt"
-; V05 cse0 [V05,T04] ( 3, 1 ) long -> rsi "CSE - moderate"
+; V04 tmp2 [V04,T03] ( 2, 2 ) int -> rax "impAppendStmt"
;
; Lcl frame size = 0
-G_M22229_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M22229_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
push rbp
- push r15
- push rbx
- lea rbp, [rsp+0x10]
- mov rbx, rsi
- ; gcrRegs +[rbx]
- ;; size=12 bbWeight=1 PerfScore 3.75
-G_M22229_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0080 {rdi}, byref, isz
+ mov rbp, rsp
+ ;; size=4 bbWeight=1 PerfScore 1.25
+G_M22229_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi}, byref, isz
+ ; gcrRegs +[rsi]
; byrRegs +[rdi]
- mov rax, rbx
+ mov rax, rsi
; gcrRegs +[rax]
test rax, rax
je SHORT G_M22229_IG04
;; size=8 bbWeight=1 PerfScore 1.50
-G_M22229_IG03: ; bbWeight=0.25, gcrefRegs=0009 {rax rbx}, byrefRegs=0080 {rdi}, byref, isz
- mov rsi, qword ptr [rax]
- lea rax, [(reloc)] ; System.UInt32
- ; gcrRegs -[rax]
- cmp rsi, rax
+G_M22229_IG03: ; bbWeight=0.25, gcrefRegs=0041 {rax rsi}, byrefRegs=0080 {rdi}, byref, isz
+ lea rcx, [(reloc)] ; System.UInt32
+ cmp qword ptr [rax], rcx
je SHORT G_M22229_IG06
- ;; size=15 bbWeight=0.25 PerfScore 0.94
+ ;; size=12 bbWeight=0.25 PerfScore 1.12
G_M22229_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbx]
+ ; gcrRegs -[rax rsi]
; byrRegs -[rdi]
xor eax, eax
;; size=2 bbWeight=0.50 PerfScore 0.12
G_M22229_IG05: ; bbWeight=0.50, epilog, nogc, extend
- pop rbx
- pop r15
pop rbp
ret
- ;; size=5 bbWeight=0.50 PerfScore 1.25
-G_M22229_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0080 {rdi}, gcvars, byref, isz
- ; gcrRegs +[rbx]
- ; byrRegs +[rdi]
- mov r15d, dword ptr [rdi]
- lea rdi, [(reloc)] ; System.UInt32
- ; byrRegs -[rdi]
- cmp rsi, rdi
- je SHORT G_M22229_IG08
- ;; size=15 bbWeight=0.50 PerfScore 1.88
-G_M22229_IG07: ; bbWeight=0.25, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- mov rsi, rbx
+ ;; size=2 bbWeight=0.50 PerfScore 0.75
+G_M22229_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi}, gcvars, byref
; gcrRegs +[rsi]
- lea rdi, [(reloc)] ; System.UInt32
- call CORINFO_HELP_UNBOX
- ; gcrRegs -[rsi]
- ;; size=15 bbWeight=0.25 PerfScore 0.44
-G_M22229_IG08: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- xor eax, eax
- cmp r15d, dword ptr [rbx+0x08]
+ ; byrRegs +[rdi]
+ mov eax, dword ptr [rdi]
+ cmp eax, dword ptr [rsi+0x08]
sete al
- ;; size=9 bbWeight=0.50 PerfScore 2.12
-G_M22229_IG09: ; bbWeight=0.50, epilog, nogc, extend
- pop rbx
- pop r15
+ movzx rax, al
+ ;; size=11 bbWeight=0.50 PerfScore 3.12
+G_M22229_IG07: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
ret
- ;; size=5 bbWeight=0.50 PerfScore 1.25
+ ;; size=2 bbWeight=0.50 PerfScore 0.75
-; Total bytes of code 86, prolog size 9, PerfScore 13.25, instruction count 31, allocated bytes for code 86 (MethodHash=4843a92a) for method System.UInt32:Equals(System.Object):ubyte:this (FullOpts)
+; Total bytes of code 41, prolog size 4, PerfScore 8.62, instruction count 17, allocated bytes for code 41 (MethodHash=4843a92a) for method System.UInt32:Equals(System.Object):ubyte:this (FullOpts)
; ============================================================
Cfi Info:
@@ -85,7 +62,3 @@ Cfi Info:
>> End offset : 0xd1ffab1e
CodeOffset: 0x01 Op: AdjustCfaOffset Offset:0x8
CodeOffset: 0x01 Op: RelOffset DwarfReg:0x6 Offset:0x0
- CodeOffset: 0x03 Op: AdjustCfaOffset Offset:0x8
- CodeOffset: 0x03 Op: RelOffset DwarfReg:0xf Offset:0x0
- CodeOffset: 0x04 Op: AdjustCfaOffset Offset:0x8
- CodeOffset: 0x04 Op: RelOffset DwarfReg:0x3 Offset:0x0
-45 (-52.33%) : 24849.dasm - System.Int32:Equals(System.Object):ubyte:this (FullOpts)
@@ -8,76 +8,53 @@
; Final local variable assignments
;
; V00 this [V00,T02] ( 3, 2.50) byref -> rdi this single-def
-; V01 arg1 [V01,T00] ( 5, 3.75) ref -> rbx class-hnd single-def <System.Object>
+; V01 arg1 [V01,T00] ( 4, 3.50) ref -> rsi class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03,T01] ( 3, 4.50) ref -> rax class-hnd exact "spilling QMark2" <System.Int32>
-; V04 tmp2 [V04,T03] ( 2, 2 ) int -> r15 "impAppendStmt"
-; V05 cse0 [V05,T04] ( 3, 1 ) long -> rsi "CSE - moderate"
+; V04 tmp2 [V04,T03] ( 2, 2 ) int -> rax "impAppendStmt"
;
; Lcl frame size = 0
-G_M40448_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M40448_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
push rbp
- push r15
- push rbx
- lea rbp, [rsp+0x10]
- mov rbx, rsi
- ; gcrRegs +[rbx]
- ;; size=12 bbWeight=1 PerfScore 3.75
-G_M40448_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0080 {rdi}, byref, isz
+ mov rbp, rsp
+ ;; size=4 bbWeight=1 PerfScore 1.25
+G_M40448_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi}, byref, isz
+ ; gcrRegs +[rsi]
; byrRegs +[rdi]
- mov rax, rbx
+ mov rax, rsi
; gcrRegs +[rax]
test rax, rax
je SHORT G_M40448_IG04
;; size=8 bbWeight=1 PerfScore 1.50
-G_M40448_IG03: ; bbWeight=0.25, gcrefRegs=0009 {rax rbx}, byrefRegs=0080 {rdi}, byref, isz
- mov rsi, qword ptr [rax]
- lea rax, [(reloc)] ; System.Int32
- ; gcrRegs -[rax]
- cmp rsi, rax
+G_M40448_IG03: ; bbWeight=0.25, gcrefRegs=0041 {rax rsi}, byrefRegs=0080 {rdi}, byref, isz
+ lea rcx, [(reloc)] ; System.Int32
+ cmp qword ptr [rax], rcx
je SHORT G_M40448_IG06
- ;; size=15 bbWeight=0.25 PerfScore 0.94
+ ;; size=12 bbWeight=0.25 PerfScore 1.12
G_M40448_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbx]
+ ; gcrRegs -[rax rsi]
; byrRegs -[rdi]
xor eax, eax
;; size=2 bbWeight=0.50 PerfScore 0.12
G_M40448_IG05: ; bbWeight=0.50, epilog, nogc, extend
- pop rbx
- pop r15
pop rbp
ret
- ;; size=5 bbWeight=0.50 PerfScore 1.25
-G_M40448_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0080 {rdi}, gcvars, byref, isz
- ; gcrRegs +[rbx]
- ; byrRegs +[rdi]
- mov r15d, dword ptr [rdi]
- lea rdi, [(reloc)] ; System.Int32
- ; byrRegs -[rdi]
- cmp rsi, rdi
- je SHORT G_M40448_IG08
- ;; size=15 bbWeight=0.50 PerfScore 1.88
-G_M40448_IG07: ; bbWeight=0.25, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- mov rsi, rbx
+ ;; size=2 bbWeight=0.50 PerfScore 0.75
+G_M40448_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi}, gcvars, byref
; gcrRegs +[rsi]
- lea rdi, [(reloc)] ; System.Int32
- call CORINFO_HELP_UNBOX
- ; gcrRegs -[rsi]
- ;; size=15 bbWeight=0.25 PerfScore 0.44
-G_M40448_IG08: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- xor eax, eax
- cmp r15d, dword ptr [rbx+0x08]
+ ; byrRegs +[rdi]
+ mov eax, dword ptr [rdi]
+ cmp eax, dword ptr [rsi+0x08]
sete al
- ;; size=9 bbWeight=0.50 PerfScore 2.12
-G_M40448_IG09: ; bbWeight=0.50, epilog, nogc, extend
- pop rbx
- pop r15
+ movzx rax, al
+ ;; size=11 bbWeight=0.50 PerfScore 3.12
+G_M40448_IG07: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
ret
- ;; size=5 bbWeight=0.50 PerfScore 1.25
+ ;; size=2 bbWeight=0.50 PerfScore 0.75
-; Total bytes of code 86, prolog size 9, PerfScore 13.25, instruction count 31, allocated bytes for code 86 (MethodHash=d61e61ff) for method System.Int32:Equals(System.Object):ubyte:this (FullOpts)
+; Total bytes of code 41, prolog size 4, PerfScore 8.62, instruction count 17, allocated bytes for code 41 (MethodHash=d61e61ff) for method System.Int32:Equals(System.Object):ubyte:this (FullOpts)
; ============================================================
Cfi Info:
@@ -85,7 +62,3 @@ Cfi Info:
>> End offset : 0xd1ffab1e
CodeOffset: 0x01 Op: AdjustCfaOffset Offset:0x8
CodeOffset: 0x01 Op: RelOffset DwarfReg:0x6 Offset:0x0
- CodeOffset: 0x03 Op: AdjustCfaOffset Offset:0x8
- CodeOffset: 0x03 Op: RelOffset DwarfReg:0xf Offset:0x0
- CodeOffset: 0x04 Op: AdjustCfaOffset Offset:0x8
- CodeOffset: 0x04 Op: RelOffset DwarfReg:0x3 Offset:0x0
+21 (+4.70%) : 7256.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
@@ -24,7 +24,7 @@
; V14 tmp1 [V14,T19] ( 2, 1 ) int -> r13
;* V15 tmp2 [V15 ] ( 0, 0 ) ref -> zero-ref single-def
;* V16 tmp3 [V16 ] ( 0, 0 ) ref -> zero-ref
-; V17 tmp4 [V17,T15] ( 3, 1.50) int -> rax
+; V17 tmp4 [V17,T15] ( 3, 1.50) int -> r14
; V18 tmp5 [V18,T00] ( 3, 24 ) int -> rax "impSpillLclRefs"
; V19 tmp6 [V19,T03] ( 3, 12 ) ref -> rax class-hnd "impSpillLclRefs" <<unknown class>>
;* V20 tmp7 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <<unknown class>>
@@ -134,23 +134,27 @@ G_M62513_IG08: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0000 {},
G_M62513_IG09: ; bbWeight=4, gcrefRegs=8080 {rdi r15}, byrefRegs=0000 {}, byref, isz
mov ebx, dword ptr [rdi+0x14]
test ebx, ebx
- jle SHORT G_M62513_IG10
+ jle G_M62513_IG17
mov eax, esi
lea esi, [rax-0x01]
mov dword ptr [rbp-0x30], esi
test eax, eax
jg SHORT G_M62513_IG13
- ;; size=19 bbWeight=4 PerfScore 25.00
-G_M62513_IG10: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+ ;; size=23 bbWeight=4 PerfScore 25.00
+G_M62513_IG10: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
; gcrRegs -[r15]
- test ebx, ebx
- jg SHORT G_M62513_IG17
- xor eax, eax
- ;; size=6 bbWeight=0.50 PerfScore 0.75
+ mov r14d, r13d
+ sar r14d, 31
+ and r14d, 3
+ add r14d, r13d
+ sar r14d, 2
+ add r14d, dword ptr [rdi+0x18]
+ mov rdi, gword ptr [rbp-0x38]
+ ;; size=26 bbWeight=0.50 PerfScore 2.88
G_M62513_IG11: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
- mov dword ptr [rdi+0x18], eax
+ mov dword ptr [rdi+0x18], r14d
jmp SHORT G_M62513_IG18
- ;; size=5 bbWeight=0.50 PerfScore 1.50
+ ;; size=6 bbWeight=0.50 PerfScore 1.50
G_M62513_IG12: ; bbWeight=1, gcrefRegs=8080 {rdi r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r15]
mov esi, 2
@@ -186,8 +190,8 @@ G_M62513_IG14: ; bbWeight=2, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byr
mov gword ptr [rax+8*rcx+0x10], rdx
cmp byte ptr [r15], r15b
mov esi, dword ptr [rbp-0x30]
- jmp SHORT G_M62513_IG09
- ;; size=31 bbWeight=2 PerfScore 32.50
+ jmp G_M62513_IG09
+ ;; size=34 bbWeight=2 PerfScore 32.50
G_M62513_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rax rdx rdi r15]
call CORINFO_HELP_RNGCHKFAIL
@@ -203,14 +207,11 @@ G_M62513_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
;; size=14 bbWeight=0 PerfScore 0.00
G_M62513_IG17: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rax]
- mov eax, r13d
- sar eax, 31
- and eax, 3
- add eax, r13d
- sar eax, 2
- add eax, dword ptr [rdi+0x18]
+ test ebx, ebx
+ jg G_M62513_IG10
+ xor r14d, r14d
jmp SHORT G_M62513_IG11
- ;; size=20 bbWeight=0.50 PerfScore 3.38
+ ;; size=13 bbWeight=0.50 PerfScore 1.75
G_M62513_IG18: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
; GC ptr vars -{V00 V01}
call <unknown method>
@@ -262,7 +263,7 @@ G_M62513_IG23: ; bbWeight=0, funclet epilog, nogc, extend
ret
;; size=15 bbWeight=0 PerfScore 0.00
-; Total bytes of code 447, prolog size 31, PerfScore 134.00, instruction count 138, allocated bytes for code 447 (MethodHash=d51a0bce) for method System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
+; Total bytes of code 468, prolog size 31, PerfScore 134.50, instruction count 139, allocated bytes for code 468 (MethodHash=d51a0bce) for method System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
; ============================================================
Cfi Info:
+3 (+5.08%) : 3598.dasm - Microsoft.Win32.SafeHandles.SafeFileHandle:set_SupportsRandomAccess(ubyte):this (FullOpts)
@@ -15,6 +15,7 @@
; V05 tmp3 [V05,T02] ( 3, 2 ) int -> rax
;* V06 tmp4 [V06 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V07 tmp5 [V07 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+; V08 cse0 [V08,T03] ( 2, 2 ) int -> rdi "CSE - aggressive"
;
; Lcl frame size = 8
@@ -27,34 +28,37 @@ G_M64610_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs +[rbx]
;; size=11 bbWeight=1 PerfScore 3.75
G_M64610_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- test sil, sil
- je SHORT G_M64610_IG03
+ movzx rdi, sil
+ test edi, edi
+ je SHORT G_M64610_IG04
+ ;; size=8 bbWeight=1 PerfScore 1.50
+G_M64610_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
lea rdi, gword ptr [(reloc)]
; gcrRegs +[rdi]
lea rsi, gword ptr [(reloc)]
; gcrRegs +[rsi]
call <unknown method>
; gcrRegs -[rsi rdi]
- jmp SHORT G_M64610_IG04
- ;; size=26 bbWeight=1 PerfScore 5.25
-G_M64610_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- mov eax, -1
jmp SHORT G_M64610_IG05
+ ;; size=21 bbWeight=0.50 PerfScore 2.00
+G_M64610_IG04: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ mov eax, -1
+ jmp SHORT G_M64610_IG06
;; size=7 bbWeight=0.50 PerfScore 1.12
-G_M64610_IG04: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M64610_IG05: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov eax, 1
;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M64610_IG05: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M64610_IG06: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov dword ptr [rbx+0x2C], eax
;; size=3 bbWeight=1 PerfScore 1.00
-G_M64610_IG06: ; bbWeight=1, epilog, nogc, extend
+G_M64610_IG07: ; bbWeight=1, epilog, nogc, extend
add rsp, 8
pop rbx
pop rbp
ret
;; size=7 bbWeight=1 PerfScore 2.25
-; Total bytes of code 59, prolog size 8, PerfScore 13.50, instruction count 19, allocated bytes for code 59 (MethodHash=ced4039d) for method Microsoft.Win32.SafeHandles.SafeFileHandle:set_SupportsRandomAccess(ubyte):this (FullOpts)
+; Total bytes of code 62, prolog size 8, PerfScore 11.75, instruction count 20, allocated bytes for code 62 (MethodHash=ced4039d) for method Microsoft.Win32.SafeHandles.SafeFileHandle:set_SupportsRandomAccess(ubyte):this (FullOpts)
; ============================================================
Cfi Info:
+6 (+5.66%) : 15405.dasm - System.Threading.PortableThreadPool:RemoveWaitThread(System.Threading.PortableThreadPool+WaitThread):this (FullOpts)
@@ -9,8 +9,8 @@
;
; V00 this [V00,T03] ( 4, 3.50) ref -> rdi this class-hnd exact single-def <System.Threading.PortableThreadPool>
; V01 arg1 [V01,T01] ( 4, 7 ) ref -> rsi class-hnd exact single-def <System.Threading.PortableThreadPool+WaitThread>
-; V02 loc0 [V02,T00] ( 9, 19.50) ref -> registers class-hnd exact <System.Threading.PortableThreadPool+WaitThreadNode>
-; V03 loc1 [V03,T02] ( 3, 8.50) ref -> rbx class-hnd exact <System.Threading.PortableThreadPool+WaitThreadNode>
+; V02 loc0 [V02,T00] ( 8, 19 ) ref -> registers class-hnd exact <System.Threading.PortableThreadPool+WaitThreadNode>
+; V03 loc1 [V03,T02] ( 3, 8.50) ref -> registers class-hnd exact <System.Threading.PortableThreadPool+WaitThreadNode>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V06 tmp2 [V06 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -54,50 +54,57 @@ G_M1296_IG05: ; bbWeight=4, gcVars=0000000000000000 {}, gcrefRegs=0048 {r
mov rdi, gword ptr [rbx+0x10]
; gcrRegs +[rdi]
test rdi, rdi
- je SHORT G_M1296_IG06
+ je SHORT G_M1296_IG08
cmp gword ptr [rdi+0x08], rsi
jne SHORT G_M1296_IG07
;; size=15 bbWeight=4 PerfScore 29.00
G_M1296_IG06: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rsi]
- test rdi, rdi
- jne SHORT G_M1296_IG08
- lea rdi, gword ptr [(reloc)]
- lea rsi, gword ptr [(reloc)]
- ; gcrRegs +[rsi]
- call <unknown method>
- ; gcrRegs -[rbx rsi rdi]
- ; gcr arg pop 0
+ mov rax, rbx
+ ; gcrRegs +[rax]
+ mov rbx, rdi
+ mov rdi, rax
jmp SHORT G_M1296_IG09
- ;; size=26 bbWeight=0.50 PerfScore 2.62
+ ;; size=11 bbWeight=0.50 PerfScore 1.38
G_M1296_IG07: ; bbWeight=2, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[rsi rdi]
+ ; gcrRegs -[rax rbx] +[rsi]
mov rbx, rdi
; gcrRegs +[rbx]
jmp SHORT G_M1296_IG05
;; size=5 bbWeight=2 PerfScore 4.50
-G_M1296_IG08: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rsi]
- mov rsi, gword ptr [rdi+0x10]
+G_M1296_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rbx rsi rdi]
+ lea rdi, gword ptr [(reloc)]
+ ; gcrRegs +[rdi]
+ lea rsi, gword ptr [(reloc)]
; gcrRegs +[rsi]
- lea rdi, bword ptr [rbx+0x10]
+ call <unknown method>
+ ; gcrRegs -[rsi rdi]
+ ; gcr arg pop 0
+ jmp SHORT G_M1296_IG10
+ ;; size=21 bbWeight=0.50 PerfScore 2.00
+G_M1296_IG09: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[rbx rdi]
+ mov rsi, gword ptr [rbx+0x10]
+ ; gcrRegs +[rsi]
+ lea rdi, bword ptr [rdi+0x10]
; gcrRegs -[rdi]
; byrRegs +[rdi]
call CORINFO_HELP_ASSIGN_REF
; gcrRegs -[rbx rsi]
; byrRegs -[rdi]
;; size=13 bbWeight=0.50 PerfScore 1.75
-G_M1296_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M1296_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
nop
;; size=1 bbWeight=0.50 PerfScore 0.12
-G_M1296_IG10: ; bbWeight=0.50, epilog, nogc, extend
+G_M1296_IG11: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 8
pop rbx
pop rbp
ret
;; size=7 bbWeight=0.50 PerfScore 1.12
-; Total bytes of code 106, prolog size 8, PerfScore 51.62, instruction count 36, allocated bytes for code 106 (MethodHash=2a35faef) for method System.Threading.PortableThreadPool:RemoveWaitThread(System.Threading.PortableThreadPool+WaitThread):this (FullOpts)
+; Total bytes of code 112, prolog size 8, PerfScore 52.38, instruction count 38, allocated bytes for code 112 (MethodHash=2a35faef) for method System.Threading.PortableThreadPool:RemoveWaitThread(System.Threading.PortableThreadPool+WaitThread):this (FullOpts)
; ============================================================
Cfi Info:
Details
Improvements/regressions per collection
Collection |
Contexts with diffs |
Improvements |
Regressions |
Same size |
Improvements (bytes) |
Regressions (bytes) |
benchmarks.run.linux.x64.checked.mch |
107 |
62 |
31 |
14 |
-684 |
+226 |
benchmarks.run_pgo.linux.x64.checked.mch |
1,327 |
461 |
749 |
117 |
-5,341 |
+5,103 |
benchmarks.run_tiered.linux.x64.checked.mch |
40 |
24 |
10 |
6 |
-277 |
+139 |
coreclr_tests.run.linux.x64.checked.mch |
1,176 |
560 |
350 |
266 |
-8,997 |
+2,768 |
libraries.crossgen2.linux.x64.checked.mch |
365 |
166 |
127 |
72 |
-1,700 |
+599 |
libraries.pmi.linux.x64.checked.mch |
656 |
279 |
230 |
147 |
-3,138 |
+1,447 |
libraries_tests.run.linux.x64.Release.mch |
6,873 |
3,373 |
2,214 |
1,286 |
-55,025 |
+34,298 |
librariestestsnotieredcompilation.run.linux.x64.Release.mch |
1,381 |
660 |
477 |
244 |
-6,332 |
+4,575 |
realworld.run.linux.x64.checked.mch |
120 |
44 |
54 |
22 |
-524 |
+580 |
smoke_tests.nativeaot.linux.x64.checked.mch |
163 |
107 |
40 |
16 |
-3,361 |
+271 |
|
12,208 |
5,736 |
4,282 |
2,190 |
-85,379 |
+50,006 |
Context information
Collection |
Diffed contexts |
MinOpts |
FullOpts |
Missed, base |
Missed, diff |
benchmarks.run.linux.x64.checked.mch |
36,216 |
3,549 |
32,667 |
0 (0.00%) |
1 (0.00%) |
benchmarks.run_pgo.linux.x64.checked.mch |
160,125 |
63,207 |
96,918 |
4 (0.00%) |
202 (0.13%) |
benchmarks.run_tiered.linux.x64.checked.mch |
65,385 |
50,236 |
15,149 |
1 (0.00%) |
1 (0.00%) |
coreclr_tests.run.linux.x64.checked.mch |
598,908 |
355,942 |
242,966 |
3 (0.00%) |
105 (0.02%) |
libraries.crossgen2.linux.x64.checked.mch |
234,329 |
15 |
234,314 |
0 (0.00%) |
0 (0.00%) |
libraries.pmi.linux.x64.checked.mch |
296,928 |
6 |
296,922 |
0 (0.00%) |
3 (0.00%) |
libraries_tests.run.linux.x64.Release.mch |
758,865 |
496,184 |
262,681 |
0 (0.00%) |
901 (0.12%) |
librariestestsnotieredcompilation.run.linux.x64.Release.mch |
305,440 |
21,912 |
283,528 |
0 (0.00%) |
3 (0.00%) |
realworld.run.linux.x64.checked.mch |
33,082 |
9 |
33,073 |
0 (0.00%) |
1 (0.00%) |
smoke_tests.nativeaot.linux.x64.checked.mch |
27,414 |
10 |
27,404 |
0 (0.00%) |
0 (0.00%) |
|
2,516,692 |
991,070 |
1,525,622 |
8 (0.00%) |
1,217 (0.05%) |
jit-analyze output
benchmarks.run.linux.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 14336549 (overridden on cmd)
Total bytes of diff: 14336091 (overridden on cmd)
Total bytes of delta: -458 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
34 : 20556.dasm (1.20 % of base)
27 : 10556.dasm (0.71 % of base)
27 : 3132.dasm (2.32 % of base)
27 : 3851.dasm (3.00 % of base)
14 : 21808.dasm (0.24 % of base)
12 : 19659.dasm (0.73 % of base)
12 : 21485.dasm (0.21 % of base)
10 : 21799.dasm (0.85 % of base)
8 : 6007.dasm (2.86 % of base)
5 : 16897.dasm (0.05 % of base)
5 : 14023.dasm (1.64 % of base)
3 : 16650.dasm (2.70 % of base)
3 : 1868.dasm (3.70 % of base)
3 : 13784.dasm (1.07 % of base)
3 : 14964.dasm (1.47 % of base)
3 : 14966.dasm (0.86 % of base)
3 : 1706.dasm (0.85 % of base)
3 : 17653.dasm (1.42 % of base)
3 : 17654.dasm (0.84 % of base)
3 : 6041.dasm (2.86 % of base)
Top file improvements (bytes):
-45 : 969.dasm (-0.69 % of base)
-44 : 9191.dasm (-0.40 % of base)
-42 : 6915.dasm (-1.37 % of base)
-40 : 4866.dasm (-0.97 % of base)
-35 : 9883.dasm (-44.30 % of base)
-32 : 6536.dasm (-30.48 % of base)
-27 : 10179.dasm (-1.60 % of base)
-26 : 8942.dasm (-4.61 % of base)
-20 : 20098.dasm (-0.47 % of base)
-19 : 11777.dasm (-6.40 % of base)
-19 : 10196.dasm (-0.14 % of base)
-17 : 14177.dasm (-0.14 % of base)
-17 : 21205.dasm (-0.79 % of base)
-17 : 14553.dasm (-7.14 % of base)
-16 : 813.dasm (-7.17 % of base)
-15 : 21183.dasm (-0.54 % of base)
-14 : 5404.dasm (-2.25 % of base)
-13 : 11600.dasm (-0.51 % of base)
-13 : 26244.dasm (-5.94 % of base)
-12 : 17623.dasm (-4.80 % of base)
54 total files with Code Size differences (31 improved, 23 regressed), 14 unchanged.
Top method regressions (bytes):
34 (1.20 % of base) : 20556.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (FullOpts)
27 (3.00 % of base) : 3851.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
27 (2.32 % of base) : 3132.dasm - System.Reflection.AssemblyNameParser:GetNextToken(byref):int:this (FullOpts)
27 (0.71 % of base) : 10556.dasm - System.Runtime.Serialization.DataContracts.ClassDataContract+ClassDataContractCriticalHelper:ImportDataMembers():this (FullOpts)
14 (0.24 % of base) : 21808.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (FullOpts)
12 (0.21 % of base) : 21485.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceOrdinaryMethodSymbol:CheckModifiers(ubyte,Microsoft.CodeAnalysis.Location,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
12 (0.73 % of base) : 19659.dasm - V8.Crypto.BigInteger:modPow(V8.Crypto.BigInteger,V8.Crypto.BigInteger):V8.Crypto.BigInteger:this (FullOpts)
10 (0.85 % of base) : 21799.dasm - Microsoft.CodeAnalysis.ConstantValue:Create(System.Object,ubyte):Microsoft.CodeAnalysis.ConstantValue (FullOpts)
8 (2.86 % of base) : 6007.dasm - System.Net.Http.Headers.BaseHeaderParser:TryParseValue(System.String,System.Object,byref,byref):ubyte:this (FullOpts)
5 (1.64 % of base) : 14023.dasm - System.Enum+<>c__63`1[uint]:<FormatNumberAsHex>b__63_0(System.Span`1[ushort],long):this (FullOpts)
5 (0.05 % of base) : 16897.dasm - System.Net.WebSockets.ManagedWebSocket+<ReceiveAsyncPrivate>d__64`1[System.Net.WebSockets.ValueWebSocketReceiveResult]:MoveNext():this (FullOpts)
3 (1.07 % of base) : 13784.dasm - ProtoBuf.Internal.Serializers.SurrogateSerializer`1[System.DateTimeOffset]:GetConversion(ubyte):System.Reflection.MethodInfo:this (FullOpts)
3 (1.42 % of base) : 17653.dasm - System.Collections.Generic.SortedSet`1+Enumerator[int]:Initialize():this (FullOpts)
3 (0.84 % of base) : 17654.dasm - System.Collections.Generic.SortedSet`1+Enumerator[int]:MoveNext():ubyte:this (FullOpts)
3 (1.47 % of base) : 14964.dasm - System.Collections.Generic.SortedSet`1+Enumerator[System.__Canon]:Initialize():this (FullOpts)
3 (0.86 % of base) : 14966.dasm - System.Collections.Generic.SortedSet`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (FullOpts)
3 (0.85 % of base) : 1706.dasm - System.Formats.Asn1.AsnDecoder:DecodeLength(System.ReadOnlySpan`1[ubyte],int,byref,byref):int (FullOpts)
3 (2.86 % of base) : 6041.dasm - System.Net.Http.HttpConnection+HttpContentReadStream:Dispose(ubyte):this (FullOpts)
3 (2.70 % of base) : 16650.dasm - System.Runtime.Serialization.Json.JsonEncodingStreamWrapper:ReadEncoding(ubyte,ubyte):int (FullOpts)
3 (3.70 % of base) : 1868.dasm - System.Security.Cryptography.UniversalCryptoDecryptor:Dispose(ubyte):this (FullOpts)
Top method improvements (bytes):
-45 (-0.69 % of base) : 969.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (FullOpts)
-44 (-0.40 % of base) : 9191.dasm - MessagePack.Internal.ObjectSerializationInfo:CreateOrNull(System.Type,ubyte,ubyte,ubyte):MessagePack.Internal.ObjectSerializationInfo (FullOpts)
-42 (-1.37 % of base) : 6915.dasm - Sigil.Impl.VerifiableTracker:CollapseAndVerify():Sigil.Impl.VerificationResult:this (FullOpts)
-40 (-0.97 % of base) : 4866.dasm - Utf8Json.Internal.Emit.MetaType:.ctor(System.Type,System.Func`2[System.String,System.String],ubyte):this (FullOpts)
-35 (-44.30 % of base) : 9883.dasm - System.Int32:Equals(System.Object):ubyte:this (FullOpts)
-32 (-30.48 % of base) : 6536.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
-27 (-1.60 % of base) : 10179.dasm - System.Xml.XmlConvert:EncodeName(System.String,ubyte,ubyte):System.String (FullOpts)
-26 (-4.61 % of base) : 8942.dasm - System.Diagnostics.Tracing.EventSource:LogEventArgsMismatches(int,System.Object[]):this (FullOpts)
-20 (-0.47 % of base) : 20098.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseMemberDeclarationOrStatementCore(ushort):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.MemberDeclarationSyntax:this (FullOpts)
-19 (-6.40 % of base) : 11777.dasm - Span.Sorting:TestQuickSortSpan(System.Span`1[int]) (FullOpts)
-19 (-0.14 % of base) : 10196.dasm - System.Xml.Serialization.XmlReflectionImporter:ImportAccessorMapping(System.Xml.Serialization.MemberMapping,System.Xml.Serialization.FieldModel,System.Xml.Serialization.XmlAttributes,System.String,System.Type,ubyte,ubyte,System.Xml.Serialization.RecursionLimiter):this (FullOpts)
-17 (-0.14 % of base) : 14177.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.CollectionsOfPrimitives,int) (FullOpts)
-17 (-0.79 % of base) : 21205.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:GetSpecialType(byte):Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:this (FullOpts)
-17 (-7.14 % of base) : 14553.dasm - Span.Sorting:TestQuickSortArray(int[],int,int) (FullOpts)
-16 (-7.17 % of base) : 813.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
-15 (-0.54 % of base) : 21183.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
-14 (-2.25 % of base) : 5404.dasm - System.Text.Json.Reflection.ReflectionExtensions:TryGetDeserializationConstructor(System.Type,ubyte,byref):ubyte (FullOpts)
-13 (-5.94 % of base) : 26244.dasm - Benchstone.BenchI.QuickSort:Quick(int,int,int[]) (FullOpts)
-13 (-0.51 % of base) : 11600.dasm - System.Runtime.Serialization.Json.JsonFormatWriterGenerator+CriticalHelper:WriteMembers(System.Runtime.Serialization.DataContracts.ClassDataContract,System.Reflection.Emit.LocalBuilder,System.Runtime.Serialization.DataContracts.ClassDataContract):int:this (FullOpts)
-12 (-4.80 % of base) : 17623.dasm - System.Xml.XmlElement:WriteElementTo(System.Xml.XmlWriter,System.Xml.XmlElement) (FullOpts)
Top method regressions (percentages):
3 (3.70 % of base) : 1868.dasm - System.Security.Cryptography.UniversalCryptoDecryptor:Dispose(ubyte):this (FullOpts)
2 (3.23 % of base) : 5919.dasm - System.Net.Http.HttpConnectionPool:GetSslOptionsForRequest(System.Net.Http.HttpRequestMessage):System.Net.Security.SslClientAuthenticationOptions:this (FullOpts)
27 (3.00 % of base) : 3851.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
8 (2.86 % of base) : 6007.dasm - System.Net.Http.Headers.BaseHeaderParser:TryParseValue(System.String,System.Object,byref,byref):ubyte:this (FullOpts)
3 (2.86 % of base) : 6041.dasm - System.Net.Http.HttpConnection+HttpContentReadStream:Dispose(ubyte):this (FullOpts)
3 (2.70 % of base) : 16650.dasm - System.Runtime.Serialization.Json.JsonEncodingStreamWrapper:ReadEncoding(ubyte,ubyte):int (FullOpts)
27 (2.32 % of base) : 3132.dasm - System.Reflection.AssemblyNameParser:GetNextToken(byref):int:this (FullOpts)
5 (1.64 % of base) : 14023.dasm - System.Enum+<>c__63`1[uint]:<FormatNumberAsHex>b__63_0(System.Span`1[ushort],long):this (FullOpts)
3 (1.47 % of base) : 14964.dasm - System.Collections.Generic.SortedSet`1+Enumerator[System.__Canon]:Initialize():this (FullOpts)
3 (1.42 % of base) : 17653.dasm - System.Collections.Generic.SortedSet`1+Enumerator[int]:Initialize():this (FullOpts)
34 (1.20 % of base) : 20556.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (FullOpts)
3 (1.07 % of base) : 13784.dasm - ProtoBuf.Internal.Serializers.SurrogateSerializer`1[System.DateTimeOffset]:GetConversion(ubyte):System.Reflection.MethodInfo:this (FullOpts)
3 (0.86 % of base) : 14966.dasm - System.Collections.Generic.SortedSet`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (FullOpts)
3 (0.85 % of base) : 1706.dasm - System.Formats.Asn1.AsnDecoder:DecodeLength(System.ReadOnlySpan`1[ubyte],int,byref,byref):int (FullOpts)
10 (0.85 % of base) : 21799.dasm - Microsoft.CodeAnalysis.ConstantValue:Create(System.Object,ubyte):Microsoft.CodeAnalysis.ConstantValue (FullOpts)
3 (0.84 % of base) : 17654.dasm - System.Collections.Generic.SortedSet`1+Enumerator[int]:MoveNext():ubyte:this (FullOpts)
12 (0.73 % of base) : 19659.dasm - V8.Crypto.BigInteger:modPow(V8.Crypto.BigInteger,V8.Crypto.BigInteger):V8.Crypto.BigInteger:this (FullOpts)
27 (0.71 % of base) : 10556.dasm - System.Runtime.Serialization.DataContracts.ClassDataContract+ClassDataContractCriticalHelper:ImportDataMembers():this (FullOpts)
2 (0.66 % of base) : 26921.dasm - MS.Internal.Xml.XPath.XPathParser:ParseMultiplicativeExpr(MS.Internal.Xml.XPath.AstNode):MS.Internal.Xml.XPath.AstNode:this (FullOpts)
1 (0.38 % of base) : 6261.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:TryCreateParameterMap(System.Reflection.ParameterInfo[],System.Type[],byref):ubyte (FullOpts)
Top method improvements (percentages):
-35 (-44.30 % of base) : 9883.dasm - System.Int32:Equals(System.Object):ubyte:this (FullOpts)
-32 (-30.48 % of base) : 6536.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
-5 (-7.94 % of base) : 4086.dasm - System.Buffers.ReadOnlySequence`1[ubyte]:SeekMultiSegment(System.Buffers.ReadOnlySequenceSegment`1[ubyte],System.Object,int,long,int):System.SequencePosition (FullOpts)
-16 (-7.17 % of base) : 813.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
-17 (-7.14 % of base) : 14553.dasm - Span.Sorting:TestQuickSortArray(int[],int,int) (FullOpts)
-19 (-6.40 % of base) : 11777.dasm - Span.Sorting:TestQuickSortSpan(System.Span`1[int]) (FullOpts)
-6 (-6.25 % of base) : 2382.dasm - System.Security.Cryptography.X509Certificates.OpenSslX509ChainProcessor+ErrorCollection+Enumerator:MoveNext():ubyte:this (FullOpts)
-13 (-5.94 % of base) : 26244.dasm - Benchstone.BenchI.QuickSort:Quick(int,int,int[]) (FullOpts)
-11 (-5.02 % of base) : 3477.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (FullOpts)
-12 (-4.80 % of base) : 17623.dasm - System.Xml.XmlElement:WriteElementTo(System.Xml.XmlWriter,System.Xml.XmlElement) (FullOpts)
-26 (-4.61 % of base) : 8942.dasm - System.Diagnostics.Tracing.EventSource:LogEventArgsMismatches(int,System.Object[]):this (FullOpts)
-5 (-3.12 % of base) : 3836.dasm - System.Globalization.CultureData:GetSeparator(System.String,System.String):System.String (FullOpts)
-14 (-2.25 % of base) : 5404.dasm - System.Text.Json.Reflection.ReflectionExtensions:TryGetDeserializationConstructor(System.Type,ubyte,byref):ubyte (FullOpts)
-4 (-1.96 % of base) : 825.dasm - System.Number:RoundNumber(byref,int,ubyte) (FullOpts)
-27 (-1.60 % of base) : 10179.dasm - System.Xml.XmlConvert:EncodeName(System.String,ubyte,ubyte):System.String (FullOpts)
-5 (-1.40 % of base) : 6941.dasm - Sigil.Impl.LinqStack`1[System.__Canon]:Peek(ubyte,int):Sigil.Impl.LinqList`1[Sigil.Impl.TypeOnStack][]:this (FullOpts)
-42 (-1.37 % of base) : 6915.dasm - Sigil.Impl.VerifiableTracker:CollapseAndVerify():Sigil.Impl.VerificationResult:this (FullOpts)
-4 (-1.37 % of base) : 1307.dasm - System.Text.Json.Tests.Perf_Reader:ReadSpanEmptyLoop():this (FullOpts)
-4 (-1.35 % of base) : 7919.dasm - System.Text.Json.Tests.Perf_Reader:ReadMultiSpanSequenceEmptyLoop():this (FullOpts)
-4 (-1.35 % of base) : 6705.dasm - System.Text.Json.Tests.Perf_Segment:ReadSingleSegmentSequence():this (FullOpts)
benchmarks.run_pgo.linux.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 71273045 (overridden on cmd)
Total bytes of diff: 71272807 (overridden on cmd)
Total bytes of delta: -238 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
115 : 157814.dasm (2.78 % of base)
115 : 59247.dasm (2.78 % of base)
90 : 50905.dasm (2.21 % of base)
67 : 96941.dasm (3.54 % of base)
63 : 103889.dasm (1.30 % of base)
59 : 140742.dasm (3.22 % of base)
59 : 144220.dasm (3.22 % of base)
59 : 145145.dasm (3.23 % of base)
59 : 145181.dasm (3.23 % of base)
55 : 137461.dasm (3.41 % of base)
54 : 61183.dasm (15.65 % of base)
53 : 137433.dasm (3.30 % of base)
48 : 97423.dasm (0.50 % of base)
47 : 145196.dasm (13.17 % of base)
46 : 103364.dasm (0.85 % of base)
34 : 98211.dasm (5.99 % of base)
31 : 139184.dasm (4.41 % of base)
31 : 96806.dasm (9.84 % of base)
30 : 97469.dasm (0.71 % of base)
29 : 61393.dasm (2.54 % of base)
Top file improvements (bytes):
-168 : 98206.dasm (-6.92 % of base)
-159 : 70726.dasm (-3.68 % of base)
-116 : 72355.dasm (-2.92 % of base)
-107 : 76188.dasm (-4.19 % of base)
-93 : 7918.dasm (-3.79 % of base)
-88 : 97930.dasm (-1.12 % of base)
-66 : 42526.dasm (-1.59 % of base)
-49 : 137447.dasm (-2.33 % of base)
-46 : 102873.dasm (-5.46 % of base)
-45 : 3800.dasm (-0.68 % of base)
-36 : 96352.dasm (-3.42 % of base)
-35 : 147653.dasm (-42.68 % of base)
-35 : 45195.dasm (-42.68 % of base)
-34 : 79238.dasm (-2.03 % of base)
-33 : 153810.dasm (-3.15 % of base)
-32 : 95874.dasm (-3.64 % of base)
-30 : 137453.dasm (-0.92 % of base)
-29 : 137448.dasm (-29.00 % of base)
-29 : 79205.dasm (-3.93 % of base)
-27 : 69715.dasm (-1.62 % of base)
69 total files with Code Size differences (40 improved, 29 regressed), 20 unchanged.
Top method regressions (bytes):
115 (2.78 % of base) : 157814.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateProperties(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[System.Reflection.RuntimePropertyInfo]],System.Span`1[ubyte],ubyte,byref):this (Tier1)
115 (2.78 % of base) : 59247.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateProperties(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[System.Reflection.RuntimePropertyInfo]],System.Span`1[ubyte],ubyte,byref):this (Tier1)
90 (2.21 % of base) : 50905.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateProperties(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[System.Reflection.RuntimePropertyInfo]],System.Span`1[ubyte],ubyte,byref):this (Tier1)
67 (3.54 % of base) : 96941.dasm - Microsoft.Cci.MetadataWriter:GetMethodSignatureHandleAndBlob(Microsoft.Cci.IMethodReference,byref):System.Reflection.Metadata.BlobHandle:this (Tier1)
63 (1.30 % of base) : 103889.dasm - Microsoft.CodeAnalysis.MetadataHelpers:GetInfoForImmediateNamespaceMembers(ubyte,int,System.Collections.Generic.IEnumerable`1[System.Linq.IGrouping`2[System.String,System.Reflection.Metadata.TypeDefinitionHandle]],System.StringComparer,byref,byref) (Tier1)
59 (3.22 % of base) : 140742.dasm - System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLengthLessThan4,System.Buffers.StringSearchValuesHelper+CaseSensitive]:IndexOf(byref,int):int:this (Tier1-OSR)
59 (3.22 % of base) : 144220.dasm - System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLengthLessThan4,System.Buffers.StringSearchValuesHelper+CaseSensitive]:IndexOf(byref,int):int:this (Tier1-OSR)
59 (3.23 % of base) : 145145.dasm - System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLengthLessThan4,System.Buffers.StringSearchValuesHelper+CaseSensitive]:IndexOf(byref,int):int:this (Tier1-OSR)
59 (3.23 % of base) : 145181.dasm - System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLengthLessThan4,System.Buffers.StringSearchValuesHelper+CaseSensitive]:IndexOf(byref,int):int:this (Tier1-OSR)
55 (3.41 % of base) : 137461.dasm - BenchmarksGame.pidigits:compose_r(int,int,int,int):this (Tier1)
54 (15.65 % of base) : 61183.dasm - System.Text.Ascii:ChangeCase[ushort,ushort,System.Text.Ascii+ToUpperConversion](System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):int (Tier1)
53 (3.30 % of base) : 137433.dasm - BenchmarksGame.pidigits:compose_l(int,int,int,int):this (Tier1)
48 (0.50 % of base) : 97423.dasm - Microsoft.CodeAnalysis.CSharp.MethodCompiler:CompileMethod(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,int,byref,Microsoft.CodeAnalysis.CSharp.SynthesizedSubmissionFields,Microsoft.CodeAnalysis.CSharp.TypeCompilationState):this (Tier1)
47 (13.17 % of base) : 145196.dasm - System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLengthLessThan4,System.Buffers.StringSearchValuesHelper+CaseSensitive]:TryMatch(byref,int,byref,uint,byref):ubyte:this (Tier1)
46 (0.85 % of base) : 103364.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseLocalDeclarationStatement(Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AttributeListSyntax]):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.StatementSyntax:this (Tier1)
34 (5.99 % of base) : 98211.dasm - Microsoft.CodeAnalysis.Compilation:get_HasStrongName():ubyte:this (Tier1)
31 (9.84 % of base) : 96806.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_IsDelaySigned():ubyte:this (Tier1)
31 (4.41 % of base) : 139184.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
30 (0.71 % of base) : 97469.dasm - Microsoft.CodeAnalysis.CSharp.BinderFactory+BinderFactoryVisitor:VisitTypeDeclarationCore(Microsoft.CodeAnalysis.CSharp.Syntax.TypeDeclarationSyntax,ubyte):Microsoft.CodeAnalysis.CSharp.Binder:this (Tier1)
29 (2.54 % of base) : 61393.dasm - System.Net.Sockets.SocketAsyncContext:SendToAsync(System.Memory`1[ubyte],int,int,int,System.Memory`1[ubyte],byref,System.Action`4[int,System.Memory`1[ubyte],int,int],System.Threading.CancellationToken):int:this (Tier1)
Top method improvements (bytes):
-168 (-6.92 % of base) : 98206.dasm - Microsoft.CodeAnalysis.Compilation:ConstructModuleSerializationProperties(Microsoft.CodeAnalysis.Emit.EmitOptions,System.String,System.Guid):Microsoft.Cci.ModulePropertiesForSerialization:this (Tier1)
-159 (-3.68 % of base) : 70726.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateProperties(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[System.Reflection.RuntimePropertyInfo]],System.Span`1[ubyte],ubyte,byref):this (Tier1)
-116 (-2.92 % of base) : 72355.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateProperties(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[System.Reflection.RuntimePropertyInfo]],System.Span`1[ubyte],ubyte,byref):this (Tier1)
-107 (-4.19 % of base) : 76188.dasm - System.Text.Json.Tests.Perf_Segment:ReadMultiSegmentSequenceUsingSpan(int):this (Tier1-OSR)
-93 (-3.79 % of base) : 7918.dasm - Microsoft.Win32.SafeHandles.SafeFileHandle:Init(System.String,int,int,int,int,long,byref,byref):ubyte:this (Tier1)
-88 (-1.12 % of base) : 97930.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:SynthesizeDebuggableAttribute():Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedAttributeData:this (Tier1)
-66 (-1.59 % of base) : 42526.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateProperties(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[System.Reflection.RuntimePropertyInfo]],System.Span`1[ubyte],ubyte,byref):this (Tier1)
-49 (-2.33 % of base) : 137447.dasm - System.Numerics.BigInteger:Subtract(System.ReadOnlySpan`1[uint],int,System.ReadOnlySpan`1[uint],int):System.Numerics.BigInteger (Tier1)
-46 (-5.46 % of base) : 102873.dasm - Microsoft.CodeAnalysis.CSharp.DefiniteAssignmentPass:WriteConsideredUse(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BoundExpression):ubyte (Tier1)
-45 (-0.68 % of base) : 3800.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (Tier0-FullOpts)
-36 (-3.42 % of base) : 96352.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:GetSpecialType(byte):Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:this (Tier1)
-35 (-42.68 % of base) : 147653.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
-35 (-42.68 % of base) : 45195.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
-34 (-2.03 % of base) : 79238.dasm - System.Net.Sockets.SocketAsyncEventArgs:DoOperationReceive(System.Net.Sockets.SafeSocketHandle,System.Threading.CancellationToken):int:this (Tier1)
-33 (-3.15 % of base) : 153810.dasm - System.Collections.Generic.Dictionary`2[System.ValueTuple`3[System.__Canon,ulong,uint],System.__Canon]:TryGetValue(System.ValueTuple`3[System.__Canon,ulong,uint],byref):ubyte:this (Tier1)
-32 (-3.64 % of base) : 95874.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:IsTupleTypeOfCardinality(byref):ubyte:this (Tier1)
-30 (-0.92 % of base) : 137453.dasm - System.Numerics.BigIntegerCalculator:Divide(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint],System.Span`1[uint]) (Tier1)
-29 (-29.00 % of base) : 137448.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
-29 (-3.93 % of base) : 79205.dasm - System.Reflection.Emit.DynamicResolver:ResolveToken(int,byref,byref,byref):this (Tier1)
-27 (-1.62 % of base) : 69715.dasm - System.Net.Sockets.SocketAsyncEventArgs:DoOperationReceive(System.Net.Sockets.SafeSocketHandle,System.Threading.CancellationToken):int:this (Tier1)
Top method regressions (percentages):
54 (15.65 % of base) : 61183.dasm - System.Text.Ascii:ChangeCase[ushort,ushort,System.Text.Ascii+ToUpperConversion](System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):int (Tier1)
47 (13.17 % of base) : 145196.dasm - System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLengthLessThan4,System.Buffers.StringSearchValuesHelper+CaseSensitive]:TryMatch(byref,int,byref,uint,byref):ubyte:this (Tier1)
19 (10.44 % of base) : 98035.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyFlags():int:this (Tier1)
31 (9.84 % of base) : 96806.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_IsDelaySigned():ubyte:this (Tier1)
34 (5.99 % of base) : 98211.dasm - Microsoft.CodeAnalysis.Compilation:get_HasStrongName():ubyte:this (Tier1)
15 (5.32 % of base) : 35209.dasm - System.Number:FormatDouble(double,System.String,System.Globalization.NumberFormatInfo):System.String (Tier1)
15 (5.32 % of base) : 50179.dasm - System.Number:FormatDouble(double,System.String,System.Globalization.NumberFormatInfo):System.String (Tier1)
31 (4.41 % of base) : 139184.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
8 (4.17 % of base) : 94052.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyDelaySignAttributeSetting():ubyte:this (Tier1)
21 (3.87 % of base) : 74329.dasm - System.RuntimeType:CreateInstanceOfT():System.Object:this (Tier1)
67 (3.54 % of base) : 96941.dasm - Microsoft.Cci.MetadataWriter:GetMethodSignatureHandleAndBlob(Microsoft.Cci.IMethodReference,byref):System.Reflection.Metadata.BlobHandle:this (Tier1)
22 (3.46 % of base) : 80074.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex6_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
55 (3.41 % of base) : 137461.dasm - BenchmarksGame.pidigits:compose_r(int,int,int,int):this (Tier1)
16 (3.41 % of base) : 155076.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
23 (3.38 % of base) : 140745.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex12_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
53 (3.30 % of base) : 137433.dasm - BenchmarksGame.pidigits:compose_l(int,int,int,int):this (Tier1)
15 (3.24 % of base) : 140157.dasm - System.Text.RegularExpressions.RegexNode:ReduceConcatenation():System.Text.RegularExpressions.RegexNode:this (Tier1)
59 (3.23 % of base) : 145145.dasm - System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLengthLessThan4,System.Buffers.StringSearchValuesHelper+CaseSensitive]:IndexOf(byref,int):int:this (Tier1-OSR)
59 (3.23 % of base) : 145181.dasm - System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLengthLessThan4,System.Buffers.StringSearchValuesHelper+CaseSensitive]:IndexOf(byref,int):int:this (Tier1-OSR)
59 (3.22 % of base) : 140742.dasm - System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLengthLessThan4,System.Buffers.StringSearchValuesHelper+CaseSensitive]:IndexOf(byref,int):int:this (Tier1-OSR)
Top method improvements (percentages):
-35 (-42.68 % of base) : 147653.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
-35 (-42.68 % of base) : 45195.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
-29 (-29.00 % of base) : 137448.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
-23 (-10.60 % of base) : 105089.dasm - System.Threading.PortableThreadPool:NotifyWorkItemProgress(System.Object,int):this (Tier1)
-23 (-10.60 % of base) : 108890.dasm - System.Threading.PortableThreadPool:NotifyWorkItemProgress(System.Object,int):this (Tier1)
-23 (-10.60 % of base) : 135021.dasm - System.Threading.PortableThreadPool:NotifyWorkItemProgress(System.Object,int):this (Tier1)
-23 (-10.60 % of base) : 110114.dasm - System.Threading.PortableThreadPool:NotifyWorkItemProgress(System.Object,int):this (Tier1)
-23 (-10.60 % of base) : 43489.dasm - System.Threading.PortableThreadPool:NotifyWorkItemProgress(System.Object,int):this (Tier1)
-23 (-10.60 % of base) : 46437.dasm - System.Threading.PortableThreadPool:NotifyWorkItemProgress(System.Object,int):this (Tier1)
-23 (-10.60 % of base) : 48382.dasm - System.Threading.PortableThreadPool:NotifyWorkItemProgress(System.Object,int):this (Tier1)
-23 (-10.60 % of base) : 57505.dasm - System.Threading.PortableThreadPool:NotifyWorkItemProgress(System.Object,int):this (Tier1)
-23 (-10.60 % of base) : 58302.dasm - System.Threading.PortableThreadPool:NotifyWorkItemProgress(System.Object,int):this (Tier1)
-23 (-10.60 % of base) : 63497.dasm - System.Threading.PortableThreadPool:NotifyWorkItemProgress(System.Object,int):this (Tier1)
-23 (-10.60 % of base) : 65182.dasm - System.Threading.PortableThreadPool:NotifyWorkItemProgress(System.Object,int):this (Tier1)
-23 (-10.60 % of base) : 68090.dasm - System.Threading.PortableThreadPool:NotifyWorkItemProgress(System.Object,int):this (Tier1)
-23 (-10.60 % of base) : 70273.dasm - System.Threading.PortableThreadPool:NotifyWorkItemProgress(System.Object,int):this (Tier1)
-23 (-10.60 % of base) : 77385.dasm - System.Threading.PortableThreadPool:NotifyWorkItemProgress(System.Object,int):this (Tier1)
-23 (-10.60 % of base) : 83113.dasm - System.Threading.PortableThreadPool:NotifyWorkItemProgress(System.Object,int):this (Tier1)
-23 (-10.60 % of base) : 96057.dasm - System.Threading.PortableThreadPool:NotifyWorkItemProgress(System.Object,int):this (Tier1)
-23 (-10.60 % of base) : 98877.dasm - System.Threading.PortableThreadPool:NotifyWorkItemProgress(System.Object,int):this (Tier1)
benchmarks.run_tiered.linux.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 21435743 (overridden on cmd)
Total bytes of diff: 21435605 (overridden on cmd)
Total bytes of delta: -138 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
49 : 38361.dasm (1.98 % of base)
27 : 7330.dasm (3.00 % of base)
27 : 5290.dasm (2.32 % of base)
14 : 52167.dasm (0.24 % of base)
10 : 47901.dasm (0.89 % of base)
3 : 13644.dasm (0.85 % of base)
3 : 14597.dasm (3.70 % of base)
2 : 22170.dasm (0.35 % of base)
2 : 3840.dasm (1.33 % of base)
2 : 33532.dasm (0.34 % of base)
Top file improvements (bytes):
-45 : 4787.dasm (-0.69 % of base)
-33 : 9995.dasm (-41.25 % of base)
-32 : 60259.dasm (-30.48 % of base)
-18 : 29685.dasm (-5.90 % of base)
-17 : 47871.dasm (-0.79 % of base)
-17 : 30969.dasm (-0.14 % of base)
-17 : 31264.dasm (-7.14 % of base)
-16 : 10084.dasm (-7.17 % of base)
-11 : 38535.dasm (-5.02 % of base)
-9 : 34615.dasm (-0.67 % of base)
-7 : 3015.dasm (-1.00 % of base)
-6 : 33272.dasm (-6.25 % of base)
-5 : 47471.dasm (-0.12 % of base)
-5 : 15565.dasm (-3.12 % of base)
-5 : 32919.dasm (-0.06 % of base)
-5 : 51600.dasm (-0.79 % of base)
-4 : 10103.dasm (-1.96 % of base)
-4 : 39704.dasm (-4.55 % of base)
-4 : 61586.dasm (-0.56 % of base)
-4 : 26121.dasm (-0.07 % of base)
34 total files with Code Size differences (24 improved, 10 regressed), 6 unchanged.
Top method regressions (bytes):
49 (1.98 % of base) : 38361.dasm - System.Text.Json.Tests.Perf_Segment:ReadMultiSegmentSequenceUsingSpan(int):this (Tier1-OSR)
27 (3.00 % of base) : 7330.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (Tier0-FullOpts)
27 (2.32 % of base) : 5290.dasm - System.Reflection.AssemblyNameParser:GetNextToken(byref):int:this (Tier0-FullOpts)
14 (0.24 % of base) : 52167.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (Tier1)
10 (0.89 % of base) : 47901.dasm - Microsoft.CodeAnalysis.ConstantValue:Create(System.Object,ubyte):Microsoft.CodeAnalysis.ConstantValue (Tier1)
3 (0.85 % of base) : 13644.dasm - System.Formats.Asn1.AsnDecoder:DecodeLength(System.ReadOnlySpan`1[ubyte],int,byref,byref):int (Tier1)
3 (3.70 % of base) : 14597.dasm - System.Security.Cryptography.UniversalCryptoDecryptor:Dispose(ubyte):this (Tier1)
2 (1.33 % of base) : 3840.dasm - Microsoft.Win32.SafeHandles.SafeFileHandle:CanLockTheFile(int,int):ubyte:this (Tier1)
2 (0.35 % of base) : 22170.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (Tier1)
2 (0.34 % of base) : 33532.dasm - System.Net.SocketAddress:.ctor(System.Net.IPAddress):this (Tier1)
Top method improvements (bytes):
-45 (-0.69 % of base) : 4787.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (Tier0-FullOpts)
-33 (-41.25 % of base) : 9995.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
-32 (-30.48 % of base) : 60259.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
-18 (-5.90 % of base) : 29685.dasm - Span.Sorting:TestQuickSortSpan(System.Span`1[int]) (Tier1-OSR)
-17 (-0.14 % of base) : 30969.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.CollectionsOfPrimitives,int) (FullOpts)
-17 (-0.79 % of base) : 47871.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:GetSpecialType(byte):Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:this (Tier1)
-17 (-7.14 % of base) : 31264.dasm - Span.Sorting:TestQuickSortArray(int[],int,int) (Tier1-OSR)
-16 (-7.17 % of base) : 10084.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (Tier1)
-11 (-5.02 % of base) : 38535.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (Tier1)
-9 (-0.67 % of base) : 34615.dasm - System.UriHelper:UnescapeString(ulong,int,int,byref,ushort,ushort,ushort,int,System.UriParser,ubyte) (Tier1)
-7 (-1.00 % of base) : 3015.dasm - System.Text.Ascii:GetIndexOfFirstNonAsciiByte_Vector(ulong,ulong):ulong (Tier1)
-6 (-6.25 % of base) : 33272.dasm - System.Security.Cryptography.X509Certificates.OpenSslX509ChainProcessor+ErrorCollection+Enumerator:MoveNext():ubyte:this (Tier1)
-5 (-0.12 % of base) : 47471.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:GetWellKnownType(int):Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:this (Tier1)
-5 (-0.79 % of base) : 51600.dasm - Microsoft.CodeAnalysis.CSharp.DefiniteAssignmentPass:LeaveParameter(Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.Location):this (Tier1)
-5 (-0.06 % of base) : 32919.dasm - System.Formats.Asn1.WellKnownOids:GetContents(System.ReadOnlySpan`1[ushort]):System.ReadOnlySpan`1[ubyte] (Tier1)
-5 (-3.12 % of base) : 15565.dasm - System.Globalization.CultureData:GetSeparator(System.String,System.String):System.String (Tier1)
-4 (-0.14 % of base) : 58518.dasm - System.IPv6AddressHelper:ParseCanonicalName(System.String,int,byref,byref):System.String (Tier0-FullOpts)
-4 (-1.96 % of base) : 10103.dasm - System.Number:RoundNumber(byref,int,ubyte) (Tier1)
-4 (-4.26 % of base) : 31308.dasm - System.Text.Json.Tests.Perf_Segment:ReadMultiSegmentSequence(int):this (Tier1-OSR)
-4 (-4.55 % of base) : 39704.dasm - System.Text.Json.Tests.Perf_Segment:ReadSingleSegmentSequence():this (Tier1-OSR)
Top method regressions (percentages):
3 (3.70 % of base) : 14597.dasm - System.Security.Cryptography.UniversalCryptoDecryptor:Dispose(ubyte):this (Tier1)
27 (3.00 % of base) : 7330.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (Tier0-FullOpts)
27 (2.32 % of base) : 5290.dasm - System.Reflection.AssemblyNameParser:GetNextToken(byref):int:this (Tier0-FullOpts)
49 (1.98 % of base) : 38361.dasm - System.Text.Json.Tests.Perf_Segment:ReadMultiSegmentSequenceUsingSpan(int):this (Tier1-OSR)
2 (1.33 % of base) : 3840.dasm - Microsoft.Win32.SafeHandles.SafeFileHandle:CanLockTheFile(int,int):ubyte:this (Tier1)
10 (0.89 % of base) : 47901.dasm - Microsoft.CodeAnalysis.ConstantValue:Create(System.Object,ubyte):Microsoft.CodeAnalysis.ConstantValue (Tier1)
3 (0.85 % of base) : 13644.dasm - System.Formats.Asn1.AsnDecoder:DecodeLength(System.ReadOnlySpan`1[ubyte],int,byref,byref):int (Tier1)
2 (0.35 % of base) : 22170.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (Tier1)
2 (0.34 % of base) : 33532.dasm - System.Net.SocketAddress:.ctor(System.Net.IPAddress):this (Tier1)
14 (0.24 % of base) : 52167.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (Tier1)
Top method improvements (percentages):
-33 (-41.25 % of base) : 9995.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
-32 (-30.48 % of base) : 60259.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier1)
-16 (-7.17 % of base) : 10084.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (Tier1)
-17 (-7.14 % of base) : 31264.dasm - Span.Sorting:TestQuickSortArray(int[],int,int) (Tier1-OSR)
-6 (-6.25 % of base) : 33272.dasm - System.Security.Cryptography.X509Certificates.OpenSslX509ChainProcessor+ErrorCollection+Enumerator:MoveNext():ubyte:this (Tier1)
-18 (-5.90 % of base) : 29685.dasm - Span.Sorting:TestQuickSortSpan(System.Span`1[int]) (Tier1-OSR)
-11 (-5.02 % of base) : 38535.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (Tier1)
-4 (-4.55 % of base) : 39704.dasm - System.Text.Json.Tests.Perf_Segment:ReadSingleSegmentSequence():this (Tier1-OSR)
-4 (-4.26 % of base) : 31308.dasm - System.Text.Json.Tests.Perf_Segment:ReadMultiSegmentSequence(int):this (Tier1-OSR)
-5 (-3.12 % of base) : 15565.dasm - System.Globalization.CultureData:GetSeparator(System.String,System.String):System.String (Tier1)
-4 (-1.96 % of base) : 10103.dasm - System.Number:RoundNumber(byref,int,ubyte) (Tier1)
-7 (-1.00 % of base) : 3015.dasm - System.Text.Ascii:GetIndexOfFirstNonAsciiByte_Vector(ulong,ulong):ulong (Tier1)
-17 (-0.79 % of base) : 47871.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:GetSpecialType(byte):Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:this (Tier1)
-5 (-0.79 % of base) : 51600.dasm - Microsoft.CodeAnalysis.CSharp.DefiniteAssignmentPass:LeaveParameter(Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.Location):this (Tier1)
-45 (-0.69 % of base) : 4787.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (Tier0-FullOpts)
-9 (-0.67 % of base) : 34615.dasm - System.UriHelper:UnescapeString(ulong,int,int,byref,ushort,ushort,ushort,int,System.UriParser,ubyte) (Tier1)
-4 (-0.56 % of base) : 61586.dasm - System.Text.Json.Tests.Perf_Segment:ReadSingleSegmentSequenceByN(int):this (Tier1-OSR)
-2 (-0.48 % of base) : 47287.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.MetadataOrSourceAssemblySymbol:GetDeclaredSpecialTypeMember(int):Microsoft.CodeAnalysis.CSharp.Symbol:this (Tier1)
-3 (-0.40 % of base) : 33441.dasm - System.Net.Sockets.SocketPal:TryCompleteSendTo(System.Net.Sockets.SafeSocketHandle,System.ReadOnlySpan`1[ubyte],System.Collections.Generic.IList`1[System.ArraySegment`1[ubyte]],byref,byref,byref,int,System.ReadOnlySpan`1[ubyte],byref,byref):ubyte (Tier1)
-4 (-0.14 % of base) : 58518.dasm - System.IPv6AddressHelper:ParseCanonicalName(System.String,int,byref,byref):System.String (Tier0-FullOpts)
34 total methods with Code Size differences (24 improved, 10 regressed).
coreclr_tests.run.linux.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 403519732 (overridden on cmd)
Total bytes of diff: 403513503 (overridden on cmd)
Total bytes of delta: -6229 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
158 : 398518.dasm (1.54 % of base)
95 : 246868.dasm (1.75 % of base)
92 : 596371.dasm (1.87 % of base)
50 : 389355.dasm (0.73 % of base)
45 : 535788.dasm (1.00 % of base)
40 : 217049.dasm (7.92 % of base)
40 : 293839.dasm (4.02 % of base)
39 : 398824.dasm (1.42 % of base)
34 : 503562.dasm (1.20 % of base)
31 : 29737.dasm (1.15 % of base)
31 : 596384.dasm (1.05 % of base)
30 : 520385.dasm (1.22 % of base)
27 : 222294.dasm (4.36 % of base)
27 : 500633.dasm (0.69 % of base)
27 : 494110.dasm (4.36 % of base)
25 : 597221.dasm (1.01 % of base)
25 : 399913.dasm (1.36 % of base)
24 : 391396.dasm (0.88 % of base)
22 : 387709.dasm (0.71 % of base)
20 : 217051.dasm (3.55 % of base)
Top file improvements (bytes):
-173 : 421182.dasm (-19.61 % of base)
-129 : 518933.dasm (-18.94 % of base)
-82 : 389360.dasm (-0.82 % of base)
-67 : 398030.dasm (-1.47 % of base)
-67 : 421181.dasm (-20.43 % of base)
-53 : 421180.dasm (-11.21 % of base)
-50 : 143752.dasm (-6.93 % of base)
-42 : 199533.dasm (-20.00 % of base)
-42 : 175674.dasm (-20.00 % of base)
-39 : 207239.dasm (-33.62 % of base)
-39 : 538319.dasm (-22.94 % of base)
-38 : 114802.dasm (-5.47 % of base)
-38 : 156565.dasm (-5.47 % of base)
-38 : 287426.dasm (-2.33 % of base)
-37 : 207605.dasm (-3.82 % of base)
-37 : 222553.dasm (-45.68 % of base)
-37 : 228749.dasm (-3.85 % of base)
-37 : 23834.dasm (-45.68 % of base)
-37 : 241373.dasm (-3.82 % of base)
-37 : 245777.dasm (-3.85 % of base)
75 total files with Code Size differences (40 improved, 35 regressed), 20 unchanged.
Top method regressions (bytes):
158 (1.54 % of base) : 398518.dasm - Internal.TypeSystem.MetadataFieldLayoutAlgorithm:ComputeAutoFieldLayout(Internal.TypeSystem.MetadataType,int):Internal.TypeSystem.ComputedInstanceFieldLayout:this (Tier1)
95 (1.75 % of base) : 246868.dasm - System.Diagnostics.Tracing.EventPipePayloadDecoder:DecodePayload(byref,System.ReadOnlySpan`1[ubyte]):System.Object[] (Tier1)
92 (1.87 % of base) : 596371.dasm - Microsoft.Build.Evaluation.Evaluator`4[System.__Canon,System.__Canon,System.__Canon,System.__Canon]:ReadNewTargetElement(Microsoft.Build.Construction.ProjectTargetElement,ubyte,Microsoft.Build.Evaluation.EvaluationProfiler):Microsoft.Build.Execution.ProjectTargetInstance (FullOpts)
50 (0.73 % of base) : 389355.dasm - ILCompiler.ReadyToRunVisibilityRootProvider:RootMethods(Internal.TypeSystem.MetadataType,System.String,ILCompiler.IRootingServiceProvider,ubyte):this (Tier1)
45 (1.00 % of base) : 535788.dasm - IlasmPortablePdbTests.IlasmPortablePdbTester:TestPortablePdbLocalScope(System.String):this (FullOpts)
40 (7.92 % of base) : 217049.dasm - System.Reflection.RuntimeAssembly:GetType(System.String,ubyte,ubyte):System.Type:this (Instrumented Tier1)
40 (4.02 % of base) : 293839.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateConstructors(System.RuntimeType+RuntimeTypeCache+Filter):System.Reflection.RuntimeConstructorInfo[]:this (Tier1-OSR)
39 (1.42 % of base) : 398824.dasm - Internal.JitInterface.CorInfoImpl:getMethodAttribsInternal(Internal.TypeSystem.MethodDesc):uint:this (Tier1)
34 (1.20 % of base) : 503562.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (FullOpts)
31 (1.05 % of base) : 596384.dasm - Microsoft.Build.Evaluation.Evaluator`4[System.__Canon,System.__Canon,System.__Canon,System.__Canon]:AddBeforeAndAfterTargetMappings(Microsoft.Build.Construction.ProjectTargetElement,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.LinkedListNode`1[Microsoft.Build.Construction.ProjectTargetElement]],System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[Microsoft.Build.BackEnd.TargetSpecification]],System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[Microsoft.Build.BackEnd.TargetSpecification]]):this (FullOpts)
31 (1.15 % of base) : 29737.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateMethods(System.RuntimeType+RuntimeTypeCache+Filter):System.Reflection.RuntimeMethodInfo[]:this (Instrumented Tier1)
30 (1.22 % of base) : 520385.dasm - Test_DictionaryExpansion:DoTest(int) (FullOpts)
27 (0.69 % of base) : 500633.dasm - System.Runtime.Serialization.DataContracts.ClassDataContract+ClassDataContractCriticalHelper:ImportDataMembers():this (FullOpts)
27 (4.36 % of base) : 222294.dasm - X:F(System.Collections.IDictionary):int (Tier1)
27 (4.36 % of base) : 494110.dasm - X:F(System.Collections.IDictionary):int (Tier1)
25 (1.01 % of base) : 597221.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.AttributePresenceFilterNode:GetData(ILCompiler.DependencyAnalysis.NodeFactory,ubyte):ILCompiler.DependencyAnalysis.ObjectNode+ObjectData:this (FullOpts)
25 (1.36 % of base) : 399913.dasm - Program:CompareDLLs(System.String,System.String):int (Tier1-OSR)
24 (0.88 % of base) : 391396.dasm - Internal.JitInterface.CorInfoImpl:getMethodAttribsInternal(Internal.TypeSystem.MethodDesc):uint:this (Tier1)
22 (0.71 % of base) : 387709.dasm - Internal.TypeSystem.Ecma.EcmaType+<GetVirtualMethods>d__53:MoveNext():ubyte:this (Tier1-OSR)
20 (3.18 % of base) : 23950.dasm - Program+<>c__DisplayClass7_0:<Main>g__Test|0[System.__Canon](System.Func`1[System.__Canon],System.__Canon,System.String):this (Tier1)
Top method improvements (bytes):
-173 (-19.61 % of base) : 421182.dasm - Microsoft.FSharp.Core.PrintfImpl+GenericNumber:isPositive(System.Object):ubyte (FullOpts)
-129 (-18.94 % of base) : 518933.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal:IsDefault(System.Object):ubyte (FullOpts)
-82 (-0.82 % of base) : 389360.dasm - Internal.TypeSystem.MetadataFieldLayoutAlgorithm:ComputeAutoFieldLayout(Internal.TypeSystem.MetadataType,int):Internal.TypeSystem.ComputedInstanceFieldLayout:this (Tier1)
-67 (-1.47 % of base) : 398030.dasm - ILCompiler.ReadyToRunVisibilityRootProvider:RootMethods(Internal.TypeSystem.MetadataType,System.String,ILCompiler.IRootingServiceProvider,ubyte):this (Tier1-OSR)
-67 (-20.43 % of base) : 421181.dasm - Microsoft.FSharp.Core.PrintfImpl+FloatAndDecimal:isNumber(System.Object):ubyte (FullOpts)
-53 (-11.21 % of base) : 421180.dasm - Microsoft.FSharp.Core.PrintfImpl+FloatAndDecimal:toFormattedString(System.String,System.Object):System.String (FullOpts)
-50 (-6.93 % of base) : 143752.dasm - System.RuntimeType:TryChangeType(byref,byref):int:this (Tier1)
-42 (-20.00 % of base) : 199533.dasm - System.Double:Equals(System.Object):ubyte:this (Instrumented Tier1)
-42 (-20.00 % of base) : 175674.dasm - System.Single:Equals(System.Object):ubyte:this (Instrumented Tier1)
-39 (-22.94 % of base) : 538319.dasm - Runtime_40440+LargeStruct:Equals(System.Object):ubyte:this (FullOpts)
-39 (-33.62 % of base) : 207239.dasm - System.Single:Equals(System.Object):ubyte:this (Tier1)
-38 (-5.47 % of base) : 114802.dasm - System.RuntimeType:TryChangeType(byref,byref):int:this (Tier1)
-38 (-5.47 % of base) : 156565.dasm - System.RuntimeType:TryChangeType(byref,byref):int:this (Tier1)
-38 (-2.33 % of base) : 287426.dasm - System.SR:InternalGetResourceString(System.String):System.String (Tier1)
-37 (-43.53 % of base) : 200543.dasm - System.Byte:Equals(System.Object):ubyte:this (Tier1)
-37 (-45.68 % of base) : 222553.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
-37 (-45.68 % of base) : 23834.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
-37 (-3.82 % of base) : 207605.dasm - System.Reflection.Emit.DynamicResolver:ResolveToken(int,byref,byref,byref):this (Instrumented Tier1)
-37 (-3.85 % of base) : 228749.dasm - System.Reflection.Emit.DynamicResolver:ResolveToken(int,byref,byref,byref):this (Instrumented Tier1)
-37 (-3.82 % of base) : 241373.dasm - System.Reflection.Emit.DynamicResolver:ResolveToken(int,byref,byref,byref):this (Instrumented Tier1)
Top method regressions (percentages):
10 (12.20 % of base) : 538409.dasm - Runtime_49101:Test(int,int,int,int,int,int,int,int,int,float,float,float,float,float,float,float,float,float,System.Numerics.Vector3):int (FullOpts)
40 (7.92 % of base) : 217049.dasm - System.Reflection.RuntimeAssembly:GetType(System.String,ubyte,ubyte):System.Type:this (Instrumented Tier1)
16 (5.23 % of base) : 389361.dasm - Internal.TypeSystem.TypeSystemHelpers:HasLayout(Internal.TypeSystem.MetadataType):ubyte (Tier1)
16 (5.23 % of base) : 398519.dasm - Internal.TypeSystem.TypeSystemHelpers:HasLayout(Internal.TypeSystem.MetadataType):ubyte (Tier1)
27 (4.36 % of base) : 222294.dasm - X:F(System.Collections.IDictionary):int (Tier1)
27 (4.36 % of base) : 494110.dasm - X:F(System.Collections.IDictionary):int (Tier1)
40 (4.02 % of base) : 293839.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateConstructors(System.RuntimeType+RuntimeTypeCache+Filter):System.Reflection.RuntimeConstructorInfo[]:this (Tier1-OSR)
6 (3.97 % of base) : 238518.dasm - System.Dynamic.Utils.TypeUtils:ValidateType(System.Type,System.String) (Tier1)
20 (3.55 % of base) : 217051.dasm - System.Reflection.TypeNameParser:GetType(System.String,ubyte,ubyte,System.Reflection.Assembly):System.Type (Instrumented Tier1)
9 (3.53 % of base) : 492896.dasm - MyCounter[System.__Canon]:.ctor():this (FullOpts)
9 (3.53 % of base) : 492915.dasm - MyCounter[System.__Canon]:.ctor():this (FullOpts)
9 (3.32 % of base) : 492916.dasm - MyCounter[System.__Canon]:Increment[System.__Canon]():this (FullOpts)
20 (3.18 % of base) : 23950.dasm - Program+<>c__DisplayClass7_0:<Main>g__Test|0[System.__Canon](System.Func`1[System.__Canon],System.__Canon,System.String):this (Tier1)
2 (3.08 % of base) : 585102.dasm - Internal.IL.ILImporter:PropagateThisState(Internal.IL.ILImporter+BasicBlock,Internal.IL.ILImporter+BasicBlock):this (FullOpts)
14 (3.04 % of base) : 287495.dasm - System.Text.UTF8Encoding:GetBytes(System.String,int,int,ubyte[],int):int:this (FullOpts)
2 (2.99 % of base) : 200817.dasm - System.String:Equals(System.Object):ubyte:this (Tier1)
4 (2.82 % of base) : 182008.dasm - System.Reflection.RuntimeParameterInfo:GetParameters(System.IRuntimeMethodInfo,System.Reflection.MemberInfo,System.Signature):System.Reflection.ParameterInfo[] (Tier1)
3 (2.70 % of base) : 500952.dasm - System.Runtime.Serialization.Json.JsonEncodingStreamWrapper:ReadEncoding(ubyte,ubyte):int (FullOpts)
14 (2.50 % of base) : 249246.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (Tier1)
3 (2.48 % of base) : 394291.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.TransitionBlock:IsStackArgumentOffset(int):ubyte:this (Tier1)
Top method improvements (percentages):
-37 (-45.68 % of base) : 222553.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
-37 (-45.68 % of base) : 23834.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
-35 (-44.30 % of base) : 214891.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
-35 (-44.30 % of base) : 287127.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
-35 (-44.30 % of base) : 207243.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
-35 (-44.30 % of base) : 207261.dasm - System.UInt32:Equals(System.Object):ubyte:this (Tier1)
-34 (-43.59 % of base) : 286571.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
-34 (-43.59 % of base) : 6409.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
-34 (-43.59 % of base) : 200605.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
-34 (-43.59 % of base) : 200552.dasm - System.UInt32:Equals(System.Object):ubyte:this (Tier1)
-37 (-43.53 % of base) : 200543.dasm - System.Byte:Equals(System.Object):ubyte:this (Tier1)
-36 (-42.86 % of base) : 207252.dasm - System.Byte:Equals(System.Object):ubyte:this (Tier1)
-36 (-42.86 % of base) : 207251.dasm - System.UInt16:Equals(System.Object):ubyte:this (Tier1)
-35 (-42.17 % of base) : 200550.dasm - System.UInt16:Equals(System.Object):ubyte:this (Tier1)
-33 (-41.77 % of base) : 207247.dasm - System.Int64:Equals(System.Object):ubyte:this (Tier1)
-33 (-41.77 % of base) : 207265.dasm - System.UInt64:Equals(System.Object):ubyte:this (Tier1)
-35 (-41.18 % of base) : 207256.dasm - System.Int16:Equals(System.Object):ubyte:this (Tier1)
-35 (-41.18 % of base) : 207257.dasm - System.SByte:Equals(System.Object):ubyte:this (Tier1)
-32 (-41.03 % of base) : 200554.dasm - System.Int64:Equals(System.Object):ubyte:this (Tier1)
-32 (-41.03 % of base) : 200556.dasm - System.UInt64:Equals(System.Object):ubyte:this (Tier1)
libraries.crossgen2.linux.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 38727192 (overridden on cmd)
Total bytes of diff: 38726091 (overridden on cmd)
Total bytes of delta: -1101 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
43 : 11821.dasm (2.31 % of base)
37 : 73535.dasm (0.70 % of base)
32 : 98448.dasm (2.74 % of base)
27 : 27748.dasm (3.08 % of base)
19 : 32025.dasm (6.67 % of base)
18 : 208217.dasm (1.26 % of base)
17 : 138525.dasm (3.56 % of base)
15 : 25662.dasm (1.27 % of base)
14 : 32010.dasm (5.36 % of base)
11 : 216413.dasm (1.89 % of base)
11 : 24582.dasm (4.26 % of base)
10 : 138817.dasm (2.39 % of base)
9 : 66129.dasm (0.21 % of base)
9 : 133182.dasm (0.99 % of base)
8 : 202607.dasm (2.82 % of base)
8 : 42287.dasm (1.16 % of base)
8 : 96100.dasm (1.62 % of base)
7 : 26761.dasm (1.05 % of base)
6 : 26643.dasm (0.41 % of base)
6 : 27908.dasm (5.22 % of base)
Top file improvements (bytes):
-100 : 195267.dasm (-5.74 % of base)
-75 : 4162.dasm (-6.23 % of base)
-52 : 4946.dasm (-1.52 % of base)
-51 : 154637.dasm (-1.54 % of base)
-49 : 4904.dasm (-1.43 % of base)
-36 : 2107.dasm (-3.92 % of base)
-35 : 207764.dasm (-5.46 % of base)
-32 : 226656.dasm (-30.19 % of base)
-29 : 40590.dasm (-4.28 % of base)
-29 : 127211.dasm (-25.66 % of base)
-28 : 103560.dasm (-5.27 % of base)
-28 : 188713.dasm (-3.26 % of base)
-28 : 195149.dasm (-3.82 % of base)
-28 : 217809.dasm (-4.59 % of base)
-26 : 217962.dasm (-6.33 % of base)
-26 : 233413.dasm (-6.33 % of base)
-26 : 25793.dasm (-4.84 % of base)
-26 : 103531.dasm (-4.04 % of base)
-25 : 226981.dasm (-0.55 % of base)
-22 : 198748.dasm (-0.16 % of base)
72 total files with Code Size differences (35 improved, 37 regressed), 20 unchanged.
Top method regressions (bytes):
43 (2.31 % of base) : 11821.dasm - System.Text.StringBuilder:Replace(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,int):System.Text.StringBuilder:this (FullOpts)
37 (0.70 % of base) : 73535.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:BetterFunctionMember[System.__Canon](Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],ubyte,byref):int:this (FullOpts)
32 (2.74 % of base) : 98448.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.MetadataDecoder:SubstituteNoPiaLocalType(byref,ubyte,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,System.String,System.String,System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.AssemblySymbol):Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol (FullOpts)
27 (3.08 % of base) : 27748.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
19 (6.67 % of base) : 32025.dasm - Microsoft.FSharp.Core.FSharpOption`1[System.__Canon]:CompareTo(System.Object,System.Collections.IComparer):int:this (FullOpts)
18 (1.26 % of base) : 208217.dasm - System.IO.FileSystemWatcher+RunningInstance:ProcessEvent(System.IO.FileSystemWatcher+RunningInstance+NotifyEvent,byref,byref,byref):ubyte:this (FullOpts)
17 (3.56 % of base) : 138525.dasm - System.ComponentModel.AttributeCollection:FromExisting(System.ComponentModel.AttributeCollection,System.Attribute[]):System.ComponentModel.AttributeCollection (FullOpts)
15 (1.27 % of base) : 25662.dasm - System.Reflection.AssemblyNameParser:GetNextToken(byref):int:this (FullOpts)
14 (5.36 % of base) : 32010.dasm - Microsoft.FSharp.Core.FSharpRef`1[System.__Canon]:CompareTo(System.Object,System.Collections.IComparer):int:this (FullOpts)
11 (4.26 % of base) : 24582.dasm - System.Number:TryFormatHalf[ubyte](System.Half,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo,System.Span`1[ubyte],byref):ubyte (FullOpts)
11 (1.89 % of base) : 216413.dasm - Xunit.Assert:Equal(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte,ubyte,ubyte) (FullOpts)
10 (2.39 % of base) : 138817.dasm - System.ComponentModel.TypeDescriptor+AttributeProvider+AttributeTypeDescriptor:GetAttributes():System.ComponentModel.AttributeCollection:this (FullOpts)
9 (0.21 % of base) : 66129.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceOrdinaryMethodSymbol:CheckModifiers(ubyte,Microsoft.CodeAnalysis.Location,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
9 (0.99 % of base) : 133182.dasm - System.Linq.Parallel.AsynchronousChannelMergeEnumerator`1[System.__Canon]:MoveNextSlowPath():ubyte:this (FullOpts)
8 (1.16 % of base) : 42287.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:BetterOperator(Microsoft.CodeAnalysis.CSharp.BinaryOperatorSignature,Microsoft.CodeAnalysis.CSharp.BinaryOperatorSignature,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundExpression,byref):int:this (FullOpts)
8 (1.62 % of base) : 96100.dasm - Microsoft.CodeAnalysis.VisualBasic.DataFlowPass:SetSlotUnassigned(int,byref):this (FullOpts)
8 (2.82 % of base) : 202607.dasm - System.Net.Http.Headers.BaseHeaderParser:TryParseValue(System.String,System.Object,byref,byref):ubyte:this (FullOpts)
7 (1.05 % of base) : 26761.dasm - System.TimeZoneInfo:TryGetEndOfDstIfYearStartWithDst(int,System.TimeSpan,System.TimeZoneInfo,byref):ubyte (FullOpts)
6 (0.41 % of base) : 26643.dasm - System.Environment:ReadXdgDirectory(System.String,System.String,System.String):System.String (FullOpts)
6 (5.22 % of base) : 27908.dasm - System.Threading.PortableThreadPool:RemoveWaitThread(System.Threading.PortableThreadPool+WaitThread):this (FullOpts)
Top method improvements (bytes):
-100 (-5.74 % of base) : 195267.dasm - System.Xml.XmlConvert:EncodeName(System.String,ubyte,ubyte):System.String (FullOpts)
-75 (-6.23 % of base) : 4162.dasm - System.Data.Select:AnalyzeExpression(System.Data.BinaryNode):this (FullOpts)
-52 (-1.52 % of base) : 4946.dasm - System.Data.RBTree`1[int]:RBDeleteFixup(int,int,int,int):int:this (FullOpts)
-51 (-1.54 % of base) : 154637.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CommonReferenceManager`2+AssemblyData[System.__Canon,System.__Canon]],int):this (FullOpts)
-49 (-1.43 % of base) : 4904.dasm - System.Data.RBTree`1[System.__Canon]:RBDeleteFixup(int,int,int,int):int:this (FullOpts)
-36 (-3.92 % of base) : 2107.dasm - System.Data.Common.DataAdapter:Fill(System.Data.DataTable[],System.Data.IDataReader,int,int):int:this (FullOpts)
-35 (-5.46 % of base) : 207764.dasm - System.Diagnostics.LegacyPropagator:TryExtractBaggage(System.String,byref):ubyte (FullOpts)
-32 (-30.19 % of base) : 226656.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
-29 (-4.28 % of base) : 40590.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindArgumentAndName(Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Syntax.NameColonSyntax,ubyte):this (FullOpts)
-29 (-25.66 % of base) : 127211.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
-28 (-5.27 % of base) : 103560.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation:GetWellKnownTypeMember(int):Microsoft.CodeAnalysis.VisualBasic.Symbol:this (FullOpts)
-28 (-4.59 % of base) : 217809.dasm - System.Net.HttpListenerRequest+Helpers:GetCharSetValueFromHeader(System.String):System.String (FullOpts)
-28 (-3.26 % of base) : 188713.dasm - System.Text.RegularExpressions.RegexNode:ReduceAtomic():System.Text.RegularExpressions.RegexNode:this (FullOpts)
-28 (-3.82 % of base) : 195149.dasm - System.Xml.Base64Decoder:Decode(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref):this (FullOpts)
-26 (-4.04 % of base) : 103531.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation:CheckBinaryBuiltInOperator(System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+OperatorInfo) (FullOpts)
-26 (-4.84 % of base) : 25793.dasm - System.Diagnostics.Tracing.EventSource:LogEventArgsMismatches(int,System.Object[]):this (FullOpts)
-26 (-6.33 % of base) : 217962.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
-26 (-6.33 % of base) : 233413.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
-25 (-0.55 % of base) : 226981.dasm - System.Globalization.FormatProvider+Number:NumberToStringFormat(byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (FullOpts)
-22 (-0.16 % of base) : 198748.dasm - System.Xml.Serialization.XmlReflectionImporter:ImportAccessorMapping(System.Xml.Serialization.MemberMapping,System.Xml.Serialization.FieldModel,System.Xml.Serialization.XmlAttributes,System.String,System.Type,ubyte,ubyte,System.Xml.Serialization.RecursionLimiter):this (FullOpts)
Top method regressions (percentages):
3 (11.11 % of base) : 174846.dasm - System.Security.Cryptography.SHA1CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
3 (11.11 % of base) : 174877.dasm - System.Security.Cryptography.SHA256CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
3 (11.11 % of base) : 174908.dasm - System.Security.Cryptography.SHA384CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
3 (11.11 % of base) : 174939.dasm - System.Security.Cryptography.SHA512CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
19 (6.67 % of base) : 32025.dasm - Microsoft.FSharp.Core.FSharpOption`1[System.__Canon]:CompareTo(System.Object,System.Collections.IComparer):int:this (FullOpts)
3 (6.25 % of base) : 174454.dasm - System.Security.Cryptography.KeyedHashAlgorithm:Dispose(ubyte):this (FullOpts)
14 (5.36 % of base) : 32010.dasm - Microsoft.FSharp.Core.FSharpRef`1[System.__Canon]:CompareTo(System.Object,System.Collections.IComparer):int:this (FullOpts)
3 (5.26 % of base) : 201185.dasm - Microsoft.VisualBasic.CompilerServices.StringType:StrLikeCompareBinary(ubyte,ubyte,ushort,ushort):ubyte (FullOpts)
6 (5.22 % of base) : 27908.dasm - System.Threading.PortableThreadPool:RemoveWaitThread(System.Threading.PortableThreadPool+WaitThread):this (FullOpts)
4 (4.60 % of base) : 103090.dasm - Microsoft.CodeAnalysis.VisualBasic.CodeGen.CodeGenerator:EmitConditionalAccessReceiverPlaceholder(Microsoft.CodeAnalysis.VisualBasic.BoundConditionalAccessReceiverPlaceholder,ubyte):this (FullOpts)
5 (4.59 % of base) : 22528.dasm - System.Enum+<>c__63`1[ubyte]:<FormatNumberAsHex>b__63_0(System.Span`1[ushort],long):this (FullOpts)
4 (4.55 % of base) : 1575.dasm - System.Data.SqlTypes.SqlInt64:Equals(System.Data.SqlTypes.SqlInt64):ubyte:this (FullOpts)
4 (4.55 % of base) : 1641.dasm - System.Data.SqlTypes.SqlMoney:Equals(System.Data.SqlTypes.SqlMoney):ubyte:this (FullOpts)
11 (4.26 % of base) : 24582.dasm - System.Number:TryFormatHalf[ubyte](System.Half,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo,System.Span`1[ubyte],byref):ubyte (FullOpts)
3 (4.05 % of base) : 1895.dasm - System.Data.SqlTypes.SqlBoolean:Equals(System.Data.SqlTypes.SqlBoolean):ubyte:this (FullOpts)
3 (3.90 % of base) : 1445.dasm - System.Data.SqlTypes.SqlInt16:Equals(System.Data.SqlTypes.SqlInt16):ubyte:this (FullOpts)
3 (3.80 % of base) : 1959.dasm - System.Data.SqlTypes.SqlByte:Equals(System.Data.SqlTypes.SqlByte):ubyte:this (FullOpts)
3 (3.75 % of base) : 1510.dasm - System.Data.SqlTypes.SqlInt32:Equals(System.Data.SqlTypes.SqlInt32):ubyte:this (FullOpts)
3 (3.75 % of base) : 1696.dasm - System.Data.SqlTypes.SqlSingle:Equals(System.Data.SqlTypes.SqlSingle):ubyte:this (FullOpts)
3 (3.75 % of base) : 22138.dasm - System.IO.FileStream:ValidateHandle(Microsoft.Win32.SafeHandles.SafeFileHandle,int,int,ubyte) (FullOpts)
Top method improvements (percentages):
-32 (-30.19 % of base) : 226656.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
-29 (-25.66 % of base) : 127211.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
-16 (-9.30 % of base) : 141961.dasm - System.Configuration.Internal.WriteFileContext:ReplaceFile(System.String,System.String):this (FullOpts)
-16 (-8.51 % of base) : 26654.dasm - System.DateTimeFormat:IsUseGenitiveForm(System.ReadOnlySpan`1[ushort],int,int,ushort):ubyte (FullOpts)
-11 (-7.53 % of base) : 4690.dasm - System.Data.ExpressionParser:ScanDate():this (FullOpts)
-16 (-7.17 % of base) : 25007.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
-8 (-6.67 % of base) : 234263.dasm - System.Transactions.CheapUnfairReaderWriterLock:EnterWriteLock():this (FullOpts)
-5 (-6.58 % of base) : 221591.dasm - System.Xml.Linq.XObject:SkipNotify():ubyte:this (FullOpts)
-5 (-6.41 % of base) : 198038.dasm - System.Xml.Serialization.XmlSchemaObjectComparer:Namespace(System.Xml.Schema.XmlSchemaObject):System.String (FullOpts)
-26 (-6.33 % of base) : 217962.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
-26 (-6.33 % of base) : 233413.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
-6 (-6.25 % of base) : 177493.dasm - System.Security.Cryptography.X509Certificates.OpenSslX509ChainProcessor+ErrorCollection+Enumerator:MoveNext():ubyte:this (FullOpts)
-75 (-6.23 % of base) : 4162.dasm - System.Data.Select:AnalyzeExpression(System.Data.BinaryNode):this (FullOpts)
-5 (-6.02 % of base) : 221373.dasm - System.Xml.Linq.XObject:get_BaseUri():System.String:this (FullOpts)
-15 (-5.93 % of base) : 225376.dasm - System.Collections.Generic.SortedSet`1[System.__Canon]:SymmetricExceptWithSameComparer(System.__Canon[],int):this (FullOpts)
-100 (-5.74 % of base) : 195267.dasm - System.Xml.XmlConvert:EncodeName(System.String,ubyte,ubyte):System.String (FullOpts)
-35 (-5.46 % of base) : 207764.dasm - System.Diagnostics.LegacyPropagator:TryExtractBaggage(System.String,byref):ubyte (FullOpts)
-28 (-5.27 % of base) : 103560.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation:GetWellKnownTypeMember(int):Microsoft.CodeAnalysis.VisualBasic.Symbol:this (FullOpts)
-26 (-4.84 % of base) : 25793.dasm - System.Diagnostics.Tracing.EventSource:LogEventArgsMismatches(int,System.Object[]):this (FullOpts)
-28 (-4.59 % of base) : 217809.dasm - System.Net.HttpListenerRequest+Helpers:GetCharSetValueFromHeader(System.String):System.String (FullOpts)
libraries.pmi.linux.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 60418410 (overridden on cmd)
Total bytes of diff: 60416719 (overridden on cmd)
Total bytes of delta: -1691 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
95 : 104465.dasm (5.59 % of base)
50 : 237522.dasm (1.49 % of base)
48 : 295430.dasm (10.57 % of base)
46 : 102188.dasm (5.60 % of base)
40 : 227332.dasm (0.99 % of base)
40 : 241035.dasm (1.11 % of base)
31 : 135546.dasm (1.78 % of base)
28 : 72118.dasm (1.67 % of base)
27 : 210285.dasm (0.70 % of base)
25 : 62008.dasm (1.01 % of base)
19 : 70157.dasm (4.60 % of base)
19 : 110244.dasm (1.57 % of base)
19 : 257447.dasm (1.30 % of base)
19 : 64048.dasm (0.95 % of base)
18 : 102712.dasm (6.43 % of base)
18 : 20756.dasm (5.22 % of base)
17 : 221983.dasm (2.72 % of base)
17 : 221984.dasm (2.71 % of base)
16 : 267647.dasm (1.14 % of base)
14 : 138480.dasm (16.09 % of base)
Top file improvements (bytes):
-173 : 11458.dasm (-19.61 % of base)
-143 : 242900.dasm (-19.07 % of base)
-82 : 196355.dasm (-2.77 % of base)
-76 : 131201.dasm (-1.91 % of base)
-67 : 11407.dasm (-20.43 % of base)
-53 : 11406.dasm (-11.21 % of base)
-52 : 23258.dasm (-1.52 % of base)
-49 : 23197.dasm (-1.43 % of base)
-37 : 243596.dasm (-29.37 % of base)
-36 : 25145.dasm (-3.85 % of base)
-36 : 63028.dasm (-39.56 % of base)
-36 : 64069.dasm (-1.93 % of base)
-35 : 261317.dasm (-3.16 % of base)
-35 : 58829.dasm (-38.04 % of base)
-32 : 291734.dasm (-30.48 % of base)
-32 : 62801.dasm (-4.31 % of base)
-31 : 166253.dasm (-3.10 % of base)
-31 : 183890.dasm (-3.10 % of base)
-31 : 62794.dasm (-3.69 % of base)
-30 : 200905.dasm (-10.56 % of base)
71 total files with Code Size differences (37 improved, 34 regressed), 20 unchanged.
Top method regressions (bytes):
95 (5.59 % of base) : 104465.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.MetadataDecoder:SubstituteNoPiaLocalType(byref,ubyte,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,System.String,System.String,System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.AssemblySymbol):Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol (FullOpts)
50 (1.49 % of base) : 237522.dasm - Microsoft.Build.Execution.ProjectInstance:Initialize(Microsoft.Build.Construction.ProjectRootElement,System.Collections.Generic.IDictionary`2[System.String,System.String],System.String,System.String,int,Microsoft.Build.Execution.BuildParameters,Microsoft.Build.BackEnd.Logging.ILoggingService,Microsoft.Build.Framework.BuildEventContext,Microsoft.Build.BackEnd.SdkResolution.ISdkResolverService,int,System.Nullable`1[int],Microsoft.Build.Evaluation.Context.EvaluationContext):this (FullOpts)
48 (10.57 % of base) : 295430.dasm - System.Net.Sockets.SocketAsyncContext:ReceiveMessageFrom(System.Span`1[ubyte],byref,System.Memory`1[ubyte],byref,ubyte,ubyte,int,byref,byref):int:this (FullOpts)
46 (5.60 % of base) : 102188.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:BindNamespaceOrTypeOrExpressionSyntaxForSemanticModel(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.BoundExpression:this (FullOpts)
40 (1.11 % of base) : 241035.dasm - Microsoft.Build.Evaluation.Project+ProjectImpl:BuildGlobResultFromIncludeItem(Microsoft.Build.Construction.ProjectItemElement,System.Collections.Generic.IReadOnlyDictionary`2[System.String,Microsoft.Build.Evaluation.Project+ProjectImpl+CumulativeRemoveElementData]):Microsoft.Build.Evaluation.GlobResult:this (FullOpts)
40 (0.99 % of base) : 227332.dasm - System.Drawing.ColorConverter:ConvertTo(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type):System.Object:this (FullOpts)
31 (1.78 % of base) : 135546.dasm - System.Xml.XmlConvert:EncodeName(System.String,ubyte,ubyte):System.String (FullOpts)
28 (1.67 % of base) : 72118.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:MakeUtf8Span(Microsoft.CodeAnalysis.CSharp.BoundExpression,System.Collections.Generic.IReadOnlyList`1[ubyte]):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
27 (0.70 % of base) : 210285.dasm - System.Runtime.Serialization.DataContracts.ClassDataContract+ClassDataContractCriticalHelper:ImportDataMembers():this (FullOpts)
25 (1.01 % of base) : 62008.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.AttributePresenceFilterNode:GetData(ILCompiler.DependencyAnalysis.NodeFactory,ubyte):ILCompiler.DependencyAnalysis.ObjectNode+ObjectData:this (FullOpts)
19 (0.95 % of base) : 64048.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindBase(Microsoft.CodeAnalysis.CSharp.Syntax.BaseExpressionSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundBaseReference:this (FullOpts)
19 (4.60 % of base) : 70157.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:SetUpdatedSymbol(Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbol):this (FullOpts)
19 (1.57 % of base) : 110244.dasm - Microsoft.CodeAnalysis.VisualBasic.SyntaxTreeSemanticModel:GetTypeOrNamespaceSymbolInfoNotInMember(Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax,int):Microsoft.CodeAnalysis.SymbolInfo:this (FullOpts)
19 (1.30 % of base) : 257447.dasm - System.IO.FileSystemWatcher+RunningInstance:ProcessEvent(System.IO.FileSystemWatcher+RunningInstance+NotifyEvent,byref,byref,byref):ubyte:this (FullOpts)
18 (6.43 % of base) : 102712.dasm - Microsoft.CodeAnalysis.VisualBasic.BinderFactory:BuildAttributeBinder(Microsoft.CodeAnalysis.VisualBasic.Binder,Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode):Microsoft.CodeAnalysis.VisualBasic.Binder:this (FullOpts)
18 (5.22 % of base) : 20756.dasm - System.Xml.XPathNodePointer:GetNamespace(System.String):System.String:this (FullOpts)
17 (2.72 % of base) : 221983.dasm - System.Security.Cryptography.EccKeyFormatHelper:WriteUncompressedBasePoint(byref,System.Formats.Asn1.AsnWriter) (FullOpts)
17 (2.71 % of base) : 221984.dasm - System.Security.Cryptography.EccKeyFormatHelper:WriteUncompressedPublicKey(byref,System.Formats.Asn1.AsnWriter) (FullOpts)
16 (1.14 % of base) : 267647.dasm - Xunit.Assert:Equal(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte,ubyte,ubyte) (FullOpts)
14 (17.95 % of base) : 237018.dasm - Microsoft.Build.Internal.ProjectXmlUtilities:GetAttributeValue(Microsoft.Build.Construction.XmlElementWithLocation,System.String):System.String (FullOpts)
Top method improvements (bytes):
-173 (-19.61 % of base) : 11458.dasm - Microsoft.FSharp.Core.PrintfImpl+GenericNumber:isPositive(System.Object):ubyte (FullOpts)
-143 (-19.07 % of base) : 242900.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal:IsDefault(System.Object):ubyte (FullOpts)
-82 (-2.77 % of base) : 196355.dasm - System.Net.Http.HttpConnectionPool+<HandleHttp11Downgrade>d__82:MoveNext():this (FullOpts)
-76 (-1.91 % of base) : 131201.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation+DocumentationCommentCompiler+IncludeElementExpander:RewriteIncludeElement(System.Xml.Linq.XElement,System.String,Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNodeSyntax,byref):System.Xml.Linq.XNode[]:this (FullOpts)
-67 (-20.43 % of base) : 11407.dasm - Microsoft.FSharp.Core.PrintfImpl+FloatAndDecimal:isNumber(System.Object):ubyte (FullOpts)
-53 (-11.21 % of base) : 11406.dasm - Microsoft.FSharp.Core.PrintfImpl+FloatAndDecimal:toFormattedString(System.String,System.Object):System.String (FullOpts)
-52 (-1.52 % of base) : 23258.dasm - System.Data.RBTree`1[ubyte]:RBDeleteFixup(int,int,int,int):int:this (FullOpts)
-49 (-1.43 % of base) : 23197.dasm - System.Data.RBTree`1[System.__Canon]:RBDeleteFixup(int,int,int,int):int:this (FullOpts)
-37 (-29.37 % of base) : 243596.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.TypeTable+KeyPair`2[ubyte,System.Nullable`1[int]]:Equals(System.Object):ubyte:this (FullOpts)
-36 (-39.56 % of base) : 63028.dasm - ILCompiler.IBC.IBCProfileParser+IBCBlobKey:Equals(System.Object):ubyte:this (FullOpts)
-36 (-1.93 % of base) : 64069.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindArgumentAndName(Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Syntax.NameColonSyntax,ubyte):this (FullOpts)
-36 (-3.85 % of base) : 25145.dasm - System.Data.Common.DataAdapter:Fill(System.Data.DataTable[],System.Data.IDataReader,int,int):int:this (FullOpts)
-35 (-38.04 % of base) : 58829.dasm - Microsoft.Diagnostics.Tracing.CLRRuntimeActivityComputer+IdOfIncompleteAction:Equals(System.Object):ubyte:this (FullOpts)
-35 (-3.16 % of base) : 261317.dasm - System.Diagnostics.LegacyPropagator:TryExtractBaggage(System.String,byref):ubyte (FullOpts)
-32 (-4.31 % of base) : 62801.dasm - ILCompiler.LazyGenericsSupport+Graph`1[ubyte]:FindCyclesWorker(ILCompiler.LazyGenericsSupport+Graph`1+Edge[ubyte],System.Collections.Generic.List`1[ILCompiler.LazyGenericsSupport+Graph`1+Edge[ubyte]],byref,System.Diagnostics.Stopwatch) (FullOpts)
-32 (-30.48 % of base) : 291734.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
-31 (-3.69 % of base) : 62794.dasm - ILCompiler.LazyGenericsSupport+Graph`1[System.__Canon]:FindCyclesWorker(ILCompiler.LazyGenericsSupport+Graph`1+Edge[System.__Canon],System.Collections.Generic.List`1[ILCompiler.LazyGenericsSupport+Graph`1+Edge[System.__Canon]],byref,System.Diagnostics.Stopwatch) (FullOpts)
-31 (-3.10 % of base) : 166253.dasm - Microsoft.CodeAnalysis.Diagnostics.AsyncQueue`1[System.__Canon]:CompleteCore():ubyte:this (FullOpts)
-31 (-3.10 % of base) : 183890.dasm - Microsoft.CodeAnalysis.Diagnostics.AsyncQueue`1[System.__Canon]:CompleteCore():ubyte:this (FullOpts)
-30 (-10.56 % of base) : 200905.dasm - System.ComponentModel.Composition.Hosting.ScopingExtensions:ContainsPartMetadata[int](System.ComponentModel.Composition.Primitives.ComposablePartDefinition,System.String,int):ubyte (FullOpts)
Top method regressions (percentages):
14 (17.95 % of base) : 237018.dasm - Microsoft.Build.Internal.ProjectXmlUtilities:GetAttributeValue(Microsoft.Build.Construction.XmlElementWithLocation,System.String):System.String (FullOpts)
14 (16.09 % of base) : 138480.dasm - System.Xml.DocumentXPathNavigator:get_ValueDocument():System.String:this (FullOpts)
3 (11.11 % of base) : 223580.dasm - System.Security.Cryptography.SHA1CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
3 (11.11 % of base) : 223612.dasm - System.Security.Cryptography.SHA256CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
3 (11.11 % of base) : 223644.dasm - System.Security.Cryptography.SHA384CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
3 (11.11 % of base) : 223676.dasm - System.Security.Cryptography.SHA512CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
48 (10.57 % of base) : 295430.dasm - System.Net.Sockets.SocketAsyncContext:ReceiveMessageFrom(System.Span`1[ubyte],byref,System.Memory`1[ubyte],byref,ubyte,ubyte,int,byref,byref):int:this (FullOpts)
18 (6.43 % of base) : 102712.dasm - Microsoft.CodeAnalysis.VisualBasic.BinderFactory:BuildAttributeBinder(Microsoft.CodeAnalysis.VisualBasic.Binder,Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode):Microsoft.CodeAnalysis.VisualBasic.Binder:this (FullOpts)
3 (6.25 % of base) : 222827.dasm - System.Security.Cryptography.HMAC:Dispose(ubyte):this (FullOpts)
3 (6.25 % of base) : 223036.dasm - System.Security.Cryptography.KeyedHashAlgorithm:Dispose(ubyte):this (FullOpts)
46 (5.60 % of base) : 102188.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:BindNamespaceOrTypeOrExpressionSyntaxForSemanticModel(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.BoundExpression:this (FullOpts)
95 (5.59 % of base) : 104465.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.MetadataDecoder:SubstituteNoPiaLocalType(byref,ubyte,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,System.String,System.String,System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.AssemblySymbol):Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol (FullOpts)
3 (5.26 % of base) : 149015.dasm - Microsoft.VisualBasic.CompilerServices.StringType:StrLikeCompareBinary(ubyte,ubyte,ushort,ushort):ubyte (FullOpts)
18 (5.22 % of base) : 20756.dasm - System.Xml.XPathNodePointer:GetNamespace(System.String):System.String:this (FullOpts)
19 (4.60 % of base) : 70157.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:SetUpdatedSymbol(Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbol):this (FullOpts)
3 (3.70 % of base) : 223891.dasm - System.Security.Cryptography.UniversalCryptoDecryptor:Dispose(ubyte):this (FullOpts)
3 (3.49 % of base) : 265665.dasm - System.Net.Mail.AlternateView:Dispose(ubyte):this (FullOpts)
3 (3.26 % of base) : 222964.dasm - System.Security.Cryptography.HMACSHA3_256:Dispose(ubyte):this (FullOpts)
3 (3.26 % of base) : 223008.dasm - System.Security.Cryptography.HMACSHA3_512:Dispose(ubyte):this (FullOpts)
3 (3.26 % of base) : 222944.dasm - System.Security.Cryptography.HMACSHA512:Dispose(ubyte):this (FullOpts)
Top method improvements (percentages):
-36 (-39.56 % of base) : 63028.dasm - ILCompiler.IBC.IBCProfileParser+IBCBlobKey:Equals(System.Object):ubyte:this (FullOpts)
-35 (-38.04 % of base) : 58829.dasm - Microsoft.Diagnostics.Tracing.CLRRuntimeActivityComputer+IdOfIncompleteAction:Equals(System.Object):ubyte:this (FullOpts)
-32 (-30.48 % of base) : 291734.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
-37 (-29.37 % of base) : 243596.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.TypeTable+KeyPair`2[ubyte,System.Nullable`1[int]]:Equals(System.Object):ubyte:this (FullOpts)
-29 (-25.89 % of base) : 157853.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
-67 (-20.43 % of base) : 11407.dasm - Microsoft.FSharp.Core.PrintfImpl+FloatAndDecimal:isNumber(System.Object):ubyte (FullOpts)
-173 (-19.61 % of base) : 11458.dasm - Microsoft.FSharp.Core.PrintfImpl+GenericNumber:isPositive(System.Object):ubyte (FullOpts)
-143 (-19.07 % of base) : 242900.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal:IsDefault(System.Object):ubyte (FullOpts)
-19 (-14.73 % of base) : 244355.dasm - System.Data.Odbc.OdbcParameter:GetParameterScale(System.Object):ubyte:this (FullOpts)
-29 (-13.24 % of base) : 243592.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.TypeTable+KeyPair`2[System.__Canon,System.Nullable`1[int]]:Equals(System.Object):ubyte:this (FullOpts)
-13 (-12.26 % of base) : 146661.dasm - System.Xml.Serialization.XmlSchemaObjectComparer:Namespace(System.Xml.Schema.XmlSchemaObject):System.String (FullOpts)
-53 (-11.21 % of base) : 11406.dasm - Microsoft.FSharp.Core.PrintfImpl+FloatAndDecimal:toFormattedString(System.String,System.Object):System.String (FullOpts)
-30 (-10.56 % of base) : 200905.dasm - System.ComponentModel.Composition.Hosting.ScopingExtensions:ContainsPartMetadata[int](System.ComponentModel.Composition.Primitives.ComposablePartDefinition,System.String,int):ubyte (FullOpts)
-14 (-9.21 % of base) : 11422.dasm - Microsoft.FSharp.Core.PrintfImpl+Integer:eliminateNative(System.Object):System.Object (FullOpts)
-16 (-8.89 % of base) : 230752.dasm - System.Configuration.Internal.WriteFileContext:ReplaceFile(System.String,System.String):this (FullOpts)
-15 (-8.77 % of base) : 294389.dasm - R2RDump.Disassembler:TryParseAbsoluteAddress(System.String,byref,byref,byref):ubyte:this (FullOpts)
-18 (-8.11 % of base) : 58822.dasm - Microsoft.Diagnostics.Tracing.CLRRuntimeActivityComputer+EventUID:Equals(System.Object):ubyte:this (FullOpts)
-5 (-7.94 % of base) : 261917.dasm - System.Buffers.ReadOnlySequence`1[ubyte]:SeekMultiSegment(System.Buffers.ReadOnlySequenceSegment`1[ubyte],System.Object,int,long,int):System.SequencePosition (FullOpts)
-5 (-7.81 % of base) : 261865.dasm - System.Buffers.ReadOnlySequence`1[System.__Canon]:SeekMultiSegment(System.Buffers.ReadOnlySequenceSegment`1[System.__Canon],System.Object,int,long,int):System.SequencePosition (FullOpts)
-11 (-7.80 % of base) : 23711.dasm - System.Data.ExpressionParser:ScanDate():this (FullOpts)
libraries_tests.run.linux.x64.Release.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 335624331 (overridden on cmd)
Total bytes of diff: 335603604 (overridden on cmd)
Total bytes of delta: -20727 (-0.01 % of base)
diff is a regression.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
469 : 471500.dasm (11.40 % of base)
341 : 314027.dasm (9.60 % of base)
330 : 43371.dasm (4.85 % of base)
306 : 188410.dasm (6.16 % of base)
287 : 89724.dasm (9.90 % of base)
252 : 713867.dasm (5.69 % of base)
233 : 591616.dasm (3.37 % of base)
224 : 351580.dasm (4.23 % of base)
208 : 59779.dasm (4.46 % of base)
203 : 66395.dasm (9.48 % of base)
183 : 684203.dasm (2.78 % of base)
181 : 63971.dasm (5.79 % of base)
172 : 90040.dasm (3.44 % of base)
172 : 88042.dasm (2.19 % of base)
172 : 116633.dasm (3.34 % of base)
168 : 578958.dasm (4.58 % of base)
161 : 183175.dasm (3.17 % of base)
151 : 696821.dasm (3.99 % of base)
146 : 704532.dasm (2.77 % of base)
146 : 48816.dasm (3.29 % of base)
Top file improvements (bytes):
-478 : 696327.dasm (-3.75 % of base)
-460 : 62986.dasm (-3.20 % of base)
-290 : 714183.dasm (-11.67 % of base)
-274 : 707040.dasm (-1.30 % of base)
-225 : 191700.dasm (-2.18 % of base)
-196 : 675636.dasm (-2.52 % of base)
-173 : 674465.dasm (-1.20 % of base)
-141 : 247910.dasm (-3.72 % of base)
-136 : 712676.dasm (-1.43 % of base)
-133 : 709936.dasm (-1.57 % of base)
-131 : 714670.dasm (-1.00 % of base)
-119 : 494276.dasm (-0.71 % of base)
-119 : 494278.dasm (-0.71 % of base)
-119 : 494277.dasm (-0.71 % of base)
-119 : 494275.dasm (-0.70 % of base)
-118 : 92517.dasm (-2.84 % of base)
-116 : 705098.dasm (-2.46 % of base)
-111 : 638486.dasm (-1.94 % of base)
-110 : 682850.dasm (-1.16 % of base)
-108 : 658653.dasm (-1.69 % of base)
90 total files with Code Size differences (52 improved, 38 regressed), 20 unchanged.
Top method regressions (bytes):
469 (11.40 % of base) : 471500.dasm - System.Xml.XmlDiff.XmlDiffDocument:ReadAttributes(System.Xml.XmlDiff.XmlDiffElement,System.Xml.XmlReader,System.Xml.XmlDiff.PositionInfo):this (Tier1)
341 (9.60 % of base) : 314027.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExprMethodInfo:get_ConstructorInfo():System.Reflection.ConstructorInfo:this (Tier1)
330 (4.85 % of base) : 43371.dasm - System.Composition.CompositionContextExtensions:SatisfyImportsInternal(System.Composition.CompositionContext,System.Object,System.Composition.Convention.AttributedModelProvider) (Tier1)
306 (6.16 % of base) : 188410.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.OverriddenOrHiddenMembersHelpers:FindOverriddenOrHiddenMembers(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,ubyte,byref,byref) (Tier1)
287 (9.90 % of base) : 89724.dasm - Microsoft.CodeAnalysis.CSharp.ConversionsBase:ClassifyExplicitBuiltInOnlyConversion(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte,byref,ubyte):Microsoft.CodeAnalysis.CSharp.Conversion:this (Tier1)
252 (5.69 % of base) : 713867.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<ReinferAndVisitBinaryOperator>g__getTypeIfContainingType|186_1(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BoundExpression):Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:this (Tier1)
233 (3.37 % of base) : 591616.dasm - System.Security.Cryptography.X509Certificates.Asn1.TbsCertificateAsn:DecodeCore(byref,System.Formats.Asn1.Asn1Tag,System.ReadOnlyMemory`1[ubyte],byref) (Tier1)
224 (4.23 % of base) : 351580.dasm - Xunit.Sdk.ReflectionMethodInfo:GetParent(System.Reflection.MethodInfo):System.Reflection.MethodInfo (Tier1)
208 (4.46 % of base) : 59779.dasm - Microsoft.CodeAnalysis.SyntaxValueProvider:<GetMatchingNodes>g__processMember|16_3(Microsoft.CodeAnalysis.SyntaxNode,byref) (Tier1)
203 (9.48 % of base) : 66395.dasm - Microsoft.Interop.Analyzers.GeneratedComInterfaceAttributeAnalyzer:Initialize(Microsoft.CodeAnalysis.Diagnostics.AnalysisContext):this (Tier1)
183 (2.78 % of base) : 684203.dasm - System.Text.Json.Serialization.JsonDictionaryConverter`3[System.Text.Json.Serialization.Tests.StructDictionary`2[System.__Canon,int],System.__Canon,int]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (Tier1)
181 (5.79 % of base) : 63971.dasm - Microsoft.CodeAnalysis.CSharp.ConversionsBase:ClassifyExplicitBuiltInOnlyConversion(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte,byref,ubyte):Microsoft.CodeAnalysis.CSharp.Conversion:this (Tier1)
172 (3.44 % of base) : 90040.dasm - Microsoft.CodeAnalysis.Compilation:CommonBindScriptClass():Microsoft.CodeAnalysis.INamedTypeSymbol:this (Tier1)
172 (2.19 % of base) : 88042.dasm - Microsoft.CodeAnalysis.CSharp.MethodCompiler:CompileMethod(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,int,byref,Microsoft.CodeAnalysis.CSharp.SynthesizedSubmissionFields,Microsoft.CodeAnalysis.CSharp.TypeCompilationState):this (Tier1)
172 (3.34 % of base) : 116633.dasm - Microsoft.CodeAnalysis.Workspace:<SetCurrentSolutionAsync>g__UnifyLinkedDocumentContents|27_0(Microsoft.CodeAnalysis.Solution,Microsoft.CodeAnalysis.Solution):Microsoft.CodeAnalysis.Solution (Tier1)
168 (4.58 % of base) : 578958.dasm - System.Security.Cryptography.Pkcs.Asn1.Rfc3161TstInfo:DecodeCore(byref,System.Formats.Asn1.Asn1Tag,System.ReadOnlyMemory`1[ubyte],byref) (Tier1)
161 (3.17 % of base) : 183175.dasm - Microsoft.CodeAnalysis.Workspace:<SetCurrentSolutionAsync>g__UnifyLinkedDocumentContents|27_0(Microsoft.CodeAnalysis.Solution,Microsoft.CodeAnalysis.Solution):Microsoft.CodeAnalysis.Solution (Tier1)
151 (3.99 % of base) : 696821.dasm - Microsoft.CodeAnalysis.CSharp.ConversionsBase:ClassifyBuiltInConversion(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte,byref):Microsoft.CodeAnalysis.CSharp.Conversion:this (Tier1)
146 (2.77 % of base) : 704532.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseLocalDeclarationStatement(Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AttributeListSyntax]):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.StatementSyntax:this (Tier1)
146 (3.29 % of base) : 48816.dasm - System.Collections.Immutable.ImmutableArray:CreateRange[System.__Canon,System.__Canon](System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon]):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (Tier1)
Top method improvements (bytes):
-478 (-3.75 % of base) : 696327.dasm - Microsoft.Cci.MetadataWriter:SerializeMethodBodies(System.Reflection.Metadata.BlobBuilder,Microsoft.Cci.PdbWriter,byref):int[]:this (Tier1-OSR)
-460 (-3.20 % of base) : 62986.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:CheckValidNullableMethodOverride[System.ValueTuple`2[System.__Canon,ubyte]](Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.Symbols.ReportMismatchInReturnType`1[System.ValueTuple`2[System.__Canon,ubyte]],Microsoft.CodeAnalysis.CSharp.Symbols.ReportMismatchInParameterType`1[System.ValueTuple`2[System.__Canon,ubyte]],System.ValueTuple`2[System.__Canon,ubyte],ubyte):ubyte (Tier1)
-290 (-11.67 % of base) : 714183.dasm - Microsoft.CodeAnalysis.Compilation:ConstructModuleSerializationProperties(Microsoft.CodeAnalysis.Emit.EmitOptions,System.String,System.Guid):Microsoft.Cci.ModulePropertiesForSerialization:this (Tier1)
-274 (-1.30 % of base) : 707040.dasm - Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,System.__Canon]:VisitBinaryLogicalOperatorChildren(Microsoft.CodeAnalysis.CSharp.BoundExpression):this (Tier1)
-225 (-2.18 % of base) : 191700.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindInvocationExpression(Microsoft.CodeAnalysis.CSharp.Syntax.InvocationExpressionSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (Tier1)
-196 (-2.52 % of base) : 675636.dasm - System.Text.Json.Tests.Utf8JsonReaderTests:TestJsonReaderUtf8(ubyte,int,System.String) (Tier1)
-173 (-1.20 % of base) : 674465.dasm - System.Text.Json.Tests.Utf8JsonReaderTests:TestingNumbers_TryGetMethods() (Tier1-OSR)
-141 (-3.72 % of base) : 247910.dasm - System.Collections.Generic.SortedSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
-136 (-1.43 % of base) : 712676.dasm - Microsoft.Cci.MetadataWriter:PopulateMethodTableRows(int[]):this (Tier1)
-133 (-1.57 % of base) : 709936.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitCollectionExpression(Microsoft.CodeAnalysis.CSharp.BoundCollectionExpression):Microsoft.CodeAnalysis.CSharp.BoundNode:this (Tier1)
-131 (-1.00 % of base) : 714670.dasm - System.Text.RegularExpressions.Generator.RegexGenerator+<>c__DisplayClass25_0:<EmitTryMatchAtCurrentPosition>g__EmitLazy|28(System.Text.RegularExpressions.RegexNode):this (Tier1)
-119 (-0.70 % of base) : 494275.dasm - System.Xml.Tests.TCAttributeAccess:TestAttributeAccess1():int:this (Tier1)
-119 (-0.71 % of base) : 494276.dasm - System.Xml.Tests.TCAttributeAccess:TestAttributeAccess2():int:this (Tier1)
-119 (-0.71 % of base) : 494277.dasm - System.Xml.Tests.TCAttributeAccess:TestAttributeAccess3():int:this (Tier1)
-119 (-0.71 % of base) : 494278.dasm - System.Xml.Tests.TCAttributeAccess:TestAttributeAccess4():int:this (Tier1)
-118 (-2.84 % of base) : 92517.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:AreParameterAnnotationsCompatible(ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,int,ubyte):ubyte (Tier1)
-116 (-2.46 % of base) : 705098.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.Optimizer:RemoveIntersectingLocals(System.Collections.Generic.Dictionary`2[Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol,Microsoft.CodeAnalysis.CSharp.CodeGen.LocalDefUseInfo],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.CodeGen.LocalDefUseInfo]) (Tier1)
-111 (-1.94 % of base) : 638486.dasm - System.Text.Json.Serialization.Converters.ObjectWithParameterizedConstructorConverter`1[System.__Canon]:ReadConstructorArguments(byref,byref,System.Text.Json.JsonSerializerOptions):this (Tier1)
-110 (-1.16 % of base) : 682850.dasm - System.Text.Json.Serialization.Converters.ObjectWithParameterizedConstructorConverter`1[System.Text.Json.Serialization.Tests.Struct_With_Ctor_With_65_Params]:ReadConstructorArgumentsWithContinuation(byref,byref,System.Text.Json.JsonSerializerOptions):ubyte:this (Tier1)
-108 (-1.69 % of base) : 658653.dasm - System.Text.Json.Serialization.JsonCollectionConverter`2[System.__Canon,int]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (Tier1)
Top method regressions (percentages):
58 (21.32 % of base) : 734178.dasm - System.Diagnostics.DebuggerAttributes:IsPrimitiveType(System.Object):ubyte (Tier1)
26 (13.33 % of base) : 606818.dasm - System.Dynamic.Utils.TypeUtils:AreReferenceAssignable(System.Type,System.Type):ubyte (Tier1)
29 (11.65 % of base) : 243509.dasm - System.Collections.Tests.IEnumerable_Generic_Tests`1[int]:<IEnumerable_Generic_Enumerator_Reset>b__55_2(System.Collections.Generic.IEnumerator`1[int],int[],int):this (Tier1)
469 (11.40 % of base) : 471500.dasm - System.Xml.XmlDiff.XmlDiffDocument:ReadAttributes(System.Xml.XmlDiff.XmlDiffElement,System.Xml.XmlReader,System.Xml.XmlDiff.PositionInfo):this (Tier1)
29 (11.11 % of base) : 246225.dasm - System.Collections.Tests.IEnumerable_Generic_Tests`1[System.Collections.Generic.KeyValuePair`2[int,int]]:<IEnumerable_Generic_Enumerator_Reset>b__55_2(System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[int,int]],System.Collections.Generic.KeyValuePair`2[int,int][],int):this (Tier1)
14 (10.69 % of base) : 693200.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:ShouldCheckRequiredMembers(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol):ubyte (Tier1)
129 (10.33 % of base) : 476049.dasm - System.Xml.Xsl.Xslt.XslAstAnalyzer:VisitChildren(System.Xml.Xsl.Xslt.XslNode):int:this (Tier1)
12 (10.17 % of base) : 696514.dasm - Microsoft.CodeAnalysis.CSharp.Emit.PEModuleBuilder:IsGenericType(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol):ubyte (Tier1)
287 (9.90 % of base) : 89724.dasm - Microsoft.CodeAnalysis.CSharp.ConversionsBase:ClassifyExplicitBuiltInOnlyConversion(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte,byref,ubyte):Microsoft.CodeAnalysis.CSharp.Conversion:this (Tier1)
29 (9.63 % of base) : 242058.dasm - System.Collections.Tests.IEnumerable_Generic_Tests`1[System.__Canon]:<IEnumerable_Generic_Enumerator_Reset>b__55_2(System.Collections.Generic.IEnumerator`1[System.__Canon],System.__Canon[],int):this (Tier1)
341 (9.60 % of base) : 314027.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExprMethodInfo:get_ConstructorInfo():System.Reflection.ConstructorInfo:this (Tier1)
203 (9.48 % of base) : 66395.dasm - Microsoft.Interop.Analyzers.GeneratedComInterfaceAttributeAnalyzer:Initialize(Microsoft.CodeAnalysis.Diagnostics.AnalysisContext):this (Tier1)
28 (9.09 % of base) : 57612.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_IsDelaySigned():ubyte:this (Tier1)
45 (9.00 % of base) : 334294.dasm - System.Reflection.TypeNameParser:Parse():System.Type:this (Tier1)
25 (8.42 % of base) : 89853.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_IsDelaySigned():ubyte:this (Tier1)
25 (8.25 % of base) : 695976.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol+<>c:<AfterMembersCompletedChecks>b__92_0(Microsoft.CodeAnalysis.CSharp.Symbol):ubyte:this (Tier1)
34 (7.93 % of base) : 692447.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol+AliasesAndUsings:GetUsingsAndDiagnostics(byref,Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol],ubyte):Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol+AliasesAndUsings+UsingsAndDiagnostics:this (Tier1)
9 (7.50 % of base) : 188108.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:GetSymbol[System.__Canon](Microsoft.CodeAnalysis.ISymbol):System.__Canon (Tier1)
9 (7.50 % of base) : 90041.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:GetSymbol[System.__Canon](Microsoft.CodeAnalysis.ISymbol):System.__Canon (Tier1)
18 (7.50 % of base) : 313058.dasm - System.Runtime.CompilerServices.CallSite`1+<>c[System.__Canon]:<CreateCustomUpdateDelegate>b__20_1(System.Linq.Expressions.ParameterExpression):System.Linq.Expressions.Expression:this (Tier1)
Top method improvements (percentages):
-34 (-43.59 % of base) : 606126.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
-34 (-43.59 % of base) : 217926.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
-34 (-43.59 % of base) : 223516.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
-34 (-43.59 % of base) : 241116.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
-34 (-43.59 % of base) : 268653.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
-34 (-43.59 % of base) : 287347.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
-34 (-43.59 % of base) : 361351.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
-34 (-43.59 % of base) : 373458.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
-34 (-43.59 % of base) : 384244.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
-34 (-43.59 % of base) : 468474.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
-34 (-43.59 % of base) : 550739.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
-34 (-43.59 % of base) : 756559.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
-34 (-43.59 % of base) : 108918.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
-34 (-43.59 % of base) : 306484.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
-34 (-43.59 % of base) : 692589.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
-34 (-43.59 % of base) : 109315.dasm - System.UInt32:Equals(System.Object):ubyte:this (Tier1)
-34 (-43.59 % of base) : 232068.dasm - System.UInt32:Equals(System.Object):ubyte:this (Tier1)
-34 (-43.59 % of base) : 310926.dasm - System.UInt32:Equals(System.Object):ubyte:this (Tier1)
-34 (-43.59 % of base) : 384898.dasm - System.UInt32:Equals(System.Object):ubyte:this (Tier1)
-34 (-43.59 % of base) : 679785.dasm - System.UInt32:Equals(System.Object):ubyte:this (Tier1)
librariestestsnotieredcompilation.run.linux.x64.Release.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 132556965 (overridden on cmd)
Total bytes of diff: 132555208 (overridden on cmd)
Total bytes of delta: -1757 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
109 : 264457.dasm (4.76 % of base)
107 : 182113.dasm (2.74 % of base)
65 : 75001.dasm (1.19 % of base)
63 : 182146.dasm (1.71 % of base)
62 : 182134.dasm (1.39 % of base)
60 : 181914.dasm (1.90 % of base)
59 : 181869.dasm (1.81 % of base)
52 : 182223.dasm (1.65 % of base)
48 : 12427.dasm (0.77 % of base)
48 : 290494.dasm (1.35 % of base)
48 : 30897.dasm (3.06 % of base)
47 : 264562.dasm (0.98 % of base)
47 : 251362.dasm (0.98 % of base)
47 : 167106.dasm (1.63 % of base)
45 : 144682.dasm (2.20 % of base)
43 : 267901.dasm (0.84 % of base)
42 : 182280.dasm (1.10 % of base)
42 : 20618.dasm (10.85 % of base)
40 : 165762.dasm (1.18 % of base)
40 : 85754.dasm (0.99 % of base)
Top file improvements (bytes):
-165 : 117100.dasm (-18.88 % of base)
-164 : 84527.dasm (-8.83 % of base)
-124 : 179659.dasm (-4.48 % of base)
-122 : 25056.dasm (-18.10 % of base)
-89 : 300412.dasm (-2.52 % of base)
-77 : 6722.dasm (-4.15 % of base)
-65 : 205813.dasm (-2.87 % of base)
-65 : 212732.dasm (-2.67 % of base)
-65 : 300491.dasm (-2.97 % of base)
-64 : 122757.dasm (-2.92 % of base)
-52 : 93173.dasm (-1.52 % of base)
-51 : 212736.dasm (-4.99 % of base)
-49 : 94069.dasm (-1.43 % of base)
-48 : 160616.dasm (-2.12 % of base)
-46 : 300492.dasm (-2.23 % of base)
-45 : 160488.dasm (-1.99 % of base)
-45 : 211431.dasm (-1.61 % of base)
-42 : 51166.dasm (-3.24 % of base)
-41 : 160484.dasm (-2.00 % of base)
-41 : 207317.dasm (-1.60 % of base)
80 total files with Code Size differences (41 improved, 39 regressed), 20 unchanged.
Top method regressions (bytes):
109 (4.76 % of base) : 264457.dasm - System.Text.Json.Tests.Utf8JsonWriterTests:WritePartialBase64String(System.Text.Json.JsonWriterOptions):this (FullOpts)
107 (2.74 % of base) : 182113.dasm - System.Reflection.Metadata.Tests.MetadataReaderTests:ValidateTypeDefTableMod():this (FullOpts)
65 (1.19 % of base) : 75001.dasm - System.Collections.Specialized.Tests.NameValueCollectionAddStringStringTests:Add():this (FullOpts)
63 (1.71 % of base) : 182146.dasm - System.Reflection.Metadata.Tests.MetadataReaderTests:ValidateTypeDefTable():this (FullOpts)
62 (1.39 % of base) : 182134.dasm - System.Reflection.Metadata.Tests.MetadataReaderTests:ValidateFieldDef(System.Reflection.Metadata.MetadataReader,uint,uint,ubyte):this (FullOpts)
60 (1.90 % of base) : 181914.dasm - System.Reflection.Metadata.Tests.MetadataReaderTests:ValidateTypeRefTable():this (FullOpts)
59 (1.81 % of base) : 181869.dasm - System.Reflection.Metadata.Tests.MetadataReaderTests:ValidateAssemblyRefTable():this (FullOpts)
52 (1.65 % of base) : 182223.dasm - System.Reflection.Metadata.Tests.MetadataReaderTests:ValidateTypeRefTableMod():this (FullOpts)
48 (3.06 % of base) : 30897.dasm - Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.DefiniteAssignmentPass+LocalState,System.__Canon]:VisitIsPatternExpression(Microsoft.CodeAnalysis.CSharp.BoundIsPatternExpression):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
48 (0.77 % of base) : 12427.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:BetterFunctionMember[System.__Canon](Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],ubyte,byref):int:this (FullOpts)
48 (1.35 % of base) : 290494.dasm - System.Text.RegularExpressions.Tests.GetGroupNamesTests:GroupNamesAndNumbers(System.String,System.String,System.String[],int[],System.String[],int):this (FullOpts)
47 (0.98 % of base) : 264562.dasm - System.Text.Json.Serialization.Tests.NumberHandlingTests+<<FloatingPointConstants_Pass>g__PerformFloatingPointSerialization|38_0>d:MoveNext():this (FullOpts)
47 (0.98 % of base) : 251362.dasm - System.Text.Json.Serialization.Tests.NumberHandlingTests+<<FloatingPointConstants_Pass>g__PerformFloatingPointSerialization|38_0>d:MoveNext():this (FullOpts)
47 (1.63 % of base) : 167106.dasm - XPathTests.Common.Utils:XPathNodesetTest(int,System.String,System.String,XPathTests.Common.XPathResult,System.Xml.XmlNamespaceManager,System.String) (FullOpts)
45 (2.20 % of base) : 144682.dasm - System.SpanTests.IndexOfAnyInRangeTests_RefType:NullBound_Throws():this (FullOpts)
43 (0.84 % of base) : 267901.dasm - System.Text.RegularExpressions.Tests.RegexUnicodeCharTests+<RegexUnicodeChar>d__1:MoveNext():this (FullOpts)
42 (10.85 % of base) : 20618.dasm - System.Formats.Asn1.AsnDecoder:DecodeLength(System.ReadOnlySpan`1[ubyte],int,byref,byref):int (FullOpts)
42 (1.10 % of base) : 182280.dasm - System.Reflection.Metadata.Tests.MetadataReaderTests:ValidateGenericParamTable():this (FullOpts)
40 (0.99 % of base) : 85754.dasm - System.Drawing.ColorConverter:ConvertTo(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type):System.Object:this (FullOpts)
40 (1.18 % of base) : 165762.dasm - XmlSerializerTests:XmlMembersMapping_MultipleMembers_XmlAnyElement() (FullOpts)
Top method improvements (bytes):
-165 (-18.88 % of base) : 117100.dasm - Microsoft.FSharp.Core.PrintfImpl+GenericNumber:isPositive(System.Object):ubyte (FullOpts)
-164 (-8.83 % of base) : 84527.dasm - System.ComponentModel.Composition.Hosting.ScopeExtensionsTests:ContainsMetadata():this (FullOpts)
-124 (-4.48 % of base) : 179659.dasm - System.Reflection.Emit.Tests.AssemblySaveConstructorBuilderTests:DefineDefaultConstructor_TypesWithGenericParents():this (FullOpts)
-122 (-18.10 % of base) : 25056.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal:IsDefault(System.Object):ubyte (FullOpts)
-89 (-2.52 % of base) : 300412.dasm - System.Threading.Tasks.Tests.TaskRtTests_Core:RunTaskCompletionSourceTests_SetException() (FullOpts)
-77 (-4.15 % of base) : 6722.dasm - Microsoft.CodeAnalysis.CSharp.Binder:GetAttributes(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Binder],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol],Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData[],Microsoft.CodeAnalysis.CSharp.BoundAttribute[],System.Action`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax],System.Action`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag) (FullOpts)
-65 (-2.87 % of base) : 205813.dasm - System.Tests.ByteTests:ToStringTest(ubyte,System.String,System.IFormatProvider,System.String) (FullOpts)
-65 (-2.67 % of base) : 212732.dasm - System.Tests.UInt16Tests:ToStringTest(ushort,System.String,System.IFormatProvider,System.String) (FullOpts)
-65 (-2.97 % of base) : 300491.dasm - System.Threading.Tasks.Tests.TaskRtTests_Core:RunTaskCompletionSourceTests_CancellationTests() (FullOpts)
-64 (-2.92 % of base) : 122757.dasm - System.IO.Compression.Tests.zip_UpdateTests:Update_Comment_EntryName_Encoding_Internal(System.String,System.String,System.String,System.Text.Encoding,System.String,System.String) (FullOpts)
-52 (-1.52 % of base) : 93173.dasm - System.Data.RBTree`1[int]:RBDeleteFixup(int,int,int,int):int:this (FullOpts)
-51 (-4.99 % of base) : 212736.dasm - System.Tests.UInt16Tests:EqualsTest(ushort,System.Object,ubyte) (FullOpts)
-49 (-1.43 % of base) : 94069.dasm - System.Data.RBTree`1[System.__Canon]:RBDeleteFixup(int,int,int,int):int:this (FullOpts)
-48 (-2.12 % of base) : 160616.dasm - System.Numerics.Tensors.Tests.ConvertTests:ConvertCheckedImpl[ubyte,ubyte]() (FullOpts)
-46 (-2.23 % of base) : 300492.dasm - System.Threading.Tasks.Tests.TaskRtTests_Core:RunBasicFutureTest() (FullOpts)
-45 (-1.99 % of base) : 160488.dasm - System.Numerics.Tensors.Tests.ConvertTests:ConvertSaturatingImpl[byte,byte]() (FullOpts)
-45 (-1.61 % of base) : 211431.dasm - System.Tests.Int32Tests:ToStringTest(int,System.String,System.IFormatProvider,System.String) (FullOpts)
-42 (-3.24 % of base) : 51166.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindArgumentAndName(Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Syntax.NameColonSyntax,ubyte):this (FullOpts)
-41 (-2.00 % of base) : 160484.dasm - System.Numerics.Tensors.Tests.ConvertTests:ConvertTruncatingImpl[byte,byte]() (FullOpts)
-41 (-1.60 % of base) : 207317.dasm - System.Tests.SByteTests:ToStringTest(byte,System.String,System.IFormatProvider,System.String) (FullOpts)
Top method regressions (percentages):
14 (16.09 % of base) : 167450.dasm - System.Xml.DocumentXPathNavigator:get_ValueDocument():System.String:this (FullOpts)
3 (15.79 % of base) : 151838.dasm - System.Net.NetworkInformation.Tests.PingTest+FinalizingPing:Dispose(ubyte):this (FullOpts)
3 (11.11 % of base) : 215580.dasm - System.Security.Cryptography.SHA1CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
3 (11.11 % of base) : 215909.dasm - System.Security.Cryptography.SHA256CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
3 (11.11 % of base) : 215903.dasm - System.Security.Cryptography.SHA384CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
3 (11.11 % of base) : 215895.dasm - System.Security.Cryptography.SHA512CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
42 (10.85 % of base) : 20618.dasm - System.Formats.Asn1.AsnDecoder:DecodeLength(System.ReadOnlySpan`1[ubyte],int,byref,byref):int (FullOpts)
28 (6.86 % of base) : 187708.dasm - System.IO.Tests.PathTests:GetDirectoryName_NetFxInvalid(System.String):this (FullOpts)
3 (6.25 % of base) : 224272.dasm - System.Security.Cryptography.HMAC:Dispose(ubyte):this (FullOpts)
29 (5.50 % of base) : 188075.dasm - System.Tests.ConvertToStringTests:FromUInt32Array() (FullOpts)
26 (5.44 % of base) : 50373.dasm - Microsoft.CodeAnalysis.CSharp.CSharpSemanticModel:CanGetSemanticInfo(Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,ubyte,ubyte):ubyte (FullOpts)
3 (5.26 % of base) : 60003.dasm - Microsoft.VisualBasic.CompilerServices.StringType:StrLikeCompareBinary(ubyte,ubyte,ushort,ushort):ubyte (FullOpts)
109 (4.76 % of base) : 264457.dasm - System.Text.Json.Tests.Utf8JsonWriterTests:WritePartialBase64String(System.Text.Json.JsonWriterOptions):this (FullOpts)
19 (4.60 % of base) : 54059.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:SetUpdatedSymbol(Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbol):this (FullOpts)
19 (4.60 % of base) : 44375.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:SetUpdatedSymbol(Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbol):this (FullOpts)
19 (4.60 % of base) : 50216.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:SetUpdatedSymbol(Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbol):this (FullOpts)
3 (4.05 % of base) : 175232.dasm - XmlCoreTest.Common.CustomWriter:Dispose(ubyte):this (FullOpts)
21 (4.02 % of base) : 188118.dasm - System.Tests.ConvertToStringTests:FromByte() (FullOpts)
21 (3.99 % of base) : 188071.dasm - System.Tests.ConvertToStringTests:FromUInt16Array() (FullOpts)
10 (3.76 % of base) : 187718.dasm - System.IO.Tests.PathTests:GetFileName_Volume(System.String,System.String):this (FullOpts)
Top method improvements (percentages):
-36 (-44.44 % of base) : 193646.dasm - System.Runtime.Serialization.Formatters.Tests.StructContainingArraysOfOtherStructs:Equals(System.Object):ubyte:this (FullOpts)
-32 (-30.48 % of base) : 31533.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
-29 (-25.89 % of base) : 97293.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
-165 (-18.88 % of base) : 117100.dasm - Microsoft.FSharp.Core.PrintfImpl+GenericNumber:isPositive(System.Object):ubyte (FullOpts)
-122 (-18.10 % of base) : 25056.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal:IsDefault(System.Object):ubyte (FullOpts)
-27 (-13.99 % of base) : 96819.dasm - System.Data.Tests.DataRowTest2+Address:Equals(System.Object):ubyte:this (FullOpts)
-164 (-8.83 % of base) : 84527.dasm - System.ComponentModel.Composition.Hosting.ScopeExtensionsTests:ContainsMetadata():this (FullOpts)
-5 (-7.94 % of base) : 16566.dasm - System.Buffers.ReadOnlySequence`1[ubyte]:SeekMultiSegment(System.Buffers.ReadOnlySequenceSegment`1[ubyte],System.Object,int,long,int):System.SequencePosition (FullOpts)
-11 (-7.80 % of base) : 95684.dasm - System.Data.ExpressionParser:ScanDate():this (FullOpts)
-12 (-7.36 % of base) : 192345.dasm - System.Numerics.BigInteger:op_Multiply(System.Numerics.BigInteger,System.Numerics.BigInteger):System.Numerics.BigInteger (FullOpts)
-14 (-6.90 % of base) : 51290.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckConstantBounds(byte,Microsoft.CodeAnalysis.ConstantValue,byref):ubyte (FullOpts)
-14 (-6.90 % of base) : 10713.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckConstantBounds(byte,Microsoft.CodeAnalysis.ConstantValue,byref):ubyte (FullOpts)
-14 (-6.90 % of base) : 45854.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckConstantBounds(byte,Microsoft.CodeAnalysis.ConstantValue,byref):ubyte (FullOpts)
-19 (-6.76 % of base) : 71254.dasm - System.Collections.Generic.SortedSet`1[System.__Canon]:SymmetricExceptWithSameComparer(System.__Canon[],int):this (FullOpts)
-5 (-6.33 % of base) : 773.dasm - System.Xml.Linq.XObject:SkipNotify():ubyte:this (FullOpts)
-6 (-6.25 % of base) : 153159.dasm - System.Security.Cryptography.X509Certificates.OpenSslX509ChainProcessor+ErrorCollection+Enumerator:MoveNext():ubyte:this (FullOpts)
-26 (-5.94 % of base) : 152196.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
-26 (-5.94 % of base) : 149512.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
-26 (-5.94 % of base) : 152584.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
-5 (-5.81 % of base) : 63018.dasm - System.Xml.Linq.XObject:get_BaseUri():System.String:this (FullOpts)
realworld.run.linux.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 13174803 (overridden on cmd)
Total bytes of diff: 13174859 (overridden on cmd)
Total bytes of delta: 56 (0.00 % of base)
diff is a regression.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
89 : 14058.dasm (2.61 % of base)
48 : 23557.dasm (3.07 % of base)
41 : 22292.dasm (0.65 % of base)
34 : 18204.dasm (1.20 % of base)
30 : 7397.dasm (1.96 % of base)
29 : 17244.dasm (4.82 % of base)
27 : 30373.dasm (2.78 % of base)
21 : 17220.dasm (1.83 % of base)
21 : 8095.dasm (0.74 % of base)
20 : 12201.dasm (2.16 % of base)
19 : 19490.dasm (4.60 % of base)
16 : 17191.dasm (2.99 % of base)
14 : 19046.dasm (0.24 % of base)
12 : 20472.dasm (0.21 % of base)
11 : 25919.dasm (0.30 % of base)
11 : 23294.dasm (0.96 % of base)
10 : 19035.dasm (0.80 % of base)
9 : 17230.dasm (0.93 % of base)
9 : 8889.dasm (0.06 % of base)
8 : 17234.dasm (1.61 % of base)
Top file improvements (bytes):
-93 : 13406.dasm (-2.94 % of base)
-45 : 972.dasm (-0.69 % of base)
-36 : 6712.dasm (-42.86 % of base)
-36 : 7022.dasm (-42.86 % of base)
-35 : 8852.dasm (-44.30 % of base)
-28 : 19048.dasm (-1.59 % of base)
-17 : 19037.dasm (-0.80 % of base)
-16 : 15826.dasm (-1.79 % of base)
-16 : 812.dasm (-7.17 % of base)
-15 : 19994.dasm (-0.54 % of base)
-14 : 21390.dasm (-6.90 % of base)
-14 : 31865.dasm (-0.46 % of base)
-13 : 12095.dasm (-1.51 % of base)
-13 : 17455.dasm (-1.50 % of base)
-11 : 18490.dasm (-5.02 % of base)
-10 : 20925.dasm (-0.40 % of base)
-8 : 19804.dasm (-3.46 % of base)
-7 : 32658.dasm (-0.52 % of base)
-7 : 472.dasm (-1.00 % of base)
-6 : 16485.dasm (-0.62 % of base)
56 total files with Code Size differences (28 improved, 28 regressed), 20 unchanged.
Top method regressions (bytes):
89 (2.61 % of base) : 14058.dasm - Microsoft.ML.Internal.Utilities.VBufferUtils:ApplyInto[float,float,float](byref,byref,byref,System.Func`4[int,float,float,float]) (FullOpts)
48 (3.07 % of base) : 23557.dasm - Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.DefiniteAssignmentPass+LocalState,System.__Canon]:VisitIsPatternExpression(Microsoft.CodeAnalysis.CSharp.BoundIsPatternExpression):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
41 (0.65 % of base) : 22292.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:BetterFunctionMember[System.__Canon](Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],ubyte,byref):int:this (FullOpts)
34 (1.20 % of base) : 18204.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (FullOpts)
30 (1.96 % of base) : 7397.dasm - FSharp.Compiler.LexFilter:rulesForBothSoftWhiteAndHardWhite$cont@2481(FSharp.Compiler.LexFilter+LexFilterImpl,FSharp.Compiler.LexFilter+TokenTup,ubyte,FSharp.Compiler.LexFilter+TokenTup,Microsoft.FSharp.Core.Unit) (FullOpts)
29 (4.82 % of base) : 17244.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseInterpolatedStringToken>g__getCloseQuote|428_5(byref):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
27 (2.78 % of base) : 30373.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
21 (0.74 % of base) : 8095.dasm - FSharp.Compiler.CheckExpressions:MakeAndPublishVal(FSharp.Compiler.CheckExpressions+TcFileState,FSharp.Compiler.CheckExpressions+TcEnv,FSharp.Compiler.TypedTree+ParentRef,ubyte,FSharp.Compiler.CheckExpressions+DeclKind,FSharp.Compiler.TypedTree+ValRecursiveScopeInfo,FSharp.Compiler.CheckExpressions+ValScheme,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib],FSharp.Compiler.Xml.XmlDoc,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+Const],ubyte):FSharp.Compiler.TypedTree+Val (FullOpts)
21 (1.83 % of base) : 17220.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseInterpolation(Microsoft.CodeAnalysis.CSharp.CSharpParseOptions,System.String,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer+Interpolation,int):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.InterpolationSyntax (FullOpts)
20 (2.16 % of base) : 12201.dasm - SixLabors.ImageSharp.Processing.Processors.Quantization.PaletteQuantizer:CreatePixelSpecificQuantizer[SixLabors.ImageSharp.PixelFormats.Rgba32](SixLabors.ImageSharp.Configuration,SixLabors.ImageSharp.Processing.Processors.Quantization.QuantizerOptions):SixLabors.ImageSharp.Processing.Processors.Quantization.IQuantizer`1[SixLabors.ImageSharp.PixelFormats.Rgba32]:this (FullOpts)
19 (4.60 % of base) : 19490.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:SetUpdatedSymbol(Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbol):this (FullOpts)
16 (2.99 % of base) : 17191.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseInterpolatedStringToken>g__getOpenQuote|428_1(byref):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
14 (0.24 % of base) : 19046.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (FullOpts)
12 (0.21 % of base) : 20472.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceOrdinaryMethodSymbol:CheckModifiers(ubyte,Microsoft.CodeAnalysis.Location,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
11 (0.96 % of base) : 23294.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitObjectElementInitializer>g__visitMemberInitializer|169_0(int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BoundAssignmentOperator,ubyte):System.Action`2[int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]:this (FullOpts)
11 (0.30 % of base) : 25919.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:BestTypeForLambdaReturns(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[System.ValueTuple`3[Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,ubyte]],Microsoft.CodeAnalysis.CSharp.Binder,Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.Conversions,byref):Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations (FullOpts)
10 (0.80 % of base) : 19035.dasm - Microsoft.CodeAnalysis.ConstantValue:Create(System.Object,ubyte):Microsoft.CodeAnalysis.ConstantValue (FullOpts)
9 (0.06 % of base) : 8889.dasm - FSharp.Compiler.CheckExpressions:TcMethodApplication(ubyte,FSharp.Compiler.CheckExpressions+TcFileState,FSharp.Compiler.CheckExpressions+TcEnv,FSharp.Compiler.CheckExpressions+UnscopedTyparEnv,Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+TType]],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Expr],FSharp.Compiler.Text.Range,FSharp.Compiler.Text.Range,System.String,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+TType],FSharp.Compiler.AccessibilityLogic+AccessorDomain,FSharp.Compiler.TypedTreeOps+Mutates,ubyte,Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[FSharp.Compiler.Infos+MethInfo,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Infos+PropInfo]]],FSharp.Compiler.NameResolution+AfterResolution,FSharp.Compiler.TypedTree+ValUseFlag,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynExpr],FSharp.Compiler.ConstraintSolver+OverallTy,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+DelayedItem]):System.Tuple`2[System.Tuple`3[FSharp.Compiler.TypedTree+Expr,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.MethodCalls+CallerNamedArg`1[FSharp.Compiler.TypedTree+Expr]],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+DelayedItem]],FSharp.Compiler.CheckExpressions+UnscopedTyparEnv] (FullOpts)
9 (0.93 % of base) : 17230.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseInterpolation>g__getFormatAndCloseBrace|434_1(byref):System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.InterpolationFormatClauseSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken]:this (FullOpts)
8 (1.61 % of base) : 17234.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseInterpolation>g__getInterpolationCloseToken|434_2(Microsoft.CodeAnalysis.GreenNode,byref):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
Top method improvements (bytes):
-93 (-2.94 % of base) : 13406.dasm - Microsoft.ML.Data.SchemaDefinition:Create(System.Type,int):Microsoft.ML.Data.SchemaDefinition (FullOpts)
-45 (-0.69 % of base) : 972.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (FullOpts)
-36 (-42.86 % of base) : 7022.dasm - System.Boolean:Equals(System.Object):ubyte:this (FullOpts)
-36 (-42.86 % of base) : 6712.dasm - System.Byte:Equals(System.Object):ubyte:this (FullOpts)
-35 (-44.30 % of base) : 8852.dasm - System.Int32:Equals(System.Object):ubyte:this (FullOpts)
-28 (-1.59 % of base) : 19048.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindArgumentAndName(Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Syntax.NameColonSyntax,ubyte):this (FullOpts)
-17 (-0.80 % of base) : 19037.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:GetSpecialType(byte):Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:this (FullOpts)
-16 (-1.79 % of base) : 15826.dasm - Roslyn.Utilities.CommandLineUtilities:SplitCommandLineIntoArguments(System.ReadOnlySpan`1[ushort],ubyte,System.Text.StringBuilder,System.Collections.Generic.List`1[System.String],byref) (FullOpts)
-16 (-7.17 % of base) : 812.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
-15 (-0.54 % of base) : 19994.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
-14 (-6.90 % of base) : 21390.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckConstantBounds(byte,Microsoft.CodeAnalysis.ConstantValue,byref):ubyte (FullOpts)
-14 (-0.46 % of base) : 31865.dasm - System.Management.Automation.Adapter:FindBestMethodImpl(System.Management.Automation.MethodInformation[],System.Management.Automation.PSMethodInvocationConstraints,ubyte,System.Object[],byref,byref,byref):System.Management.Automation.MethodInformation (FullOpts)
-13 (-1.50 % of base) : 17455.dasm - Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString:FromSource(System.String):Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString (FullOpts)
-13 (-1.51 % of base) : 12095.dasm - SixLabors.ImageSharp.Compression.Zlib.DeflaterHuffman+Tree:BuildLength(System.ReadOnlySpan`1[int]):this (FullOpts)
-11 (-5.02 % of base) : 18490.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (FullOpts)
-10 (-0.40 % of base) : 20925.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourcePropertySymbolBase:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
-8 (-3.46 % of base) : 19804.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.MetadataDecoder:GetGenericTypeParamSymbol(int):Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:this (FullOpts)
-7 (-0.52 % of base) : 32658.dasm - System.Management.Automation.PowerShell:CoreInvoke[System.__Canon,System.__Canon](System.Management.Automation.PSDataCollection`1[System.__Canon],System.Management.Automation.PSDataCollection`1[System.__Canon],System.Management.Automation.PSInvocationSettings):this (FullOpts)
-7 (-1.00 % of base) : 472.dasm - System.Text.Ascii:GetIndexOfFirstNonAsciiByte_Vector(ulong,ulong):ulong (FullOpts)
-6 (-0.62 % of base) : 16485.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseCommaSeparatedSyntaxList[System.__Canon](byref,ushort,System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser,ubyte],System.Func`2[System.__Canon,System.__Canon],Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser+SkipBadTokens`1[System.__Canon],ubyte,ubyte,ubyte):Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxList`1[System.__Canon]:this (FullOpts)
Top method regressions (percentages):
29 (4.82 % of base) : 17244.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseInterpolatedStringToken>g__getCloseQuote|428_5(byref):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
19 (4.60 % of base) : 19490.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:SetUpdatedSymbol(Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbol):this (FullOpts)
2 (3.23 % of base) : 14665.dasm - System.Net.Http.HttpConnectionPool:GetSslOptionsForRequest(System.Net.Http.HttpRequestMessage):System.Net.Security.SslClientAuthenticationOptions:this (FullOpts)
48 (3.07 % of base) : 23557.dasm - Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.DefiniteAssignmentPass+LocalState,System.__Canon]:VisitIsPatternExpression(Microsoft.CodeAnalysis.CSharp.BoundIsPatternExpression):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
16 (2.99 % of base) : 17191.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseInterpolatedStringToken>g__getOpenQuote|428_1(byref):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
8 (2.86 % of base) : 15209.dasm - System.Net.Http.Headers.BaseHeaderParser:TryParseValue(System.String,System.Object,byref,byref):ubyte:this (FullOpts)
3 (2.86 % of base) : 15413.dasm - System.Net.Http.HttpConnection+HttpContentReadStream:Dispose(ubyte):this (FullOpts)
27 (2.78 % of base) : 30373.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
89 (2.61 % of base) : 14058.dasm - Microsoft.ML.Internal.Utilities.VBufferUtils:ApplyInto[float,float,float](byref,byref,byref,System.Func`4[int,float,float,float]) (FullOpts)
2 (2.30 % of base) : 31155.dasm - System.Management.Automation.LocationGlobber:IsProviderDirectPath(System.String):ubyte (FullOpts)
3 (2.24 % of base) : 31416.dasm - System.Management.Automation.CompiledScriptBlockData:Compile(ubyte):ubyte:this (FullOpts)
20 (2.16 % of base) : 12201.dasm - SixLabors.ImageSharp.Processing.Processors.Quantization.PaletteQuantizer:CreatePixelSpecificQuantizer[SixLabors.ImageSharp.PixelFormats.Rgba32](SixLabors.ImageSharp.Configuration,SixLabors.ImageSharp.Processing.Processors.Quantization.QuantizerOptions):SixLabors.ImageSharp.Processing.Processors.Quantization.IQuantizer`1[SixLabors.ImageSharp.PixelFormats.Rgba32]:this (FullOpts)
30 (1.96 % of base) : 7397.dasm - FSharp.Compiler.LexFilter:rulesForBothSoftWhiteAndHardWhite$cont@2481(FSharp.Compiler.LexFilter+LexFilterImpl,FSharp.Compiler.LexFilter+TokenTup,ubyte,FSharp.Compiler.LexFilter+TokenTup,Microsoft.FSharp.Core.Unit) (FullOpts)
3 (1.84 % of base) : 21828.dasm - Microsoft.CodeAnalysis.CSharp.Binder:WithCheckedOrUncheckedRegion(ubyte):Microsoft.CodeAnalysis.CSharp.Binder:this (FullOpts)
21 (1.83 % of base) : 17220.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseInterpolation(Microsoft.CodeAnalysis.CSharp.CSharpParseOptions,System.String,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer+Interpolation,int):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.InterpolationSyntax (FullOpts)
8 (1.61 % of base) : 17234.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseInterpolation>g__getInterpolationCloseToken|434_2(Microsoft.CodeAnalysis.GreenNode,byref):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
3 (1.42 % of base) : 32264.dasm - System.Collections.Generic.SortedSet`1+Enumerator[System.Collections.Generic.KeyValuePair`2[int,System.__Canon]]:Initialize():this (FullOpts)
34 (1.20 % of base) : 18204.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (FullOpts)
11 (0.96 % of base) : 23294.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitObjectElementInitializer>g__visitMemberInitializer|169_0(int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BoundAssignmentOperator,ubyte):System.Action`2[int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]:this (FullOpts)
9 (0.93 % of base) : 17230.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseInterpolation>g__getFormatAndCloseBrace|434_1(byref):System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.InterpolationFormatClauseSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken]:this (FullOpts)
Top method improvements (percentages):
-35 (-44.30 % of base) : 8852.dasm - System.Int32:Equals(System.Object):ubyte:this (FullOpts)
-36 (-42.86 % of base) : 7022.dasm - System.Boolean:Equals(System.Object):ubyte:this (FullOpts)
-36 (-42.86 % of base) : 6712.dasm - System.Byte:Equals(System.Object):ubyte:this (FullOpts)
-16 (-7.17 % of base) : 812.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
-14 (-6.90 % of base) : 21390.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckConstantBounds(byte,Microsoft.CodeAnalysis.ConstantValue,byref):ubyte (FullOpts)
-11 (-5.02 % of base) : 18490.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (FullOpts)
-8 (-3.46 % of base) : 19804.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.MetadataDecoder:GetGenericTypeParamSymbol(int):Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:this (FullOpts)
-5 (-3.12 % of base) : 15336.dasm - System.Globalization.CultureData:GetSeparator(System.String,System.String):System.String (FullOpts)
-93 (-2.94 % of base) : 13406.dasm - Microsoft.ML.Data.SchemaDefinition:Create(System.Type,int):Microsoft.ML.Data.SchemaDefinition (FullOpts)
-4 (-1.96 % of base) : 824.dasm - System.Number:RoundNumber(byref,int,ubyte) (FullOpts)
-16 (-1.79 % of base) : 15826.dasm - Roslyn.Utilities.CommandLineUtilities:SplitCommandLineIntoArguments(System.ReadOnlySpan`1[ushort],ubyte,System.Text.StringBuilder,System.Collections.Generic.List`1[System.String],byref) (FullOpts)
-28 (-1.59 % of base) : 19048.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindArgumentAndName(Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Syntax.NameColonSyntax,ubyte):this (FullOpts)
-13 (-1.51 % of base) : 12095.dasm - SixLabors.ImageSharp.Compression.Zlib.DeflaterHuffman+Tree:BuildLength(System.ReadOnlySpan`1[int]):this (FullOpts)
-13 (-1.50 % of base) : 17455.dasm - Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString:FromSource(System.String):Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString (FullOpts)
-5 (-1.34 % of base) : 25134.dasm - System.Collections.Immutable.ImmutableList`1+Enumerator[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:ResetStack():this (FullOpts)
-2 (-1.28 % of base) : 3178.dasm - System.Globalization.Ordinal:CompareStringIgnoreCase(byref,int,byref,int):int (FullOpts)
-5 (-1.20 % of base) : 7704.dasm - System.Xml.Linq.XContainer+<GetDescendants>d__38:MoveNext():ubyte:this (FullOpts)
-4 (-1.20 % of base) : 10021.dasm - FSharp.Compiler.Syntax.PrettyNaming:TryChopPropertyName(System.String):Microsoft.FSharp.Core.FSharpOption`1[System.String] (FullOpts)
-7 (-1.00 % of base) : 472.dasm - System.Text.Ascii:GetIndexOfFirstNonAsciiByte_Vector(ulong,ulong):ulong (FullOpts)
-5 (-0.96 % of base) : 23797.dasm - Microsoft.CodeAnalysis.CSharp.LocalBinderFactory:FindLocalFunction(Microsoft.CodeAnalysis.CSharp.Syntax.LocalFunctionStatementSyntax,Microsoft.CodeAnalysis.CSharp.Binder):Microsoft.CodeAnalysis.CSharp.Symbols.LocalFunctionSymbol (FullOpts)
smoke_tests.nativeaot.linux.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 4234485 (overridden on cmd)
Total bytes of diff: 4231395 (overridden on cmd)
Total bytes of delta: -3090 (-0.07 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
27 : 24418.dasm (3.12 % of base)
27 : 27122.dasm (3.12 % of base)
27 : 6607.dasm (3.12 % of base)
27 : 19678.dasm (3.12 % of base)
21 : 24086.dasm (4.70 % of base)
21 : 26791.dasm (4.70 % of base)
21 : 19354.dasm (4.70 % of base)
21 : 7256.dasm (4.70 % of base)
15 : 12577.dasm (1.30 % of base)
7 : 3231.dasm (1.09 % of base)
7 : 3239.dasm (0.43 % of base)
6 : 15405.dasm (5.66 % of base)
3 : 11270.dasm (2.59 % of base)
3 : 14235.dasm (0.93 % of base)
3 : 20266.dasm (0.18 % of base)
3 : 7332.dasm (1.43 % of base)
3 : 14950.dasm (4.11 % of base)
3 : 21331.dasm (2.36 % of base)
3 : 3598.dasm (5.08 % of base)
2 : 7846.dasm (0.99 % of base)
Top file improvements (bytes):
-51 : 18908.dasm (-40.80 % of base)
-51 : 18914.dasm (-40.80 % of base)
-51 : 23645.dasm (-40.80 % of base)
-51 : 23659.dasm (-40.80 % of base)
-51 : 26347.dasm (-40.80 % of base)
-51 : 26358.dasm (-40.80 % of base)
-51 : 4260.dasm (-42.86 % of base)
-51 : 4382.dasm (-41.80 % of base)
-50 : 832.dasm (-56.82 % of base)
-50 : 820.dasm (-56.82 % of base)
-48 : 18061.dasm (-45.28 % of base)
-48 : 20011.dasm (-48.98 % of base)
-48 : 25512.dasm (-45.28 % of base)
-48 : 592.dasm (-45.28 % of base)
-48 : 22800.dasm (-45.28 % of base)
-48 : 686.dasm (-45.28 % of base)
-48 : 733.dasm (-30.57 % of base)
-47 : 701.dasm (-50.00 % of base)
-47 : 880.dasm (-44.76 % of base)
-46 : 17385.dasm (-50.55 % of base)
69 total files with Code Size differences (48 improved, 21 regressed), 16 unchanged.
Top method regressions (bytes):
27 (3.12 % of base) : 24418.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
27 (3.12 % of base) : 27122.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
27 (3.12 % of base) : 6607.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
27 (3.12 % of base) : 19678.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
21 (4.70 % of base) : 24086.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
21 (4.70 % of base) : 26791.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
21 (4.70 % of base) : 19354.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
21 (4.70 % of base) : 7256.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
15 (1.30 % of base) : 12577.dasm - System.Reflection.AssemblyNameParser:GetNextToken(byref):int:this (FullOpts)
7 (0.43 % of base) : 3239.dasm - System.Text.UTF32Encoding:GetBytes(ulong,int,ulong,int,System.Text.EncoderNLS):int:this (FullOpts)
7 (1.09 % of base) : 3231.dasm - System.TimeZoneInfo:TryGetEndOfDstIfYearStartWithDst(int,System.TimeSpan,System.TimeZoneInfo,byref):ubyte (FullOpts)
6 (5.66 % of base) : 15405.dasm - System.Threading.PortableThreadPool:RemoveWaitThread(System.Threading.PortableThreadPool+WaitThread):this (FullOpts)
3 (1.43 % of base) : 7332.dasm - Internal.TypeSystem.TypeSystemContext:GetArrayTypesCache(ubyte,int):Internal.TypeSystem.TypeSystemContext+RuntimeTypeHandleToParameterTypeRuntimeTypeHandleHashtable (FullOpts)
3 (5.08 % of base) : 3598.dasm - Microsoft.Win32.SafeHandles.SafeFileHandle:set_SupportsRandomAccess(ubyte):this (FullOpts)
3 (0.18 % of base) : 20266.dasm - ReflectionTest+TestStackTraces:<Run>g__Check|3_0(System.String,System.String,System.String,ubyte,System.String) (FullOpts)
3 (0.93 % of base) : 14235.dasm - System.Threading.Tasks.Task:FinishSlow(ubyte):this (FullOpts)
3 (2.36 % of base) : 21331.dasm - System.Threading.Tasks.Task`1[System.__Canon]:.ctor(ubyte,System.__Canon,int,System.Threading.CancellationToken):this (FullOpts)
3 (2.59 % of base) : 11270.dasm - System.Threading.Tasks.Task`1[System.Threading.Tasks.VoidTaskResult]:.ctor(ubyte,System.Threading.Tasks.VoidTaskResult,int,System.Threading.CancellationToken):this (FullOpts)
3 (4.11 % of base) : 14950.dasm - ThreadTest+Resurrector:Finalize():this (FullOpts)
2 (0.99 % of base) : 7846.dasm - Internal.Runtime.CompilerServices.RuntimeSignature:Equals(Internal.Runtime.CompilerServices.RuntimeSignature):ubyte:this (FullOpts)
Top method improvements (bytes):
-51 (-40.80 % of base) : 18908.dasm - System.Double:Equals(System.Object):ubyte:this (FullOpts)
-51 (-40.80 % of base) : 23645.dasm - System.Double:Equals(System.Object):ubyte:this (FullOpts)
-51 (-40.80 % of base) : 26347.dasm - System.Double:Equals(System.Object):ubyte:this (FullOpts)
-51 (-41.80 % of base) : 4382.dasm - System.Double:Equals(System.Object):ubyte:this (FullOpts)
-51 (-40.80 % of base) : 18914.dasm - System.Single:Equals(System.Object):ubyte:this (FullOpts)
-51 (-40.80 % of base) : 23659.dasm - System.Single:Equals(System.Object):ubyte:this (FullOpts)
-51 (-40.80 % of base) : 26358.dasm - System.Single:Equals(System.Object):ubyte:this (FullOpts)
-51 (-42.86 % of base) : 4260.dasm - System.Single:Equals(System.Object):ubyte:this (FullOpts)
-50 (-56.82 % of base) : 820.dasm - System.RuntimeFieldHandle:Equals(System.Object):ubyte:this (FullOpts)
-50 (-56.82 % of base) : 832.dasm - System.RuntimeMethodHandle:Equals(System.Object):ubyte:this (FullOpts)
-48 (-45.28 % of base) : 18061.dasm - Internal.Reflection.Core.QScopeDefinition:Equals(System.Object):ubyte:this (FullOpts)
-48 (-45.28 % of base) : 25512.dasm - Internal.Reflection.Core.QScopeDefinition:Equals(System.Object):ubyte:this (FullOpts)
-48 (-45.28 % of base) : 22800.dasm - Internal.Reflection.Core.QScopeDefinition:Equals(System.Object):ubyte:this (FullOpts)
-48 (-45.28 % of base) : 686.dasm - Internal.Reflection.Core.QScopeDefinition:Equals(System.Object):ubyte:this (FullOpts)
-48 (-30.57 % of base) : 733.dasm - Internal.Runtime.CompilerServices.OpenMethodResolver:Equals(System.Object):ubyte:this (FullOpts)
-48 (-45.28 % of base) : 592.dasm - System.Reflection.Runtime.General.QHandle:Equals(System.Object):ubyte:this (FullOpts)
-48 (-48.98 % of base) : 20011.dasm - System.Runtime.Serialization.StreamingContext:Equals(System.Object):ubyte:this (FullOpts)
-47 (-44.76 % of base) : 880.dasm - Internal.Runtime.CompilerServices.FunctionPointerOps+GenericMethodDescriptorInfo:Equals(System.Object):ubyte:this (FullOpts)
-47 (-50.00 % of base) : 701.dasm - System.TypeUnificationKey:Equals(System.Object):ubyte:this (FullOpts)
-46 (-50.55 % of base) : 22061.dasm - System.Boolean:Equals(System.Object):ubyte:this (FullOpts)
Top method regressions (percentages):
6 (5.66 % of base) : 15405.dasm - System.Threading.PortableThreadPool:RemoveWaitThread(System.Threading.PortableThreadPool+WaitThread):this (FullOpts)
3 (5.08 % of base) : 3598.dasm - Microsoft.Win32.SafeHandles.SafeFileHandle:set_SupportsRandomAccess(ubyte):this (FullOpts)
21 (4.70 % of base) : 24086.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
21 (4.70 % of base) : 26791.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
21 (4.70 % of base) : 19354.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
21 (4.70 % of base) : 7256.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
3 (4.11 % of base) : 14950.dasm - ThreadTest+Resurrector:Finalize():this (FullOpts)
27 (3.12 % of base) : 24418.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
27 (3.12 % of base) : 27122.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
27 (3.12 % of base) : 6607.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
27 (3.12 % of base) : 19678.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
3 (2.59 % of base) : 11270.dasm - System.Threading.Tasks.Task`1[System.Threading.Tasks.VoidTaskResult]:.ctor(ubyte,System.Threading.Tasks.VoidTaskResult,int,System.Threading.CancellationToken):this (FullOpts)
3 (2.36 % of base) : 21331.dasm - System.Threading.Tasks.Task`1[System.__Canon]:.ctor(ubyte,System.__Canon,int,System.Threading.CancellationToken):this (FullOpts)
3 (1.43 % of base) : 7332.dasm - Internal.TypeSystem.TypeSystemContext:GetArrayTypesCache(ubyte,int):Internal.TypeSystem.TypeSystemContext+RuntimeTypeHandleToParameterTypeRuntimeTypeHandleHashtable (FullOpts)
15 (1.30 % of base) : 12577.dasm - System.Reflection.AssemblyNameParser:GetNextToken(byref):int:this (FullOpts)
7 (1.09 % of base) : 3231.dasm - System.TimeZoneInfo:TryGetEndOfDstIfYearStartWithDst(int,System.TimeSpan,System.TimeZoneInfo,byref):ubyte (FullOpts)
2 (0.99 % of base) : 7846.dasm - Internal.Runtime.CompilerServices.RuntimeSignature:Equals(Internal.Runtime.CompilerServices.RuntimeSignature):ubyte:this (FullOpts)
3 (0.93 % of base) : 14235.dasm - System.Threading.Tasks.Task:FinishSlow(ubyte):this (FullOpts)
7 (0.43 % of base) : 3239.dasm - System.Text.UTF32Encoding:GetBytes(ulong,int,ulong,int,System.Text.EncoderNLS):int:this (FullOpts)
1 (0.40 % of base) : 5854.dasm - Internal.Runtime.MethodTable:SetGenericComposition(long):this (FullOpts)
Top method improvements (percentages):
-50 (-56.82 % of base) : 820.dasm - System.RuntimeFieldHandle:Equals(System.Object):ubyte:this (FullOpts)
-50 (-56.82 % of base) : 832.dasm - System.RuntimeMethodHandle:Equals(System.Object):ubyte:this (FullOpts)
-45 (-52.33 % of base) : 145.dasm - System.Int32:Equals(System.Object):ubyte:this (FullOpts)
-45 (-52.33 % of base) : 24849.dasm - System.Int32:Equals(System.Object):ubyte:this (FullOpts)
-45 (-52.33 % of base) : 17402.dasm - System.Int32:Equals(System.Object):ubyte:this (FullOpts)
-45 (-52.33 % of base) : 22140.dasm - System.Int32:Equals(System.Object):ubyte:this (FullOpts)
-45 (-52.33 % of base) : 1220.dasm - System.UInt32:Equals(System.Object):ubyte:this (FullOpts)
-45 (-52.33 % of base) : 17957.dasm - System.UInt32:Equals(System.Object):ubyte:this (FullOpts)
-45 (-52.33 % of base) : 22651.dasm - System.UInt32:Equals(System.Object):ubyte:this (FullOpts)
-45 (-52.33 % of base) : 25440.dasm - System.UInt32:Equals(System.Object):ubyte:this (FullOpts)
-46 (-50.55 % of base) : 22061.dasm - System.Boolean:Equals(System.Object):ubyte:this (FullOpts)
-46 (-50.55 % of base) : 24770.dasm - System.Boolean:Equals(System.Object):ubyte:this (FullOpts)
-46 (-50.55 % of base) : 17385.dasm - System.Byte:Equals(System.Object):ubyte:this (FullOpts)
-46 (-50.55 % of base) : 1924.dasm - System.Byte:Equals(System.Object):ubyte:this (FullOpts)
-46 (-50.55 % of base) : 22129.dasm - System.Byte:Equals(System.Object):ubyte:this (FullOpts)
-46 (-50.55 % of base) : 24834.dasm - System.Byte:Equals(System.Object):ubyte:this (FullOpts)
-46 (-50.55 % of base) : 17380.dasm - System.Char:Equals(System.Object):ubyte:this (FullOpts)
-46 (-50.55 % of base) : 1809.dasm - System.Char:Equals(System.Object):ubyte:this (FullOpts)
-46 (-50.55 % of base) : 22118.dasm - System.Char:Equals(System.Object):ubyte:this (FullOpts)
-46 (-50.55 % of base) : 24830.dasm - System.Char:Equals(System.Object):ubyte:this (FullOpts)