forked from MihaZupan/runtime-utils
-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[X64] [jakobbotsch] Simplify "secret stub arg" handling between JIT and EE #355
Comments
Top method regressions168 (5.60 % of base) - System.DirectoryServices.Protocols.LdapConnection:BuildAttributes(System.Collections.CollectionBase,System.Collections.ArrayList):System.DirectoryServices.Protocols.LdapMod[] ; Assembly listing for method System.DirectoryServices.Protocols.LdapConnection:BuildAttributes(System.Collections.CollectionBase,System.Collections.ArrayList):System.DirectoryServices.Protocols.LdapMod[] (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX - Unix
; FullOpts code
; optimized code
; rbp based frame
; partially interruptible
; No PGO data
; 0 inlinees with PGO data; 25 single block inlinees; 10 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T52] ( 11, 10.12) ref -> [rbp-0x50] class-hnd single-def <System.Collections.CollectionBase>
-; V01 arg1 [V01,T13] ( 10, 66 ) ref -> [rbp-0x58] class-hnd single-def <System.Collections.ArrayList>
-; V02 loc0 [V02,T45] ( 9, 22.50) ref -> [rbp-0x60] class-hnd <System.DirectoryServices.Protocols.LdapMod[]>
-; V03 loc1 [V03,T49] ( 5, 16.50) ref -> [rbp-0x68] class-hnd exact spill-single-def <System.Text.UTF8Encoding>
-; V04 loc2 [V04,T60] ( 3, 3 ) ref -> [rbp-0x70] class-hnd <System.DirectoryServices.Protocols.DirectoryAttributeModificationCollection>
-; V05 loc3 [V05,T56] ( 4, 7 ) ref -> [rbp-0x78] class-hnd <System.DirectoryServices.Protocols.DirectoryAttributeCollection>
+; V00 arg0 [V00,T52] ( 11, 10.12) ref -> [rbp-0x90] class-hnd single-def <System.Collections.CollectionBase>
+; V01 arg1 [V01,T13] ( 10, 66 ) ref -> [rbp-0x98] class-hnd single-def <System.Collections.ArrayList>
+; V02 loc0 [V02,T45] ( 9, 22.50) ref -> [rbp-0xA0] class-hnd <System.DirectoryServices.Protocols.LdapMod[]>
+; V03 loc1 [V03,T49] ( 5, 16.50) ref -> [rbp-0xA8] class-hnd exact spill-single-def <System.Text.UTF8Encoding>
+; V04 loc2 [V04,T60] ( 3, 3 ) ref -> [rbp-0xB0] class-hnd <System.DirectoryServices.Protocols.DirectoryAttributeModificationCollection>
+; V05 loc3 [V05,T56] ( 4, 7 ) ref -> [rbp-0xB8] class-hnd <System.DirectoryServices.Protocols.DirectoryAttributeCollection>
;* V06 loc4 [V06,T68] ( 0, 0 ) int -> zero-ref
-; V07 loc5 [V07,T12] ( 17, 68 ) ref -> [rbp-0x80] class-hnd <System.DirectoryServices.Protocols.DirectoryAttribute>
+; V07 loc5 [V07,T12] ( 17, 68 ) ref -> [rbp-0xC0] class-hnd <System.DirectoryServices.Protocols.DirectoryAttribute>
; V08 loc6 [V08,T22] ( 12, 52 ) int -> [rbp-0x2C]
-; V09 loc7 [V09,T11] ( 15, 73.32) ref -> [rbp-0x88] class-hnd <System.DirectoryServices.Protocols.BerVal[]>
+; V09 loc7 [V09,T11] ( 15, 73.32) ref -> [rbp-0xC8] class-hnd <System.DirectoryServices.Protocols.BerVal[]>
; V10 loc8 [V10,T42] ( 4, 24 ) long -> r15
; V11 loc9 [V11,T46] ( 3, 20 ) int -> [rbp-0x30] spill-single-def
; V12 loc10 [V12,T14] ( 8, 64 ) long -> r13
; V13 loc11 [V13,T07] ( 13, 88.16) int -> [rbp-0x34]
; V14 loc12 [V14,T01] ( 24,146.16) int -> [rbp-0x38]
-; V15 loc13 [V15,T20] ( 12, 56.32) ref -> [rbp-0x90] class-hnd <ubyte[]>
+; V15 loc13 [V15,T20] ( 12, 56.32) ref -> [rbp-0xD0] class-hnd <ubyte[]>
;# V16 OutArgs [V16 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V17 tmp1 [V17,T57] ( 5, 5 ) ref -> r12 class-hnd exact single-def "NewObj constructor temp" <System.Text.UTF8Encoding>
; V18 tmp2 [V18,T34] ( 4, 32 ) ref -> rax class-hnd exact "NewObj constructor temp" <System.DirectoryServices.Protocols.LdapMod>
; V19 tmp3 [V19,T43] ( 3, 24 ) ref -> rdi class-hnd exact "dup spill" <System.DirectoryServices.Protocols.LdapMod>
;* V20 tmp4 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.DirectoryServices.Protocols.LdapMod>
;* V21 tmp5 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.DirectoryServices.Protocols.LdapMod>
; V22 tmp6 [V22,T03] ( 6, 96 ) ref -> rax class-hnd exact "Single-def Box Helper" <System.IntPtr>
; V23 tmp7 [V23,T08] ( 6, 72 ) ref -> rax "ISINST eval op1"
;* V24 tmp8 [V24,T40] ( 0, 0 ) ref -> zero-ref class-hnd "spilling qmarkNull" <System.String>
-; V25 tmp9 [V25,T00] ( 10,160 ) ref -> [rbp-0x98] class-hnd exact "NewObj constructor temp" <System.DirectoryServices.Protocols.BerVal>
+; V25 tmp9 [V25,T00] ( 10,160 ) ref -> [rbp-0xD8] class-hnd exact "NewObj constructor temp" <System.DirectoryServices.Protocols.BerVal>
; V26 tmp10 [V26,T04] ( 6, 96 ) ref -> rax class-hnd exact "Single-def Box Helper" <System.IntPtr>
; V27 tmp11 [V27,T54] ( 2, 8 ) ref -> rdi class-hnd exact "impAppendStmt" <System.DirectoryServices.Protocols.LdapMod>
; V28 tmp12 [V28,T55] ( 2, 8 ) ref -> r8 class-hnd "Inlining Arg" <System.DirectoryServices.Protocols.DirectoryAttributeModification>
;* V29 tmp13 [V29 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
;* V30 tmp14 [V30 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V31 tmp15 [V31 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
; V32 tmp16 [V32,T09] ( 6, 80 ) long -> rdi "Inlining Arg"
; V33 tmp17 [V33,T32] ( 6, 32 ) long -> rdi
; V34 tmp18 [V34,T24] ( 6, 48 ) long -> rax "Inline stloc first use temp"
; V35 tmp19 [V35,T05] ( 6, 96 ) long -> rbx "Inlining Arg"
; V36 tmp20 [V36,T06] ( 6, 96 ) int -> r12 "Inlining Arg"
;* V37 tmp21 [V37 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
;* V38 tmp22 [V38 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ubyte]>
;* V39 tmp23 [V39 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
;* V40 tmp24 [V40 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
;* V41 tmp25 [V41 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
; V42 tmp26 [V42,T15] ( 4, 64 ) byref -> rsi "Inlining Arg"
; V43 tmp27 [V43,T16] ( 4, 64 ) long -> rdx "Inlining Arg"
;* V44 tmp28 [V44 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
; V45 tmp29 [V45,T10] ( 6, 80 ) long -> rdi "Inlining Arg"
; V46 tmp30 [V46,T33] ( 6, 32 ) long -> rdi
; V47 tmp31 [V47,T25] ( 6, 48 ) long -> r13 "Inline stloc first use temp"
;* V48 tmp32 [V48 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.DirectoryServices.Protocols.BerVal>
; V49 tmp33 [V49,T58] ( 2, 4 ) ref -> rax single-def "Single return block return value"
; V50 FramesRoot [V50,T02] ( 18,130 ) long -> r14 "Pinvoke FrameListRoot"
-; V51 PInvokeFrame [V51 ] ( 20,132 ) struct (72) [rbp-0xE8] do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
+; V51 PInvokeFrame [V51 ] ( 20,132 ) struct (64) [rbp-0x78] do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
; V52 tmp36 [V52,T35] ( 4, 32 ) byref -> rsi "field V37._reference (fldOffset=0x0)" P-INDEP
; V53 tmp37 [V53,T26] ( 6, 48 ) int -> r12 "field V37._length (fldOffset=0x8)" P-INDEP
;* V54 tmp38 [V54 ] ( 0, 0 ) byref -> zero-ref "field V38._reference (fldOffset=0x0)" P-INDEP
;* V55 tmp39 [V55 ] ( 0, 0 ) int -> zero-ref "field V38._length (fldOffset=0x8)" P-INDEP
; V56 tmp40 [V56,T36] ( 4, 32 ) byref -> rdi "field V39._reference (fldOffset=0x0)" P-INDEP
;* V57 tmp41 [V57 ] ( 0, 0 ) int -> zero-ref "field V39._length (fldOffset=0x8)" P-INDEP
;* V58 tmp42 [V58 ] ( 0, 0 ) byref -> zero-ref "field V40._reference (fldOffset=0x0)" P-INDEP
;* V59 tmp43 [V59 ] ( 0, 0 ) int -> zero-ref "field V40._length (fldOffset=0x8)" P-INDEP
; V60 tmp44 [V60,T61] ( 3, 3 ) ref -> rdi single-def "argument with side effect"
; V61 tmp45 [V61,T62] ( 3, 3 ) ref -> rdi single-def "argument with side effect"
; V62 tmp46 [V62,T64] ( 2, 2 ) long -> rsi "argument with side effect"
; V63 tmp47 [V63,T41] ( 6, 27 ) ref -> rdi "argument with side effect"
; V64 tmp48 [V64,T44] ( 3, 24 ) ref -> rdi "argument with side effect"
; V65 tmp49 [V65,T53] ( 3, 12 ) ref -> rdi "argument with side effect"
; V66 tmp50 [V66,T37] ( 4, 32 ) ref -> rax "argument with side effect"
; V67 tmp51 [V67,T29] ( 6, 36 ) ref -> rax "argument with side effect"
; V68 tmp52 [V68,T30] ( 6, 36 ) ref -> rax "argument with side effect"
; V69 tmp53 [V69,T23] ( 6, 48 ) ref -> rdi "argument with side effect"
; V70 tmp54 [V70,T38] ( 4, 32 ) ref -> rax "argument with side effect"
; V71 tmp55 [V71,T31] ( 6, 32 ) ref -> rax "argument with side effect"
; V72 tmp56 [V72,T39] ( 4, 32 ) ref -> rsi "argument with side effect"
-; V73 cse0 [V73,T50] ( 6, 16 ) ref -> [rbp-0xA0] multi-def "CSE #05: conservative"
+; V73 cse0 [V73,T50] ( 6, 16 ) ref -> [rbp-0xE0] multi-def "CSE #05: conservative"
; V74 cse1 [V74,T69] ( 3, 0.48) ref -> rdi "CSE #18: conservative"
; V75 cse2 [V75,T27] ( 3, 47.52) ref -> rdi "CSE #08: moderate"
-; V76 cse3 [V76,T17] ( 4, 63.36) int -> [rbp-0x3C] spill-single-def "CSE #06: moderate"
-; V77 rat0 [V77,T28] ( 12, 36.50) long -> [rbp-0x48] "Widened IV V06"
+; V76 cse3 [V76,T17] ( 4, 63.36) int -> [rbp-0x7C] spill-single-def "CSE #06: moderate"
+; V77 rat0 [V77,T28] ( 12, 36.50) long -> [rbp-0x88] "Widened IV V06"
; V78 rat1 [V78,T59] ( 4, 3.25) ref -> rax "replacement local"
; V79 rat2 [V79,T63] ( 3, 2.25) long -> rdi "CSE for expectedClsNode"
; V80 rat3 [V80,T21] ( 4, 55.44) ref -> rsi "replacement local"
; V81 rat4 [V81,T51] ( 3, 15.84) long -> rdi "CSE for expectedClsNode"
; V82 rat5 [V82,T18] ( 5, 59.40) ref -> rdi "replacement local"
; V83 rat6 [V83,T47] ( 3, 19.80) long -> rcx "CSE for expectedClsNode"
; V84 rat7 [V84,T19] ( 5, 59.40) ref -> rsi "replacement local"
; V85 rat8 [V85,T48] ( 3, 19.80) long -> rdi "CSE for expectedClsNode"
; V86 rat9 [V86,T67] ( 4, 0.56) ref -> rsi "replacement local"
; V87 rat10 [V87,T72] ( 3, 0.16) long -> rdi "CSE for expectedClsNode"
; V88 rat11 [V88,T65] ( 5, 0.60) ref -> rdi "replacement local"
; V89 rat12 [V89,T70] ( 3, 0.20) long -> rcx "CSE for expectedClsNode"
; V90 rat13 [V90,T66] ( 5, 0.60) ref -> registers "replacement local"
; V91 rat14 [V91,T71] ( 3, 0.20) long -> rdi "CSE for expectedClsNode"
;
-; Lcl frame size = 200
+; Lcl frame size = 184
G_M10688_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
- sub rsp, 200
+ sub rsp, 184
vzeroupper
- lea rbp, [rsp+0xF0]
- mov gword ptr [rbp-0x58], rsi
+ lea rbp, [rsp+0xE0]
+ mov gword ptr [rbp-0x98], rsi
mov r15, rdi
- ;; size=35 bbWeight=1 PerfScore 9.00
+ ;; size=38 bbWeight=1 PerfScore 9.00
G_M10688_IG02:
- lea rdi, [rbp-0xE0]
- xor esi, esi
+ lea rdi, [rbp-0x70]
call CORINFO_HELP_INIT_PINVOKE_FRAME
mov r14, rax
mov rdi, rsp
- mov qword ptr [rbp-0xC0], rdi
+ mov qword ptr [rbp-0x58], rdi
mov rdi, rbp
- mov qword ptr [rbp-0xB0], rdi
+ mov qword ptr [rbp-0x48], rdi
xor r13, r13
test r15, r15
- je SHORT G_M10688_IG04
- ;; size=45 bbWeight=1 PerfScore 6.00
+ je G_M10688_IG04
+ ;; size=38 bbWeight=1 PerfScore 5.75
G_M10688_IG03:
mov rdi, gword ptr [r15+0x08]
mov rax, qword ptr [rdi]
mov rax, qword ptr [rax+0x40]
call [rax+0x30]System.Collections.ArrayList:get_Count():int:this
test eax, eax
- mov gword ptr [rbp-0x60], r13
+ mov gword ptr [rbp-0xA0], r13
je G_M10688_IG85
mov rdi, 0xD1FFAB1E ; System.Text.UTF8Encoding
call CORINFO_HELP_NEWSFAST
mov r12, rax
mov byte ptr [r12+0x24], 1
mov dword ptr [r12+0x20], 0xFDE9
mov rdi, r12
mov rax, 0xD1FFAB1E ; code for System.Text.UTF8Encoding:SetDefaultFallbacks():this
call [rax]System.Text.UTF8Encoding:SetDefaultFallbacks():this
- mov gword ptr [rbp-0x68], r12
+ mov gword ptr [rbp-0xA8], r12
xor r13, r13
xor rax, rax
- mov gword ptr [rbp-0x78], rax
+ mov gword ptr [rbp-0xB8], rax
mov rsi, r15
mov rdi, 0xD1FFAB1E ; System.DirectoryServices.Protocols.DirectoryAttributeModificationCollection
mov rcx, 0xD1FFAB1E ; code for CORINFO_HELP_ISINSTANCEOFCLASS
call [rcx]CORINFO_HELP_ISINSTANCEOFCLASS
test rax, rax
je SHORT G_M10688_IG05
mov r13, r15
jmp SHORT G_M10688_IG08
- ;; size=122 bbWeight=0.50 PerfScore 14.00
+ ;; size=131 bbWeight=0.50 PerfScore 14.00
G_M10688_IG04:
- mov gword ptr [rbp-0x60], r13
+ mov gword ptr [rbp-0xA0], r13
jmp G_M10688_IG85
- ;; size=9 bbWeight=0.50 PerfScore 1.50
+ ;; size=12 bbWeight=0.50 PerfScore 1.50
G_M10688_IG05:
mov rax, r15
mov rdi, 0xD1FFAB1E ; System.DirectoryServices.Protocols.DirectoryAttributeCollection
cmp qword ptr [rax], rdi
je SHORT G_M10688_IG07
;; size=18 bbWeight=0.50 PerfScore 2.25
G_M10688_IG06:
mov rsi, r15
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_CHKCASTCLASS_SPECIAL
call [rax]CORINFO_HELP_CHKCASTCLASS_SPECIAL
;; size=15 bbWeight=0.12 PerfScore 0.44
G_M10688_IG07:
- mov gword ptr [rbp-0x78], rax
- ;; size=4 bbWeight=0.50 PerfScore 0.50
+ mov gword ptr [rbp-0xB8], rax
+ ;; size=7 bbWeight=0.50 PerfScore 0.50
G_M10688_IG08:
mov rdi, gword ptr [r15+0x08]
mov rcx, qword ptr [rdi]
mov rcx, qword ptr [rcx+0x40]
call [rcx+0x30]System.Collections.ArrayList:get_Count():int:this
movsxd rsi, eax
mov rdi, 0xD1FFAB1E ; System.DirectoryServices.Protocols.LdapMod[]
call CORINFO_HELP_NEWARR_1_OBJ
- mov gword ptr [rbp-0x60], rax
+ mov gword ptr [rbp-0xA0], rax
xor ecx, ecx
- mov qword ptr [rbp-0x48], rcx
- mov gword ptr [rbp-0x50], r15
+ mov qword ptr [rbp-0x88], rcx
+ mov gword ptr [rbp-0x90], r15
mov rdi, gword ptr [r15+0x08]
mov rdx, qword ptr [rdi]
mov rdx, qword ptr [rdx+0x40]
call [rdx+0x30]System.Collections.ArrayList:get_Count():int:this
test eax, eax
jle G_M10688_IG85
- ;; size=68 bbWeight=0.50 PerfScore 12.00
+ ;; size=77 bbWeight=0.50 PerfScore 12.00
G_M10688_IG09:
- mov rax, gword ptr [rbp-0x78]
+ mov rax, gword ptr [rbp-0xB8]
test rax, rax
je SHORT G_M10688_IG11
- ;; size=9 bbWeight=4 PerfScore 9.00
+ ;; size=12 bbWeight=4 PerfScore 9.00
G_M10688_IG10:
- mov gword ptr [rbp-0x78], rax
+ mov gword ptr [rbp-0xB8], rax
mov rdi, rax
- mov rsi, qword ptr [rbp-0x48]
+ mov rsi, qword ptr [rbp-0x88]
mov rcx, 0xD1FFAB1E ; code for System.DirectoryServices.Protocols.DirectoryAttributeCollection:get_Item(int):System.DirectoryServices.Protocols.DirectoryAttribute:this
call [rcx]System.DirectoryServices.Protocols.DirectoryAttributeCollection:get_Item(int):System.DirectoryServices.Protocols.DirectoryAttribute:this
- mov gword ptr [rbp-0x80], rax
+ mov gword ptr [rbp-0xC0], rax
jmp SHORT G_M10688_IG12
- ;; size=29 bbWeight=2 PerfScore 17.00
+ ;; size=38 bbWeight=2 PerfScore 17.00
G_M10688_IG11:
- mov gword ptr [rbp-0x78], rax
- mov gword ptr [rbp-0x70], r13
+ mov gword ptr [rbp-0xB8], rax
+ mov gword ptr [rbp-0xB0], r13
mov rdi, r13
- mov rsi, qword ptr [rbp-0x48]
+ mov rsi, qword ptr [rbp-0x88]
mov rcx, 0xD1FFAB1E ; code for System.DirectoryServices.Protocols.DirectoryAttributeModificationCollection:get_Item(int):System.DirectoryServices.Protocols.DirectoryAttributeModification:this
cmp dword ptr [rdi], edi
call [rcx]System.DirectoryServices.Protocols.DirectoryAttributeModificationCollection:get_Item(int):System.DirectoryServices.Protocols.DirectoryAttributeModification:this
- mov gword ptr [rbp-0x80], rax
- mov r13, gword ptr [rbp-0x70]
- ;; size=37 bbWeight=2 PerfScore 23.00
+ mov gword ptr [rbp-0xC0], rax
+ mov r13, gword ptr [rbp-0xB0]
+ ;; size=52 bbWeight=2 PerfScore 23.00
G_M10688_IG12:
mov rdi, 0xD1FFAB1E ; System.DirectoryServices.Protocols.LdapMod
call CORINFO_HELP_NEWFAST
xor edi, edi
mov qword ptr [rax+0x10], rdi
;; size=21 bbWeight=4 PerfScore 10.00
G_M10688_IG13:
mov qword ptr [rax+0x18], rdi
- mov rcx, qword ptr [rbp-0x48]
- mov rdx, gword ptr [rbp-0x60]
+ mov rcx, qword ptr [rbp-0x88]
+ mov rdx, gword ptr [rbp-0xA0]
cmp ecx, dword ptr [rdx+0x08]
jae G_M10688_IG87
- mov gword ptr [rbp-0x60], rdx
- mov qword ptr [rbp-0x48], rcx
+ mov gword ptr [rbp-0xA0], rdx
+ mov qword ptr [rbp-0x88], rcx
lea rdi, bword ptr [rdx+8*rcx+0x10]
mov rsi, rax
call CORINFO_HELP_ASSIGN_REF
- mov rsi, gword ptr [rbp-0x80]
+ mov rsi, gword ptr [rbp-0xC0]
mov rdi, 0xD1FFAB1E ; System.DirectoryServices.Protocols.DirectoryAttributeModification
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_ISINSTANCEOFCLASS
call [rax]CORINFO_HELP_ISINSTANCEOFCLASS
test rax, rax
je SHORT G_M10688_IG15
- ;; size=73 bbWeight=4 PerfScore 68.00
+ ;; size=88 bbWeight=4 PerfScore 68.00
G_M10688_IG14:
- mov rax, gword ptr [rbp-0x60]
- mov rcx, qword ptr [rbp-0x48]
+ mov rax, gword ptr [rbp-0xA0]
+ mov rcx, qword ptr [rbp-0x88]
mov rdx, gword ptr [rax+8*rcx+0x10]
mov rdi, rdx
- mov rsi, gword ptr [rbp-0x80]
+ mov rsi, gword ptr [rbp-0xC0]
mov r8, rsi
mov r8d, dword ptr [r8+0x1C]
mov dword ptr [rdi+0x08], r8d
- mov qword ptr [rbp-0x48], rcx
- mov gword ptr [rbp-0x60], rax
+ mov qword ptr [rbp-0x88], rcx
+ mov gword ptr [rbp-0xA0], rax
jmp SHORT G_M10688_IG16
- ;; size=41 bbWeight=2 PerfScore 25.00
+ ;; size=56 bbWeight=2 PerfScore 25.00
G_M10688_IG15:
- mov rax, gword ptr [rbp-0x60]
- mov rcx, qword ptr [rbp-0x48]
+ mov rax, gword ptr [rbp-0xA0]
+ mov rcx, qword ptr [rbp-0x88]
mov rdx, gword ptr [rax+8*rcx+0x10]
xor edi, edi
mov dword ptr [rdx+0x08], edi
- mov rsi, gword ptr [rbp-0x80]
- ;; size=22 bbWeight=2 PerfScore 12.50
+ mov rsi, gword ptr [rbp-0xC0]
+ ;; size=31 bbWeight=2 PerfScore 12.50
G_M10688_IG16:
- mov gword ptr [rbp-0xA0], rdx
+ mov gword ptr [rbp-0xE0], rdx
mov rdi, rdx
or dword ptr [rdi+0x08], 128
- mov gword ptr [rbp-0x80], rsi
+ mov gword ptr [rbp-0xC0], rsi
mov rdi, gword ptr [rsi+0x10]
mov r8, 0xD1FFAB1E ; code for System.Runtime.InteropServices.Marshal:StringToHGlobalAnsi(System.String):long
call [r8]System.Runtime.InteropServices.Marshal:StringToHGlobalAnsi(System.String):long
- mov rdi, gword ptr [rbp-0xA0]
+ mov rdi, gword ptr [rbp-0xE0]
mov qword ptr [rdi+0x10], rax
xor eax, eax
mov dword ptr [rbp-0x2C], eax
xor rcx, rcx
- mov gword ptr [rbp-0x88], rcx
- mov rdx, gword ptr [rbp-0x80]
+ mov gword ptr [rbp-0xC8], rcx
+ mov rdx, gword ptr [rbp-0xC0]
mov rdi, gword ptr [rdx+0x08]
mov rsi, qword ptr [rdi]
mov rsi, qword ptr [rsi+0x40]
call [rsi+0x30]System.Collections.ArrayList:get_Count():int:this
test eax, eax
jle G_M10688_IG25
- ;; size=89 bbWeight=4 PerfScore 105.00
+ ;; size=95 bbWeight=4 PerfScore 105.00
G_M10688_IG17:
- mov rax, gword ptr [rbp-0x80]
+ mov rax, gword ptr [rbp-0xC0]
mov rdi, gword ptr [rax+0x08]
mov rcx, qword ptr [rdi]
mov rcx, qword ptr [rcx+0x40]
call [rcx+0x30]System.Collections.ArrayList:get_Count():int:this
mov dword ptr [rbp-0x2C], eax
movsxd rsi, eax
mov rdi, 0xD1FFAB1E ; System.DirectoryServices.Protocols.BerVal[]
call CORINFO_HELP_NEWARR_1_OBJ
xor ecx, ecx
mov edx, dword ptr [rbp-0x2C]
test edx, edx
jle G_M10688_IG24
- ;; size=52 bbWeight=2 PerfScore 30.00
+ ;; size=55 bbWeight=2 PerfScore 30.00
G_M10688_IG18:
- mov gword ptr [rbp-0x88], rax
+ mov gword ptr [rbp-0xC8], rax
mov dword ptr [rbp-0x2C], edx
cmp dword ptr [rax+0x08], edx
jl G_M10688_IG43
;; size=19 bbWeight=1 PerfScore 6.00
G_M10688_IG19:
- mov rdi, gword ptr [rbp-0x80]
+ mov rdi, gword ptr [rbp-0xC0]
mov dword ptr [rbp-0x38], ecx
mov esi, ecx
mov r8, 0xD1FFAB1E ; code for System.DirectoryServices.Protocols.DirectoryAttribute:get_Item(int):System.Object:this
call [r8]System.DirectoryServices.Protocols.DirectoryAttribute:get_Item(int):System.Object:this
test rax, rax
- je SHORT G_M10688_IG26
- ;; size=27 bbWeight=15.84 PerfScore 106.92
+ je G_M10688_IG26
+ ;; size=34 bbWeight=15.84 PerfScore 106.92
G_M10688_IG20:
mov rdi, 0xD1FFAB1E ; System.String
cmp qword ptr [rax], rdi
jne SHORT G_M10688_IG26
;; size=15 bbWeight=3.96 PerfScore 16.83
G_M10688_IG21:
- mov rdi, gword ptr [rbp-0x80]
+ mov rdi, gword ptr [rbp-0xC0]
mov esi, dword ptr [rbp-0x38]
mov rax, 0xD1FFAB1E ; code for System.DirectoryServices.Protocols.DirectoryAttribute:get_Item(int):System.Object:this
call [rax]System.DirectoryServices.Protocols.DirectoryAttribute:get_Item(int):System.Object:this
mov rsi, rax
test rsi, rsi
je SHORT G_M10688_IG23
- ;; size=27 bbWeight=7.92 PerfScore 53.46
+ ;; size=30 bbWeight=7.92 PerfScore 53.46
G_M10688_IG22:
mov rdi, 0xD1FFAB1E ; System.String
cmp qword ptr [rsi], rdi
jne G_M10688_IG88
;; size=19 bbWeight=3.96 PerfScore 16.83
G_M10688_IG23:
mov rdi, r12
mov rax, 0xD1FFAB1E ; code for System.Text.Encoding:GetBytes(System.String):ubyte[]:this
call [rax]System.Text.Encoding:GetBytes(System.String):ubyte[]:this
mov rsi, rax
- mov gword ptr [rbp-0x90], rsi
+ mov gword ptr [rbp-0xD0], rsi
jmp G_M10688_IG34
;; size=30 bbWeight=7.92 PerfScore 53.46
G_M10688_IG24:
- mov gword ptr [rbp-0x88], rax
+ mov gword ptr [rbp-0xC8], rax
mov dword ptr [rbp-0x2C], edx
- mov gword ptr [rbp-0x70], r13
+ mov gword ptr [rbp-0xB0], r13
jmp G_M10688_IG65
- ;; size=19 bbWeight=1 PerfScore 5.00
+ ;; size=22 bbWeight=1 PerfScore 5.00
G_M10688_IG25:
- mov gword ptr [rbp-0x70], r13
+ mov gword ptr [rbp-0xB0], r13
jmp G_M10688_IG65
- ;; size=9 bbWeight=2 PerfScore 6.00
+ ;; size=12 bbWeight=2 PerfScore 6.00
G_M10688_IG26:
- mov rdi, gword ptr [rbp-0x80]
+ mov rdi, gword ptr [rbp-0xC0]
mov esi, dword ptr [rbp-0x38]
mov rax, 0xD1FFAB1E ; code for System.DirectoryServices.Protocols.DirectoryAttribute:get_Item(int):System.Object:this
call [rax]System.DirectoryServices.Protocols.DirectoryAttribute:get_Item(int):System.Object:this
mov rsi, rax
mov rdi, 0xD1FFAB1E ; System.Uri
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_ISINSTANCEOFCLASS
call [rax]CORINFO_HELP_ISINSTANCEOFCLASS
test rax, rax
je SHORT G_M10688_IG30
- mov rdi, gword ptr [rbp-0x80]
+ mov rdi, gword ptr [rbp-0xC0]
mov esi, dword ptr [rbp-0x38]
mov rax, 0xD1FFAB1E ; code for System.DirectoryServices.Protocols.DirectoryAttribute:get_Item(int):System.Object:this
call [rax]System.DirectoryServices.Protocols.DirectoryAttribute:get_Item(int):System.Object:this
mov rdi, rax
test rdi, rdi
je SHORT G_M10688_IG29
- ;; size=76 bbWeight=7.92 PerfScore 134.64
+ ;; size=82 bbWeight=7.92 PerfScore 134.64
G_M10688_IG27:
mov rcx, 0xD1FFAB1E ; System.Uri
cmp qword ptr [rdi], rcx
je SHORT G_M10688_IG29
;; size=15 bbWeight=3.96 PerfScore 16.83
G_M10688_IG28:
mov rsi, rax
mov rdi, rcx
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_CHKCASTCLASS_SPECIAL
call [rax]CORINFO_HELP_CHKCASTCLASS_SPECIAL
mov rdi, rax
;; size=21 bbWeight=1.98 PerfScore 7.92
G_M10688_IG29:
mov rax, qword ptr [rdi]
mov rax, qword ptr [rax+0x40]
call [rax+0x08]System.Object:ToString():System.String:this
mov rsi, rax
mov rdi, r12
mov rax, 0xD1FFAB1E ; code for System.Text.Encoding:GetBytes(System.String):ubyte[]:this
call [rax]System.Text.Encoding:GetBytes(System.String):ubyte[]:this
mov rsi, rax
- mov gword ptr [rbp-0x90], rsi
- mov r12, gword ptr [rbp-0x68]
+ mov gword ptr [rbp-0xD0], rsi
+ mov r12, gword ptr [rbp-0xA8]
jmp SHORT G_M10688_IG34
- ;; size=44 bbWeight=7.92 PerfScore 118.80
+ ;; size=47 bbWeight=7.92 PerfScore 118.80
G_M10688_IG30:
- mov rdi, gword ptr [rbp-0x80]
+ mov rdi, gword ptr [rbp-0xC0]
mov esi, dword ptr [rbp-0x38]
mov rax, 0xD1FFAB1E ; code for System.DirectoryServices.Protocols.DirectoryAttribute:get_Item(int):System.Object:this
call [rax]System.DirectoryServices.Protocols.DirectoryAttribute:get_Item(int):System.Object:this
mov rsi, rax
test rsi, rsi
je SHORT G_M10688_IG33
- ;; size=27 bbWeight=7.92 PerfScore 53.46
+ ;; size=30 bbWeight=7.92 PerfScore 53.46
G_M10688_IG31:
mov rdi, 0xD1FFAB1E ; ubyte[]
cmp qword ptr [rsi], rdi
je SHORT G_M10688_IG33
;; size=15 bbWeight=3.96 PerfScore 16.83
G_M10688_IG32:
mov rsi, rax
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_CHKCASTARRAY
call [rax]CORINFO_HELP_CHKCASTARRAY
mov rsi, rax
;; size=18 bbWeight=1.98 PerfScore 7.42
G_M10688_IG33:
- mov gword ptr [rbp-0x90], rsi
+ mov gword ptr [rbp-0xD0], rsi
;; size=7 bbWeight=7.92 PerfScore 7.92
G_M10688_IG34:
mov rdi, 0xD1FFAB1E ; System.DirectoryServices.Protocols.BerVal
call CORINFO_HELP_NEWSFAST
xor edi, edi
mov qword ptr [rax+0x10], rdi
- mov rsi, gword ptr [rbp-0x90]
+ mov rsi, gword ptr [rbp-0xD0]
mov ecx, dword ptr [rsi+0x08]
- mov dword ptr [rbp-0x3C], ecx
- mov gword ptr [rbp-0x98], rax
+ mov dword ptr [rbp-0x7C], ecx
+ mov gword ptr [rbp-0xD8], rax
mov dword ptr [rax+0x08], ecx
mov edi, ecx
test rdi, rdi
jne SHORT G_M10688_IG36
;; size=51 bbWeight=15.84 PerfScore 158.40
G_M10688_IG35:
mov edi, 1
- mov gword ptr [rbp-0x70], r13
+ mov gword ptr [rbp-0xB0], r13
jmp SHORT G_M10688_IG37
- ;; size=11 bbWeight=7.92 PerfScore 25.74
+ ;; size=14 bbWeight=7.92 PerfScore 25.74
G_M10688_IG36:
- mov gword ptr [rbp-0x70], r13
- ;; size=4 bbWeight=7.92 PerfScore 7.92
+ mov gword ptr [rbp-0xB0], r13
+ ;; size=7 bbWeight=7.92 PerfScore 7.92
G_M10688_IG37:
mov rdx, 0xD1FFAB1E ; function address
- mov qword ptr [rbp-0xD0], rdx
+ mov qword ptr [rbp-0x60], rdx
lea rdx, G_M10688_IG40
- mov qword ptr [rbp-0xB8], rdx
- lea rdx, bword ptr [rbp-0xE0]
+ mov qword ptr [rbp-0x50], rdx
+ lea rdx, [rbp-0x70]
mov qword ptr [r14+0x08], rdx
mov byte ptr [r14+0x04], 0
- ;; size=47 bbWeight=15.84 PerfScore 91.08
+ ;; size=38 bbWeight=15.84 PerfScore 91.08
G_M10688_IG38:
mov rax, 0xD1FFAB1E ; code for Interop+Sys:Malloc(ulong):ulong
;; size=10 bbWeight=15.84 PerfScore 3.96
G_M10688_IG39:
call [rax]Interop+Sys:Malloc(ulong):ulong
;; size=2 bbWeight=15.84 PerfScore 47.52
G_M10688_IG40:
mov byte ptr [r14+0x04], 1
mov rcx, 0xD1FFAB1E ; function address
cmp dword ptr [rcx], 0
je SHORT G_M10688_IG41
mov rdi, 0xD1FFAB1E
call [rdi]CORINFO_HELP_STOP_FOR_GC
;; size=32 bbWeight=15.84 PerfScore 134.64
G_M10688_IG41:
- mov rdi, bword ptr [rbp-0xD8]
+ mov rdi, qword ptr [rbp-0x68]
mov qword ptr [r14+0x08], rdi
test rax, rax
je G_M10688_IG92
- mov rbx, gword ptr [rbp-0x98]
+ mov rbx, gword ptr [rbp-0xD8]
mov qword ptr [rbx+0x10], rax
mov r15d, dword ptr [rbp-0x38]
mov edi, r15d
- mov r13, gword ptr [rbp-0x88]
+ mov r13, gword ptr [rbp-0xC8]
lea rdi, bword ptr [r13+8*rdi+0x10]
mov rsi, rbx
call CORINFO_HELP_ASSIGN_REF
mov rdi, 0xD1FFAB1E ; System.IntPtr
call CORINFO_HELP_NEWSFAST
mov esi, r15d
mov rsi, gword ptr [r13+8*rsi+0x10]
mov rsi, qword ptr [rsi+0x10]
mov qword ptr [rax+0x08], rsi
mov rsi, rax
- mov rdi, gword ptr [rbp-0x58]
- mov gword ptr [rbp-0x58], rdi
+ mov rdi, gword ptr [rbp-0x98]
+ mov gword ptr [rbp-0x98], rdi
mov rax, qword ptr [rdi]
mov rax, qword ptr [rax+0x48]
call [rax+0x28]System.Collections.ArrayList:Add(System.Object):int:this
mov edi, r15d
- mov gword ptr [rbp-0x88], r13
+ mov gword ptr [rbp-0xC8], r13
mov rdi, gword ptr [r13+8*rdi+0x10]
mov rbx, qword ptr [rdi+0x10]
mov r12d, dword ptr [rdi+0x08]
test rbx, rbx
je G_M10688_IG90
- cmp dword ptr [rbp-0x3C], r12d
+ cmp dword ptr [rbp-0x7C], r12d
jb G_M10688_IG91
- mov rsi, gword ptr [rbp-0x90]
+ mov rsi, gword ptr [rbp-0xD0]
add rsi, 16
test r12d, r12d
jl G_M10688_IG91
mov rdi, rbx
mov edx, r12d
mov rax, 0xD1FFAB1E ; code for System.SpanHelpers:Memmove(byref,byref,ulong)
call [rax]System.SpanHelpers:Memmove(byref,byref,ulong)
inc r15d
cmp r15d, dword ptr [rbp-0x2C]
mov ecx, r15d
jge G_M10688_IG65
- ;; size=206 bbWeight=15.84 PerfScore 756.36
+ ;; size=209 bbWeight=15.84 PerfScore 756.36
G_M10688_IG42:
- mov r12, gword ptr [rbp-0x68]
- mov r13, gword ptr [rbp-0x70]
+ mov r12, gword ptr [rbp-0xA8]
+ mov r13, gword ptr [rbp-0xB0]
jmp G_M10688_IG19
- ;; size=13 bbWeight=7.92 PerfScore 31.68
+ ;; size=19 bbWeight=7.92 PerfScore 31.68
G_M10688_IG43:
- mov rdi, gword ptr [rbp-0x80]
+ mov rdi, gword ptr [rbp-0xC0]
mov dword ptr [rbp-0x38], ecx
mov esi, ecx
mov r8, 0xD1FFAB1E ; code for System.DirectoryServices.Protocols.DirectoryAttribute:get_Item(int):System.Object:this
call [r8]System.DirectoryServices.Protocols.DirectoryAttribute:get_Item(int):System.Object:this
test rax, rax
je SHORT G_M10688_IG48
- ;; size=27 bbWeight=0.16 PerfScore 1.08
+ ;; size=30 bbWeight=0.16 PerfScore 1.08
G_M10688_IG44:
mov rdi, 0xD1FFAB1E ; System.String
cmp qword ptr [rax], rdi
jne SHORT G_M10688_IG48
;; size=15 bbWeight=0.04 PerfScore 0.17
G_M10688_IG45:
- mov rdi, gword ptr [rbp-0x80]
+ mov rdi, gword ptr [rbp-0xC0]
mov esi, dword ptr [rbp-0x38]
mov rax, 0xD1FFAB1E ; code for System.DirectoryServices.Protocols.DirectoryAttribute:get_Item(int):System.Object:this
call [rax]System.DirectoryServices.Protocols.DirectoryAttribute:get_Item(int):System.Object:this
mov rsi, rax
test rsi, rsi
je SHORT G_M10688_IG47
- ;; size=27 bbWeight=0.08 PerfScore 0.54
+ ;; size=30 bbWeight=0.08 PerfScore 0.54
G_M10688_IG46:
mov rdi, 0xD1FFAB1E ; System.String
cmp qword ptr [rsi], rdi
jne G_M10688_IG89
;; size=19 bbWeight=0.04 PerfScore 0.17
G_M10688_IG47:
mov rdi, r12
mov rax, 0xD1FFAB1E ; code for System.Text.Encoding:GetBytes(System.String):ubyte[]:this
call [rax]System.Text.Encoding:GetBytes(System.String):ubyte[]:this
- mov gword ptr [rbp-0x90], rax
+ mov gword ptr [rbp-0xD0], rax
jmp G_M10688_IG56
;; size=27 bbWeight=0.08 PerfScore 0.52
G_M10688_IG48:
- mov rdi, gword ptr [rbp-0x80]
+ mov rdi, gword ptr [rbp-0xC0]
mov esi, dword ptr [rbp-0x38]
mov rax, 0xD1FFAB1E ; code for System.DirectoryServices.Protocols.DirectoryAttribute:get_Item(int):System.Object:this
call [rax]System.DirectoryServices.Protocols.DirectoryAttribute:get_Item(int):System.Object:this
mov rsi, rax
mov rdi, 0xD1FFAB1E ; System.Uri
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_ISINSTANCEOFCLASS
call [rax]CORINFO_HELP_ISINSTANCEOFCLASS
test rax, rax
je SHORT G_M10688_IG52
- mov rdi, gword ptr [rbp-0x80]
+ mov rdi, gword ptr [rbp-0xC0]
mov esi, dword ptr [rbp-0x38]
mov rax, 0xD1FFAB1E ; code for System.DirectoryServices.Protocols.DirectoryAttribute:get_Item(int):System.Object:this
call [rax]System.DirectoryServices.Protocols.DirectoryAttribute:get_Item(int):System.Object:this
mov rdi, rax
test rdi, rdi
je SHORT G_M10688_IG51
- ;; size=76 bbWeight=0.08 PerfScore 1.36
+ ;; size=82 bbWeight=0.08 PerfScore 1.36
G_M10688_IG49:
mov rcx, 0xD1FFAB1E ; System.Uri
cmp qword ptr [rdi], rcx
je SHORT G_M10688_IG51
;; size=15 bbWeight=0.04 PerfScore 0.17
G_M10688_IG50:
mov rsi, rax
mov rdi, rcx
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_CHKCASTCLASS_SPECIAL
call [rax]CORINFO_HELP_CHKCASTCLASS_SPECIAL
mov rdi, rax
;; size=21 bbWeight=0.02 PerfScore 0.08
G_M10688_IG51:
mov rax, qword ptr [rdi]
mov rax, qword ptr [rax+0x40]
call [rax+0x08]System.Object:ToString():System.String:this
mov rsi, rax
mov rdi, r12
mov rax, 0xD1FFAB1E ; code for System.Text.Encoding:GetBytes(System.String):ubyte[]:this
call [rax]System.Text.Encoding:GetBytes(System.String):ubyte[]:this
- mov gword ptr [rbp-0x90], rax
- mov r12, gword ptr [rbp-0x68]
+ mov gword ptr [rbp-0xD0], rax
+ mov r12, gword ptr [rbp-0xA8]
jmp SHORT G_M10688_IG56
- ;; size=41 bbWeight=0.08 PerfScore 1.18
+ ;; size=44 bbWeight=0.08 PerfScore 1.18
G_M10688_IG52:
- mov rdi, gword ptr [rbp-0x80]
+ mov rdi, gword ptr [rbp-0xC0]
mov esi, dword ptr [rbp-0x38]
mov rax, 0xD1FFAB1E ; code for System.DirectoryServices.Protocols.DirectoryAttribute:get_Item(int):System.Object:this
call [rax]System.DirectoryServices.Protocols.DirectoryAttribute:get_Item(int):System.Object:this
mov rcx, rax
test rcx, rcx
je SHORT G_M10688_IG55
- ;; size=27 bbWeight=0.08 PerfScore 0.54
+ ;; size=30 bbWeight=0.08 PerfScore 0.54
G_M10688_IG53:
mov rdi, 0xD1FFAB1E ; ubyte[]
cmp qword ptr [rcx], rdi
je SHORT G_M10688_IG55
;; size=15 bbWeight=0.04 PerfScore 0.17
G_M10688_IG54:
mov rsi, rax
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_CHKCASTARRAY
call [rax]CORINFO_HELP_CHKCASTARRAY
mov rcx, rax
;; size=18 bbWeight=0.02 PerfScore 0.08
G_M10688_IG55:
- mov gword ptr [rbp-0x90], rcx
+ mov gword ptr [rbp-0xD0], rcx
;; size=7 bbWeight=0.08 PerfScore 0.08
G_M10688_IG56:
mov rdi, 0xD1FFAB1E ; System.DirectoryServices.Protocols.BerVal
call CORINFO_HELP_NEWSFAST
xor edi, edi
mov qword ptr [rax+0x10], rdi
- mov rcx, gword ptr [rbp-0x90]
+ mov rcx, gword ptr [rbp-0xD0]
mov edi, dword ptr [rcx+0x08]
- mov gword ptr [rbp-0x98], rax
+ mov gword ptr [rbp-0xD8], rax
mov dword ptr [rax+0x08], edi
- mov gword ptr [rbp-0x90], rcx
+ mov gword ptr [rbp-0xD0], rcx
mov edi, dword ptr [rcx+0x08]
test rdi, rdi
jne SHORT G_M10688_IG58
;; size=56 bbWeight=0.16 PerfScore 1.88
G_M10688_IG57:
mov edi, 1
- mov gword ptr [rbp-0x70], r13
+ mov gword ptr [rbp-0xB0], r13
jmp SHORT G_M10688_IG59
- ;; size=11 bbWeight=0.08 PerfScore 0.26
+ ;; size=14 bbWeight=0.08 PerfScore 0.26
G_M10688_IG58:
- mov gword ptr [rbp-0x70], r13
- ;; size=4 bbWeight=0.08 PerfScore 0.08
+ mov gword ptr [rbp-0xB0], r13
+ ;; size=7 bbWeight=0.08 PerfScore 0.08
G_M10688_IG59:
mov rdx, 0xD1FFAB1E ; function address
- mov qword ptr [rbp-0xD0], rdx
+ mov qword ptr [rbp-0x60], rdx
lea rdx, G_M10688_IG62
- mov qword ptr [rbp-0xB8], rdx
- lea rdx, bword ptr [rbp-0xE0]
+ mov qword ptr [rbp-0x50], rdx
+ lea rdx, [rbp-0x70]
mov qword ptr [r14+0x08], rdx
mov byte ptr [r14+0x04], 0
- ;; size=47 bbWeight=0.16 PerfScore 0.92
+ ;; size=38 bbWeight=0.16 PerfScore 0.92
G_M10688_IG60:
mov rax, 0xD1FFAB1E ; code for Interop+Sys:Malloc(ulong):ulong
;; size=10 bbWeight=0.16 PerfScore 0.04
G_M10688_IG61:
call [rax]Interop+Sys:Malloc(ulong):ulong
;; size=2 bbWeight=0.16 PerfScore 0.48
G_M10688_IG62:
mov byte ptr [r14+0x04], 1
mov rcx, 0xD1FFAB1E ; function address
cmp dword ptr [rcx], 0
je SHORT G_M10688_IG63
mov rdi, 0xD1FFAB1E
call [rdi]CORINFO_HELP_STOP_FOR_GC
;; size=32 bbWeight=0.16 PerfScore 1.36
G_M10688_IG63:
- mov rdi, bword ptr [rbp-0xD8]
+ mov rdi, qword ptr [rbp-0x68]
mov qword ptr [r14+0x08], rdi
test rax, rax
je G_M10688_IG92
- mov rbx, gword ptr [rbp-0x98]
+ mov rbx, gword ptr [rbp-0xD8]
mov qword ptr [rbx+0x10], rax
mov r15d, dword ptr [rbp-0x38]
- mov r13, gword ptr [rbp-0x88]
+ mov r13, gword ptr [rbp-0xC8]
cmp r15d, dword ptr [r13+0x08]
jae G_M10688_IG87
mov edi, r15d
lea rdi, bword ptr [r13+8*rdi+0x10]
mov rsi, rbx
call CORINFO_HELP_ASSIGN_REF
mov rdi, 0xD1FFAB1E ; System.IntPtr
call CORINFO_HELP_NEWSFAST
mov esi, r15d
mov rsi, gword ptr [r13+8*rsi+0x10]
mov rsi, qword ptr [rsi+0x10]
mov qword ptr [rax+0x08], rsi
mov rsi, rax
- mov rdi, gword ptr [rbp-0x58]
- mov gword ptr [rbp-0x58], rdi
+ mov rdi, gword ptr [rbp-0x98]
+ mov gword ptr [rbp-0x98], rdi
mov rax, qword ptr [rdi]
mov rax, qword ptr [rax+0x48]
call [rax+0x28]System.Collections.ArrayList:Add(System.Object):int:this
mov edi, r15d
mov rdi, gword ptr [r13+8*rdi+0x10]
mov rbx, qword ptr [rdi+0x10]
mov r12d, dword ptr [rdi+0x08]
test rbx, rbx
je G_M10688_IG90
- mov rdi, gword ptr [rbp-0x90]
+ mov rdi, gword ptr [rbp-0xD0]
cmp dword ptr [rdi+0x08], r12d
jb G_M10688_IG91
lea rsi, bword ptr [rdi+0x10]
test r12d, r12d
jl G_M10688_IG91
mov rdi, rbx
mov edx, r12d
mov rax, 0xD1FFAB1E ; code for System.SpanHelpers:Memmove(byref,byref,ulong)
call [rax]System.SpanHelpers:Memmove(byref,byref,ulong)
inc r15d
mov r12d, dword ptr [rbp-0x2C]
cmp r15d, r12d
- mov gword ptr [rbp-0x88], r13
+ mov gword ptr [rbp-0xC8], r13
mov dword ptr [rbp-0x2C], r12d
mov ecx, r15d
- ;; size=217 bbWeight=0.16 PerfScore 8.36
+ ;; size=220 bbWeight=0.16 PerfScore 8.36
G_M10688_IG64:
jl G_M10688_IG70
;; size=6 bbWeight=0.16 PerfScore 0.16
G_M10688_IG65:
- mov rax, gword ptr [rbp-0x60]
- mov rbx, qword ptr [rbp-0x48]
+ mov rax, gword ptr [rbp-0xA0]
+ mov rbx, qword ptr [rbp-0x88]
mov r15, gword ptr [rax+8*rbx+0x10]
mov r12d, dword ptr [rbp-0x2C]
lea edi, [r12+0x01]
mov rcx, 0xD1FFAB1E ; code for System.DirectoryServices.Protocols.Utility:AllocHGlobalIntPtrArray(int):long
call [rcx]System.DirectoryServices.Protocols.Utility:AllocHGlobalIntPtrArray(int):long
mov qword ptr [r15+0x18], rax
- mov rax, gword ptr [rbp-0x60]
+ mov rax, gword ptr [rbp-0xA0]
mov rdi, gword ptr [rax+8*rbx+0x10]
mov r15, qword ptr [rdi+0x18]
mov rdi, 0xD1FFAB1E ; System.Runtime.InteropServices.Marshal:SizeOf[System.DirectoryServices.Protocols.BerVal]():int
mov rcx, 0xD1FFAB1E ; code for System.Runtime.InteropServices.Marshal:SizeOf[System.__Canon]():int
call [rcx]System.Runtime.InteropServices.Marshal:SizeOf[System.__Canon]():int
mov dword ptr [rbp-0x30], eax
xor ecx, ecx
mov dword ptr [rbp-0x34], ecx
test r12d, r12d
jle G_M10688_IG84
- ;; size=90 bbWeight=4 PerfScore 87.00
+ ;; size=99 bbWeight=4 PerfScore 87.00
G_M10688_IG66:
- mov r13, gword ptr [rbp-0x88]
+ mov r13, gword ptr [rbp-0xC8]
test r13, r13
je G_M10688_IG76
- mov gword ptr [rbp-0x88], r13
+ mov gword ptr [rbp-0xC8], r13
cmp dword ptr [r13+0x08], r12d
jl SHORT G_M10688_IG69
;; size=29 bbWeight=1 PerfScore 7.25
G_M10688_IG67:
movsxd rdi, eax
test rdi, rdi
jne SHORT G_M10688_IG71
;; size=8 bbWeight=15.84 PerfScore 23.76
G_M10688_IG68:
mov edi, 1
jmp SHORT G_M10688_IG71
;; size=7 bbWeight=7.92 PerfScore 17.82
G_M10688_IG69:
- mov r13, gword ptr [rbp-0x88]
+ mov r13, gword ptr [rbp-0xC8]
jmp G_M10688_IG76
;; size=12 bbWeight=0.50 PerfScore 1.50
G_M10688_IG70:
- mov r12, gword ptr [rbp-0x68]
- mov r13, gword ptr [rbp-0x70]
+ mov r12, gword ptr [rbp-0xA8]
+ mov r13, gword ptr [rbp-0xB0]
jmp G_M10688_IG43
- ;; size=13 bbWeight=0.08 PerfScore 0.32
+ ;; size=19 bbWeight=0.08 PerfScore 0.32
G_M10688_IG71:
mov rdx, 0xD1FFAB1E ; function address
- mov qword ptr [rbp-0xD0], rdx
+ mov qword ptr [rbp-0x60], rdx
lea rdx, G_M10688_IG74
- mov qword ptr [rbp-0xB8], rdx
- lea rdx, bword ptr [rbp-0xE0]
+ mov qword ptr [rbp-0x50], rdx
+ lea rdx, [rbp-0x70]
mov qword ptr [r14+0x08], rdx
mov byte ptr [r14+0x04], 0
- ;; size=47 bbWeight=15.84 PerfScore 91.08
+ ;; size=38 bbWeight=15.84 PerfScore 91.08
G_M10688_IG72:
mov rdx, 0xD1FFAB1E ; code for Interop+Sys:Malloc(ulong):ulong
;; size=10 bbWeight=15.84 PerfScore 3.96
G_M10688_IG73:
call [rdx]Interop+Sys:Malloc(ulong):ulong
;; size=2 bbWeight=15.84 PerfScore 47.52
G_M10688_IG74:
mov byte ptr [r14+0x04], 1
mov rcx, 0xD1FFAB1E ; function address
cmp dword ptr [rcx], 0
je SHORT G_M10688_IG75
mov rdi, 0xD1FFAB1E
call [rdi]CORINFO_HELP_STOP_FOR_GC
;; size=32 bbWeight=15.84 PerfScore 134.64
G_M10688_IG75:
- mov rdi, bword ptr [rbp-0xD8]
+ mov rdi, qword ptr [rbp-0x68]
mov qword ptr [r14+0x08], rdi
mov r13, rax
test r13, r13
je G_M10688_IG92
mov rdi, 0xD1FFAB1E ; System.IntPtr
call CORINFO_HELP_NEWSFAST
mov qword ptr [rax+0x08], r13
mov rsi, rax
- mov rdi, gword ptr [rbp-0x58]
- mov gword ptr [rbp-0x58], rdi
+ mov rdi, gword ptr [rbp-0x98]
+ mov gword ptr [rbp-0x98], rdi
mov rax, qword ptr [rdi]
mov rax, qword ptr [rax+0x48]
call [rax+0x28]System.Collections.ArrayList:Add(System.Object):int:this
mov edi, dword ptr [rbp-0x34]
- mov rcx, gword ptr [rbp-0x88]
+ mov rcx, gword ptr [rbp-0xC8]
mov rdi, gword ptr [rcx+8*rdi+0x10]
mov rsi, r13
xor edx, edx
mov r8, 0xD1FFAB1E ; code for System.Runtime.InteropServices.Marshal:StructureToPtr(System.Object,long,ubyte)
call [r8]System.Runtime.InteropServices.Marshal:StructureToPtr(System.Object,long,ubyte)
mov edi, dword ptr [rbp-0x34]
movsxd rax, edi
mov qword ptr [r15+8*rax], r13
inc edi
mov dword ptr [rbp-0x34], edi
cmp edi, r12d
mov eax, dword ptr [rbp-0x30]
jl G_M10688_IG67
jmp G_M10688_IG84
- ;; size=128 bbWeight=15.84 PerfScore 483.12
+ ;; size=131 bbWeight=15.84 PerfScore 483.12
G_M10688_IG76:
movsxd rdi, eax
test rdi, rdi
jne SHORT G_M10688_IG78
;; size=8 bbWeight=0.16 PerfScore 0.24
G_M10688_IG77:
mov edi, 1
- mov gword ptr [rbp-0x88], r13
+ mov gword ptr [rbp-0xC8], r13
jmp SHORT G_M10688_IG79
;; size=14 bbWeight=0.08 PerfScore 0.26
G_M10688_IG78:
- mov gword ptr [rbp-0x88], r13
+ mov gword ptr [rbp-0xC8], r13
;; size=7 bbWeight=0.08 PerfScore 0.08
G_M10688_IG79:
mov rdx, 0xD1FFAB1E ; function address
- mov qword ptr [rbp-0xD0], rdx
+ mov qword ptr [rbp-0x60], rdx
lea rdx, G_M10688_IG82
- mov qword ptr [rbp-0xB8], rdx
- lea rdx, bword ptr [rbp-0xE0]
+ mov qword ptr [rbp-0x50], rdx
+ lea rdx, [rbp-0x70]
mov qword ptr [r14+0x08], rdx
mov byte ptr [r14+0x04], 0
- ;; size=47 bbWeight=0.16 PerfScore 0.92
+ ;; size=38 bbWeight=0.16 PerfScore 0.92
G_M10688_IG80:
mov rdx, 0xD1FFAB1E ; code for Interop+Sys:Malloc(ulong):ulong
;; size=10 bbWeight=0.16 PerfScore 0.04
G_M10688_IG81:
call [rdx]Interop+Sys:Malloc(ulong):ulong
;; size=2 bbWeight=0.16 PerfScore 0.48
G_M10688_IG82:
mov byte ptr [r14+0x04], 1
mov rcx, 0xD1FFAB1E ; function address
cmp dword ptr [rcx], 0
je SHORT G_M10688_IG83
mov rdi, 0xD1FFAB1E
call [rdi]CORINFO_HELP_STOP_FOR_GC
;; size=32 bbWeight=0.16 PerfScore 1.36
G_M10688_IG83:
- mov rdi, bword ptr [rbp-0xD8]
+ mov rdi, qword ptr [rbp-0x68]
mov qword ptr [r14+0x08], rdi
mov r13, rax
test r13, r13
je G_M10688_IG92
mov rdi, 0xD1FFAB1E ; System.IntPtr
call CORINFO_HELP_NEWSFAST
mov qword ptr [rax+0x08], r13
mov rsi, rax
- mov rdi, gword ptr [rbp-0x58]
- mov gword ptr [rbp-0x58], rdi
+ mov rdi, gword ptr [rbp-0x98]
+ mov gword ptr [rbp-0x98], rdi
mov rax, qword ptr [rdi]
mov rax, qword ptr [rax+0x48]
call [rax+0x28]System.Collections.ArrayList:Add(System.Object):int:this
mov eax, dword ptr [rbp-0x34]
- mov rcx, gword ptr [rbp-0x88]
+ mov rcx, gword ptr [rbp-0xC8]
cmp eax, dword ptr [rcx+0x08]
jae G_M10688_IG87
mov dword ptr [rbp-0x34], eax
mov edi, eax
- mov gword ptr [rbp-0x88], rcx
+ mov gword ptr [rbp-0xC8], rcx
mov rdi, gword ptr [rcx+8*rdi+0x10]
mov rsi, r13
xor edx, edx
mov r8, 0xD1FFAB1E ; code for System.Runtime.InteropServices.Marshal:StructureToPtr(System.Object,long,ubyte)
call [r8]System.Runtime.InteropServices.Marshal:StructureToPtr(System.Object,long,ubyte)
mov edi, dword ptr [rbp-0x34]
movsxd rax, edi
mov qword ptr [r15+8*rax], r13
inc edi
cmp edi, r12d
mov dword ptr [rbp-0x34], edi
mov eax, dword ptr [rbp-0x30]
- mov r13, gword ptr [rbp-0x88]
+ mov r13, gword ptr [rbp-0xC8]
jl G_M10688_IG76
- ;; size=151 bbWeight=0.16 PerfScore 5.72
+ ;; size=154 bbWeight=0.16 PerfScore 5.72
G_M10688_IG84:
movsxd rdi, dword ptr [rbp-0x34]
xor eax, eax
mov qword ptr [r15+8*rdi], rax
inc ebx
- mov r15, gword ptr [rbp-0x50]
+ mov r15, gword ptr [rbp-0x90]
mov rdi, gword ptr [r15+0x08]
mov rax, qword ptr [rdi]
mov rax, qword ptr [rax+0x40]
call [rax+0x30]System.Collections.ArrayList:get_Count():int:this
cmp eax, ebx
- mov qword ptr [rbp-0x48], rbx
- mov gword ptr [rbp-0x50], r15
- mov r12, gword ptr [rbp-0x68]
- mov r13, gword ptr [rbp-0x70]
+ mov qword ptr [rbp-0x88], rbx
+ mov gword ptr [rbp-0x90], r15
+ mov r12, gword ptr [rbp-0xA8]
+ mov r13, gword ptr [rbp-0xB0]
jg G_M10688_IG09
- ;; size=54 bbWeight=4 PerfScore 79.00
+ ;; size=69 bbWeight=4 PerfScore 79.00
G_M10688_IG85:
- mov r13, gword ptr [rbp-0x60]
+ mov r13, gword ptr [rbp-0xA0]
mov rax, r13
- ;; size=7 bbWeight=1 PerfScore 1.25
+ ;; size=10 bbWeight=1 PerfScore 1.25
G_M10688_IG86:
- add rsp, 200
+ add rsp, 184
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=18 bbWeight=1 PerfScore 4.25
G_M10688_IG87:
call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
G_M10688_IG88:
mov rsi, rax
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_CHKCASTCLASS
call [rax]CORINFO_HELP_CHKCASTCLASS
int3
;; size=16 bbWeight=0 PerfScore 0.00
G_M10688_IG89:
mov rsi, rax
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_CHKCASTCLASS
call [rax]CORINFO_HELP_CHKCASTCLASS
int3
;; size=16 bbWeight=0 PerfScore 0.00
G_M10688_IG90:
mov edi, 0xD61
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov rdi, rax
mov rax, 0xD1FFAB1E ; code for System.ArgumentNullException:Throw(System.String)
call [rax]System.ArgumentNullException:Throw(System.String)
int3
;; size=36 bbWeight=0 PerfScore 0.00
G_M10688_IG91:
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException()
call [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException()
int3
;; size=13 bbWeight=0 PerfScore 0.00
G_M10688_IG92:
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowOutOfMemoryException()
call [rax]System.ThrowHelper:ThrowOutOfMemoryException()
int3
;; size=13 bbWeight=0 PerfScore 0.00
-; Total bytes of code 3001, prolog size 28, PerfScore 3242.06, instruction count 671, allocated bytes for code 3001 (MethodHash=62d9d63f) for method System.DirectoryServices.Protocols.LdapConnection:BuildAttributes(System.Collections.CollectionBase,System.Collections.ArrayList):System.DirectoryServices.Protocols.LdapMod[] (FullOpts)
+; Total bytes of code 3169, prolog size 28, PerfScore 3241.81, instruction count 670, allocated bytes for code 3169 (MethodHash=62d9d63f) for method System.DirectoryServices.Protocols.LdapConnection:BuildAttributes(System.Collections.CollectionBase,System.Collections.ArrayList):System.DirectoryServices.Protocols.LdapMod[] (FullOpts) Larger list of diffs: https://gist.github.com/MihuBot/9f88e37396c9297070cf3b92311363a4 |
Top method improvements-108 (-5.45 % of base) - (dynamicClass):IL_STUB_PInvoke(ulong,ulong):int ; Assembly listing for method (dynamicClass):IL_STUB_PInvoke(ulong,ulong):int (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX - Unix
; FullOpts code
; optimized code
; rbp based frame
; partially interruptible
; No PGO data
; Final local variable assignments
;
; V00 arg0 [V00,T01] ( 3, 3 ) long -> rbx single-def
; V01 arg1 [V01,T02] ( 3, 3 ) long -> r15 single-def
;* V02 loc0 [V02 ] ( 0, 0 ) int -> zero-ref
;* V03 loc1 [V03 ] ( 0, 0 ) long -> zero-ref
;* V04 loc2 [V04 ] ( 0, 0 ) long -> zero-ref
;* V05 loc3 [V05 ] ( 0, 0 ) int -> zero-ref
;* 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,T03] ( 4, 4 ) long -> [rbp-0x30] do-not-enreg[V] "stub argument"
+; V08 tmp1 [V08,T03] ( 4, 4 ) long -> [rbp-0x30] "stub argument"
; V09 tmp2 [V09,T04] ( 2, 4 ) long -> rax "impImportIndirectCall"
; V10 tmp3 [V10,T05] ( 2, 4 ) int -> rax "Single return block return value"
-; V11 FramesRoot [V11,T00] ( 6, 6 ) long -> r14 "Pinvoke FrameListRoot"
-; V12 PInvokeFrame [V12 ] ( 8, 8 ) struct (72) [rbp-0x78] do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
+; V11 FramesRoot [V11,T00] ( 6, 6 ) long -> r13 "Pinvoke FrameListRoot"
+; V12 PInvokeFrame [V12 ] ( 9, 9 ) struct (72) [rbp-0x78] do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
;
; Lcl frame size = 88
G_M38347_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
sub rsp, 88
lea rbp, [rsp+0x80]
- mov qword ptr [rbp-0x30], r10
mov rbx, rdi
mov r15, rsi
- ;; size=32 bbWeight=1 PerfScore 8.25
+ mov r14, r10
+ ;; size=31 bbWeight=1 PerfScore 7.50
G_M38347_IG02:
lea rdi, [rbp-0x70]
- mov rsi, qword ptr [rbp-0x30]
call CORINFO_HELP_INIT_PINVOKE_FRAME
- mov r14, rax
+ mov r13, rax
+ mov qword ptr [rbp-0x38], r14
mov rdi, rsp
- mov qword ptr [rbp-0x50], rdi
+ mov qword ptr [rbp-0x58], rdi
mov rdi, rbp
- mov qword ptr [rbp-0x40], rdi
- lea rdi, bword ptr [rbp-0x70]
- mov qword ptr [r14+0x08], rdi
- mov rdi, qword ptr [rbp-0x30]
- mov rax, qword ptr [rdi+0x18]
+ mov qword ptr [rbp-0x48], rdi
+ lea rdi, [rbp-0x70]
+ mov qword ptr [r13+0x08], rdi
+ mov rax, qword ptr [r14+0x18]
mov rdi, rbx
mov rsi, r15
- mov rcx, qword ptr [rbp-0x30]
- mov qword ptr [rbp-0x60], rcx
+ mov qword ptr [rbp-0x60], r14
lea rcx, G_M38347_IG04
- mov qword ptr [rbp-0x48], rcx
- mov byte ptr [r14+0x04], 0
- ;; size=76 bbWeight=1 PerfScore 15.25
+ mov qword ptr [rbp-0x50], rcx
+ mov byte ptr [r13+0x04], 0
+ ;; size=68 bbWeight=1 PerfScore 13.25
G_M38347_IG03:
call rax
;; size=2 bbWeight=1 PerfScore 3.00
G_M38347_IG04:
- mov byte ptr [r14+0x04], 1
+ mov byte ptr [r13+0x04], 1
mov rcx, 0xD1FFAB1E ; function address
cmp dword ptr [rcx], 0
je SHORT G_M38347_IG05
mov rdi, 0xD1FFAB1E
call [rdi]CORINFO_HELP_STOP_FOR_GC
;; size=32 bbWeight=1 PerfScore 8.50
G_M38347_IG05:
- mov rcx, bword ptr [rbp-0x68]
- mov qword ptr [r14+0x08], rcx
+ mov rcx, qword ptr [rbp-0x68]
+ mov qword ptr [r13+0x08], rcx
;; size=8 bbWeight=1 PerfScore 2.00
G_M38347_IG06:
add rsp, 88
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=1 PerfScore 4.25
-; Total bytes of code 165, prolog size 26, PerfScore 41.25, instruction count 47, allocated bytes for code 165 (MethodHash=7f986a34) for method (dynamicClass):IL_STUB_PInvoke(ulong,ulong):int (FullOpts)
+; Total bytes of code 156, prolog size 22, PerfScore 38.50, instruction count 45, allocated bytes for code 156 (MethodHash=7f986a34) for method (dynamicClass):IL_STUB_PInvoke(ulong,ulong):int (FullOpts) -48 (-1.99 % of base) - System.Runtime.InteropServices.Marshalling.ComVariant:Dispose():this ; Assembly listing for method System.Runtime.InteropServices.Marshalling.ComVariant:Dispose():this (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX - Unix
; FullOpts code
; optimized code
; rbp based frame
; fully interruptible
; No PGO data
; 0 inlinees with PGO data; 46 single block inlinees; 34 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T05] ( 22, 13 ) byref -> [rbp-0x48] this single-def
+; V00 this [V00,T05] ( 22, 13 ) byref -> [rbp-0x88] this single-def
; V01 loc0 [V01,T53] ( 2, 1 ) long -> rax
; V02 loc1 [V02,T38] ( 4, 2 ) long -> r14
; V03 loc2 [V03,T39] ( 4, 2 ) long -> r14
; V04 loc3 [V04,T19] ( 6, 3 ) int -> r14
;* V05 loc4 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Span`1[long]>
;* V06 loc5 [V06,T67] ( 0, 0 ) int -> zero-ref
; V07 loc6 [V07,T06] ( 3, 10 ) long -> rdi
;* V08 loc7 [V08 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Span`1[long]>
;* V09 loc8 [V09,T68] ( 0, 0 ) int -> zero-ref
; V10 loc9 [V10,T07] ( 3, 10 ) long -> rdi
;* V11 loc10 [V11 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Span`1[System.Runtime.InteropServices.Marshalling.ComVariant+ClipboardData]>
;* V12 loc11 [V12,T69] ( 0, 0 ) int -> zero-ref
;* V13 loc12 [V13 ] ( 0, 0 ) struct (16) zero-ref <System.Runtime.InteropServices.Marshalling.ComVariant+ClipboardData>
;* V14 loc13 [V14 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Span`1[System.Runtime.InteropServices.Marshalling.ComVariant]>
;* V15 loc14 [V15,T70] ( 0, 0 ) int -> zero-ref
; V16 loc15 [V16 ] ( 2, 8 ) struct (24) [rbp-0x40] do-not-enreg[XS] addr-exposed ld-addr-op <System.Runtime.InteropServices.Marshalling.ComVariant>
;# V17 OutArgs [V17 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V18 tmp1 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Single-def Box Helper" <System.Runtime.InteropServices.VarEnum>
;* V19 tmp2 [V19 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Single-def Box Helper" <System.Runtime.InteropServices.VarEnum>
;* V20 tmp3 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Single-def Box Helper" <System.Runtime.InteropServices.VarEnum>
;* V21 tmp4 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Single-def Box Helper" <System.Runtime.InteropServices.VarEnum>
; V22 tmp5 [V22,T76] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.PlatformNotSupportedException>
; V23 tmp6 [V23,T25] ( 3, 3 ) long -> rdi "Inlining Arg"
;* V24 tmp7 [V24 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
; V25 tmp8 [V25,T26] ( 3, 3 ) long -> rdi "Inlining Arg"
; V26 tmp9 [V26,T54] ( 2, 1 ) long -> rax "Inline stloc first use temp"
; V27 tmp10 [V27,T40] ( 3, 2 ) int -> rax "Inlining Arg"
; V28 tmp11 [V28,T18] ( 4, 4 ) long -> rdi "Inlining Arg"
; V29 tmp12 [V29,T55] ( 2, 1 ) long -> rax "Inline stloc first use temp"
; V30 tmp13 [V30,T27] ( 3, 3 ) long -> rdi "Inlining Arg"
; V31 tmp14 [V31,T28] ( 3, 3 ) long -> rdi "Inlining Arg"
; V32 tmp15 [V32,T29] ( 3, 3 ) long -> rdi "Inlining Arg"
; V33 tmp16 [V33,T56] ( 2, 1 ) long -> rax "Inline stloc first use temp"
; V34 tmp17 [V34,T30] ( 3, 3 ) long -> rdi "Inlining Arg"
; V35 tmp18 [V35,T57] ( 2, 1 ) long -> rax "Inline stloc first use temp"
; V36 tmp19 [V36,T31] ( 3, 3 ) long -> rdi "Inlining Arg"
;* V37 tmp20 [V37,T62] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg"
;* V38 tmp21 [V38,T71] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
; V39 tmp22 [V39,T21] ( 3, 3 ) byref -> rdi single-def "Inlining Arg"
;* V40 tmp23 [V40 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[long]>
; V41 tmp24 [V41,T32] ( 3, 3 ) int -> r14 "Inlining Arg"
; V42 tmp25 [V42,T41] ( 2, 2 ) long -> r13 "Inlining Arg"
;* V43 tmp26 [V43 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
;* V44 tmp27 [V44,T63] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg"
;* V45 tmp28 [V45,T72] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
; V46 tmp29 [V46,T22] ( 3, 3 ) byref -> rdi single-def "Inlining Arg"
;* V47 tmp30 [V47 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[long]>
; V48 tmp31 [V48,T33] ( 3, 3 ) int -> r13 "Inlining Arg"
; V49 tmp32 [V49,T42] ( 2, 2 ) long -> r14 "Inlining Arg"
;* V50 tmp33 [V50,T64] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg"
;* V51 tmp34 [V51,T73] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
; V52 tmp35 [V52,T23] ( 3, 3 ) byref -> rdi single-def "Inlining Arg"
;* V53 tmp36 [V53 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[System.Runtime.InteropServices.Marshalling.ComVariant+ClipboardData]>
; V54 tmp37 [V54,T34] ( 3, 3 ) int -> r13 "Inlining Arg"
; V55 tmp38 [V55,T43] ( 2, 2 ) long -> r14 "Inlining Arg"
;* V56 tmp39 [V56 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V57 tmp40 [V57 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V58 tmp41 [V58 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V59 tmp42 [V59,T65] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg"
;* V60 tmp43 [V60,T74] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
; V61 tmp44 [V61,T24] ( 3, 3 ) byref -> rdi single-def "Inlining Arg"
;* V62 tmp45 [V62 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[System.Runtime.InteropServices.Marshalling.ComVariant]>
; V63 tmp46 [V63,T35] ( 3, 3 ) int -> r13 "Inlining Arg"
; V64 tmp47 [V64,T44] ( 2, 2 ) long -> r14 "Inlining Arg"
;* V65 tmp48 [V65,T66] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg"
;* V66 tmp49 [V66,T75] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
; V67 tmp50 [V67,T36] ( 3, 3 ) long -> rdi "Inlining Arg"
; V68 FramesRoot [V68,T00] ( 62, 50 ) long -> r15 "Pinvoke FrameListRoot"
-; V69 PInvokeFrame [V69 ] ( 59, 49.50) struct (72) [rbp-0xA8] do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
-; V70 tmp53 [V70,T14] ( 2, 4.50) byref -> [rbp-0x50] spill-single-def "field V05._reference (fldOffset=0x0)" P-INDEP
+; V69 PInvokeFrame [V69 ] ( 59, 49.50) struct (64) [rbp-0x80] do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
+; V70 tmp53 [V70,T14] ( 2, 4.50) byref -> [rbp-0x90] spill-single-def "field V05._reference (fldOffset=0x0)" P-INDEP
; V71 tmp54 [V71,T10] ( 3, 5 ) int -> r14 "field V05._length (fldOffset=0x8)" P-INDEP
-; V72 tmp55 [V72,T15] ( 2, 4.50) byref -> [rbp-0x58] spill-single-def "field V08._reference (fldOffset=0x0)" P-INDEP
+; V72 tmp55 [V72,T15] ( 2, 4.50) byref -> [rbp-0x98] spill-single-def "field V08._reference (fldOffset=0x0)" P-INDEP
; V73 tmp56 [V73,T11] ( 3, 5 ) int -> r13 "field V08._length (fldOffset=0x8)" P-INDEP
-; V74 tmp57 [V74,T16] ( 2, 4.50) byref -> [rbp-0x60] spill-single-def "field V11._reference (fldOffset=0x0)" P-INDEP
+; V74 tmp57 [V74,T16] ( 2, 4.50) byref -> [rbp-0xA0] spill-single-def "field V11._reference (fldOffset=0x0)" P-INDEP
; V75 tmp58 [V75,T12] ( 3, 5 ) int -> r13 "field V11._length (fldOffset=0x8)" P-INDEP
;* V76 tmp59 [V76 ] ( 0, 0 ) int -> zero-ref "field V13._size (fldOffset=0x0)" P-INDEP
;* V77 tmp60 [V77 ] ( 0, 0 ) int -> zero-ref "field V13._format (fldOffset=0x4)" P-INDEP
; V78 tmp61 [V78,T08] ( 3, 10 ) long -> rdi "field V13._data (fldOffset=0x8)" P-INDEP
; V79 tmp62 [V79,T17] ( 2, 4.50) byref -> r14 single-def "field V14._reference (fldOffset=0x0)" P-INDEP
; V80 tmp63 [V80,T13] ( 3, 5 ) int -> r13 "field V14._length (fldOffset=0x8)" P-INDEP
; V81 tmp64 [V81,T49] ( 2, 1 ) byref -> r13 single-def "field V40._reference (fldOffset=0x0)" P-INDEP
; V82 tmp65 [V82,T58] ( 2, 1 ) int -> r14 "field V40._length (fldOffset=0x8)" P-INDEP
; V83 tmp66 [V83,T50] ( 2, 1 ) byref -> r14 single-def "field V47._reference (fldOffset=0x0)" P-INDEP
; V84 tmp67 [V84,T59] ( 2, 1 ) int -> r13 "field V47._length (fldOffset=0x8)" P-INDEP
; V85 tmp68 [V85,T51] ( 2, 1 ) byref -> r14 single-def "field V53._reference (fldOffset=0x0)" P-INDEP
; V86 tmp69 [V86,T60] ( 2, 1 ) int -> r13 "field V53._length (fldOffset=0x8)" P-INDEP
; V87 tmp70 [V87,T52] ( 2, 1 ) byref -> r14 single-def "field V62._reference (fldOffset=0x0)" P-INDEP
; V88 tmp71 [V88,T61] ( 2, 1 ) int -> r13 "field V62._length (fldOffset=0x8)" P-INDEP
; V89 tmp72 [V89,T45] ( 2, 2 ) int -> rdi "Enum:HasFlag this temp"
; V90 tmp73 [V90,T46] ( 2, 2 ) int -> rdi "Enum:HasFlag this temp"
;* V91 tmp74 [V91 ] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
;* V92 tmp75 [V92 ] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
;* V93 tmp76 [V93 ] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
;* V94 tmp77 [V94 ] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
;* V95 tmp78 [V95 ] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
; V96 tmp79 [V96,T77] ( 2, 0 ) ref -> rsi single-def "argument with side effect"
; V97 cse0 [V97,T09] ( 14, 8 ) int -> r14 "CSE #01: moderate"
; V98 cse1 [V98,T20] ( 6, 3 ) long -> rdi multi-def "CSE #03: conservative"
; V99 cse2 [V99,T48] ( 3, 1.50) long -> rdi "CSE #06: conservative"
; V100 rat0 [V100,T01] ( 5, 16.50) long -> r12 "Widened IV V09"
; V101 rat1 [V101,T02] ( 5, 16.50) long -> r12 "Widened IV V12"
; V102 rat2 [V102,T03] ( 5, 16.50) long -> r12 "Widened IV V06"
; V103 rat3 [V103,T04] ( 5, 16.50) long -> r12 "Widened IV V15"
; V104 rat4 [V104,T37] ( 3, 3.00) int -> r13 "ReplaceWithLclVar is creating a new local variable"
; V105 rat5 [V105,T47] ( 2, 2 ) int -> rdi "ReplaceWithLclVar is creating a new local variable"
;
-; Lcl frame size = 136
+; Lcl frame size = 120
G_M54580_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
- sub rsp, 136
+ sub rsp, 120
vzeroupper
- lea rbp, [rsp+0xB0]
+ lea rbp, [rsp+0xA0]
mov rbx, rdi
- ;; size=31 bbWeight=1 PerfScore 8.00
+ ;; size=28 bbWeight=1 PerfScore 8.00
G_M54580_IG02:
- lea rdi, [rbp-0xA0]
- xor esi, esi
+ lea rdi, [rbp-0x78]
call CORINFO_HELP_INIT_PINVOKE_FRAME
mov r15, rax
mov rdi, rsp
- mov qword ptr [rbp-0x80], rdi
+ mov qword ptr [rbp-0x60], rdi
mov rdi, rbp
- mov qword ptr [rbp-0x70], rdi
+ mov qword ptr [rbp-0x50], rdi
movzx r14, word ptr [rbx]
cmp r14d, 8
- jne G_M54580_IG08
- ;; size=45 bbWeight=1 PerfScore 7.75
+ jne SHORT G_M54580_IG08
+ ;; size=36 bbWeight=1 PerfScore 7.50
G_M54580_IG03:
- mov bword ptr [rbp-0x48], rbx
+ mov bword ptr [rbp-0x88], rbx
mov rdi, qword ptr [rbx+0x08]
test rdi, rdi
je G_M54580_IG96
add rdi, -8
mov rax, 0xD1FFAB1E ; function address
- mov qword ptr [rbp-0x90], rax
+ mov qword ptr [rbp-0x68], rax
lea rax, G_M54580_IG06
- mov qword ptr [rbp-0x78], rax
- lea rax, bword ptr [rbp-0xA0]
+ mov qword ptr [rbp-0x58], rax
+ lea rax, [rbp-0x78]
mov qword ptr [r15+0x08], rax
mov byte ptr [r15+0x04], 0
- ;; size=65 bbWeight=0.50 PerfScore 5.12
+ ;; size=62 bbWeight=0.50 PerfScore 5.12
G_M54580_IG04:
mov rax, 0xD1FFAB1E ; function address
;; size=10 bbWeight=0.50 PerfScore 0.12
G_M54580_IG05:
call rax ; Interop+Sys:Free(ulong)
;; size=2 bbWeight=0.50 PerfScore 1.50
G_M54580_IG06:
mov byte ptr [r15+0x04], 1
mov rcx, 0xD1FFAB1E ; function address
cmp dword ptr [rcx], 0
je SHORT G_M54580_IG07
mov rdi, 0xD1FFAB1E
call [rdi]CORINFO_HELP_STOP_FOR_GC
;; size=32 bbWeight=0.50 PerfScore 4.25
G_M54580_IG07:
- mov rdi, bword ptr [rbp-0x98]
+ mov rdi, qword ptr [rbp-0x70]
mov qword ptr [r15+0x08], rdi
jmp G_M54580_IG96
- ;; size=16 bbWeight=0.50 PerfScore 2.00
+ ;; size=13 bbWeight=0.50 PerfScore 2.00
G_M54580_IG08:
mov edi, r14d
test edi, 0x2000
jne G_M54580_IG99
cmp r14d, 13
je SHORT G_M54580_IG09
cmp r14d, 9
jne SHORT G_M54580_IG14
;; size=27 bbWeight=0.50 PerfScore 2.00
G_M54580_IG09:
cmp qword ptr [rbx+0x08], 0
je SHORT G_M54580_IG13
- mov bword ptr [rbp-0x48], rbx
+ mov bword ptr [rbp-0x88], rbx
mov rdi, qword ptr [rbx+0x08]
mov rax, qword ptr [rdi]
mov rax, qword ptr [rax+0x10]
lea rcx, G_M54580_IG11
- mov qword ptr [rbp-0x78], rcx
- lea rcx, bword ptr [rbp-0xA0]
+ mov qword ptr [rbp-0x58], rcx
+ lea rcx, [rbp-0x78]
mov qword ptr [r15+0x08], rcx
mov byte ptr [r15+0x04], 0
;; size=49 bbWeight=0.50 PerfScore 7.75
G_M54580_IG10:
call rax
;; size=2 bbWeight=0.50 PerfScore 1.50
G_M54580_IG11:
mov byte ptr [r15+0x04], 1
mov rcx, 0xD1FFAB1E ; function address
cmp dword ptr [rcx], 0
je SHORT G_M54580_IG12
mov rdi, 0xD1FFAB1E
call [rdi]CORINFO_HELP_STOP_FOR_GC
;; size=32 bbWeight=0.50 PerfScore 4.25
G_M54580_IG12:
- mov rdi, bword ptr [rbp-0x98]
+ mov rdi, qword ptr [rbp-0x70]
mov qword ptr [r15+0x08], rdi
jmp G_M54580_IG96
- ;; size=16 bbWeight=0.50 PerfScore 2.00
+ ;; size=13 bbWeight=0.50 PerfScore 2.00
G_M54580_IG13:
- mov bword ptr [rbp-0x48], rbx
+ mov bword ptr [rbp-0x88], rbx
jmp G_M54580_IG96
- ;; size=9 bbWeight=0.25 PerfScore 0.75
+ ;; size=12 bbWeight=0.25 PerfScore 0.75
G_M54580_IG14:
cmp r14d, 36
jne G_M54580_IG23
mov rdi, qword ptr [rbx+0x10]
test rdi, rdi
je G_M54580_IG22
cmp qword ptr [rbx+0x08], 0
je SHORT G_M54580_IG18
mov rsi, qword ptr [rdi]
mov rax, qword ptr [rsi+0x20]
- mov bword ptr [rbp-0x48], rbx
+ mov bword ptr [rbp-0x88], rbx
mov rsi, qword ptr [rbx+0x08]
lea rcx, G_M54580_IG16
- mov qword ptr [rbp-0x78], rcx
- lea rcx, bword ptr [rbp-0xA0]
+ mov qword ptr [rbp-0x58], rcx
+ lea rcx, [rbp-0x78]
mov qword ptr [r15+0x08], rcx
mov byte ptr [r15+0x04], 0
;; size=72 bbWeight=0.50 PerfScore 10.00
G_M54580_IG15:
call rax
;; size=2 bbWeight=0.50 PerfScore 1.50
G_M54580_IG16:
mov byte ptr [r15+0x04], 1
mov rcx, 0xD1FFAB1E ; function address
cmp dword ptr [rcx], 0
je SHORT G_M54580_IG17
mov rdi, 0xD1FFAB1E
call [rdi]CORINFO_HELP_STOP_FOR_GC
;; size=32 bbWeight=0.50 PerfScore 4.25
G_M54580_IG17:
- mov rdi, bword ptr [rbp-0x98]
+ mov rdi, qword ptr [rbp-0x70]
mov qword ptr [r15+0x08], rdi
test eax, eax
- mov rbx, bword ptr [rbp-0x48]
+ mov rbx, bword ptr [rbp-0x88]
jl G_M54580_IG100
;; size=23 bbWeight=0.50 PerfScore 2.12
G_M54580_IG18:
- mov bword ptr [rbp-0x48], rbx
+ mov bword ptr [rbp-0x88], rbx
mov rdi, qword ptr [rbx+0x10]
test rdi, rdi
je G_M54580_IG101
mov rax, qword ptr [rdi]
mov rax, qword ptr [rax+0x10]
lea rcx, G_M54580_IG20
- mov qword ptr [rbp-0x78], rcx
- lea rcx, bword ptr [rbp-0xA0]
+ mov qword ptr [rbp-0x58], rcx
+ lea rcx, [rbp-0x78]
mov qword ptr [r15+0x08], rcx
mov byte ptr [r15+0x04], 0
;; size=51 bbWeight=0.50 PerfScore 6.38
G_M54580_IG19:
call rax
;; size=2 bbWeight=0.50 PerfScore 1.50
G_M54580_IG20:
mov byte ptr [r15+0x04], 1
mov rcx, 0xD1FFAB1E ; function address
cmp dword ptr [rcx], 0
je SHORT G_M54580_IG21
mov rdi, 0xD1FFAB1E
call [rdi]CORINFO_HELP_STOP_FOR_GC
;; size=32 bbWeight=0.50 PerfScore 4.25
G_M54580_IG21:
- mov rdi, bword ptr [rbp-0x98]
+ mov rdi, qword ptr [rbp-0x70]
mov qword ptr [r15+0x08], rdi
jmp G_M54580_IG96
- ;; size=16 bbWeight=0.50 PerfScore 2.00
+ ;; size=13 bbWeight=0.50 PerfScore 2.00
G_M54580_IG22:
- mov bword ptr [rbp-0x48], rbx
+ mov bword ptr [rbp-0x88], rbx
jmp G_M54580_IG96
- ;; size=9 bbWeight=0.25 PerfScore 0.75
+ ;; size=12 bbWeight=0.25 PerfScore 0.75
G_M54580_IG23:
mov r13d, r14d
sub r13d, 30
cmp r13d, 42
ja G_M54580_IG30
;; size=17 bbWeight=0.50 PerfScore 0.88
G_M54580_IG24:
mov rdi, 0xD1FFAB1E
bt rdi, r13
jae SHORT G_M54580_IG30
;; size=16 bbWeight=0.50 PerfScore 0.87
G_M54580_IG25:
- mov bword ptr [rbp-0x48], rbx
+ mov bword ptr [rbp-0x88], rbx
mov rdi, qword ptr [rbx+0x08]
test rdi, rdi
je G_M54580_IG96
mov rax, 0xD1FFAB1E ; function address
- mov qword ptr [rbp-0x90], rax
+ mov qword ptr [rbp-0x68], rax
lea rax, G_M54580_IG28
- mov qword ptr [rbp-0x78], rax
- lea rax, bword ptr [rbp-0xA0]
+ mov qword ptr [rbp-0x58], rax
+ lea rax, [rbp-0x78]
mov qword ptr [r15+0x08], rax
mov byte ptr [r15+0x04], 0
- ;; size=61 bbWeight=0.50 PerfScore 5.00
+ ;; size=58 bbWeight=0.50 PerfScore 5.00
G_M54580_IG26:
mov rax, 0xD1FFAB1E ; function address
;; size=10 bbWeight=0.50 PerfScore 0.12
G_M54580_IG27:
call rax ; Interop+Sys:Free(ulong)
;; size=2 bbWeight=0.50 PerfScore 1.50
G_M54580_IG28:
mov byte ptr [r15+0x04], 1
mov rcx, 0xD1FFAB1E ; function address
cmp dword ptr [rcx], 0
je SHORT G_M54580_IG29
mov rdi, 0xD1FFAB1E
call [rdi]CORINFO_HELP_STOP_FOR_GC
;; size=32 bbWeight=0.50 PerfScore 4.25
G_M54580_IG29:
- mov rdi, bword ptr [rbp-0x98]
+ mov rdi, qword ptr [rbp-0x70]
mov qword ptr [r15+0x08], rdi
jmp G_M54580_IG96
- ;; size=16 bbWeight=0.50 PerfScore 2.00
+ ;; size=13 bbWeight=0.50 PerfScore 2.00
G_M54580_IG30:
cmp r14d, 65
je SHORT G_M54580_IG31
cmp r14d, 70
jne SHORT G_M54580_IG36
;; size=12 bbWeight=0.50 PerfScore 1.25
G_M54580_IG31:
- mov bword ptr [rbp-0x48], rbx
+ mov bword ptr [rbp-0x88], rbx
mov rdi, qword ptr [rbx+0x10]
test rdi, rdi
je G_M54580_IG96
mov rax, 0xD1FFAB1E ; function address
- mov qword ptr [rbp-0x90], rax
+ mov qword ptr [rbp-0x68], rax
lea rax, G_M54580_IG34
- mov qword ptr [rbp-0x78], rax
- lea rax, bword ptr [rbp-0xA0]
+ mov qword ptr [rbp-0x58], rax
+ lea rax, [rbp-0x78]
mov qword ptr [r15+0x08], rax
mov byte ptr [r15+0x04], 0
- ;; size=61 bbWeight=0.50 PerfScore 5.00
+ ;; size=58 bbWeight=0.50 PerfScore 5.00
G_M54580_IG32:
mov rax, 0xD1FFAB1E ; function address
;; size=10 bbWeight=0.50 PerfScore 0.12
G_M54580_IG33:
call rax ; Interop+Sys:Free(ulong)
;; size=2 bbWeight=0.50 PerfScore 1.50
G_M54580_IG34:
mov byte ptr [r15+0x04], 1
mov rcx, 0xD1FFAB1E ; function address
cmp dword ptr [rcx], 0
je SHORT G_M54580_IG35
mov rdi, 0xD1FFAB1E
call [rdi]CORINFO_HELP_STOP_FOR_GC
;; size=32 bbWeight=0.50 PerfScore 4.25
G_M54580_IG35:
- mov rdi, bword ptr [rbp-0x98]
+ mov rdi, qword ptr [rbp-0x70]
mov qword ptr [r15+0x08], rdi
jmp G_M54580_IG96
- ;; size=16 bbWeight=0.50 PerfScore 2.00
+ ;; size=13 bbWeight=0.50 PerfScore 2.00
G_M54580_IG36:
mov edi, r14d
sub edi, 66
cmp edi, 3
ja SHORT G_M54580_IG40
cmp qword ptr [rbx+0x08], 0
- mov bword ptr [rbp-0x48], rbx
+ mov bword ptr [rbp-0x88], rbx
je G_M54580_IG96
- mov rbx, bword ptr [rbp-0x48]
+ mov rbx, bword ptr [rbp-0x88]
mov rdi, qword ptr [rbx+0x08]
mov rax, qword ptr [rdi]
mov rax, qword ptr [rax+0x10]
lea rcx, G_M54580_IG38
- mov qword ptr [rbp-0x78], rcx
- lea rcx, bword ptr [rbp-0xA0]
+ mov qword ptr [rbp-0x58], rcx
+ lea rcx, [rbp-0x78]
mov qword ptr [r15+0x08], rcx
mov byte ptr [r15+0x04], 0
- ;; size=68 bbWeight=0.50 PerfScore 9.12
+ ;; size=71 bbWeight=0.50 PerfScore 9.12
G_M54580_IG37:
call rax
;; size=2 bbWeight=0.50 PerfScore 1.50
G_M54580_IG38:
mov byte ptr [r15+0x04], 1
mov rcx, 0xD1FFAB1E ; function address
cmp dword ptr [rcx], 0
je SHORT G_M54580_IG39
mov rdi, 0xD1FFAB1E
call [rdi]CORINFO_HELP_STOP_FOR_GC
;; size=32 bbWeight=0.50 PerfScore 4.25
G_M54580_IG39:
- mov rdi, bword ptr [rbp-0x98]
+ mov rdi, qword ptr [rbp-0x70]
mov qword ptr [r15+0x08], rdi
jmp G_M54580_IG96
- ;; size=16 bbWeight=0.50 PerfScore 2.00
+ ;; size=13 bbWeight=0.50 PerfScore 2.00
G_M54580_IG40:
cmp r14d, 73
jne G_M54580_IG49
- mov bword ptr [rbp-0x48], rbx
+ mov bword ptr [rbp-0x88], rbx
mov r14, qword ptr [rbx+0x08]
test r14, r14
je G_M54580_IG96
mov rdi, qword ptr [r14+0x10]
test rdi, rdi
je SHORT G_M54580_IG44
mov rax, qword ptr [rdi]
mov rax, qword ptr [rax+0x10]
lea rcx, G_M54580_IG42
- mov qword ptr [rbp-0x78], rcx
- lea rcx, bword ptr [rbp-0xA0]
+ mov qword ptr [rbp-0x58], rcx
+ lea rcx, [rbp-0x78]
mov qword ptr [r15+0x08], rcx
mov byte ptr [r15+0x04], 0
;; size=70 bbWeight=0.50 PerfScore 8.62
G_M54580_IG41:
call rax
;; size=2 bbWeight=0.50 PerfScore 1.50
G_M54580_IG42:
mov byte ptr [r15+0x04], 1
mov rcx, 0xD1FFAB1E ; function address
cmp dword ptr [rcx], 0
je SHORT G_M54580_IG43
mov rdi, 0xD1FFAB1E
call [rdi]CORINFO_HELP_STOP_FOR_GC
;; size=32 bbWeight=0.50 PerfScore 4.25
G_M54580_IG43:
- mov rdi, bword ptr [rbp-0x98]
+ mov rdi, qword ptr [rbp-0x70]
mov qword ptr [r15+0x08], rdi
- ;; size=11 bbWeight=0.50 PerfScore 1.00
+ ;; size=8 bbWeight=0.50 PerfScore 1.00
G_M54580_IG44:
mov rdi, r14
mov rax, 0xD1FFAB1E ; function address
- mov qword ptr [rbp-0x90], rax
+ mov qword ptr [rbp-0x68], rax
lea rax, G_M54580_IG47
- mov qword ptr [rbp-0x78], rax
- lea rax, bword ptr [rbp-0xA0]
+ mov qword ptr [rbp-0x58], rax
+ lea rax, [rbp-0x78]
mov qword ptr [r15+0x08], rax
mov byte ptr [r15+0x04], 0
- ;; size=47 bbWeight=0.50 PerfScore 3.00
+ ;; size=41 bbWeight=0.50 PerfScore 3.00
G_M54580_IG45:
mov rax, 0xD1FFAB1E ; function address
;; size=10 bbWeight=0.50 PerfScore 0.12
G_M54580_IG46:
call rax ; Interop+Sys:Free(ulong)
;; size=2 bbWeight=0.50 PerfScore 1.50
G_M54580_IG47:
mov byte ptr [r15+0x04], 1
mov rcx, 0xD1FFAB1E ; function address
cmp dword ptr [rcx], 0
je SHORT G_M54580_IG48
mov rdi, 0xD1FFAB1E
call [rdi]CORINFO_HELP_STOP_FOR_GC
;; size=32 bbWeight=0.50 PerfScore 4.25
G_M54580_IG48:
- mov rdi, bword ptr [rbp-0x98]
+ mov rdi, qword ptr [rbp-0x70]
mov qword ptr [r15+0x08], rdi
jmp G_M54580_IG96
- ;; size=16 bbWeight=0.50 PerfScore 2.00
+ ;; size=13 bbWeight=0.50 PerfScore 2.00
G_M54580_IG49:
cmp r14d, 71
jne G_M54580_IG59
- mov bword ptr [rbp-0x48], rbx
+ mov bword ptr [rbp-0x88], rbx
mov r14, qword ptr [rbx+0x08]
test r14, r14
je G_M54580_IG96
mov rdi, qword ptr [r14+0x08]
test rdi, rdi
je SHORT G_M54580_IG54
mov rax, 0xD1FFAB1E ; function address
- mov qword ptr [rbp-0x90], rax
+ mov qword ptr [rbp-0x68], rax
lea rax, G_M54580_IG52
- mov qword ptr [rbp-0x78], rax
- lea rax, bword ptr [rbp-0xA0]
+ mov qword ptr [rbp-0x58], rax
+ lea rax, [rbp-0x78]
mov qword ptr [r15+0x08], rax
mov byte ptr [r15+0x04], 0
- ;; size=80 bbWeight=0.50 PerfScore 7.25
+ ;; size=77 bbWeight=0.50 PerfScore 7.25
G_M54580_IG50:
mov rax, 0xD1FFAB1E ; function address
;; size=10 bbWeight=0.50 PerfScore 0.12
G_M54580_IG51:
call rax ; Interop+Sys:Free(ulong)
;; size=2 bbWeight=0.50 PerfScore 1.50
G_M54580_IG52:
mov byte ptr [r15+0x04], 1
mov rcx, 0xD1FFAB1E ; function address
cmp dword ptr [rcx], 0
je SHORT G_M54580_IG53
mov rdi, 0xD1FFAB1E
call [rdi]CORINFO_HELP_STOP_FOR_GC
;; size=32 bbWeight=0.50 PerfScore 4.25
G_M54580_IG53:
- mov rdi, bword ptr [rbp-0x98]
+ mov rdi, qword ptr [rbp-0x70]
mov qword ptr [r15+0x08], rdi
- ;; size=11 bbWeight=0.50 PerfScore 1.00
+ ;; size=8 bbWeight=0.50 PerfScore 1.00
G_M54580_IG54:
mov rdi, r14
mov rax, 0xD1FFAB1E ; function address
- mov qword ptr [rbp-0x90], rax
+ mov qword ptr [rbp-0x68], rax
lea rax, G_M54580_IG57
- mov qword ptr [rbp-0x78], rax
- lea rax, bword ptr [rbp-0xA0]
+ mov qword ptr [rbp-0x58], rax
+ lea rax, [rbp-0x78]
mov qword ptr [r15+0x08], rax
mov byte ptr [r15+0x04], 0
- ;; size=47 bbWeight=0.50 PerfScore 3.00
+ ;; size=41 bbWeight=0.50 PerfScore 3.00
G_M54580_IG55:
mov rax, 0xD1FFAB1E ; function address
;; size=10 bbWeight=0.50 PerfScore 0.12
G_M54580_IG56:
call rax ; Interop+Sys:Free(ulong)
;; size=2 bbWeight=0.50 PerfScore 1.50
G_M54580_IG57:
mov byte ptr [r15+0x04], 1
mov rcx, 0xD1FFAB1E ; function address
cmp dword ptr [rcx], 0
je SHORT G_M54580_IG58
mov rdi, 0xD1FFAB1E
call [rdi]CORINFO_HELP_STOP_FOR_GC
;; size=32 bbWeight=0.50 PerfScore 4.25
G_M54580_IG58:
- mov rdi, bword ptr [rbp-0x98]
+ mov rdi, qword ptr [rbp-0x70]
mov qword ptr [r15+0x08], rdi
jmp G_M54580_IG96
- ;; size=16 bbWeight=0.50 PerfScore 2.00
+ ;; size=13 bbWeight=0.50 PerfScore 2.00
G_M54580_IG59:
mov edi, r14d
test edi, 0x1000
je SHORT G_M54580_IG61
and r14d, -0x1001
cmp r14d, 12
jg SHORT G_M54580_IG62
cmp r14d, 8
je SHORT G_M54580_IG64
cmp r14d, 12
je G_M54580_IG88
;; size=40 bbWeight=0.50 PerfScore 2.75
G_M54580_IG60:
- mov bword ptr [rbp-0x48], rbx
+ mov bword ptr [rbp-0x88], rbx
jmp G_M54580_IG91
- ;; size=9 bbWeight=0.25 PerfScore 0.75
+ ;; size=12 bbWeight=0.25 PerfScore 0.75
G_M54580_IG61:
- mov bword ptr [rbp-0x48], rbx
+ mov bword ptr [rbp-0x88], rbx
jmp G_M54580_IG96
- ;; size=9 bbWeight=0.25 PerfScore 0.75
+ ;; size=12 bbWeight=0.25 PerfScore 0.75
G_M54580_IG62:
lea edi, [r14-0x1E]
cmp edi, 1
jbe G_M54580_IG72
cmp r14d, 71
je G_M54580_IG80
;; size=23 bbWeight=0.50 PerfScore 1.50
G_M54580_IG63:
- mov bword ptr [rbp-0x48], rbx
+ mov bword ptr [rbp-0x88], rbx
jmp G_M54580_IG91
- ;; size=9 bbWeight=0.25 PerfScore 0.75
+ ;; size=12 bbWeight=0.25 PerfScore 0.75
G_M54580_IG64:
- mov bword ptr [rbp-0x48], rbx
+ mov bword ptr [rbp-0x88], rbx
lea rdi, bword ptr [rbx+0x08]
mov r13, qword ptr [rdi+0x08]
mov r14d, dword ptr [rdi]
test r14d, r14d
jl G_M54580_IG102
- mov bword ptr [rbp-0x50], r13
+ mov bword ptr [rbp-0x90], r13
xor r12d, r12d
test r14d, r14d
jle G_M54580_IG91
- ;; size=40 bbWeight=0.50 PerfScore 4.62
+ ;; size=46 bbWeight=0.50 PerfScore 4.62
G_M54580_IG65:
mov rdi, qword ptr [r13+8*r12]
test rdi, rdi
je SHORT G_M54580_IG71
;; size=10 bbWeight=4 PerfScore 13.00
G_M54580_IG66:
add rdi, -8
mov rax, 0xD1FFAB1E ; function address
- mov qword ptr [rbp-0x90], rax
+ mov qword ptr [rbp-0x68], rax
lea rax, G_M54580_IG69
- mov qword ptr [rbp-0x78], rax
- lea rax, bword ptr [rbp-0xA0]
+ mov qword ptr [rbp-0x58], rax
+ lea rax, [rbp-0x78]
mov qword ptr [r15+0x08], rax
mov byte ptr [r15+0x04], 0
- ;; size=48 bbWeight=2 PerfScore 12.00
+ ;; size=42 bbWeight=2 PerfScore 12.00
G_M54580_IG67:
mov rax, 0xD1FFAB1E ; function address
;; size=10 bbWeight=2 PerfScore 0.50
G_M54580_IG68:
call rax ; Interop+Sys:Free(ulong)
;; size=2 bbWeight=2 PerfScore 6.00
G_M54580_IG69:
mov byte ptr [r15+0x04], 1
mov rcx, 0xD1FFAB1E ; function address
cmp dword ptr [rcx], 0
je SHORT G_M54580_IG70
mov rdi, 0xD1FFAB1E
call [rdi]CORINFO_HELP_STOP_FOR_GC
;; size=32 bbWeight=2 PerfScore 17.00
G_M54580_IG70:
- mov rdi, bword ptr [rbp-0x98]
+ mov rdi, qword ptr [rbp-0x70]
mov qword ptr [r15+0x08], rdi
- ;; size=11 bbWeight=2 PerfScore 4.00
+ ;; size=8 bbWeight=2 PerfScore 4.00
G_M54580_IG71:
inc r12d
cmp r12d, r14d
- mov r13, bword ptr [rbp-0x50]
+ mov r13, bword ptr [rbp-0x90]
jl SHORT G_M54580_IG65
jmp G_M54580_IG91
- ;; size=17 bbWeight=4 PerfScore 18.00
+ ;; size=20 bbWeight=4 PerfScore 18.00
G_M54580_IG72:
- mov bword ptr [rbp-0x48], rbx
+ mov bword ptr [rbp-0x88], rbx
lea rdi, bword ptr [rbx+0x08]
mov r14, qword ptr [rdi+0x08]
mov r13d, dword ptr [rdi]
test r13d, r13d
jl G_M54580_IG102
- mov bword ptr [rbp-0x58], r14
+ mov bword ptr [rbp-0x98], r14
xor r12d, r12d
test r13d, r13d
jle G_M54580_IG91
- ;; size=40 bbWeight=0.50 PerfScore 4.62
+ ;; size=46 bbWeight=0.50 PerfScore 4.62
G_M54580_IG73:
mov rdi, qword ptr [r14+8*r12]
test rdi, rdi
je SHORT G_M54580_IG79
;; size=9 bbWeight=4 PerfScore 13.00
G_M54580_IG74:
mov rax, 0xD1FFAB1E ; function address
- mov qword ptr [rbp-0x90], rax
+ mov qword ptr [rbp-0x68], rax
lea rax, G_M54580_IG77
- mov qword ptr [rbp-0x78], rax
- lea rax, bword ptr [rbp-0xA0]
+ mov qword ptr [rbp-0x58], rax
+ lea rax, [rbp-0x78]
mov qword ptr [r15+0x08], rax
mov byte ptr [r15+0x04], 0
- ;; size=44 bbWeight=2 PerfScore 11.50
+ ;; size=38 bbWeight=2 PerfScore 11.50
G_M54580_IG75:
mov rax, 0xD1FFAB1E ; function address
;; size=10 bbWeight=2 PerfScore 0.50
G_M54580_IG76:
call rax ; Interop+Sys:Free(ulong)
;; size=2 bbWeight=2 PerfScore 6.00
G_M54580_IG77:
mov byte ptr [r15+0x04], 1
mov rcx, 0xD1FFAB1E ; function address
cmp dword ptr [rcx], 0
je SHORT G_M54580_IG78
mov rdi, 0xD1FFAB1E
call [rdi]CORINFO_HELP_STOP_FOR_GC
;; size=32 bbWeight=2 PerfScore 17.00
G_M54580_IG78:
- mov rdi, bword ptr [rbp-0x98]
+ mov rdi, qword ptr [rbp-0x70]
mov qword ptr [r15+0x08], rdi
- ;; size=11 bbWeight=2 PerfScore 4.00
+ ;; size=8 bbWeight=2 PerfScore 4.00
G_M54580_IG79:
inc r12d
cmp r12d, r13d
- mov r14, bword ptr [rbp-0x58]
+ mov r14, bword ptr [rbp-0x98]
jl SHORT G_M54580_IG73
jmp G_M54580_IG91
- ;; size=17 bbWeight=4 PerfScore 18.00
+ ;; size=20 bbWeight=4 PerfScore 18.00
G_M54580_IG80:
- mov bword ptr [rbp-0x48], rbx
+ mov bword ptr [rbp-0x88], rbx
lea rdi, bword ptr [rbx+0x08]
mov r14, qword ptr [rdi+0x08]
mov r13d, dword ptr [rdi]
test r13d, r13d
jl G_M54580_IG102
- mov bword ptr [rbp-0x60], r14
+ mov bword ptr [rbp-0xA0], r14
xor r12d, r12d
test r13d, r13d
jle G_M54580_IG91
- ;; size=40 bbWeight=0.50 PerfScore 4.62
+ ;; size=46 bbWeight=0.50 PerfScore 4.62
G_M54580_IG81:
mov rdi, r12
shl rdi, 4
mov rdi, qword ptr [r14+rdi+0x08]
test rdi, rdi
je SHORT G_M54580_IG87
;; size=17 bbWeight=4 PerfScore 16.00
G_M54580_IG82:
mov rax, 0xD1FFAB1E ; function address
- mov qword ptr [rbp-0x90], rax
+ mov qword ptr [rbp-0x68], rax
lea rax, G_M54580_IG85
- mov qword ptr [rbp-0x78], rax
- lea rax, bword ptr [rbp-0xA0]
+ mov qword ptr [rbp-0x58], rax
+ lea rax, [rbp-0x78]
mov qword ptr [r15+0x08], rax
mov byte ptr [r15+0x04], 0
- ;; size=44 bbWeight=2 PerfScore 11.50
+ ;; size=38 bbWeight=2 PerfScore 11.50
G_M54580_IG83:
mov rax, 0xD1FFAB1E ; function address
;; size=10 bbWeight=2 PerfScore 0.50
G_M54580_IG84:
call rax ; Interop+Sys:Free(ulong)
;; size=2 bbWeight=2 PerfScore 6.00
G_M54580_IG85:
mov byte ptr [r15+0x04], 1
mov rcx, 0xD1FFAB1E ; function address
cmp dword ptr [rcx], 0
je SHORT G_M54580_IG86
mov rdi, 0xD1FFAB1E
call [rdi]CORINFO_HELP_STOP_FOR_GC
;; size=32 bbWeight=2 PerfScore 17.00
G_M54580_IG86:
- mov rdi, bword ptr [rbp-0x98]
+ mov rdi, qword ptr [rbp-0x70]
mov qword ptr [r15+0x08], rdi
- ;; size=11 bbWeight=2 PerfScore 4.00
+ ;; size=8 bbWeight=2 PerfScore 4.00
G_M54580_IG87:
inc r12d
cmp r12d, r13d
- mov r14, bword ptr [rbp-0x60]
+ mov r14, bword ptr [rbp-0xA0]
jl SHORT G_M54580_IG81
jmp SHORT G_M54580_IG91
- ;; size=14 bbWeight=4 PerfScore 18.00
+ ;; size=17 bbWeight=4 PerfScore 18.00
G_M54580_IG88:
lea rdi, bword ptr [rbx+0x08]
mov r14, qword ptr [rdi+0x08]
mov r13d, dword ptr [rdi]
test r13d, r13d
jl G_M54580_IG102
xor r12d, r12d
test r13d, r13d
jle G_M54580_IG98
;; size=32 bbWeight=0.50 PerfScore 3.62
G_M54580_IG89:
lea rdi, [r12+2*r12]
vmovdqu xmm2, xmmword ptr [r14+8*rdi]
vmovdqu xmmword ptr [rbp-0x40], xmm2
mov rax, qword ptr [r14+8*rdi+0x10]
mov qword ptr [rbp-0x30], rax
lea rdi, [rbp-0x40]
mov rax, 0xD1FFAB1E ; code for System.Runtime.InteropServices.Marshalling.ComVariant:Dispose():this
call [rax]System.Runtime.InteropServices.Marshalling.ComVariant:Dispose():this
inc r12d
cmp r12d, r13d
jl SHORT G_M54580_IG89
;; size=48 bbWeight=4 PerfScore 55.00
G_M54580_IG90:
- mov bword ptr [rbp-0x48], rbx
- ;; size=4 bbWeight=2 PerfScore 2.00
+ mov bword ptr [rbp-0x88], rbx
+ ;; size=7 bbWeight=2 PerfScore 2.00
G_M54580_IG91:
- mov rbx, bword ptr [rbp-0x48]
+ mov rbx, bword ptr [rbp-0x88]
mov rdi, qword ptr [rbx+0x10]
test rdi, rdi
je SHORT G_M54580_IG96
mov rax, 0xD1FFAB1E ; function address
- mov qword ptr [rbp-0x90], rax
+ mov qword ptr [rbp-0x68], rax
lea rax, G_M54580_IG94
- mov qword ptr [rbp-0x78], rax
- lea rax, bword ptr [rbp-0xA0]
+ mov qword ptr [rbp-0x58], rax
+ lea rax, [rbp-0x78]
mov qword ptr [r15+0x08], rax
mov byte ptr [r15+0x04], 0
- ;; size=57 bbWeight=0.50 PerfScore 5.00
+ ;; size=54 bbWeight=0.50 PerfScore 5.00
G_M54580_IG92:
mov rax, 0xD1FFAB1E ; function address
;; size=10 bbWeight=0.50 PerfScore 0.12
G_M54580_IG93:
call rax ; Interop+Sys:Free(ulong)
;; size=2 bbWeight=0.50 PerfScore 1.50
G_M54580_IG94:
mov byte ptr [r15+0x04], 1
mov rcx, 0xD1FFAB1E ; function address
cmp dword ptr [rcx], 0
je SHORT G_M54580_IG95
mov rdi, 0xD1FFAB1E
call [rdi]CORINFO_HELP_STOP_FOR_GC
;; size=32 bbWeight=0.50 PerfScore 4.25
G_M54580_IG95:
- mov rdi, bword ptr [rbp-0x98]
+ mov rdi, qword ptr [rbp-0x70]
mov qword ptr [r15+0x08], rdi
- ;; size=11 bbWeight=0.50 PerfScore 1.00
+ ;; size=8 bbWeight=0.50 PerfScore 1.00
G_M54580_IG96:
- mov rbx, bword ptr [rbp-0x48]
+ mov rbx, bword ptr [rbp-0x88]
vxorps xmm2, xmm2, xmm2
vmovdqu xmmword ptr [rbx], xmm2
vmovdqu xmmword ptr [rbx+0x08], xmm2
- ;; size=17 bbWeight=1 PerfScore 5.33
+ ;; size=20 bbWeight=1 PerfScore 5.33
G_M54580_IG97:
- add rsp, 136
+ add rsp, 120
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=18 bbWeight=1 PerfScore 4.25
+ ;; size=15 bbWeight=1 PerfScore 4.25
G_M54580_IG98:
- mov bword ptr [rbp-0x48], rbx
+ mov bword ptr [rbp-0x88], rbx
jmp G_M54580_IG91
- ;; size=9 bbWeight=0.25 PerfScore 0.75
+ ;; size=12 bbWeight=0.25 PerfScore 0.75
G_M54580_IG99:
mov rdi, 0xD1FFAB1E ; System.PlatformNotSupportedException
call CORINFO_HELP_NEWSFAST
mov rbx, rax
mov rax, 0xD1FFAB1E ; code for System.SR:get_ComVariant_SafeArray_PlatformNotSupported():System.String
call [rax]System.SR:get_ComVariant_SafeArray_PlatformNotSupported():System.String
mov rsi, rax
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.PlatformNotSupportedException:.ctor(System.String):this
call [rax]System.PlatformNotSupportedException:.ctor(System.String):this
mov rdi, rbx
call CORINFO_HELP_THROW
int3
;; size=57 bbWeight=0 PerfScore 0.00
G_M54580_IG100:
mov edi, eax
mov rax, 0xD1FFAB1E ; code for System.Runtime.InteropServices.Marshal:GetExceptionForHR(int):System.Exception
call [rax]System.Runtime.InteropServices.Marshal:GetExceptionForHR(int):System.Exception
mov rdi, rax
call CORINFO_HELP_THROW
int3
;; size=23 bbWeight=0 PerfScore 0.00
G_M54580_IG101:
mov edi, 0x18B98
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov rdi, rax
mov rax, 0xD1FFAB1E ; code for System.ArgumentNullException:Throw(System.String)
call [rax]System.ArgumentNullException:Throw(System.String)
int3
;; size=36 bbWeight=0 PerfScore 0.00
G_M54580_IG102:
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException()
call [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException()
int3
;; size=13 bbWeight=0 PerfScore 0.00
-; Total bytes of code 2408, prolog size 31, PerfScore 493.33, instruction count 507, allocated bytes for code 2408 (MethodHash=54b32acb) for method System.Runtime.InteropServices.Marshalling.ComVariant:Dispose():this (FullOpts)
+; Total bytes of code 2360, prolog size 28, PerfScore 493.08, instruction count 506, allocated bytes for code 2360 (MethodHash=54b32acb) for method System.Runtime.InteropServices.Marshalling.ComVariant:Dispose():this (FullOpts) -45 (-5.45 % of base) - (dynamicClass):IL_STUB_PInvoke(long,ulong):int ; Assembly listing for method (dynamicClass):IL_STUB_PInvoke(long,ulong):int (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX - Unix
; FullOpts code
; optimized code
; rbp based frame
; partially interruptible
; No PGO data
; Final local variable assignments
;
; V00 arg0 [V00,T01] ( 3, 3 ) long -> rbx single-def
; V01 arg1 [V01,T02] ( 3, 3 ) long -> r15 single-def
;* V02 loc0 [V02 ] ( 0, 0 ) int -> zero-ref
;* V03 loc1 [V03 ] ( 0, 0 ) long -> zero-ref
;* V04 loc2 [V04 ] ( 0, 0 ) long -> zero-ref
;* V05 loc3 [V05 ] ( 0, 0 ) int -> zero-ref
;* 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,T03] ( 4, 4 ) long -> [rbp-0x30] do-not-enreg[V] "stub argument"
+; V08 tmp1 [V08,T03] ( 4, 4 ) long -> [rbp-0x30] "stub argument"
; V09 tmp2 [V09,T04] ( 2, 4 ) long -> rax "impImportIndirectCall"
; V10 tmp3 [V10,T05] ( 2, 4 ) int -> rax "Single return block return value"
-; V11 FramesRoot [V11,T00] ( 6, 6 ) long -> r14 "Pinvoke FrameListRoot"
-; V12 PInvokeFrame [V12 ] ( 8, 8 ) struct (72) [rbp-0x78] do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
+; V11 FramesRoot [V11,T00] ( 6, 6 ) long -> r13 "Pinvoke FrameListRoot"
+; V12 PInvokeFrame [V12 ] ( 9, 9 ) struct (72) [rbp-0x78] do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
;
; Lcl frame size = 88
G_M20446_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
sub rsp, 88
lea rbp, [rsp+0x80]
- mov qword ptr [rbp-0x30], r10
mov rbx, rdi
mov r15, rsi
- ;; size=32 bbWeight=1 PerfScore 8.25
+ mov r14, r10
+ ;; size=31 bbWeight=1 PerfScore 7.50
G_M20446_IG02:
lea rdi, [rbp-0x70]
- mov rsi, qword ptr [rbp-0x30]
call CORINFO_HELP_INIT_PINVOKE_FRAME
- mov r14, rax
+ mov r13, rax
+ mov qword ptr [rbp-0x38], r14
mov rdi, rsp
- mov qword ptr [rbp-0x50], rdi
+ mov qword ptr [rbp-0x58], rdi
mov rdi, rbp
- mov qword ptr [rbp-0x40], rdi
- lea rdi, bword ptr [rbp-0x70]
- mov qword ptr [r14+0x08], rdi
- mov rdi, qword ptr [rbp-0x30]
- mov rax, qword ptr [rdi+0x18]
+ mov qword ptr [rbp-0x48], rdi
+ lea rdi, [rbp-0x70]
+ mov qword ptr [r13+0x08], rdi
+ mov rax, qword ptr [r14+0x18]
mov rdi, rbx
mov rsi, r15
- mov rcx, qword ptr [rbp-0x30]
- mov qword ptr [rbp-0x60], rcx
+ mov qword ptr [rbp-0x60], r14
lea rcx, G_M20446_IG04
- mov qword ptr [rbp-0x48], rcx
- mov byte ptr [r14+0x04], 0
- ;; size=76 bbWeight=1 PerfScore 15.25
+ mov qword ptr [rbp-0x50], rcx
+ mov byte ptr [r13+0x04], 0
+ ;; size=68 bbWeight=1 PerfScore 13.25
G_M20446_IG03:
call rax
;; size=2 bbWeight=1 PerfScore 3.00
G_M20446_IG04:
- mov byte ptr [r14+0x04], 1
+ mov byte ptr [r13+0x04], 1
mov rcx, 0xD1FFAB1E ; function address
cmp dword ptr [rcx], 0
je SHORT G_M20446_IG05
mov rdi, 0xD1FFAB1E
call [rdi]CORINFO_HELP_STOP_FOR_GC
;; size=32 bbWeight=1 PerfScore 8.50
G_M20446_IG05:
- mov rcx, bword ptr [rbp-0x68]
- mov qword ptr [r14+0x08], rcx
+ mov rcx, qword ptr [rbp-0x68]
+ mov qword ptr [r13+0x08], rcx
;; size=8 bbWeight=1 PerfScore 2.00
G_M20446_IG06:
add rsp, 88
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=1 PerfScore 4.25
-; Total bytes of code 165, prolog size 26, PerfScore 41.25, instruction count 47, allocated bytes for code 165 (MethodHash=da22b021) for method (dynamicClass):IL_STUB_PInvoke(long,ulong):int (FullOpts)
+; Total bytes of code 156, prolog size 22, PerfScore 38.50, instruction count 45, allocated bytes for code 156 (MethodHash=da22b021) for method (dynamicClass):IL_STUB_PInvoke(long,ulong):int (FullOpts) -45 (-5.45 % of base) - (dynamicClass):IL_STUB_PInvoke(ulong,int):int ; Assembly listing for method (dynamicClass):IL_STUB_PInvoke(ulong,int):int (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX - Unix
; FullOpts code
; optimized code
; rbp based frame
; partially interruptible
; No PGO data
; Final local variable assignments
;
; V00 arg0 [V00,T01] ( 3, 3 ) long -> rbx single-def
; V01 arg1 [V01,T02] ( 3, 3 ) int -> r15 single-def
;* V02 loc0 [V02 ] ( 0, 0 ) int -> zero-ref
;* V03 loc1 [V03 ] ( 0, 0 ) long -> zero-ref
; V04 loc2 [V04,T06] ( 2, 2 ) long -> rsi
;* V05 loc3 [V05 ] ( 0, 0 ) int -> zero-ref
;* 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,T03] ( 4, 4 ) long -> [rbp-0x30] do-not-enreg[V] "stub argument"
+; V08 tmp1 [V08,T03] ( 4, 4 ) long -> [rbp-0x30] "stub argument"
; V09 tmp2 [V09,T04] ( 2, 4 ) long -> rax "impImportIndirectCall"
; V10 tmp3 [V10,T05] ( 2, 4 ) int -> rax "Single return block return value"
-; V11 FramesRoot [V11,T00] ( 6, 6 ) long -> r14 "Pinvoke FrameListRoot"
-; V12 PInvokeFrame [V12 ] ( 8, 8 ) struct (72) [rbp-0x78] do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
+; V11 FramesRoot [V11,T00] ( 6, 6 ) long -> r13 "Pinvoke FrameListRoot"
+; V12 PInvokeFrame [V12 ] ( 9, 9 ) struct (72) [rbp-0x78] do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
;
; Lcl frame size = 88
G_M51271_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
sub rsp, 88
lea rbp, [rsp+0x80]
- mov qword ptr [rbp-0x30], r10
mov rbx, rdi
mov r15d, esi
- ;; size=32 bbWeight=1 PerfScore 8.25
+ mov r14, r10
+ ;; size=31 bbWeight=1 PerfScore 7.50
G_M51271_IG02:
lea rdi, [rbp-0x70]
- mov rsi, qword ptr [rbp-0x30]
call CORINFO_HELP_INIT_PINVOKE_FRAME
- mov r14, rax
+ mov r13, rax
+ mov qword ptr [rbp-0x38], r14
mov rdi, rsp
- mov qword ptr [rbp-0x50], rdi
+ mov qword ptr [rbp-0x58], rdi
mov rdi, rbp
- mov qword ptr [rbp-0x40], rdi
- lea rdi, bword ptr [rbp-0x70]
- mov qword ptr [r14+0x08], rdi
+ mov qword ptr [rbp-0x48], rdi
+ lea rdi, [rbp-0x70]
+ mov qword ptr [r13+0x08], rdi
movsxd rsi, r15d
- mov rdi, qword ptr [rbp-0x30]
- mov rax, qword ptr [rdi+0x18]
+ mov rax, qword ptr [r14+0x18]
mov rdi, rbx
- mov rcx, qword ptr [rbp-0x30]
- mov qword ptr [rbp-0x60], rcx
+ mov qword ptr [rbp-0x60], r14
lea rcx, G_M51271_IG04
- mov qword ptr [rbp-0x48], rcx
- mov byte ptr [r14+0x04], 0
- ;; size=76 bbWeight=1 PerfScore 15.25
+ mov qword ptr [rbp-0x50], rcx
+ mov byte ptr [r13+0x04], 0
+ ;; size=68 bbWeight=1 PerfScore 13.25
G_M51271_IG03:
call rax
;; size=2 bbWeight=1 PerfScore 3.00
G_M51271_IG04:
- mov byte ptr [r14+0x04], 1
+ mov byte ptr [r13+0x04], 1
mov rcx, 0xD1FFAB1E ; function address
cmp dword ptr [rcx], 0
je SHORT G_M51271_IG05
mov rdi, 0xD1FFAB1E
call [rdi]CORINFO_HELP_STOP_FOR_GC
;; size=32 bbWeight=1 PerfScore 8.50
G_M51271_IG05:
- mov rcx, bword ptr [rbp-0x68]
- mov qword ptr [r14+0x08], rcx
+ mov rcx, qword ptr [rbp-0x68]
+ mov qword ptr [r13+0x08], rcx
;; size=8 bbWeight=1 PerfScore 2.00
G_M51271_IG06:
add rsp, 88
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=1 PerfScore 4.25
-; Total bytes of code 165, prolog size 26, PerfScore 41.25, instruction count 47, allocated bytes for code 165 (MethodHash=b44c37b8) for method (dynamicClass):IL_STUB_PInvoke(ulong,int):int (FullOpts)
+; Total bytes of code 156, prolog size 22, PerfScore 38.50, instruction count 45, allocated bytes for code 156 (MethodHash=b44c37b8) for method (dynamicClass):IL_STUB_PInvoke(ulong,int):int (FullOpts) -45 (-5.66 % of base) - (dynamicClass):IL_STUB_PInvoke(ulong):int ; Assembly listing for method (dynamicClass):IL_STUB_PInvoke(ulong):int (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX - Unix
; FullOpts code
; optimized code
; rbp based frame
; partially interruptible
; No PGO data
; Final local variable assignments
;
; V00 arg0 [V00,T01] ( 3, 3 ) long -> rbx single-def
;* V01 loc0 [V01 ] ( 0, 0 ) int -> zero-ref
;* V02 loc1 [V02 ] ( 0, 0 ) long -> zero-ref
;* V03 loc2 [V03 ] ( 0, 0 ) int -> zero-ref
;* V04 loc3 [V04 ] ( 0, 0 ) int -> zero-ref
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T02] ( 4, 4 ) long -> [rbp-0x30] do-not-enreg[V] "stub argument"
+; V06 tmp1 [V06,T02] ( 4, 4 ) long -> [rbp-0x30] "stub argument"
; V07 tmp2 [V07,T03] ( 2, 4 ) long -> rax "impImportIndirectCall"
; V08 tmp3 [V08,T04] ( 2, 4 ) int -> rax "Single return block return value"
-; V09 FramesRoot [V09,T00] ( 6, 6 ) long -> r15 "Pinvoke FrameListRoot"
-; V10 PInvokeFrame [V10 ] ( 8, 8 ) struct (72) [rbp-0x78] do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
+; V09 FramesRoot [V09,T00] ( 6, 6 ) long -> r14 "Pinvoke FrameListRoot"
+; V10 PInvokeFrame [V10 ] ( 9, 9 ) struct (72) [rbp-0x78] do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
;
; Lcl frame size = 88
G_M30136_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
sub rsp, 88
lea rbp, [rsp+0x80]
- mov qword ptr [rbp-0x30], r10
mov rbx, rdi
- ;; size=29 bbWeight=1 PerfScore 8.00
+ mov r15, r10
+ ;; size=28 bbWeight=1 PerfScore 7.25
G_M30136_IG02:
lea rdi, [rbp-0x70]
- mov rsi, qword ptr [rbp-0x30]
call CORINFO_HELP_INIT_PINVOKE_FRAME
- mov r15, rax
+ mov r14, rax
+ mov qword ptr [rbp-0x38], r15
mov rdi, rsp
- mov qword ptr [rbp-0x50], rdi
+ mov qword ptr [rbp-0x58], rdi
mov rdi, rbp
- mov qword ptr [rbp-0x40], rdi
- lea rdi, bword ptr [rbp-0x70]
- mov qword ptr [r15+0x08], rdi
- mov rdi, qword ptr [rbp-0x30]
- mov rax, qword ptr [rdi+0x18]
+ mov qword ptr [rbp-0x48], rdi
+ lea rdi, [rbp-0x70]
+ mov qword ptr [r14+0x08], rdi
+ mov rax, qword ptr [r15+0x18]
mov rdi, rbx
- mov rcx, qword ptr [rbp-0x30]
- mov qword ptr [rbp-0x60], rcx
+ mov qword ptr [rbp-0x60], r15
lea rcx, G_M30136_IG04
- mov qword ptr [rbp-0x48], rcx
- mov byte ptr [r15+0x04], 0
- ;; size=73 bbWeight=1 PerfScore 15.00
+ mov qword ptr [rbp-0x50], rcx
+ mov byte ptr [r14+0x04], 0
+ ;; size=65 bbWeight=1 PerfScore 13.00
G_M30136_IG03:
call rax
;; size=2 bbWeight=1 PerfScore 3.00
G_M30136_IG04:
- mov byte ptr [r15+0x04], 1
+ mov byte ptr [r14+0x04], 1
mov rcx, 0xD1FFAB1E ; function address
cmp dword ptr [rcx], 0
je SHORT G_M30136_IG05
mov rdi, 0xD1FFAB1E
call [rdi]CORINFO_HELP_STOP_FOR_GC
;; size=32 bbWeight=1 PerfScore 8.50
G_M30136_IG05:
- mov rcx, bword ptr [rbp-0x68]
- mov qword ptr [r15+0x08], rcx
+ mov rcx, qword ptr [rbp-0x68]
+ mov qword ptr [r14+0x08], rcx
;; size=8 bbWeight=1 PerfScore 2.00
G_M30136_IG06:
add rsp, 88
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=1 PerfScore 4.25
-; Total bytes of code 159, prolog size 26, PerfScore 40.75, instruction count 45, allocated bytes for code 159 (MethodHash=41088a47) for method (dynamicClass):IL_STUB_PInvoke(ulong):int (FullOpts)
+; Total bytes of code 150, prolog size 22, PerfScore 38.00, instruction count 43, allocated bytes for code 150 (MethodHash=41088a47) for method (dynamicClass):IL_STUB_PInvoke(ulong):int (FullOpts) Larger list of diffs: https://gist.github.com/MihuBot/aca6e91940276158cad2c22544c9f545 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Build completed in 32 minutes.
dotnet/runtime#100823
Diffs
Diffs
Artifacts:
The text was updated successfully, but these errors were encountered: