-130 (-37.46 % of base) - System.ComponentModel.Composition.CompositionException:.ctor(System.ComponentModel.Composition.CompositionError):this
; Assembly listing for method System.ComponentModel.Composition.CompositionException:.ctor(System.ComponentModel.Composition.CompositionError):this (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; 9 single block inlinees; 5 inlinees without PGO data
+; 0 inlinees with PGO data; 11 single block inlinees; 5 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 6, 4.50) ref -> rbx this class-hnd single-def <System.ComponentModel.Composition.CompositionException>
-; V01 arg1 [V01,T02] ( 3, 2.50) ref -> r15 class-hnd single-def <System.ComponentModel.Composition.CompositionError>
+; V00 this [V00,T00] ( 6, 6 ) ref -> rbx this class-hnd single-def <System.ComponentModel.Composition.CompositionException>
+; V01 arg1 [V01,T03] ( 3, 3 ) ref -> r15 class-hnd single-def <System.ComponentModel.Composition.CompositionError>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 5, 5 ) ref -> r14 class-hnd exact single-def "dup spill" <System.ComponentModel.Composition.CompositionError[]>
+; V03 tmp1 [V03,T01] ( 4, 8 ) ref -> r14 class-hnd exact single-def "dup spill" <System.ComponentModel.Composition.CompositionError[]>
;* V04 tmp2 [V04,T10] ( 0, 0 ) ref -> zero-ref single-def
;* V05 tmp3 [V05 ] ( 0, 0 ) ref -> zero-ref single-def
-; V06 tmp4 [V06,T03] ( 4, 3.50) ref -> r15 single-def
-; V07 tmp5 [V07,T07] ( 2, 2 ) ref -> r15 class-hnd "Inline return value spill temp" <System.ComponentModel.Composition.CompositionError[]>
+; V06 tmp4 [V06,T05] ( 2, 2 ) ref -> r15 single-def
+; V07 tmp5 [V07,T06] ( 2, 2 ) ref -> r15 class-hnd "Inline return value spill temp" <System.ComponentModel.Composition.CompositionError[]>
;* V08 tmp6 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <System.Linq.Enumerable+Iterator`1[System.ComponentModel.Composition.CompositionError]>
;* V09 tmp7 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.ComponentModel.Composition.CompositionError[]>
-; V10 tmp8 [V10,T05] ( 3, 2 ) ref -> r15 class-hnd "Inline return value spill temp" <System.ComponentModel.Composition.CompositionError[]>
-; V11 tmp9 [V11,T09] ( 3, 1.50) int -> rax "Inline stloc first use temp"
-; V12 tmp10 [V12,T08] ( 3, 1.50) ref -> r15 class-hnd exact single-def "Inline stloc first use temp" <System.ComponentModel.Composition.CompositionError[]>
-; V13 tmp11 [V13,T06] ( 3, 2 ) ref -> rsi class-hnd "Inline return value spill temp" <System.Collections.ObjectModel.ReadOnlyCollection`1[System.ComponentModel.Composition.CompositionError]>
-; V14 tmp12 [V14,T04] ( 3, 3 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <System.Collections.ObjectModel.ReadOnlyCollection`1[System.ComponentModel.Composition.CompositionError]>
+; V10 tmp8 [V10,T07] ( 2, 2 ) ref -> r15 class-hnd "Inline return value spill temp" <System.ComponentModel.Composition.CompositionError[]>
+;* V11 tmp9 [V11,T11] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+; V12 tmp10 [V12,T04] ( 3, 3 ) ref -> r15 class-hnd exact single-def "Inline stloc first use temp" <System.ComponentModel.Composition.CompositionError[]>
+;* V13 tmp11 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.ComponentModel.Composition.CompositionError[]>
+; V14 tmp12 [V14,T08] ( 2, 2 ) ref -> rsi class-hnd "Inline return value spill temp" <System.Collections.ObjectModel.ReadOnlyCollection`1[System.ComponentModel.Composition.CompositionError]>
+; V15 tmp13 [V15,T02] ( 3, 6 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <System.Collections.ObjectModel.ReadOnlyCollection`1[System.ComponentModel.Composition.CompositionError]>
+; V16 cse0 [V16,T09] ( 2, 2 ) long -> rdi "CSE #02: moderate"
;
; Lcl frame size = 8
G_M19286_IG01:
push rbp
push r15
push r14
push rbx
push rax
lea rbp, [rsp+0x20]
mov rbx, rdi
mov r15, rsi
- ;; size=18 bbWeight=0.50 PerfScore 3.00
+ ;; size=18 bbWeight=1 PerfScore 6.00
G_M19286_IG02:
mov rdi, 0xD1FFAB1E ; System.ComponentModel.Composition.CompositionError[]
mov esi, 1
call CORINFO_HELP_NEWARR_1_OBJ
mov r14, rax
lea rdi, bword ptr [r14+0x10]
mov rsi, r15
call CORINFO_HELP_ASSIGN_REF
mov rsi, 0xD1FFAB1E
mov qword ptr [rbx+0x68], rsi
xor rsi, rsi
mov gword ptr [rbx+0x10], rsi
- ;; size=55 bbWeight=0.50 PerfScore 3.00
+ ;; size=55 bbWeight=1 PerfScore 6.00
G_M19286_IG03:
mov gword ptr [rbx+0x20], rsi
mov rsi, r14
mov rdi, 0xD1FFAB1E ; Microsoft.Internal.Requires:NotNullElements[System.ComponentModel.Composition.CompositionError](System.Collections.Generic.IEnumerable`1[System.ComponentModel.Composition.CompositionError],System.String)
mov rdx, 0xD1FFAB1E ; 'errors'
mov rax, 0xD1FFAB1E ; code for Microsoft.Internal.Requires:NotNullElements[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.String)
call [rax]Microsoft.Internal.Requires:NotNullElements[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.String)
- mov rdi, r14
- call System.SZArrayHelper:get_Count[System.Object]():int:this
- test eax, eax
- jne SHORT G_M19286_IG05
- mov rdi, 0xD1FFAB1E ; global ptr
- test byte ptr [rdi], 1
- je G_M19286_IG12
- ;; size=70 bbWeight=0.50 PerfScore 5.88
-G_M19286_IG04:
- mov rsi, 0xD1FFAB1E ; data for System.Array+EmptyArray`1[System.ComponentModel.Composition.CompositionError]:Value
- mov r15, gword ptr [rsi]
- jmp SHORT G_M19286_IG06
- ;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M19286_IG05:
- movsxd rsi, eax
+ mov esi, 1
mov rdi, 0xD1FFAB1E ; System.ComponentModel.Composition.CompositionError[]
call CORINFO_HELP_NEWARR_1_OBJ
mov r15, rax
+ mov r8d, 1
mov rdi, r14
- mov rsi, r15
- xor edx, edx
- call System.SZArrayHelper:CopyTo[System.Object](System.Object[],int):this
- ;; size=34 bbWeight=0.50 PerfScore 1.75
-G_M19286_IG06:
- test r15, r15
- je G_M19286_IG14
- cmp dword ptr [r15+0x08], 0
- jne SHORT G_M19286_IG09
- ;; size=16 bbWeight=1 PerfScore 5.25
-G_M19286_IG07:
- mov rdi, 0xD1FFAB1E ; global ptr
- test byte ptr [rdi], 1
- je SHORT G_M19286_IG13
- ;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M19286_IG08:
- mov rdi, 0xD1FFAB1E ; data for System.Collections.ObjectModel.ReadOnlyCollection`1[System.ComponentModel.Composition.CompositionError]:<Empty>k__BackingField
- mov rsi, gword ptr [rdi]
- jmp SHORT G_M19286_IG10
- ;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M19286_IG09:
+ mov rdx, r15
+ xor esi, esi
+ xor ecx, ecx
+ mov rax, 0xD1FFAB1E ; code for System.Array:Copy(System.Array,int,System.Array,int,int)
+ call [rax]System.Array:Copy(System.Array,int,System.Array,int,int)
mov rdi, 0xD1FFAB1E ; System.Collections.ObjectModel.ReadOnlyCollection`1[System.ComponentModel.Composition.CompositionError]
call CORINFO_HELP_NEWSFAST
mov r14, rax
lea rdi, bword ptr [r14+0x08]
mov rsi, r15
call CORINFO_HELP_ASSIGN_REF
mov rsi, r14
- ;; size=33 bbWeight=0.50 PerfScore 1.75
-G_M19286_IG10:
lea rdi, bword ptr [rbx+0x70]
call CORINFO_HELP_ASSIGN_REF
nop
- ;; size=10 bbWeight=1 PerfScore 1.75
-G_M19286_IG11:
+ ;; size=133 bbWeight=1 PerfScore 16.50
+G_M19286_IG04:
add rsp, 8
pop rbx
pop r14
pop r15
pop rbp
ret
;; size=11 bbWeight=1 PerfScore 3.25
-G_M19286_IG12:
- mov rdi, 0xD1FFAB1E ; System.Array+EmptyArray`1[System.ComponentModel.Composition.CompositionError]
- call CORINFO_HELP_GET_GCSTATIC_BASE
- jmp G_M19286_IG04
- ;; size=20 bbWeight=0 PerfScore 0.00
-G_M19286_IG13:
- mov rdi, 0xD1FFAB1E ; System.Collections.ObjectModel.ReadOnlyCollection`1[System.ComponentModel.Composition.CompositionError]
- call CORINFO_HELP_GET_GCSTATIC_BASE
- jmp SHORT G_M19286_IG08
- ;; size=17 bbWeight=0 PerfScore 0.00
-G_M19286_IG14:
- mov edi, 2
- mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentNullException(int)
- call [rax]System.ThrowHelper:ThrowArgumentNullException(int)
- int3
- ;; size=18 bbWeight=0 PerfScore 0.00
-; Total bytes of code 347, prolog size 12, PerfScore 32.00, instruction count 79, allocated bytes for code 347 (MethodHash=fe8bb4a9) for method System.ComponentModel.Composition.CompositionException:.ctor(System.ComponentModel.Composition.CompositionError):this (FullOpts)
+; Total bytes of code 217, prolog size 12, PerfScore 31.75, instruction count 52, allocated bytes for code 217 (MethodHash=fe8bb4a9) for method System.ComponentModel.Composition.CompositionException:.ctor(System.ComponentModel.Composition.CompositionError):this (FullOpts)
; ============================================================
-129 (-24.48 % of base) - System.ComponentModel.ExceptionBuilder:CreateCannotGetExportedValue(System.ComponentModel.Composition.Primitives.ComposablePart,System.ComponentModel.Composition.Primitives.ExportDefinition,System.Exception):System.ComponentModel.Composition.CompositionException
; Assembly listing for method System.ComponentModel.ExceptionBuilder:CreateCannotGetExportedValue(System.ComponentModel.Composition.Primitives.ComposablePart,System.ComponentModel.Composition.Primitives.ExportDefinition,System.Exception):System.ComponentModel.Composition.CompositionException (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; 10 single block inlinees; 8 inlinees without PGO data
+; 0 inlinees with PGO data; 12 single block inlinees; 8 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T01] ( 4, 3.50) ref -> rbx class-hnd single-def <System.ComponentModel.Composition.Primitives.ComposablePart>
-; V01 arg1 [V01,T02] ( 4, 3.50) ref -> r15 class-hnd single-def <System.ComponentModel.Composition.Primitives.ExportDefinition>
-; V02 arg2 [V02,T03] ( 4, 3.50) ref -> r14 class-hnd single-def <System.Exception>
+; V00 arg0 [V00,T02] ( 4, 4 ) ref -> rbx class-hnd single-def <System.ComponentModel.Composition.Primitives.ComposablePart>
+; V01 arg1 [V01,T03] ( 4, 4 ) ref -> r15 class-hnd single-def <System.ComponentModel.Composition.Primitives.ExportDefinition>
+; V02 arg2 [V02,T04] ( 4, 4 ) ref -> r14 class-hnd single-def <System.Exception>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T00] ( 6, 8 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <System.ComponentModel.Composition.CompositionException>
-; V05 tmp2 [V05,T04] ( 5, 5 ) ref -> r15 class-hnd exact single-def "dup spill" <System.ComponentModel.Composition.CompositionError[]>
-; V06 tmp3 [V06,T09] ( 2, 2 ) ref -> rbx class-hnd single-def "Inlining Arg" <System.ComponentModel.Composition.CompositionError>
+; V04 tmp1 [V04,T00] ( 6, 12 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <System.ComponentModel.Composition.CompositionException>
+; V05 tmp2 [V05,T01] ( 4, 8 ) ref -> r15 class-hnd exact single-def "dup spill" <System.ComponentModel.Composition.CompositionError[]>
+; V06 tmp3 [V06,T06] ( 2, 4 ) ref -> rbx class-hnd single-def "Inlining Arg" <System.ComponentModel.Composition.CompositionError>
;* V07 tmp4 [V07,T13] ( 0, 0 ) ref -> zero-ref single-def
;* V08 tmp5 [V08 ] ( 0, 0 ) ref -> zero-ref single-def
-; V09 tmp6 [V09,T05] ( 4, 3.50) ref -> rbx single-def
-; V10 tmp7 [V10,T10] ( 2, 2 ) ref -> rbx class-hnd "Inline return value spill temp" <System.ComponentModel.Composition.CompositionError[]>
+; V09 tmp6 [V09,T08] ( 2, 2 ) ref -> rbx single-def
+; V10 tmp7 [V10,T09] ( 2, 2 ) ref -> rbx class-hnd "Inline return value spill temp" <System.ComponentModel.Composition.CompositionError[]>
;* V11 tmp8 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <System.Linq.Enumerable+Iterator`1[System.ComponentModel.Composition.CompositionError]>
;* V12 tmp9 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.ComponentModel.Composition.CompositionError[]>
-; V13 tmp10 [V13,T07] ( 3, 2 ) ref -> rbx class-hnd "Inline return value spill temp" <System.ComponentModel.Composition.CompositionError[]>
-; V14 tmp11 [V14,T12] ( 3, 1.50) int -> rax "Inline stloc first use temp"
-; V15 tmp12 [V15,T11] ( 3, 1.50) ref -> rbx class-hnd exact single-def "Inline stloc first use temp" <System.ComponentModel.Composition.CompositionError[]>
-; V16 tmp13 [V16,T08] ( 3, 2 ) ref -> rsi class-hnd "Inline return value spill temp" <System.Collections.ObjectModel.ReadOnlyCollection`1[System.ComponentModel.Composition.CompositionError]>
-; V17 tmp14 [V17,T06] ( 3, 3 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <System.Collections.ObjectModel.ReadOnlyCollection`1[System.ComponentModel.Composition.CompositionError]>
+; V13 tmp10 [V13,T10] ( 2, 2 ) ref -> rbx class-hnd "Inline return value spill temp" <System.ComponentModel.Composition.CompositionError[]>
+;* V14 tmp11 [V14,T14] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+; V15 tmp12 [V15,T07] ( 3, 3 ) ref -> rbx class-hnd exact single-def "Inline stloc first use temp" <System.ComponentModel.Composition.CompositionError[]>
+;* V16 tmp13 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.ComponentModel.Composition.CompositionError[]>
+; V17 tmp14 [V17,T11] ( 2, 2 ) ref -> rsi class-hnd "Inline return value spill temp" <System.Collections.ObjectModel.ReadOnlyCollection`1[System.ComponentModel.Composition.CompositionError]>
+; V18 tmp15 [V18,T05] ( 3, 6 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <System.Collections.ObjectModel.ReadOnlyCollection`1[System.ComponentModel.Composition.CompositionError]>
+; V19 cse0 [V19,T12] ( 2, 2 ) long -> rdi "CSE #02: moderate"
;
; Lcl frame size = 0
G_M65036_IG01:
push rbp
push r15
push r14
push r13
push rbx
lea rbp, [rsp+0x20]
mov rbx, rdi
mov r15, rsi
mov r14, rdx
;; size=22 bbWeight=1 PerfScore 6.25
G_M65036_IG02:
test rbx, rbx
- je G_M65036_IG18
+ je G_M65036_IG07
test r15, r15
- je G_M65036_IG17
+ je G_M65036_IG06
test r14, r14
- je G_M65036_IG16
- ;; size=27 bbWeight=1 PerfScore 3.75
-G_M65036_IG03:
+ je G_M65036_IG05
mov rdi, 0xD1FFAB1E ; System.ComponentModel.Composition.CompositionException
call CORINFO_HELP_NEWSFAST
mov r13, rax
mov rdi, rbx
mov rsi, r15
mov rdx, r14
mov rax, 0xD1FFAB1E ; code for System.ComponentModel.Composition.ErrorBuilder:CreateCannotGetExportedValue(System.ComponentModel.Composition.Primitives.ComposablePart,System.ComponentModel.Composition.Primitives.ExportDefinition,System.Exception):System.ComponentModel.Composition.CompositionError
call [rax]System.ComponentModel.Composition.ErrorBuilder:CreateCannotGetExportedValue(System.ComponentModel.Composition.Primitives.ComposablePart,System.ComponentModel.Composition.Primitives.ExportDefinition,System.Exception):System.ComponentModel.Composition.CompositionError
mov rbx, rax
mov rdi, 0xD1FFAB1E ; System.ComponentModel.Composition.CompositionError[]
mov esi, 1
call CORINFO_HELP_NEWARR_1_OBJ
mov r15, rax
lea rdi, bword ptr [r15+0x10]
mov rsi, rbx
call CORINFO_HELP_ASSIGN_REF
mov rsi, 0xD1FFAB1E
mov qword ptr [r13+0x68], rsi
xor rsi, rsi
mov gword ptr [r13+0x10], rsi
- ;; size=97 bbWeight=0.50 PerfScore 5.88
-G_M65036_IG04:
+ ;; size=124 bbWeight=1 PerfScore 15.50
+G_M65036_IG03:
mov gword ptr [r13+0x20], rsi
mov rsi, r15
mov rdi, 0xD1FFAB1E ; Microsoft.Internal.Requires:NotNullElements[System.ComponentModel.Composition.CompositionError](System.Collections.Generic.IEnumerable`1[System.ComponentModel.Composition.CompositionError],System.String)
mov rdx, 0xD1FFAB1E ; 'errors'
mov rax, 0xD1FFAB1E ; code for Microsoft.Internal.Requires:NotNullElements[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.String)
call [rax]Microsoft.Internal.Requires:NotNullElements[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.String)
- mov rdi, r15
- call System.SZArrayHelper:get_Count[System.Object]():int:this
- test eax, eax
- jne SHORT G_M65036_IG06
- mov rdi, 0xD1FFAB1E ; global ptr
- test byte ptr [rdi], 1
- je G_M65036_IG13
- ;; size=70 bbWeight=0.50 PerfScore 5.88
-G_M65036_IG05:
- mov rsi, 0xD1FFAB1E ; data for System.Array+EmptyArray`1[System.ComponentModel.Composition.CompositionError]:Value
- mov rbx, gword ptr [rsi]
- jmp SHORT G_M65036_IG07
- ;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M65036_IG06:
- movsxd rsi, eax
+ mov esi, 1
mov rdi, 0xD1FFAB1E ; System.ComponentModel.Composition.CompositionError[]
call CORINFO_HELP_NEWARR_1_OBJ
mov rbx, rax
+ mov r8d, 1
mov rdi, r15
- mov rsi, rbx
- xor edx, edx
- call System.SZArrayHelper:CopyTo[System.Object](System.Object[],int):this
- ;; size=34 bbWeight=0.50 PerfScore 1.75
-G_M65036_IG07:
- test rbx, rbx
- je G_M65036_IG15
- cmp dword ptr [rbx+0x08], 0
- jne SHORT G_M65036_IG10
- ;; size=15 bbWeight=1 PerfScore 5.25
-G_M65036_IG08:
- mov rdi, 0xD1FFAB1E ; global ptr
- test byte ptr [rdi], 1
- je SHORT G_M65036_IG14
- ;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M65036_IG09:
- mov rdi, 0xD1FFAB1E ; data for System.Collections.ObjectModel.ReadOnlyCollection`1[System.ComponentModel.Composition.CompositionError]:<Empty>k__BackingField
- mov rsi, gword ptr [rdi]
- jmp SHORT G_M65036_IG11
- ;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M65036_IG10:
+ mov rdx, rbx
+ xor esi, esi
+ xor ecx, ecx
+ mov rax, 0xD1FFAB1E ; code for System.Array:Copy(System.Array,int,System.Array,int,int)
+ call [rax]System.Array:Copy(System.Array,int,System.Array,int,int)
mov rdi, 0xD1FFAB1E ; System.Collections.ObjectModel.ReadOnlyCollection`1[System.ComponentModel.Composition.CompositionError]
call CORINFO_HELP_NEWSFAST
mov r15, rax
lea rdi, bword ptr [r15+0x08]
mov rsi, rbx
call CORINFO_HELP_ASSIGN_REF
mov rsi, r15
- ;; size=33 bbWeight=0.50 PerfScore 1.75
-G_M65036_IG11:
lea rdi, bword ptr [r13+0x70]
call CORINFO_HELP_ASSIGN_REF
mov rax, r13
- ;; size=12 bbWeight=1 PerfScore 1.75
-G_M65036_IG12:
+ ;; size=135 bbWeight=1 PerfScore 16.50
+G_M65036_IG04:
pop rbx
pop r13
pop r14
pop r15
pop rbp
ret
;; size=9 bbWeight=1 PerfScore 3.50
-G_M65036_IG13:
- mov rdi, 0xD1FFAB1E ; System.Array+EmptyArray`1[System.ComponentModel.Composition.CompositionError]
- call CORINFO_HELP_GET_GCSTATIC_BASE
- jmp G_M65036_IG05
- ;; size=20 bbWeight=0 PerfScore 0.00
-G_M65036_IG14:
- mov rdi, 0xD1FFAB1E ; System.Collections.ObjectModel.ReadOnlyCollection`1[System.ComponentModel.Composition.CompositionError]
- call CORINFO_HELP_GET_GCSTATIC_BASE
- jmp SHORT G_M65036_IG09
- ;; size=17 bbWeight=0 PerfScore 0.00
-G_M65036_IG15:
- mov edi, 2
- mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentNullException(int)
- call [rax]System.ThrowHelper:ThrowArgumentNullException(int)
- int3
- ;; size=18 bbWeight=0 PerfScore 0.00
-G_M65036_IG16:
+G_M65036_IG05:
mov edi, 0x2242
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_M65036_IG17:
+G_M65036_IG06:
mov edi, 0x2174
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_M65036_IG18:
+G_M65036_IG07:
mov edi, 0x2238
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
-; Total bytes of code 527, prolog size 13, PerfScore 42.12, instruction count 116, allocated bytes for code 527 (MethodHash=d76c01f3) for method System.ComponentModel.ExceptionBuilder:CreateCannotGetExportedValue(System.ComponentModel.Composition.Primitives.ComposablePart,System.ComponentModel.Composition.Primitives.ExportDefinition,System.Exception):System.ComponentModel.Composition.CompositionException (FullOpts)
+; Total bytes of code 398, prolog size 13, PerfScore 41.75, instruction count 89, allocated bytes for code 398 (MethodHash=d76c01f3) for method System.ComponentModel.ExceptionBuilder:CreateCannotGetExportedValue(System.ComponentModel.Composition.Primitives.ComposablePart,System.ComponentModel.Composition.Primitives.ExportDefinition,System.Exception):System.ComponentModel.Composition.CompositionException (FullOpts)
; ============================================================
-76 (-41.53 % of base) - Microsoft.Extensions.DependencyModel.CompilationOptions:.cctor()
; Assembly listing for method Microsoft.Extensions.DependencyModel.CompilationOptions:.cctor() (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; 5 single block inlinees; 3 inlinees without PGO data
+; 0 inlinees with PGO data; 7 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments
;
;* V00 loc0 [V00 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Nullable`1[ubyte]>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T01] ( 3, 3 ) ref -> rbx class-hnd exact single-def "impAppendStmt" <System.String[]>
+;* V02 tmp1 [V02,T03] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "impAppendStmt" <System.String[]>
;* V03 tmp2 [V03 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.Nullable`1[ubyte]>
;* V04 tmp3 [V04 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.Nullable`1[ubyte]>
;* V05 tmp4 [V05 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.Nullable`1[ubyte]>
;* V06 tmp5 [V06 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.Nullable`1[ubyte]>
;* V07 tmp6 [V07 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.Nullable`1[ubyte]>
;* V08 tmp7 [V08 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.Nullable`1[ubyte]>
-; V09 tmp8 [V09,T00] ( 11, 21 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <Microsoft.Extensions.DependencyModel.CompilationOptions>
+; V09 tmp8 [V09,T00] ( 11, 22 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <Microsoft.Extensions.DependencyModel.CompilationOptions>
;* V10 tmp9 [V10 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Nullable`1[ubyte]>
-; V11 tmp10 [V11,T03] ( 2, 2 ) ref -> rsi class-hnd "Inline return value spill temp" <System.String[]>
+; V11 tmp10 [V11,T01] ( 2, 2 ) ref -> rsi class-hnd "Inline return value spill temp" <System.String[]>
;* V12 tmp11 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <System.Linq.Enumerable+Iterator`1[System.String]>
;* V13 tmp12 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.String[]>
-; V14 tmp13 [V14,T02] ( 3, 2 ) ref -> rsi class-hnd "Inline return value spill temp" <System.String[]>
-; V15 tmp14 [V15,T05] ( 3, 1.50) int -> rax single-def "Inline stloc first use temp"
-; V16 tmp15 [V16,T04] ( 3, 1.50) ref -> r14 class-hnd exact single-def "Inline stloc first use temp" <System.String[]>
-;* V17 tmp16 [V17 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V00.hasValue (fldOffset=0x0)" P-INDEP
-;* V18 tmp17 [V18 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V00.value (fldOffset=0x1)" P-INDEP
-;* V19 tmp18 [V19,T06] ( 0, 0 ) ubyte -> zero-ref single-def "field V03.hasValue (fldOffset=0x0)" P-INDEP
-;* V20 tmp19 [V20,T07] ( 0, 0 ) ubyte -> zero-ref single-def "field V03.value (fldOffset=0x1)" P-INDEP
-;* V21 tmp20 [V21,T08] ( 0, 0 ) ubyte -> zero-ref single-def "field V04.hasValue (fldOffset=0x0)" P-INDEP
-;* V22 tmp21 [V22,T09] ( 0, 0 ) ubyte -> zero-ref single-def "field V04.value (fldOffset=0x1)" P-INDEP
-;* V23 tmp22 [V23,T10] ( 0, 0 ) ubyte -> zero-ref single-def "field V05.hasValue (fldOffset=0x0)" P-INDEP
-;* V24 tmp23 [V24,T11] ( 0, 0 ) ubyte -> zero-ref single-def "field V05.value (fldOffset=0x1)" P-INDEP
-;* V25 tmp24 [V25,T12] ( 0, 0 ) ubyte -> zero-ref single-def "field V06.hasValue (fldOffset=0x0)" P-INDEP
-;* V26 tmp25 [V26,T13] ( 0, 0 ) ubyte -> zero-ref single-def "field V06.value (fldOffset=0x1)" P-INDEP
-;* V27 tmp26 [V27,T14] ( 0, 0 ) ubyte -> zero-ref single-def "field V07.hasValue (fldOffset=0x0)" P-INDEP
-;* V28 tmp27 [V28,T15] ( 0, 0 ) ubyte -> zero-ref single-def "field V07.value (fldOffset=0x1)" P-INDEP
-;* V29 tmp28 [V29,T16] ( 0, 0 ) ubyte -> zero-ref single-def "field V08.hasValue (fldOffset=0x0)" P-INDEP
-;* V30 tmp29 [V30,T17] ( 0, 0 ) ubyte -> zero-ref single-def "field V08.value (fldOffset=0x1)" P-INDEP
-;* V31 tmp30 [V31,T18] ( 0, 0 ) ubyte -> zero-ref single-def "field V10.hasValue (fldOffset=0x0)" P-INDEP
-;* V32 tmp31 [V32,T19] ( 0, 0 ) ubyte -> zero-ref single-def "field V10.value (fldOffset=0x1)" P-INDEP
+; V14 tmp13 [V14,T02] ( 2, 2 ) ref -> rsi class-hnd "Inline return value spill temp" <System.String[]>
+;* V15 tmp14 [V15,T04] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V16 tmp15 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.String[]>
+;* V17 tmp16 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.String[]>
+;* V18 tmp17 [V18 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V00.hasValue (fldOffset=0x0)" P-INDEP
+;* V19 tmp18 [V19 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V00.value (fldOffset=0x1)" P-INDEP
+;* V20 tmp19 [V20,T05] ( 0, 0 ) ubyte -> zero-ref single-def "field V03.hasValue (fldOffset=0x0)" P-INDEP
+;* V21 tmp20 [V21,T06] ( 0, 0 ) ubyte -> zero-ref single-def "field V03.value (fldOffset=0x1)" P-INDEP
+;* V22 tmp21 [V22,T07] ( 0, 0 ) ubyte -> zero-ref single-def "field V04.hasValue (fldOffset=0x0)" P-INDEP
+;* V23 tmp22 [V23,T08] ( 0, 0 ) ubyte -> zero-ref single-def "field V04.value (fldOffset=0x1)" P-INDEP
+;* V24 tmp23 [V24,T09] ( 0, 0 ) ubyte -> zero-ref single-def "field V05.hasValue (fldOffset=0x0)" P-INDEP
+;* V25 tmp24 [V25,T10] ( 0, 0 ) ubyte -> zero-ref single-def "field V05.value (fldOffset=0x1)" P-INDEP
+;* V26 tmp25 [V26,T11] ( 0, 0 ) ubyte -> zero-ref single-def "field V06.hasValue (fldOffset=0x0)" P-INDEP
+;* V27 tmp26 [V27,T12] ( 0, 0 ) ubyte -> zero-ref single-def "field V06.value (fldOffset=0x1)" P-INDEP
+;* V28 tmp27 [V28,T13] ( 0, 0 ) ubyte -> zero-ref single-def "field V07.hasValue (fldOffset=0x0)" P-INDEP
+;* V29 tmp28 [V29,T14] ( 0, 0 ) ubyte -> zero-ref single-def "field V07.value (fldOffset=0x1)" P-INDEP
+;* V30 tmp29 [V30,T15] ( 0, 0 ) ubyte -> zero-ref single-def "field V08.hasValue (fldOffset=0x0)" P-INDEP
+;* V31 tmp30 [V31,T16] ( 0, 0 ) ubyte -> zero-ref single-def "field V08.value (fldOffset=0x1)" P-INDEP
+;* V32 tmp31 [V32,T17] ( 0, 0 ) ubyte -> zero-ref single-def "field V10.hasValue (fldOffset=0x0)" P-INDEP
+;* V33 tmp32 [V33,T18] ( 0, 0 ) ubyte -> zero-ref single-def "field V10.value (fldOffset=0x1)" P-INDEP
;
; Lcl frame size = 8
G_M20015_IG01:
push rbp
- push r15
- push r14
push rbx
push rax
- lea rbp, [rsp+0x20]
- ;; size=12 bbWeight=0.50 PerfScore 2.75
+ lea rbp, [rsp+0x10]
+ ;; size=8 bbWeight=1 PerfScore 3.50
G_M20015_IG02:
- mov rdi, 0xD1FFAB1E ; const ptr
- mov rbx, gword ptr [rdi]
mov rdi, 0xD1FFAB1E ; Microsoft.Extensions.DependencyModel.CompilationOptions
call CORINFO_HELP_NEWSFAST
- mov r15, rax
- mov rdi, rbx
- call System.SZArrayHelper:get_Count[System.Object]():int:this
- test eax, eax
- jne SHORT G_M20015_IG03
- mov rax, 0xD1FFAB1E ; const ptr
- mov rsi, gword ptr [rax]
- jmp SHORT G_M20015_IG04
- ;; size=58 bbWeight=0.50 PerfScore 5.25
-G_M20015_IG03:
- movsxd rsi, eax
- mov rdi, 0xD1FFAB1E ; System.String[]
- call CORINFO_HELP_NEWARR_1_OBJ
- mov r14, rax
- mov rdi, rbx
- mov rsi, r14
- xor edx, edx
- call System.SZArrayHelper:CopyTo[System.Object](System.Object[],int):this
- mov rsi, r14
- ;; size=37 bbWeight=0.50 PerfScore 1.88
-G_M20015_IG04:
- lea rdi, bword ptr [r15+0x08]
+ mov rbx, rax
+ mov rdi, 0xD1FFAB1E ; const ptr
+ mov rsi, gword ptr [rdi]
+ lea rdi, bword ptr [rbx+0x08]
call CORINFO_HELP_ASSIGN_REF
xor rdi, rdi
- mov gword ptr [r15+0x10], rdi
- ;; size=15 bbWeight=1 PerfScore 2.75
+ mov gword ptr [rbx+0x10], rdi
+ ;; size=46 bbWeight=1 PerfScore 6.50
+G_M20015_IG03:
+ mov gword ptr [rbx+0x18], rdi
+ ;; size=4 bbWeight=1 PerfScore 1.00
+G_M20015_IG04:
+ mov dword ptr [rbx+0x30], edi
+ mov word ptr [rbx+0x34], 0
+ ;; size=9 bbWeight=1 PerfScore 2.00
G_M20015_IG05:
- mov gword ptr [r15+0x18], rdi
+ mov gword ptr [rbx+0x20], rdi
;; size=4 bbWeight=1 PerfScore 1.00
G_M20015_IG06:
- mov dword ptr [r15+0x30], edi
- mov word ptr [r15+0x34], 0
- ;; size=11 bbWeight=1 PerfScore 2.00
+ mov dword ptr [rbx+0x36], edi
+ ;; size=3 bbWeight=1 PerfScore 1.00
G_M20015_IG07:
- mov gword ptr [r15+0x20], rdi
+ mov gword ptr [rbx+0x28], rdi
;; size=4 bbWeight=1 PerfScore 1.00
G_M20015_IG08:
- mov dword ptr [r15+0x36], edi
- ;; size=4 bbWeight=1 PerfScore 1.00
-G_M20015_IG09:
- mov gword ptr [r15+0x28], rdi
- ;; size=4 bbWeight=1 PerfScore 1.00
-G_M20015_IG10:
- mov dword ptr [r15+0x3A], edi
+ mov dword ptr [rbx+0x3A], edi
mov rdi, 0xD1FFAB1E ; data for Microsoft.Extensions.DependencyModel.CompilationOptions:<Default>k__BackingField
- mov rsi, r15
+ mov rsi, rbx
call CORINFO_HELP_ASSIGN_REF
nop
- ;; size=23 bbWeight=1 PerfScore 2.75
-G_M20015_IG11:
+ ;; size=22 bbWeight=1 PerfScore 2.75
+G_M20015_IG09:
add rsp, 8
pop rbx
- pop r14
- pop r15
pop rbp
ret
- ;; size=11 bbWeight=1 PerfScore 3.25
+ ;; size=7 bbWeight=1 PerfScore 2.25
-; Total bytes of code 183, prolog size 12, PerfScore 24.62, instruction count 48, allocated bytes for code 183 (MethodHash=d9fbb1d0) for method Microsoft.Extensions.DependencyModel.CompilationOptions:.cctor() (FullOpts)
+; Total bytes of code 107, prolog size 8, PerfScore 21.00, instruction count 28, allocated bytes for code 107 (MethodHash=d9fbb1d0) for method Microsoft.Extensions.DependencyModel.CompilationOptions:.cctor() (FullOpts)
; ============================================================
-54 (-4.64 % of base) - Microsoft.CSharp.RuntimeBinder.RuntimeBinder:DeferBinding(Microsoft.CSharp.RuntimeBinder.ICSharpBinder,Microsoft.CSharp.RuntimeBinder.ArgumentObject[],System.Dynamic.DynamicMetaObject[],Microsoft.CSharp.RuntimeBinder.Semantics.LocalVariableSymbol[],byref):ubyte:this
; Assembly listing for method Microsoft.CSharp.RuntimeBinder.RuntimeBinder:DeferBinding(Microsoft.CSharp.RuntimeBinder.ICSharpBinder,Microsoft.CSharp.RuntimeBinder.ArgumentObject[],System.Dynamic.DynamicMetaObject[],Microsoft.CSharp.RuntimeBinder.Semantics.LocalVariableSymbol[],byref):ubyte:this (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; 29 single block inlinees; 5 inlinees without PGO data
+; 0 inlinees with PGO data; 31 single block inlinees; 5 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T05] ( 4, 3 ) byref -> r15 this single-def
; V01 arg1 [V01,T03] ( 5, 3.75) ref -> rsi class-hnd single-def <Microsoft.CSharp.RuntimeBinder.ICSharpBinder>
; V02 arg2 [V02,T07] ( 3, 2.50) ref -> r13 class-hnd single-def <Microsoft.CSharp.RuntimeBinder.ArgumentObject[]>
; V03 arg3 [V03,T02] ( 6, 4 ) ref -> rbx class-hnd single-def <System.Dynamic.DynamicMetaObject[]>
; V04 arg4 [V04,T08] ( 3, 2.50) ref -> r12 class-hnd single-def <Microsoft.CSharp.RuntimeBinder.Semantics.LocalVariableSymbol[]>
; V05 arg5 [V05,T06] ( 4, 3 ) byref -> r14 single-def
; V06 loc0 [V06,T04] ( 11, 5.50) ref -> [rbp-0x60] class-hnd exact spill-single-def <Microsoft.CSharp.RuntimeBinder.CSharpInvokeMemberBinder>
;* V07 loc1 [V07 ] ( 0, 0 ) int -> zero-ref
;* V08 loc2 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <Microsoft.CSharp.RuntimeBinder.Semantics.MemberLookup>
-; V09 loc3 [V09,T34] ( 2, 1 ) ref -> rsi class-hnd single-def <Microsoft.CSharp.RuntimeBinder.Semantics.Expr>
+; V09 loc3 [V09,T32] ( 2, 1 ) ref -> rsi class-hnd single-def <Microsoft.CSharp.RuntimeBinder.Semantics.Expr>
; V10 loc4 [V10,T27] ( 3, 1.50) ref -> r15 class-hnd single-def <Microsoft.CSharp.RuntimeBinder.Semantics.SymWithType>
;* V11 loc5 [V11 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <Microsoft.CSharp.RuntimeBinder.Semantics.BindingContext>
-; V12 loc6 [V12,T35] ( 2, 1 ) ref -> r15 class-hnd exact single-def <Microsoft.CSharp.RuntimeBinder.CSharpGetMemberBinder>
+; V12 loc6 [V12,T33] ( 2, 1 ) ref -> r15 class-hnd exact single-def <Microsoft.CSharp.RuntimeBinder.CSharpGetMemberBinder>
; V13 loc7 [V13,T19] ( 4, 2 ) ref -> r12 class-hnd exact single-def <Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo[]>
-; V14 loc8 [V14,T36] ( 2, 1 ) ref -> r13 class-hnd exact single-def <Microsoft.CSharp.RuntimeBinder.CSharpInvokeBinder>
+; V14 loc8 [V14,T34] ( 2, 1 ) ref -> r13 class-hnd exact single-def <Microsoft.CSharp.RuntimeBinder.CSharpInvokeBinder>
; V15 loc9 [V15,T28] ( 3, 1.50) ref -> [rbp-0x68] class-hnd exact spill-single-def <System.Dynamic.DynamicMetaObject[]>
; V16 OutArgs [V16 ] ( 1, 1 ) struct ( 8) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V17 tmp1 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling qmarkNull" <Microsoft.CSharp.RuntimeBinder.CSharpInvokeMemberBinder>
-; V18 tmp2 [V18,T12] ( 3, 3 ) ref -> rdi class-hnd single-def "dup spill" <System.Type[]>
+; V18 tmp2 [V18,T11] ( 3, 3 ) ref -> rdi class-hnd single-def "dup spill" <System.Type[]>
;* V19 tmp3 [V19 ] ( 0, 0 ) ref -> zero-ref single-def
-; V20 tmp4 [V20,T31] ( 3, 1.50) int -> [rbp-0x2C]
-; V21 tmp5 [V21,T13] ( 3, 3 ) ref -> [rbp-0x70] class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.CSharp.RuntimeBinder.Semantics.MemberLookup>
+; V20 tmp4 [V20,T30] ( 3, 1.50) int -> [rbp-0x2C]
+; V21 tmp5 [V21,T12] ( 3, 3 ) ref -> [rbp-0x70] class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.CSharp.RuntimeBinder.Semantics.MemberLookup>
; V22 tmp6 [V22,T20] ( 2, 2 ) ref -> rdi class-hnd exact single-def "impAppendStmt" <System.String>
;* V23 tmp7 [V23 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <Microsoft.CSharp.RuntimeBinder.Semantics.AggregateSymbol>
-; V24 tmp8 [V24,T14] ( 3, 3 ) ref -> r15 class-hnd exact single-def "impAppendStmt" <System.String>
-; V25 tmp9 [V25,T09] ( 4, 4 ) ref -> [rbp-0x78] class-hnd exact spill-single-def "dup spill" <Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo[]>
+; V24 tmp8 [V24,T13] ( 3, 3 ) ref -> r15 class-hnd exact single-def "impAppendStmt" <System.String>
+; V25 tmp9 [V25,T14] ( 3, 3 ) ref -> [rbp-0x78] class-hnd exact spill-single-def "dup spill" <Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo[]>
; V26 tmp10 [V26,T15] ( 3, 3 ) ref -> r12 class-hnd single-def "impAppendStmt" <System.Type>
; V27 tmp11 [V27,T21] ( 2, 2 ) ref -> rsi class-hnd exact single-def "Strict ordering of exceptions for Array store" <Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo>
; V28 tmp12 [V28,T00] ( 7, 7 ) ref -> [rbp-0x80] class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.CSharp.RuntimeBinder.CSharpGetMemberBinder>
;* V29 tmp13 [V29 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Strict ordering of exceptions for Array store" <Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo>
; V30 tmp14 [V30,T26] ( 2, 2 ) int -> [rbp-0x30] spill-single-def "impAppendStmt"
; V31 tmp15 [V31,T01] ( 7, 7 ) ref -> [rbp-0x88] class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.CSharp.RuntimeBinder.CSharpInvokeBinder>
;* V32 tmp16 [V32 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <System.Dynamic.DynamicMetaObject>
;* V33 tmp17 [V33 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V34 tmp18 [V34 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Microsoft.CSharp.RuntimeBinder.Semantics.Symbol>
; V35 tmp19 [V35 ] ( 3, 3 ) struct (16) [rbp-0x40] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <Microsoft.CSharp.RuntimeBinder.RuntimeBinder>
-; V36 tmp20 [V36,T37] ( 2, 1 ) ref -> rsi class-hnd single-def "Inline return value spill temp" <Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo[]>
-; V37 tmp21 [V37,T38] ( 2, 1 ) ref -> rsi class-hnd "Inline return value spill temp" <Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo[]>
+; V36 tmp20 [V36,T35] ( 2, 1 ) ref -> rsi class-hnd single-def "Inline return value spill temp" <Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo[]>
+; V37 tmp21 [V37,T36] ( 2, 1 ) ref -> rsi class-hnd "Inline return value spill temp" <Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo[]>
;* V38 tmp22 [V38 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <System.Linq.Enumerable+Iterator`1[Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo]>
;* V39 tmp23 [V39 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo[]>
-; V40 tmp24 [V40,T29] ( 3, 1.50) ref -> rsi class-hnd "Inline return value spill temp" <Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo[]>
-; V41 tmp25 [V41,T32] ( 3, 1.50) int -> rax "Inline stloc first use temp"
-; V42 tmp26 [V42,T30] ( 3, 1.50) ref -> [rbp-0x90] class-hnd exact spill-single-def "Inline stloc first use temp" <Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo[]>
-; V43 tmp27 [V43,T10] ( 4, 4 ) ref -> rax class-hnd exact single-def "NewObj constructor temp" <Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo>
-; V44 tmp28 [V44 ] ( 3, 3 ) ref -> [rbp-0x48] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inlining Arg" <System.Collections.Generic.IEnumerable`1[Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo]>
-; V45 tmp29 [V45,T16] ( 3, 3 ) ref -> r13 class-hnd single-def "Inlining Arg" <System.Type>
-; V46 tmp30 [V46 ] ( 3, 3 ) struct (16) [rbp-0x58] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <Microsoft.CSharp.RuntimeBinder.RuntimeBinder>
-; V47 tmp31 [V47,T17] ( 3, 3 ) ref -> rax class-hnd exact single-def "Inlining Arg" <System.Dynamic.CallInfo>
-; V48 tmp32 [V48,T39] ( 2, 1 ) ref -> rdx single-def "field V11.<ContextForMemberLookup>k__BackingField (fldOffset=0x0)" P-INDEP
-;* V49 tmp33 [V49 ] ( 0, 0 ) ubyte -> zero-ref "field V11.<Checked>k__BackingField (fldOffset=0x8)" P-INDEP
-; V50 tmp34 [V50,T18] ( 3, 3 ) ref -> rdi single-def "arr expr"
-; V51 tmp35 [V51,T22] ( 2, 2 ) ref -> rdx single-def "argument with side effect"
-; V52 tmp36 [V52,T23] ( 2, 2 ) ref -> rbx single-def "argument with side effect"
-; V53 tmp37 [V53,T24] ( 2, 2 ) ref -> rsi single-def "argument with side effect"
-; V54 cse0 [V54,T33] ( 3, 1.50) int -> r12 "CSE #03: moderate"
-; V55 rat0 [V55,T25] ( 2, 2 ) ref -> rsi "Spilling to split statement for tree"
-; V56 rat1 [V56,T11] ( 5, 3.75) ref -> rsi "replacement local"
-; V57 rat2 [V57,T40] ( 2, 1 ) long -> rdi "CSE for expectedClsNode"
+; V40 tmp24 [V40,T37] ( 2, 1 ) ref -> rsi class-hnd "Inline return value spill temp" <Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo[]>
+;* V41 tmp25 [V41,T40] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+; V42 tmp26 [V42,T29] ( 3, 1.50) ref -> [rbp-0x90] class-hnd exact spill-single-def "Inline stloc first use temp" <Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo[]>
+;* V43 tmp27 [V43 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo[]>
+; V44 tmp28 [V44,T09] ( 4, 4 ) ref -> rax class-hnd exact single-def "NewObj constructor temp" <Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo>
+; V45 tmp29 [V45 ] ( 3, 3 ) ref -> [rbp-0x48] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inlining Arg" <System.Collections.Generic.IEnumerable`1[Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo]>
+; V46 tmp30 [V46,T16] ( 3, 3 ) ref -> r13 class-hnd single-def "Inlining Arg" <System.Type>
+; V47 tmp31 [V47 ] ( 3, 3 ) struct (16) [rbp-0x58] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <Microsoft.CSharp.RuntimeBinder.RuntimeBinder>
+; V48 tmp32 [V48,T17] ( 3, 3 ) ref -> rax class-hnd exact single-def "Inlining Arg" <System.Dynamic.CallInfo>
+; V49 tmp33 [V49,T38] ( 2, 1 ) ref -> rdx single-def "field V11.<ContextForMemberLookup>k__BackingField (fldOffset=0x0)" P-INDEP
+;* V50 tmp34 [V50 ] ( 0, 0 ) ubyte -> zero-ref "field V11.<Checked>k__BackingField (fldOffset=0x8)" P-INDEP
+; V51 tmp35 [V51,T18] ( 3, 3 ) ref -> rdi single-def "arr expr"
+; V52 tmp36 [V52,T22] ( 2, 2 ) ref -> rdx single-def "argument with side effect"
+; V53 tmp37 [V53,T23] ( 2, 2 ) ref -> rbx single-def "argument with side effect"
+; V54 tmp38 [V54,T24] ( 2, 2 ) ref -> rsi single-def "argument with side effect"
+; V55 cse0 [V55,T31] ( 3, 1.50) int -> r12 "CSE #03: moderate"
+; V56 rat0 [V56,T25] ( 2, 2 ) ref -> rsi "Spilling to split statement for tree"
+; V57 rat1 [V57,T10] ( 5, 3.75) ref -> rsi "replacement local"
+; V58 rat2 [V58,T39] ( 2, 1 ) long -> rdi "CSE for expectedClsNode"
;
; Lcl frame size = 120
G_M27258_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
sub rsp, 120
lea rbp, [rsp+0xA0]
xor eax, eax
mov qword ptr [rbp-0x58], rax
vxorps xmm8, xmm8, xmm8
vmovdqu ymmword ptr [rbp-0x50], ymm8
mov r15, rdi
mov r13, rdx
mov rbx, rcx
mov r12, r8
mov r14, r9
;; size=53 bbWeight=1 PerfScore 11.58
G_M27258_IG02:
test rsi, rsi
- je G_M27258_IG17
+ je G_M27258_IG15
;; size=9 bbWeight=1 PerfScore 1.25
G_M27258_IG03:
mov rdi, 0xD1FFAB1E ; Microsoft.CSharp.RuntimeBinder.CSharpInvokeMemberBinder
cmp qword ptr [rsi], rdi
- jne G_M27258_IG17
+ jne G_M27258_IG15
;; size=19 bbWeight=0.25 PerfScore 1.06
G_M27258_IG04:
mov rax, rsi
mov gword ptr [rbp-0x60], rax
mov rdi, gword ptr [rax+0x30]
test rdi, rdi
je SHORT G_M27258_IG05
mov ecx, dword ptr [rdi+0x08]
mov dword ptr [rbp-0x2C], ecx
jmp SHORT G_M27258_IG06
;; size=24 bbWeight=0.50 PerfScore 4.75
G_M27258_IG05:
xor ecx, ecx
mov dword ptr [rbp-0x2C], ecx
;; size=5 bbWeight=0.50 PerfScore 0.62
G_M27258_IG06:
mov rdi, 0xD1FFAB1E ; Microsoft.CSharp.RuntimeBinder.Semantics.MemberLookup
call CORINFO_HELP_NEWSFAST
mov gword ptr [rbp-0x70], rax
mov rdi, rax
mov rcx, 0xD1FFAB1E ; code for Microsoft.CSharp.RuntimeBinder.Semantics.MemberLookup:.ctor():this
call [rcx]Microsoft.CSharp.RuntimeBinder.Semantics.MemberLookup:.ctor():this
mov rdi, r15
mov rsi, gword ptr [rbp-0x60]
mov rdx, r13
mov rcx, r12
mov rax, 0xD1FFAB1E ; code for Microsoft.CSharp.RuntimeBinder.RuntimeBinder:CreateCallingObjectForCall(Microsoft.CSharp.RuntimeBinder.ICSharpInvokeOrInvokeMemberBinder,Microsoft.CSharp.RuntimeBinder.ArgumentObject[],Microsoft.CSharp.RuntimeBinder.Semantics.LocalVariableSymbol[]):Microsoft.CSharp.RuntimeBinder.Semantics.Expr:this
call [rax]Microsoft.CSharp.RuntimeBinder.RuntimeBinder:CreateCallingObjectForCall(Microsoft.CSharp.RuntimeBinder.ICSharpInvokeOrInvokeMemberBinder,Microsoft.CSharp.RuntimeBinder.ArgumentObject[],Microsoft.CSharp.RuntimeBinder.Semantics.LocalVariableSymbol[]):Microsoft.CSharp.RuntimeBinder.Semantics.Expr:this
mov rsi, rax
mov r13, gword ptr [rbp-0x60]
mov rdi, gword ptr [r13+0x10]
mov rdx, gword ptr [r15]
mov dword ptr [rsp], 1
test byte ptr [r13+0x40], 2
setne r9b
movzx r9, r9b
mov ecx, dword ptr [rbp-0x2C]
mov r8, gword ptr [rbp-0x70]
mov rax, 0xD1FFAB1E ; code for Microsoft.CSharp.RuntimeBinder.SymbolTable:LookupMember(System.String,Microsoft.CSharp.RuntimeBinder.Semantics.Expr,Microsoft.CSharp.RuntimeBinder.Semantics.ParentSymbol,int,Microsoft.CSharp.RuntimeBinder.Semantics.MemberLookup,ubyte,ubyte):Microsoft.CSharp.RuntimeBinder.Semantics.SymWithType
call [rax]Microsoft.CSharp.RuntimeBinder.SymbolTable:LookupMember(System.String,Microsoft.CSharp.RuntimeBinder.Semantics.Expr,Microsoft.CSharp.RuntimeBinder.Semantics.ParentSymbol,int,Microsoft.CSharp.RuntimeBinder.Semantics.MemberLookup,ubyte,ubyte):Microsoft.CSharp.RuntimeBinder.Semantics.SymWithType
mov r15, rax
mov rdi, r15
xor rsi, rsi
mov rax, 0xD1FFAB1E ; code for Microsoft.CSharp.RuntimeBinder.Semantics.SymWithType:op_Equality(Microsoft.CSharp.RuntimeBinder.Semantics.SymWithType,Microsoft.CSharp.RuntimeBinder.Semantics.SymWithType):ubyte
call [rax]Microsoft.CSharp.RuntimeBinder.Semantics.SymWithType:op_Equality(Microsoft.CSharp.RuntimeBinder.Semantics.SymWithType,Microsoft.CSharp.RuntimeBinder.Semantics.SymWithType):ubyte
test eax, eax
- jne G_M27258_IG17
+ jne G_M27258_IG15
mov rdi, gword ptr [r15+0x10]
cmp dword ptr [rdi+0x28], 5
- je G_M27258_IG17
+ je G_M27258_IG15
mov r15, gword ptr [r13+0x10]
mov r12, gword ptr [r13+0x28]
mov rdi, 0xD1FFAB1E ; Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo[]
mov esi, 1
call CORINFO_HELP_NEWARR_1_OBJ
mov gword ptr [rbp-0x78], rax
mov rdi, gword ptr [r13+0x38]
cmp dword ptr [rdi+0x08], 0
- jbe G_M27258_IG23
+ jbe G_M27258_IG20
mov rsi, gword ptr [rdi+0x10]
lea rdi, bword ptr [rax+0x10]
;; size=208 bbWeight=0.50 PerfScore 26.38
G_M27258_IG07:
call CORINFO_HELP_ASSIGN_REF
mov rdi, 0xD1FFAB1E ; Microsoft.CSharp.RuntimeBinder.CSharpGetMemberBinder
call CORINFO_HELP_NEWSFAST
mov gword ptr [rbp-0x80], rax
test r15, r15
- je G_M27258_IG22
+ je G_M27258_IG19
lea rdi, bword ptr [rax+0x10]
mov rsi, r15
call CORINFO_HELP_ASSIGN_REF
mov r15, gword ptr [rbp-0x80]
mov word ptr [r15+0x18], 0
- mov rdi, gword ptr [rbp-0x78]
- call System.SZArrayHelper:get_Count[System.Object]():int:this
- test eax, eax
- jne SHORT G_M27258_IG09
- mov rdi, 0xD1FFAB1E ; global ptr
- test byte ptr [rdi], 1
- je G_M27258_IG19
- ;; size=88 bbWeight=0.50 PerfScore 7.88
-G_M27258_IG08:
- mov rsi, 0xD1FFAB1E ; data for System.Array+EmptyArray`1[Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo]:Value
- mov rsi, gword ptr [rsi]
- jmp SHORT G_M27258_IG10
- ;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M27258_IG09:
- movsxd rsi, eax
+ mov esi, 1
mov rdi, 0xD1FFAB1E ; Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo[]
call CORINFO_HELP_NEWARR_1_OBJ
mov rsi, rax
mov gword ptr [rbp-0x90], rsi
+ mov r8d, 1
mov rdi, gword ptr [rbp-0x78]
- xor edx, edx
- call System.SZArrayHelper:CopyTo[System.Object](System.Object[],int):this
+ mov rdx, rsi
+ xor esi, esi
+ xor ecx, ecx
+ mov rax, 0xD1FFAB1E ; code for System.Array:Copy(System.Array,int,System.Array,int,int)
+ call [rax]System.Array:Copy(System.Array,int,System.Array,int,int)
mov rsi, gword ptr [rbp-0x90]
- ;; size=46 bbWeight=0.50 PerfScore 3.00
-G_M27258_IG10:
lea rdi, bword ptr [r15+0x20]
call CORINFO_HELP_ASSIGN_REF
lea rdi, bword ptr [r15+0x28]
mov rsi, r12
call CORINFO_HELP_ASSIGN_REF
vxorps xmm0, xmm0, xmm0
vmovdqu xmmword ptr [rbp-0x40], xmm0
lea rdi, [rbp-0x40]
mov rsi, r12
xor edx, edx
mov rax, 0xD1FFAB1E ; code for Microsoft.CSharp.RuntimeBinder.RuntimeBinder:.ctor(System.Type,ubyte):this
call [rax]Microsoft.CSharp.RuntimeBinder.RuntimeBinder:.ctor(System.Type,ubyte):this
lea rdi, bword ptr [r15+0x30]
lea rsi, bword ptr [rbp-0x40]
call CORINFO_HELP_ASSIGN_BYREF
movsq
mov rsi, r15
mov rdi, 0xD1FFAB1E ; Microsoft.CSharp.RuntimeBinder.BinderEquivalence:TryGetExisting[Microsoft.CSharp.RuntimeBinder.CSharpGetMemberBinder](Microsoft.CSharp.RuntimeBinder.CSharpGetMemberBinder):Microsoft.CSharp.RuntimeBinder.CSharpGetMemberBinder
mov rax, 0xD1FFAB1E ; code for Microsoft.CSharp.RuntimeBinder.BinderEquivalence:TryGetExisting[System.__Canon](System.__Canon):System.__Canon
+ ;; size=211 bbWeight=0.50 PerfScore 14.92
+G_M27258_IG08:
call [rax]Microsoft.CSharp.RuntimeBinder.BinderEquivalence:TryGetExisting[System.__Canon](System.__Canon):System.__Canon
mov r15, rax
mov rdi, r13
mov rax, 0xD1FFAB1E ; code for Microsoft.CSharp.RuntimeBinder.CSharpInvokeMemberBinder:ArgumentInfoArray():Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo[]:this
call [rax]Microsoft.CSharp.RuntimeBinder.CSharpInvokeMemberBinder:ArgumentInfoArray():Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo[]:this
mov r12, rax
mov rdi, 0xD1FFAB1E ; Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo
call CORINFO_HELP_NEWSFAST
xor edi, edi
mov dword ptr [rax+0x10], edi
- ;; size=132 bbWeight=0.50 PerfScore 11.04
-G_M27258_IG11:
+ ;; size=43 bbWeight=0.50 PerfScore 4.75
+G_M27258_IG09:
mov gword ptr [rax+0x08], rdi
cmp dword ptr [r12+0x08], 0
- jbe G_M27258_IG23
+ jbe G_M27258_IG20
lea rdi, bword ptr [r12+0x10]
mov rsi, rax
call CORINFO_HELP_ASSIGN_REF
mov eax, dword ptr [r13+0x40]
mov dword ptr [rbp-0x30], eax
mov rdi, 0xD1FFAB1E ; Microsoft.CSharp.RuntimeBinder.CSharpInvokeBinder
call CORINFO_HELP_NEWSFAST
mov gword ptr [rbp-0x88], rax
mov r13, gword ptr [r13+0x28]
mov gword ptr [rbp-0x48], r12
lea rdi, [rbp-0x48]
mov esi, 1
mov rcx, 0xD1FFAB1E ; code for Microsoft.CSharp.RuntimeBinder.BinderHelper:CreateCallInfo(byref,int):System.Dynamic.CallInfo
call [rcx]Microsoft.CSharp.RuntimeBinder.BinderHelper:CreateCallInfo(byref,int):System.Dynamic.CallInfo
test rax, rax
- je G_M27258_IG21
+ je G_M27258_IG18
mov r12, gword ptr [rbp-0x88]
lea rdi, bword ptr [r12+0x10]
mov rsi, rax
call CORINFO_HELP_ASSIGN_REF
mov edi, dword ptr [rbp-0x30]
mov dword ptr [r12+0x28], edi
lea rdi, bword ptr [r12+0x20]
mov rsi, r13
call CORINFO_HELP_ASSIGN_REF
mov rsi, gword ptr [rbp-0x48]
test rsi, rsi
- je SHORT G_M27258_IG14
+ je SHORT G_M27258_IG12
;; size=146 bbWeight=0.50 PerfScore 14.50
-G_M27258_IG12:
+G_M27258_IG10:
mov rdi, 0xD1FFAB1E ; Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo[]
cmp qword ptr [rsi], rdi
- je SHORT G_M27258_IG14
+ je SHORT G_M27258_IG12
;; size=15 bbWeight=0.25 PerfScore 1.06
-G_M27258_IG13:
+G_M27258_IG11:
xor rsi, rsi
;; size=2 bbWeight=0.12 PerfScore 0.03
-G_M27258_IG14:
+G_M27258_IG12:
lea rdi, bword ptr [r12+0x18]
call CORINFO_HELP_ASSIGN_REF
vxorps xmm0, xmm0, xmm0
vmovdqu xmmword ptr [rbp-0x58], xmm0
lea rdi, [rbp-0x58]
mov rsi, r13
xor edx, edx
mov rax, 0xD1FFAB1E ; code for Microsoft.CSharp.RuntimeBinder.RuntimeBinder:.ctor(System.Type,ubyte):this
call [rax]Microsoft.CSharp.RuntimeBinder.RuntimeBinder:.ctor(System.Type,ubyte):this
lea rdi, bword ptr [r12+0x30]
lea rsi, bword ptr [rbp-0x58]
call CORINFO_HELP_ASSIGN_BYREF
movsq
mov rsi, r12
mov rdi, 0xD1FFAB1E ; Microsoft.CSharp.RuntimeBinder.BinderEquivalence:TryGetExisting[Microsoft.CSharp.RuntimeBinder.CSharpInvokeBinder](Microsoft.CSharp.RuntimeBinder.CSharpInvokeBinder):Microsoft.CSharp.RuntimeBinder.CSharpInvokeBinder
mov rax, 0xD1FFAB1E ; code for Microsoft.CSharp.RuntimeBinder.BinderEquivalence:TryGetExisting[System.__Canon](System.__Canon):System.__Canon
call [rax]Microsoft.CSharp.RuntimeBinder.BinderEquivalence:TryGetExisting[System.__Canon](System.__Canon):System.__Canon
mov r13, rax
mov r12d, dword ptr [rbx+0x08]
dec r12d
movsxd rsi, r12d
mov rdi, 0xD1FFAB1E ; System.Dynamic.DynamicMetaObject[]
call CORINFO_HELP_NEWARR_1_OBJ
mov gword ptr [rbp-0x68], rax
mov r8d, r12d
mov rdi, rbx
mov rdx, rax
mov esi, 1
xor ecx, ecx
mov r9, 0xD1FFAB1E ; code for System.Array:Copy(System.Array,int,System.Array,int,int)
call [r9]System.Array:Copy(System.Array,int,System.Array,int,int)
cmp dword ptr [rbx+0x08], 0
- jbe G_M27258_IG23
+ jbe G_M27258_IG20
mov rbx, gword ptr [rbx+0x10]
mov rdi, 0xD1FFAB1E ; global ptr
test byte ptr [rdi], 1
- je G_M27258_IG20
- ;; size=175 bbWeight=0.50 PerfScore 16.79
-G_M27258_IG15:
+ je SHORT G_M27258_IG17
+ ;; size=171 bbWeight=0.50 PerfScore 16.79
+G_M27258_IG13:
mov rdx, 0xD1FFAB1E ; data for System.Array+EmptyArray`1[System.Dynamic.DynamicMetaObject]:Value
mov rdx, gword ptr [rdx]
mov rsi, rbx
mov rdi, r15
mov rax, 0xD1FFAB1E ; code for System.Dynamic.DynamicMetaObjectBinder:Defer(System.Dynamic.DynamicMetaObject,System.Dynamic.DynamicMetaObject[]):System.Dynamic.DynamicMetaObject:this
cmp dword ptr [rdi], edi
call [rax]System.Dynamic.DynamicMetaObjectBinder:Defer(System.Dynamic.DynamicMetaObject,System.Dynamic.DynamicMetaObject[]):System.Dynamic.DynamicMetaObject:this
mov rsi, rax
mov rdi, r13
mov rdx, gword ptr [rbp-0x68]
mov rax, 0xD1FFAB1E ; code for System.Dynamic.DynamicMetaObjectBinder:Defer(System.Dynamic.DynamicMetaObject,System.Dynamic.DynamicMetaObject[]):System.Dynamic.DynamicMetaObject:this
cmp dword ptr [rdi], edi
call [rax]System.Dynamic.DynamicMetaObjectBinder:Defer(System.Dynamic.DynamicMetaObject,System.Dynamic.DynamicMetaObject[]):System.Dynamic.DynamicMetaObject:this
mov rsi, rax
mov rdi, r14
call CORINFO_HELP_CHECKED_ASSIGN_REF
mov eax, 1
;; size=73 bbWeight=0.50 PerfScore 9.25
+G_M27258_IG14:
+ add rsp, 120
+ pop rbx
+ pop r12
+ pop r13
+ pop r14
+ pop r15
+ pop rbp
+ ret
+ ;; size=15 bbWeight=0.50 PerfScore 2.12
+G_M27258_IG15:
+ xor rax, rax
+ mov gword ptr [r14], rax
+ ;; size=5 bbWeight=0.50 PerfScore 0.62
G_M27258_IG16:
add rsp, 120
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
G_M27258_IG17:
- xor rax, rax
- mov gword ptr [r14], rax
- ;; size=5 bbWeight=0.50 PerfScore 0.62
-G_M27258_IG18:
- add rsp, 120
- pop rbx
- pop r12
- pop r13
- pop r14
- pop r15
- pop rbp
- ret
- ;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M27258_IG19:
- mov rdi, 0xD1FFAB1E ; System.Array+EmptyArray`1[Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo]
- call CORINFO_HELP_GET_GCSTATIC_BASE
- jmp G_M27258_IG08
- ;; size=20 bbWeight=0 PerfScore 0.00
-G_M27258_IG20:
mov rdi, 0xD1FFAB1E ; System.Array+EmptyArray`1[System.Dynamic.DynamicMetaObject]
call CORINFO_HELP_GET_GCSTATIC_BASE
- jmp G_M27258_IG15
- ;; size=20 bbWeight=0 PerfScore 0.00
-G_M27258_IG21:
+ jmp SHORT G_M27258_IG13
+ ;; size=17 bbWeight=0 PerfScore 0.00
+G_M27258_IG18:
mov edi, 0x49AD
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_M27258_IG22:
+G_M27258_IG19:
mov edi, 0x477F
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_M27258_IG23:
+G_M27258_IG20:
call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1163, prolog size 38, PerfScore 116.20, instruction count 265, allocated bytes for code 1163 (MethodHash=1ff29585) for method Microsoft.CSharp.RuntimeBinder.RuntimeBinder:DeferBinding(Microsoft.CSharp.RuntimeBinder.ICSharpBinder,Microsoft.CSharp.RuntimeBinder.ArgumentObject[],System.Dynamic.DynamicMetaObject[],Microsoft.CSharp.RuntimeBinder.Semantics.LocalVariableSymbol[],byref):ubyte:this (FullOpts)
+; Total bytes of code 1109, prolog size 38, PerfScore 111.82, instruction count 256, allocated bytes for code 1109 (MethodHash=1ff29585) for method Microsoft.CSharp.RuntimeBinder.RuntimeBinder:DeferBinding(Microsoft.CSharp.RuntimeBinder.ICSharpBinder,Microsoft.CSharp.RuntimeBinder.ArgumentObject[],System.Dynamic.DynamicMetaObject[],Microsoft.CSharp.RuntimeBinder.Semantics.LocalVariableSymbol[],byref):ubyte:this (FullOpts)
; ============================================================
-16 (-1.36 % of base) - System.Linq.Expressions.Compiler.StackSpiller:RewriteInvocationExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this
; Assembly listing for method System.Linq.Expressions.Compiler.StackSpiller:RewriteInvocationExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (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; 28 single block inlinees; 11 inlinees without PGO data
+; 0 inlinees with PGO data; 30 single block inlinees; 11 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T10] ( 4, 3 ) ref -> r14 this class-hnd single-def <System.Linq.Expressions.Compiler.StackSpiller>
; V01 arg1 [V01,T01] ( 11, 7.25) ref -> rbx class-hnd single-def <System.Linq.Expressions.Expression>
; V02 arg2 [V02,T05] ( 5, 3.50) int -> r15 single-def
; V03 loc0 [V03,T06] ( 9, 5 ) ref -> r13 class-hnd <System.Linq.Expressions.InvocationExpression>
; V04 loc1 [V04,T11] ( 8, 4 ) ref -> r14 class-hnd <System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter>
; V05 loc2 [V05,T12] ( 6, 4 ) ref -> r12 class-hnd <System.Linq.Expressions.LambdaExpression>
;* V06 loc3 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.Linq.Expressions.Compiler.StackSpiller>
;* V07 loc4 [V07 ] ( 0, 0 ) struct (16) zero-ref multireg-ret <System.Linq.Expressions.Compiler.StackSpiller+Result>
;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V09 tmp1 [V09,T04] ( 6, 6 ) ref -> r12 class-hnd exact single-def "NewObj constructor temp" <System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter>
-; V10 tmp2 [V10,T14] ( 6, 3 ) ref -> r15 single-def
+; V10 tmp2 [V10,T19] ( 5, 2.50) ref -> r15 single-def
; V11 tmp3 [V11,T23] ( 2, 2 ) ref -> r12 class-hnd single-def "impAppendStmt" <System.Linq.Expressions.Expression>
-; V12 tmp4 [V12,T15] ( 3, 3 ) ref -> rbx class-hnd "impAppendStmt" <System.Linq.Expressions.Expression[]>
-; V13 tmp5 [V13,T07] ( 5, 5 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <System.Linq.Expressions.InvocationExpressionN>
+; V12 tmp4 [V12,T16] ( 3, 3 ) ref -> r14 class-hnd "impAppendStmt" <System.Linq.Expressions.Expression[]>
+; V13 tmp5 [V13,T07] ( 5, 5 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.Linq.Expressions.InvocationExpressionN>
; V14 tmp6 [V14,T33] ( 3, 1.50) ref -> r15
-; V15 tmp7 [V15,T34] ( 3, 1.50) ref -> r14
+; V15 tmp7 [V15,T34] ( 3, 1.50) ref -> rbx
;* V16 tmp8 [V16 ] ( 0, 0 ) struct (16) zero-ref multireg-ret "Return value temp for multireg return" <System.Linq.Expressions.Compiler.StackSpiller+Result>
-; V17 tmp9 [V17,T00] ( 12, 12 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter>
+; V17 tmp9 [V17,T00] ( 11, 11 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter>
; V18 tmp10 [V18,T08] ( 5, 5 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <System.Linq.Expressions.Compiler.StackSpiller>
-; V19 tmp11 [V19,T16] ( 3, 3 ) ref -> r15 class-hnd "impAppendStmt" <System.Linq.Expressions.Expression[]>
-; V20 tmp12 [V20,T09] ( 5, 5 ) ref -> [rbp-0x50] class-hnd exact spill-single-def "NewObj constructor temp" <System.Linq.Expressions.InvocationExpressionN>
+; V19 tmp11 [V19,T17] ( 3, 3 ) ref -> r15 class-hnd "impAppendStmt" <System.Linq.Expressions.Expression[]>
+; V20 tmp12 [V20,T09] ( 5, 5 ) ref -> [rbp-0x58] class-hnd exact spill-single-def "NewObj constructor temp" <System.Linq.Expressions.InvocationExpressionN>
;* V21 tmp13 [V21 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op "NewObj constructor temp" <System.Linq.Expressions.Compiler.StackSpiller+Result>
; V22 tmp14 [V22,T30] ( 2, 2 ) int -> [rbp-0x2C] spill-single-def "Inlining Arg"
-; V23 tmp15 [V23,T31] ( 2, 2 ) int -> r15 "Inlining Arg"
-; V24 tmp16 [V24,T13] ( 8, 3 ) int -> r15 "Inline stloc first use temp"
-; V25 tmp17 [V25,T35] ( 3, 1.50) ref -> [rbp-0x58] class-hnd exact spill-single-def "Inline stloc first use temp" <System.Linq.Expressions.Expression[]>
-; V26 tmp18 [V26,T24] ( 2, 2 ) ref -> rdi class-hnd single-def "Inlining Arg" <System.Linq.Expressions.Expression[]>
-; V27 tmp19 [V27,T21] ( 3, 2 ) int -> [rbp-0x30] ld-addr-op spill-single-def "Inlining Arg"
+; V23 tmp15 [V23,T31] ( 2, 2 ) int -> rax "Inlining Arg"
+; V24 tmp16 [V24,T13] ( 8, 3 ) int -> [rbp-0x30] spill-single-def "Inline stloc first use temp"
+; V25 tmp17 [V25,T35] ( 3, 1.50) ref -> [rbp-0x60] class-hnd exact spill-single-def "Inline stloc first use temp" <System.Linq.Expressions.Expression[]>
+; V26 tmp18 [V26,T24] ( 2, 2 ) ref -> rsi class-hnd single-def "Inlining Arg" <System.Linq.Expressions.Expression[]>
+; V27 tmp19 [V27,T21] ( 3, 2 ) int -> [rbp-0x34] ld-addr-op spill-single-def "Inlining Arg"
;* V28 tmp20 [V28 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
; V29 tmp21 [V29,T25] ( 2, 2 ) ref -> r13 class-hnd single-def "Inlining Arg" <System.Type>
;* V30 tmp22 [V30 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V31 tmp23 [V31 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Linq.Expressions.Expression>
-; V32 tmp24 [V32,T32] ( 2, 2 ) int -> [rbp-0x34] spill-single-def "Inlining Arg"
-;* V33 tmp25 [V33,T46] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V34 tmp26 [V34,T03] ( 8, 6 ) int -> rbx "Inlining Arg"
+; V32 tmp24 [V32,T32] ( 2, 2 ) int -> [rbp-0x38] spill-single-def "Inlining Arg"
+;* V33 tmp25 [V33,T44] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+; V34 tmp26 [V34,T03] ( 8, 6 ) int -> r14 "Inlining Arg"
;* V35 tmp27 [V35 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V36 tmp28 [V36,T36] ( 3, 1.50) ref -> [rbp-0x60] class-hnd exact spill-single-def "Inline stloc first use temp" <System.Linq.Expressions.Expression[]>
-; V37 tmp29 [V37,T26] ( 2, 2 ) ref -> rdi class-hnd single-def "Inlining Arg" <System.Linq.Expressions.Expression[]>
-; V38 tmp30 [V38,T22] ( 3, 2 ) int -> r14 ld-addr-op "Inlining Arg"
+; V36 tmp28 [V36,T36] ( 3, 1.50) ref -> [rbp-0x68] class-hnd exact spill-single-def "Inline stloc first use temp" <System.Linq.Expressions.Expression[]>
+; V37 tmp29 [V37,T26] ( 2, 2 ) ref -> rsi class-hnd single-def "Inlining Arg" <System.Linq.Expressions.Expression[]>
+; V38 tmp30 [V38,T22] ( 3, 2 ) int -> [rbp-0x3C] ld-addr-op spill-single-def "Inlining Arg"
;* V39 tmp31 [V39 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
; V40 tmp32 [V40,T27] ( 2, 2 ) ref -> r13 class-hnd single-def "Inlining Arg" <System.Type>
-; V41 tmp33 [V41,T40] ( 2, 1 ) ref -> rax "field V07.Node (fldOffset=0x0)" P-INDEP
-; V42 tmp34 [V42,T43] ( 2, 1 ) int -> rdx "field V07.Action (fldOffset=0x8)" P-INDEP
-; V43 tmp35 [V43,T41] ( 2, 1 ) ref -> rax single-def "field V16.Node (fldOffset=0x0)" P-INDEP
-; V44 tmp36 [V44,T44] ( 2, 1 ) int -> rdx "field V16.Action (fldOffset=0x8)" P-INDEP
-; V45 tmp37 [V45,T42] ( 2, 1 ) ref -> rax single-def "field V21.Node (fldOffset=0x0)" P-INDEP
-; V46 tmp38 [V46,T45] ( 2, 1 ) int -> rdx "field V21.Action (fldOffset=0x8)" P-INDEP
+; V41 tmp33 [V41,T38] ( 2, 1 ) ref -> rax "field V07.Node (fldOffset=0x0)" P-INDEP
+; V42 tmp34 [V42,T41] ( 2, 1 ) int -> rdx "field V07.Action (fldOffset=0x8)" P-INDEP
+; V43 tmp35 [V43,T39] ( 2, 1 ) ref -> rax single-def "field V16.Node (fldOffset=0x0)" P-INDEP
+; V44 tmp36 [V44,T42] ( 2, 1 ) int -> rdx "field V16.Action (fldOffset=0x8)" P-INDEP
+; V45 tmp37 [V45,T40] ( 2, 1 ) ref -> rax single-def "field V21.Node (fldOffset=0x0)" P-INDEP
+; V46 tmp38 [V46,T43] ( 2, 1 ) int -> rdx "field V21.Action (fldOffset=0x8)" P-INDEP
; V47 tmp39 [V47,T28] ( 2, 2 ) ref -> rsi single-def "argument with side effect"
-; V48 tmp40 [V48,T17] ( 3, 3 ) ref -> rdi single-def "arr expr"
-; V49 tmp41 [V49,T47] ( 2, 0 ) ref -> rsi single-def "argument with side effect"
-; V50 tmp42 [V50,T48] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
-; V51 tmp43 [V51,T39] ( 3, 1.50) struct (16) [rbp-0x48] do-not-enreg[SFR] multireg-ret must-init "Return value temp for multi-reg return (rejected tail call)." <System.Linq.Expressions.Compiler.StackSpiller+Result>
+; V48 tmp40 [V48,T18] ( 3, 3 ) ref -> rdi single-def "arr expr"
+; V49 tmp41 [V49,T45] ( 2, 0 ) ref -> rsi single-def "argument with side effect"
+; V50 tmp42 [V50,T46] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
+; V51 tmp43 [V51,T37] ( 3, 1.50) struct (16) [rbp-0x50] do-not-enreg[SFR] multireg-ret must-init "Return value temp for multi-reg return (rejected tail call)." <System.Linq.Expressions.Compiler.StackSpiller+Result>
; V52 tmp44 [V52,T29] ( 2, 2 ) ref -> rsi single-def "argument with side effect"
-; V53 tmp45 [V53,T49] ( 2, 0 ) ref -> rsi single-def "argument with side effect"
-; V54 tmp46 [V54,T50] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
-; V55 cse0 [V55,T19] ( 4, 2 ) ref -> [rbp-0x68] spill-single-def "CSE #02: moderate"
-; V56 cse1 [V56,T20] ( 4, 2 ) ref -> r14 "CSE #09: moderate"
-; V57 cse2 [V57,T37] ( 3, 1.50) ref -> rdi "CSE #01: conservative"
-; V58 cse3 [V58,T38] ( 3, 1.50) ref -> rdi "CSE #08: conservative"
-; V59 rat0 [V59,T02] ( 5, 7.50) ref -> r13 "replacement local"
-; V60 rat1 [V60,T18] ( 3, 2.50) long -> rdi "CSE for expectedClsNode"
+; V53 tmp45 [V53,T47] ( 2, 0 ) ref -> rsi single-def "argument with side effect"
+; V54 tmp46 [V54,T48] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
+; V55 cse0 [V55,T14] ( 6, 3 ) ref -> r15 "CSE #01: moderate"
+; V56 cse1 [V56,T15] ( 6, 3 ) ref -> rbx "CSE #07: moderate"
+; V57 rat0 [V57,T02] ( 5, 7.50) ref -> r13 "replacement local"
+; V58 rat1 [V58,T20] ( 3, 2.50) long -> rdi "CSE for expectedClsNode"
;
; Lcl frame size = 72
G_M46656_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
sub rsp, 72
lea rbp, [rsp+0x70]
xor eax, eax
- mov qword ptr [rbp-0x48], rax
+ mov qword ptr [rbp-0x50], rax
mov r14, rdi
mov rbx, rsi
mov r15d, edx
;; size=34 bbWeight=1 PerfScore 8.75
G_M46656_IG02:
mov r13, rbx
test r13, r13
je SHORT G_M46656_IG05
;; size=8 bbWeight=1 PerfScore 1.50
G_M46656_IG03:
mov rdi, 0xD1FFAB1E ; System.Linq.Expressions.InvocationExpression
cmp qword ptr [r13], rdi
je SHORT G_M46656_IG05
;; size=16 bbWeight=0.50 PerfScore 2.12
G_M46656_IG04:
mov rsi, rbx
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_CHKCASTCLASS_SPECIAL
call [rax]CORINFO_HELP_CHKCASTCLASS_SPECIAL
mov r13, rax
;; size=18 bbWeight=0.25 PerfScore 0.94
G_M46656_IG05:
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.Linq.Expressions.InvocationExpression:get_LambdaOperand():System.Linq.Expressions.LambdaExpression:this
cmp dword ptr [rdi], edi
call [rax]System.Linq.Expressions.InvocationExpression:get_LambdaOperand():System.Linq.Expressions.LambdaExpression:this
mov r12, rax
test r12, r12
jne G_M46656_IG13
;; size=29 bbWeight=1 PerfScore 8.00
G_M46656_IG06:
mov rdi, 0xD1FFAB1E ; System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter
call CORINFO_HELP_NEWSFAST
mov r12, rax
mov rdi, rbx
mov rax, qword ptr [rbx]
mov rax, qword ptr [rax+0x48]
call [rax+0x20]System.Linq.Expressions.InvocationExpression:get_ArgumentCount():int:this
inc eax
- mov dword ptr [rbp-0x34], eax
+ mov dword ptr [rbp-0x38], eax
lea rdi, bword ptr [r12+0x08]
mov rsi, r14
call CORINFO_HELP_ASSIGN_REF
mov dword ptr [r12+0x34], r15d
- movsxd rsi, dword ptr [rbp-0x34]
+ movsxd rsi, dword ptr [rbp-0x38]
mov rdi, 0xD1FFAB1E ; System.Linq.Expressions.Expression[]
call CORINFO_HELP_NEWARR_1_OBJ
lea rdi, bword ptr [r12+0x10]
mov rsi, rax
call CORINFO_HELP_ASSIGN_REF
mov r14, r12
mov rsi, gword ptr [rbx+0x10]
mov rdi, r14
mov rax, 0xD1FFAB1E ; code for System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:Add(System.Linq.Expressions.Expression):this
call [rax]System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:Add(System.Linq.Expressions.Expression):this
mov rdi, r14
mov rsi, rbx
mov rax, 0xD1FFAB1E ; code for System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:AddArguments(System.Linq.Expressions.IArgumentProvider):this
call [rax]System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:AddArguments(System.Linq.Expressions.IArgumentProvider):this
cmp dword ptr [r14+0x30], 3
jne SHORT G_M46656_IG07
mov rdi, gword ptr [rbx+0x10]
mov rax, 0xD1FFAB1E ; code for System.Linq.Expressions.Expression:GetInvokeMethod(System.Linq.Expressions.Expression):System.Reflection.MethodInfo
call [rax]System.Linq.Expressions.Expression:GetInvokeMethod(System.Linq.Expressions.Expression):System.Reflection.MethodInfo
mov rsi, rax
mov rdi, r14
mov edx, 1
mov rax, 0xD1FFAB1E ; code for System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:MarkRefArgs(System.Reflection.MethodBase,int):this
call [rax]System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:MarkRefArgs(System.Reflection.MethodBase,int):this
;; size=172 bbWeight=0.50 PerfScore 20.75
G_M46656_IG07:
mov r15, r14
cmp dword ptr [r14+0x30], 0
je G_M46656_IG10
mov rdi, r14
mov rax, 0xD1FFAB1E ; code for System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:EnsureDone():this
call [rax]System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:EnsureDone():this
mov rdi, gword ptr [r15+0x10]
cmp dword ptr [rdi+0x08], 0
- jbe G_M46656_IG24
+ jbe G_M46656_IG23
mov r12, gword ptr [rdi+0x10]
mov rdi, r15
mov rax, 0xD1FFAB1E ; code for System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:EnsureDone():this
call [rax]System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:EnsureDone():this
- mov rdi, gword ptr [r15+0x10]
- mov ebx, dword ptr [rdi+0x08]
- dec ebx
- js G_M46656_IG21
- cmp dword ptr [rdi], edi
- call System.SZArrayHelper:get_Count[System.Object]():int:this
- lea r14d, [rax-0x01]
- cmp r14d, ebx
+ mov rbx, gword ptr [r15+0x10]
+ mov r14d, dword ptr [rbx+0x08]
+ dec r14d
+ mov rsi, rbx
+ test r14d, r14d
jl G_M46656_IG20
- mov r14, gword ptr [r15+0x10]
- cmp dword ptr [r14+0x08], ebx
+ mov eax, dword ptr [rsi+0x08]
+ dec eax
+ mov dword ptr [rbp-0x3C], eax
+ cmp eax, r14d
+ jl G_M46656_IG19
+ cmp dword ptr [rbx+0x08], r14d
je SHORT G_M46656_IG08
- movsxd rsi, ebx
+ movsxd rsi, r14d
mov rdi, 0xD1FFAB1E ; System.Linq.Expressions.Expression[]
call CORINFO_HELP_NEWARR_1_OBJ
- mov gword ptr [rbp-0x60], rax
- mov rdi, r14
- mov r8d, ebx
+ mov gword ptr [rbp-0x68], rax
+ mov rdi, rbx
+ mov r8d, r14d
mov rdx, rax
mov esi, 1
xor ecx, ecx
mov r9, 0xD1FFAB1E ; code for System.Array:Copy(System.Array,int,System.Array,int,int)
call [r9]System.Array:Copy(System.Array,int,System.Array,int,int)
- mov rbx, gword ptr [rbp-0x60]
+ mov r14, gword ptr [rbp-0x68]
jmp SHORT G_M46656_IG09
- ;; size=164 bbWeight=0.50 PerfScore 23.12
+ ;; size=165 bbWeight=0.50 PerfScore 21.75
G_M46656_IG08:
- mov rbx, r14
+ mov r14, rbx
;; size=3 bbWeight=0.50 PerfScore 0.12
G_M46656_IG09:
mov rdi, 0xD1FFAB1E ; System.Linq.Expressions.InvocationExpressionN
call CORINFO_HELP_NEWSFAST
- mov r14, rax
+ mov rbx, rax
mov r13, gword ptr [r13+0x08]
- lea rdi, bword ptr [r14+0x10]
+ lea rdi, bword ptr [rbx+0x10]
mov rsi, r12
call CORINFO_HELP_ASSIGN_REF
- lea rdi, bword ptr [r14+0x08]
+ lea rdi, bword ptr [rbx+0x08]
mov rsi, r13
call CORINFO_HELP_ASSIGN_REF
- lea rdi, bword ptr [r14+0x18]
- mov rsi, rbx
+ lea rdi, bword ptr [rbx+0x18]
+ mov rsi, r14
call CORINFO_HELP_ASSIGN_REF
jmp SHORT G_M46656_IG11
;; size=60 bbWeight=0.50 PerfScore 5.38
G_M46656_IG10:
mov r15, r12
- mov r14, rbx
- ;; size=6 bbWeight=0.50 PerfScore 0.25
+ ;; size=3 bbWeight=0.50 PerfScore 0.12
G_M46656_IG11:
mov rdi, r15
- mov rsi, r14
+ mov rsi, rbx
mov rax, 0xD1FFAB1E ; code for System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:Finish(System.Linq.Expressions.Expression):System.Linq.Expressions.Compiler.StackSpiller+Result:this
call [rax]System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:Finish(System.Linq.Expressions.Expression):System.Linq.Expressions.Compiler.StackSpiller+Result:this
- mov gword ptr [rbp-0x48], rax
- mov qword ptr [rbp-0x40], rdx
- mov rax, gword ptr [rbp-0x48]
- mov edx, dword ptr [rbp-0x40]
+ mov gword ptr [rbp-0x50], rax
+ mov qword ptr [rbp-0x48], rdx
+ mov rax, gword ptr [rbp-0x50]
+ mov edx, dword ptr [rbp-0x48]
;; size=33 bbWeight=0.50 PerfScore 3.88
G_M46656_IG12:
add rsp, 72
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
G_M46656_IG13:
mov rdi, 0xD1FFAB1E ; System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter
call CORINFO_HELP_NEWSFAST
mov rbx, rax
mov rdi, r13
mov rax, qword ptr [r13]
mov rax, qword ptr [rax+0x48]
call [rax+0x20]System.Linq.Expressions.InvocationExpression:get_ArgumentCount():int:this
mov dword ptr [rbp-0x2C], eax
lea rdi, bword ptr [rbx+0x08]
mov rsi, r14
call CORINFO_HELP_ASSIGN_REF
mov dword ptr [rbx+0x34], r15d
movsxd rsi, dword ptr [rbp-0x2C]
mov rdi, 0xD1FFAB1E ; System.Linq.Expressions.Expression[]
call CORINFO_HELP_NEWARR_1_OBJ
lea rdi, bword ptr [rbx+0x10]
mov rsi, rax
call CORINFO_HELP_ASSIGN_REF
mov rdi, rbx
mov rsi, r13
mov rax, 0xD1FFAB1E ; code for System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:AddArguments(System.Linq.Expressions.IArgumentProvider):this
call [rax]System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:AddArguments(System.Linq.Expressions.IArgumentProvider):this
cmp dword ptr [rbx+0x30], 3
jne SHORT G_M46656_IG14
mov rdi, gword ptr [r13+0x10]
mov rax, 0xD1FFAB1E ; code for System.Linq.Expressions.Expression:GetInvokeMethod(System.Linq.Expressions.Expression):System.Reflection.MethodInfo
call [rax]System.Linq.Expressions.Expression:GetInvokeMethod(System.Linq.Expressions.Expression):System.Reflection.MethodInfo
mov rsi, rax
mov rdi, rbx
xor edx, edx
mov rax, 0xD1FFAB1E ; code for System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:MarkRefArgs(System.Reflection.MethodBase,int):this
call [rax]System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:MarkRefArgs(System.Reflection.MethodBase,int):this
;; size=142 bbWeight=0.50 PerfScore 17.75
G_M46656_IG14:
mov rdi, 0xD1FFAB1E ; System.Linq.Expressions.Compiler.StackSpiller
call CORINFO_HELP_NEWSFAST
mov r14, rax
mov rdi, r14
mov esi, r15d
mov rax, 0xD1FFAB1E ; code for System.Linq.Expressions.Compiler.StackSpiller:.ctor(int):this
call [rax]System.Linq.Expressions.Compiler.StackSpiller:.ctor(int):this
mov rdi, r12
mov rsi, r14
mov rax, qword ptr [r12]
mov rax, qword ptr [rax+0x50]
call [rax+0x18]System.Linq.Expressions.LambdaExpression:Accept(System.Linq.Expressions.Compiler.StackSpiller):System.Linq.Expressions.LambdaExpression:this
mov r12, rax
cmp dword ptr [rbx+0x30], 0
jne SHORT G_M46656_IG15
cmp dword ptr [r14+0x1C], 0
- je G_M46656_IG18
+ je G_M46656_IG17
;; size=73 bbWeight=0.50 PerfScore 10.50
G_M46656_IG15:
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:EnsureDone():this
call [rax]System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:EnsureDone():this
- mov rdi, gword ptr [rbx+0x10]
- mov r15d, dword ptr [rdi+0x08]
- dec r15d
- inc r15d
- js G_M46656_IG23
- cmp dword ptr [rdi], edi
- call System.SZArrayHelper:get_Count[System.Object]():int:this
+ mov r15, gword ptr [rbx+0x10]
+ mov eax, dword ptr [r15+0x08]
+ dec eax
+ inc eax
mov dword ptr [rbp-0x30], eax
- cmp eax, r15d
+ mov rsi, r15
+ test eax, eax
jl G_M46656_IG22
- mov rax, gword ptr [rbx+0x10]
- mov gword ptr [rbp-0x68], rax
- cmp dword ptr [rax+0x08], r15d
+ mov ecx, dword ptr [rsi+0x08]
+ mov dword ptr [rbp-0x34], ecx
+ cmp ecx, eax
+ jl G_M46656_IG21
+ cmp dword ptr [r15+0x08], eax
je SHORT G_M46656_IG16
- movsxd rsi, r15d
+ movsxd rsi, eax
mov rdi, 0xD1FFAB1E ; System.Linq.Expressions.Expression[]
call CORINFO_HELP_NEWARR_1_OBJ
- mov gword ptr [rbp-0x58], rax
- mov rdi, gword ptr [rbp-0x68]
- mov r8d, r15d
+ mov gword ptr [rbp-0x60], rax
+ mov rdi, r15
+ mov r8d, dword ptr [rbp-0x30]
mov rdx, rax
xor esi, esi
xor ecx, ecx
mov r9, 0xD1FFAB1E ; code for System.Array:Copy(System.Array,int,System.Array,int,int)
call [r9]System.Array:Copy(System.Array,int,System.Array,int,int)
- mov r15, gword ptr [rbp-0x58]
- jmp SHORT G_M46656_IG17
- ;; size=123 bbWeight=0.50 PerfScore 16.50
+ mov r15, gword ptr [rbp-0x60]
+ ;; size=114 bbWeight=0.50 PerfScore 13.75
G_M46656_IG16:
- mov rax, gword ptr [rbp-0x68]
- mov r15, rax
- ;; size=7 bbWeight=0.50 PerfScore 0.62
-G_M46656_IG17:
mov rdi, 0xD1FFAB1E ; System.Linq.Expressions.InvocationExpressionN
call CORINFO_HELP_NEWSFAST
- mov gword ptr [rbp-0x50], rax
+ mov gword ptr [rbp-0x58], rax
mov r13, gword ptr [r13+0x08]
lea rdi, bword ptr [rax+0x10]
mov rsi, r12
call CORINFO_HELP_ASSIGN_REF
- mov r12, gword ptr [rbp-0x50]
+ mov r12, gword ptr [rbp-0x58]
lea rdi, bword ptr [r12+0x08]
mov rsi, r13
call CORINFO_HELP_ASSIGN_REF
lea rdi, bword ptr [r12+0x18]
mov rsi, r15
call CORINFO_HELP_ASSIGN_REF
mov r13, r12
;; size=68 bbWeight=0.50 PerfScore 5.38
-G_M46656_IG18:
+G_M46656_IG17:
mov rdi, rbx
mov rsi, r13
mov rax, 0xD1FFAB1E ; code for System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:Finish(System.Linq.Expressions.Expression):System.Linq.Expressions.Compiler.StackSpiller+Result:this
call [rax]System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:Finish(System.Linq.Expressions.Expression):System.Linq.Expressions.Compiler.StackSpiller+Result:this
or edx, dword ptr [r14+0x1C]
;; size=22 bbWeight=0.50 PerfScore 3.38
-G_M46656_IG19:
+G_M46656_IG18:
add rsp, 72
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M46656_IG20:
+G_M46656_IG19:
mov edi, 0x47FD
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov rdx, rax
- mov esi, ebx
- mov edi, r14d
- mov rax, 0xD1FFAB1E ; code for System.ArgumentOutOfRangeException:ThrowLess[int](int,int,System.String)
- call [rax]System.ArgumentOutOfRangeException:ThrowLess[int](int,int,System.String)
- int3
- ;; size=41 bbWeight=0 PerfScore 0.00
-G_M46656_IG21:
- mov edi, 0x4809
- mov rsi, 0xD1FFAB1E
- call CORINFO_HELP_STRCNS
- mov rsi, rax
- mov edi, ebx
- mov rax, 0xD1FFAB1E ; code for System.ArgumentOutOfRangeException:ThrowNegative[int](int,System.String)
- call [rax]System.ArgumentOutOfRangeException:ThrowNegative[int](int,System.String)
- int3
- ;; size=38 bbWeight=0 PerfScore 0.00
-G_M46656_IG22:
- mov edi, 0x47FD
- mov rsi, 0xD1FFAB1E
- call CORINFO_HELP_STRCNS
- mov rdx, rax
- mov esi, r15d
- mov edi, dword ptr [rbp-0x30]
+ mov esi, r14d
+ mov edi, dword ptr [rbp-0x3C]
mov rax, 0xD1FFAB1E ; code for System.ArgumentOutOfRangeException:ThrowLess[int](int,int,System.String)
call [rax]System.ArgumentOutOfRangeException:ThrowLess[int](int,int,System.String)
int3
;; size=42 bbWeight=0 PerfScore 0.00
-G_M46656_IG23:
+G_M46656_IG20:
mov edi, 0x4809
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov rsi, rax
- mov edi, r15d
+ mov edi, r14d
mov rax, 0xD1FFAB1E ; code for System.ArgumentOutOfRangeException:ThrowNegative[int](int,System.String)
call [rax]System.ArgumentOutOfRangeException:ThrowNegative[int](int,System.String)
int3
;; size=39 bbWeight=0 PerfScore 0.00
-G_M46656_IG24:
+G_M46656_IG21:
+ mov edi, 0x47FD
+ mov rsi, 0xD1FFAB1E
+ call CORINFO_HELP_STRCNS
+ mov rdx, rax
+ mov esi, dword ptr [rbp-0x30]
+ mov edi, dword ptr [rbp-0x34]
+ mov rax, 0xD1FFAB1E ; code for System.ArgumentOutOfRangeException:ThrowLess[int](int,int,System.String)
+ call [rax]System.ArgumentOutOfRangeException:ThrowLess[int](int,int,System.String)
+ int3
+ ;; size=42 bbWeight=0 PerfScore 0.00
+G_M46656_IG22:
+ mov edi, 0x4809
+ mov rsi, 0xD1FFAB1E
+ call CORINFO_HELP_STRCNS
+ mov rsi, rax
+ mov edi, dword ptr [rbp-0x30]
+ mov rax, 0xD1FFAB1E ; code for System.ArgumentOutOfRangeException:ThrowNegative[int](int,System.String)
+ call [rax]System.ArgumentOutOfRangeException:ThrowNegative[int](int,System.String)
+ int3
+ ;; size=39 bbWeight=0 PerfScore 0.00
+G_M46656_IG23:
call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1174, prolog size 25, PerfScore 133.19, instruction count 284, allocated bytes for code 1174 (MethodHash=8f1b49bf) for method System.Linq.Expressions.Compiler.StackSpiller:RewriteInvocationExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (FullOpts)
+; Total bytes of code 1158, prolog size 25, PerfScore 128.31, instruction count 282, allocated bytes for code 1158 (MethodHash=8f1b49bf) for method System.Linq.Expressions.Compiler.StackSpiller:RewriteInvocationExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (FullOpts)
; ============================================================
-9 (-0.75 % of base) - System.Linq.Expressions.Compiler.StackSpiller+ListBindingRewriter:AsExpression(System.Linq.Expressions.Expression):System.Linq.Expressions.Expression:this
; Assembly listing for method System.Linq.Expressions.Compiler.StackSpiller+ListBindingRewriter:AsExpression(System.Linq.Expressions.Expression):System.Linq.Expressions.Expression:this (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; 39 single block inlinees; 8 inlinees without PGO data
+; 0 inlinees with PGO data; 40 single block inlinees; 8 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T07] ( 9, 14.50) ref -> rbx this class-hnd single-def <System.Linq.Expressions.Compiler.StackSpiller+ListBindingRewriter>
-; V01 arg1 [V01,T28] ( 4, 3.50) ref -> r15 class-hnd single-def <System.Linq.Expressions.Expression>
-; V02 loc0 [V02,T29] ( 4, 4 ) ref -> r14 class-hnd single-def <System.Linq.Expressions.MemberExpression>
-; V03 loc1 [V03,T18] ( 6, 8.50) ref -> r13 class-hnd single-def <System.Linq.Expressions.ParameterExpression>
-; V04 loc2 [V04,T16] ( 8, 9 ) int -> r12
-; V05 loc3 [V05,T17] ( 7, 9 ) ref -> [rbp-0x48] class-hnd exact spill-single-def <System.Linq.Expressions.Expression[]>
-;* V06 loc4 [V06,T38] ( 0, 0 ) int -> zero-ref
-; V07 loc5 [V07,T01] ( 9, 32 ) ref -> [rbp-0x50] class-hnd exact spill-single-def <System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter>
+; V00 this [V00,T08] ( 9, 14.50) ref -> rbx this class-hnd single-def <System.Linq.Expressions.Compiler.StackSpiller+ListBindingRewriter>
+; V01 arg1 [V01,T27] ( 4, 3.50) ref -> r15 class-hnd single-def <System.Linq.Expressions.Expression>
+; V02 loc0 [V02,T28] ( 4, 4 ) ref -> r14 class-hnd single-def <System.Linq.Expressions.MemberExpression>
+; V03 loc1 [V03,T17] ( 6, 8.50) ref -> r13 class-hnd single-def <System.Linq.Expressions.ParameterExpression>
+; V04 loc2 [V04,T15] ( 8, 9 ) int -> r12
+; V05 loc3 [V05,T16] ( 7, 9 ) ref -> [rbp-0x48] class-hnd exact spill-single-def <System.Linq.Expressions.Expression[]>
+;* V06 loc4 [V06,T37] ( 0, 0 ) int -> zero-ref
+; V07 loc5 [V07,T01] ( 8, 28 ) ref -> [rbp-0x50] class-hnd exact spill-single-def <System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter>
;* V08 loc6 [V08 ] ( 0, 0 ) struct (16) zero-ref <System.Linq.Expressions.Compiler.StackSpiller+Result>
;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V10 tmp1 [V10,T31] ( 2, 4 ) ref -> r13 class-hnd exact single-def "non-inline candidate call" <System.Linq.Expressions.Compiler.StackSpiller>
-; V11 tmp2 [V11,T19] ( 4, 8 ) ref -> [rbp-0x58] class-hnd exact spill-single-def "NewObj constructor temp" <System.Linq.Expressions.AssignBinaryExpression>
-; V12 tmp3 [V12,T10] ( 2, 16 ) ref -> [rbp-0x60] class-hnd spill-single-def "impAppendStmt" <System.Reflection.MethodInfo>
+; V10 tmp1 [V10,T30] ( 2, 4 ) ref -> r13 class-hnd exact single-def "non-inline candidate call" <System.Linq.Expressions.Compiler.StackSpiller>
+; V11 tmp2 [V11,T18] ( 4, 8 ) ref -> [rbp-0x58] class-hnd exact spill-single-def "NewObj constructor temp" <System.Linq.Expressions.AssignBinaryExpression>
+; V12 tmp3 [V12,T11] ( 2, 16 ) ref -> [rbp-0x60] class-hnd spill-single-def "impAppendStmt" <System.Reflection.MethodInfo>
; V13 tmp4 [V13,T00] ( 7, 48 ) ref -> [rbp-0x68] class-hnd exact spill-single-def "NewObj constructor temp" <System.Linq.Expressions.InstanceMethodCallExpressionN>
-; V14 tmp5 [V14,T33] ( 3, 3 ) ref -> [rbp-0x70] class-hnd exact spill-single-def "dup spill" <System.Linq.Expressions.Expression[]>
+; V14 tmp5 [V14,T32] ( 3, 3 ) ref -> [rbp-0x70] class-hnd exact spill-single-def "dup spill" <System.Linq.Expressions.Expression[]>
;* V15 tmp6 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "impAppendStmt" <System.RuntimeType>
-; V16 tmp7 [V16,T30] ( 4, 4 ) ref -> [rbp-0x78] class-hnd exact spill-single-def "NewObj constructor temp" <System.Linq.Expressions.AssignBinaryExpression>
-; V17 tmp8 [V17,T34] ( 2, 2 ) ref -> rax class-hnd single-def "Strict ordering of exceptions for Array store" <System.Linq.Expressions.BlockExpression>
+; V16 tmp7 [V16,T29] ( 4, 4 ) ref -> [rbp-0x78] class-hnd exact spill-single-def "NewObj constructor temp" <System.Linq.Expressions.AssignBinaryExpression>
+; V17 tmp8 [V17,T33] ( 2, 2 ) ref -> rax class-hnd single-def "Strict ordering of exceptions for Array store" <System.Linq.Expressions.BlockExpression>
;* V18 tmp9 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Linq.Expressions.MemberBinding>
-; V19 tmp10 [V19,T32] ( 2, 4 ) ref -> rsi class-hnd single-def "Inlining Arg" <System.Type>
+; V19 tmp10 [V19,T31] ( 2, 4 ) ref -> rsi class-hnd single-def "Inlining Arg" <System.Type>
;* V20 tmp11 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Collections.ObjectModel.ReadOnlyCollection`1[System.Linq.Expressions.ElementInit]>
;* V21 tmp12 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Collections.ObjectModel.ReadOnlyCollection`1[System.Linq.Expressions.ElementInit]>
;* V22 tmp13 [V22 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.__Canon>
-; V23 tmp14 [V23,T21] ( 3, 8 ) ref -> [rbp-0x80] class-hnd "Inline return value spill temp" <System.Linq.Expressions.Expression[]>
-; V24 tmp15 [V24,T12] ( 2, 16 ) int -> rcx "Inlining Arg"
+; V23 tmp14 [V23,T20] ( 3, 8 ) ref -> [rbp-0x80] class-hnd "Inline return value spill temp" <System.Linq.Expressions.Expression[]>
+; V24 tmp15 [V24,T13] ( 2, 16 ) int -> rdx "Inlining Arg"
; V25 tmp16 [V25,T05] ( 8, 20 ) int -> [rbp-0x2C] spill-single-def "Inline stloc first use temp"
-; V26 tmp17 [V26,T24] ( 3, 6 ) ref -> [rbp-0x88] class-hnd exact spill-single-def "Inline stloc first use temp" <System.Linq.Expressions.Expression[]>
-; V27 tmp18 [V27,T11] ( 2, 16 ) ref -> rdi class-hnd "Inlining Arg" <System.Linq.Expressions.Expression[]>
-; V28 tmp19 [V28,T09] ( 3, 16 ) int -> [rbp-0x30] ld-addr-op spill-single-def "Inlining Arg"
+; V26 tmp17 [V26,T23] ( 3, 6 ) ref -> [rbp-0x88] class-hnd exact spill-single-def "Inline stloc first use temp" <System.Linq.Expressions.Expression[]>
+; V27 tmp18 [V27,T12] ( 2, 16 ) ref -> rsi class-hnd "Inlining Arg" <System.Linq.Expressions.Expression[]>
+; V28 tmp19 [V28,T10] ( 3, 16 ) int -> [rbp-0x30] ld-addr-op spill-single-def "Inlining Arg"
;* V29 tmp20 [V29 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-; V30 tmp21 [V30,T06] ( 3, 20 ) ref -> [rbp-0x90] class-hnd "Inlining Arg" <System.Linq.Expressions.Expression>
+; V30 tmp21 [V30,T07] ( 3, 20 ) ref -> [rbp-0x90] class-hnd "Inlining Arg" <System.Linq.Expressions.Expression>
;* V31 tmp22 [V31 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Linq.Expressions.Compiler.StackSpiller+Result>
; V32 tmp23 [V32,T02] ( 7, 28 ) ref -> rdi class-hnd "Inlining Arg" <System.Collections.Generic.List`1[System.Linq.Expressions.Expression]>
-; V33 tmp24 [V33,T25] ( 3, 6 ) ref -> rcx class-hnd "Inline stloc first use temp" <System.Linq.Expressions.Expression[]>
-; V34 tmp25 [V34,T20] ( 4, 8 ) int -> rdx "Inline stloc first use temp"
-; V35 tmp26 [V35,T22] ( 2, 8 ) ref -> [rbp-0x98] class-hnd spill-single-def "Inlining Arg" <System.Collections.Generic.List`1[System.Linq.Expressions.Expression]>
+; V33 tmp24 [V33,T24] ( 3, 6 ) ref -> rcx class-hnd "Inline stloc first use temp" <System.Linq.Expressions.Expression[]>
+; V34 tmp25 [V34,T19] ( 4, 8 ) int -> rdx "Inline stloc first use temp"
+; V35 tmp26 [V35,T21] ( 2, 8 ) ref -> [rbp-0x98] class-hnd spill-single-def "Inlining Arg" <System.Collections.Generic.List`1[System.Linq.Expressions.Expression]>
; V36 tmp27 [V36,T14] ( 3, 12 ) ref -> [rbp-0xA0] class-hnd exact spill-single-def "NewObj constructor temp" <System.Linq.Expressions.Compiler.SpilledExpressionBlock>
;* V37 tmp28 [V37 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V38 tmp29 [V38 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Type>
-; V39 tmp30 [V39,T35] ( 2, 2 ) ref -> rbx class-hnd single-def "Inlining Arg" <System.Linq.Expressions.MemberBinding>
-; V40 tmp31 [V40,T36] ( 2, 2 ) ref -> rax class-hnd single-def "Inlining Arg" <System.Linq.Expressions.MemberExpression>
-; V41 tmp32 [V41,T26] ( 3, 6 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.Linq.Expressions.Compiler.SpilledExpressionBlock>
+; V39 tmp30 [V39,T34] ( 2, 2 ) ref -> rbx class-hnd single-def "Inlining Arg" <System.Linq.Expressions.MemberBinding>
+; V40 tmp31 [V40,T35] ( 2, 2 ) ref -> rax class-hnd single-def "Inlining Arg" <System.Linq.Expressions.MemberExpression>
+; V41 tmp32 [V41,T25] ( 3, 6 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.Linq.Expressions.Compiler.SpilledExpressionBlock>
;* V42 tmp33 [V42 ] ( 0, 0 ) ref -> zero-ref "field V08.Node (fldOffset=0x0)" P-INDEP
;* V43 tmp34 [V43 ] ( 0, 0 ) int -> zero-ref "field V08.Action (fldOffset=0x8)" P-INDEP
;* V44 tmp35 [V44 ] ( 0, 0 ) ref -> zero-ref "field V31.Node (fldOffset=0x0)" P-INDEP
;* V45 tmp36 [V45 ] ( 0, 0 ) int -> zero-ref "field V31.Action (fldOffset=0x8)" P-INDEP
; V46 tmp37 [V46,T04] ( 3, 24 ) ref -> rdi "arr expr"
-; V47 tmp38 [V47,T39] ( 2, 0 ) ref -> rsi "argument with side effect"
-; V48 tmp39 [V48,T40] ( 2, 0 ) ref -> rdx "argument with side effect"
-; V49 tmp40 [V49,T27] ( 3, 6 ) ref -> rax single-def "argument with side effect"
-; V50 tmp41 [V50,T37] ( 2, 2 ) ref -> rsi single-def "argument with side effect"
-; V51 cse0 [V51,T15] ( 3, 12 ) ref -> rdi "CSE #01: moderate"
-; V52 cse1 [V52,T13] ( 4, 12 ) ref -> [rbp-0xA8] spill-single-def "CSE #02: moderate"
-; V53 cse2 [V53,T08] ( 4, 16 ) int -> [rbp-0x34] spill-single-def "CSE #05: moderate"
-; V54 cse3 [V54,T23] ( 5, 7 ) int -> [rbp-0x38] spill-single-def "CSE #04: moderate"
-; V55 rat0 [V55,T03] ( 7, 25 ) long -> [rbp-0x40] "Widened IV V06"
+; V47 tmp38 [V47,T38] ( 2, 0 ) ref -> rsi "argument with side effect"
+; V48 tmp39 [V48,T39] ( 2, 0 ) ref -> rdx "argument with side effect"
+; V49 tmp40 [V49,T26] ( 3, 6 ) ref -> rax single-def "argument with side effect"
+; V50 tmp41 [V50,T36] ( 2, 2 ) ref -> rsi single-def "argument with side effect"
+; V51 cse0 [V51,T06] ( 6, 20 ) ref -> [rbp-0xA8] spill-single-def "CSE #01: moderate"
+; V52 cse1 [V52,T09] ( 4, 16 ) int -> [rbp-0x34] spill-single-def "CSE #04: moderate"
+; V53 cse2 [V53,T22] ( 5, 7 ) int -> [rbp-0x38] spill-single-def "CSE #03: moderate"
+; V54 rat0 [V54,T03] ( 7, 25 ) long -> [rbp-0x40] "Widened IV V06"
;
; Lcl frame size = 136
G_M46073_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
sub rsp, 136
lea rbp, [rsp+0xB0]
mov rbx, rdi
mov r15, rsi
;; size=31 bbWeight=1 PerfScore 7.25
G_M46073_IG02:
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.Linq.Expressions.Compiler.StackSpiller+BindingRewriter:RequireNoValueProperty():this
call [rax]System.Linq.Expressions.Compiler.StackSpiller+BindingRewriter:RequireNoValueProperty():this
mov rsi, gword ptr [rbx+0x08]
mov rsi, gword ptr [rsi+0x08]
mov rdi, r15
mov rax, 0xD1FFAB1E ; code for System.Linq.Expressions.MemberExpression:Make(System.Linq.Expressions.Expression,System.Reflection.MemberInfo):System.Linq.Expressions.MemberExpression
call [rax]System.Linq.Expressions.MemberExpression:Make(System.Linq.Expressions.Expression,System.Reflection.MemberInfo):System.Linq.Expressions.MemberExpression
mov r14, rax
mov r13, gword ptr [rbx+0x10]
mov rdi, r14
mov rax, qword ptr [r14]
mov rax, qword ptr [rax+0x40]
call [rax+0x28]System.Linq.Expressions.Expression:get_Type():System.Type:this
mov rsi, rax
mov rdi, gword ptr [r13+0x10]
mov rax, 0xD1FFAB1E ; code for System.Linq.Expressions.Compiler.StackSpiller+TempMaker:Temp(System.Type):System.Linq.Expressions.ParameterExpression:this
cmp dword ptr [rdi], edi
call [rax]System.Linq.Expressions.Compiler.StackSpiller+TempMaker:Temp(System.Type):System.Linq.Expressions.ParameterExpression:this
mov r13, rax
mov rdi, gword ptr [rbx+0x20]
mov rdi, gword ptr [rdi+0x08]
mov r11, 0xD1FFAB1E ; code for System.Collections.Generic.ICollection`1[System.__Canon]:get_Count():int:this
call [r11]System.Collections.Generic.ICollection`1[System.__Canon]:get_Count():int:this
mov r12d, eax
lea esi, [r12+0x02]
movsxd rsi, esi
mov rdi, 0xD1FFAB1E ; System.Linq.Expressions.Expression[]
call CORINFO_HELP_NEWARR_1_OBJ
mov gword ptr [rbp-0x48], rax
mov rdi, 0xD1FFAB1E ; System.Linq.Expressions.AssignBinaryExpression
call CORINFO_HELP_NEWSFAST
mov gword ptr [rbp-0x58], rax
lea rdi, bword ptr [rax+0x10]
mov rsi, r13
call CORINFO_HELP_ASSIGN_REF
mov rax, gword ptr [rbp-0x58]
lea rdi, bword ptr [rax+0x08]
mov rsi, r14
call CORINFO_HELP_ASSIGN_REF
mov r14, gword ptr [rbp-0x48]
mov eax, dword ptr [r14+0x08]
mov dword ptr [rbp-0x38], eax
test eax, eax
je G_M46073_IG20
lea rdi, bword ptr [r14+0x10]
mov rsi, gword ptr [rbp-0x58]
call CORINFO_HELP_ASSIGN_REF
xor eax, eax
test r12d, r12d
jle G_M46073_IG11
;; size=223 bbWeight=1 PerfScore 55.75
G_M46073_IG03:
mov rdi, gword ptr [rbx+0x28]
cmp eax, dword ptr [rdi+0x08]
jae G_M46073_IG20
mov rcx, gword ptr [rdi+8*rax+0x10]
mov gword ptr [rbp-0x50], rcx
mov rdi, gword ptr [rbx+0x20]
mov rdi, gword ptr [rdi+0x08]
mov qword ptr [rbp-0x40], rax
mov esi, eax
mov r11, 0xD1FFAB1E ; code for System.Collections.Generic.IList`1[System.__Canon]:get_Item(int):System.__Canon:this
call [r11]System.Collections.Generic.IList`1[System.__Canon]:get_Item(int):System.__Canon:this
mov rax, gword ptr [rax+0x08]
mov gword ptr [rbp-0x60], rax
mov rcx, gword ptr [rbp-0x50]
cmp byte ptr [rcx], cl
mov rdi, rcx
mov rdx, 0xD1FFAB1E ; code for System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:EnsureDone():this
call [rdx]System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:EnsureDone():this
mov rax, gword ptr [rbp-0x50]
- mov rdi, gword ptr [rax+0x10]
- mov ecx, dword ptr [rdi+0x08]
- dec ecx
- inc ecx
- mov dword ptr [rbp-0x2C], ecx
- test ecx, ecx
+ mov rcx, gword ptr [rax+0x10]
+ mov gword ptr [rbp-0xA8], rcx
+ mov edx, dword ptr [rcx+0x08]
+ dec edx
+ inc edx
+ mov dword ptr [rbp-0x2C], edx
+ mov rsi, rcx
+ test edx, edx
jl G_M46073_IG19
- cmp dword ptr [rdi], edi
- call System.SZArrayHelper:get_Count[System.Object]():int:this
- mov dword ptr [rbp-0x30], eax
- mov ecx, dword ptr [rbp-0x2C]
- cmp eax, ecx
+ mov r8d, dword ptr [rsi+0x08]
+ mov dword ptr [rbp-0x30], r8d
+ cmp r8d, edx
jl G_M46073_IG18
- mov rax, gword ptr [rbp-0x50]
- mov rdx, gword ptr [rax+0x10]
- mov gword ptr [rbp-0xA8], rdx
- cmp dword ptr [rdx+0x08], ecx
+ cmp dword ptr [rcx+0x08], edx
je SHORT G_M46073_IG05
- ;; size=145 bbWeight=4 PerfScore 204.00
+ ;; size=136 bbWeight=4 PerfScore 181.00
G_M46073_IG04:
- movsxd rsi, ecx
+ movsxd rsi, edx
mov rdi, 0xD1FFAB1E ; System.Linq.Expressions.Expression[]
call CORINFO_HELP_NEWARR_1_OBJ
mov gword ptr [rbp-0x88], rax
mov rdi, gword ptr [rbp-0xA8]
mov r8d, dword ptr [rbp-0x2C]
mov rdx, rax
xor esi, esi
xor ecx, ecx
mov r9, 0xD1FFAB1E ; code for System.Array:Copy(System.Array,int,System.Array,int,int)
call [r9]System.Array:Copy(System.Array,int,System.Array,int,int)
mov rax, gword ptr [rbp-0x88]
mov gword ptr [rbp-0x80], rax
jmp SHORT G_M46073_IG06
;; size=69 bbWeight=2 PerfScore 25.00
G_M46073_IG05:
- mov rdx, gword ptr [rbp-0xA8]
- mov gword ptr [rbp-0x80], rdx
+ mov rcx, gword ptr [rbp-0xA8]
+ mov gword ptr [rbp-0x80], rcx
;; size=11 bbWeight=2 PerfScore 4.00
G_M46073_IG06:
mov rdi, 0xD1FFAB1E ; System.Linq.Expressions.InstanceMethodCallExpressionN
call CORINFO_HELP_NEWSFAST
mov gword ptr [rbp-0x68], rax
lea rdi, bword ptr [rax+0x08]
mov rsi, gword ptr [rbp-0x60]
call CORINFO_HELP_ASSIGN_REF
mov rax, gword ptr [rbp-0x68]
lea rdi, bword ptr [rax+0x10]
mov rsi, r13
call CORINFO_HELP_ASSIGN_REF
mov rax, gword ptr [rbp-0x68]
lea rdi, bword ptr [rax+0x18]
mov rsi, gword ptr [rbp-0x80]
call CORINFO_HELP_ASSIGN_REF
mov rax, gword ptr [rbp-0x68]
mov gword ptr [rbp-0x90], rax
mov rdi, gword ptr [rbp-0x50]
mov rdx, 0xD1FFAB1E ; code for System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:EnsureDone():this
call [rdx]System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:EnsureDone():this
mov rax, gword ptr [rbp-0x50]
cmp dword ptr [rax+0x30], 3
mov rcx, gword ptr [rbp-0x90]
jne G_M46073_IG10
;; size=113 bbWeight=4 PerfScore 93.00
G_M46073_IG07:
mov rdi, gword ptr [rax+0x18]
inc dword ptr [rdi+0x14]
mov rcx, gword ptr [rdi+0x08]
mov edx, dword ptr [rdi+0x10]
cmp dword ptr [rcx+0x08], edx
ja SHORT G_M46073_IG08
mov rsi, gword ptr [rbp-0x68]
mov rcx, 0xD1FFAB1E ; code for System.Collections.Generic.List`1[System.__Canon]:AddWithResize(System.__Canon):this
call [rcx]System.Collections.Generic.List`1[System.__Canon]:AddWithResize(System.__Canon):this
jmp SHORT G_M46073_IG09
;; size=37 bbWeight=2 PerfScore 38.50
G_M46073_IG08:
lea esi, [rdx+0x01]
mov dword ptr [rdi+0x10], esi
movsxd rsi, edx
mov rdi, rcx
mov rdx, gword ptr [rbp-0x68]
mov rcx, 0xD1FFAB1E ; code for CORINFO_HELP_ARRADDR_ST
call [rcx]CORINFO_HELP_ARRADDR_ST
;; size=28 bbWeight=2 PerfScore 12.50
G_M46073_IG09:
mov rdi, gword ptr [rbp-0x50]
mov rax, gword ptr [rdi+0x18]
mov gword ptr [rbp-0x98], rax
mov rdi, 0xD1FFAB1E ; System.Linq.Expressions.Compiler.SpilledExpressionBlock
call CORINFO_HELP_NEWSFAST
mov rcx, rax
mov gword ptr [rbp-0xA0], rcx
lea rdi, bword ptr [rcx+0x08]
mov rsi, gword ptr [rbp-0x98]
call CORINFO_HELP_ASSIGN_REF
mov rcx, gword ptr [rbp-0xA0]
;; size=63 bbWeight=2 PerfScore 20.00
G_M46073_IG10:
mov rax, qword ptr [rbp-0x40]
inc eax
mov dword ptr [rbp-0x34], eax
cmp eax, dword ptr [rbp-0x38]
jae G_M46073_IG20
mov edi, eax
lea rdi, bword ptr [r14+8*rdi+0x10]
mov rsi, rcx
call CORINFO_HELP_ASSIGN_REF
mov eax, dword ptr [rbp-0x34]
mov rdi, rax
cmp edi, r12d
mov rax, rdi
jl G_M46073_IG03
;; size=51 bbWeight=4 PerfScore 42.00
G_M46073_IG11:
mov rdi, r13
mov rax, qword ptr [r13]
mov rax, qword ptr [rax+0x40]
call [rax+0x28]System.Linq.Expressions.Expression:get_Type():System.Type:this
mov rdi, rax
mov rax, qword ptr [rax]
mov rax, qword ptr [rax+0x78]
call [rax+0x08]System.Type:IsValueTypeImpl():ubyte:this
test eax, eax
jne SHORT G_M46073_IG13
;; size=31 bbWeight=1 PerfScore 15.75
G_M46073_IG12:
lea edi, [r12+0x01]
cmp edi, dword ptr [rbp-0x38]
jae G_M46073_IG20
inc r12d
mov edi, r12d
lea rdi, bword ptr [r14+8*rdi+0x10]
mov rsi, 0xD1FFAB1E ; const ptr
mov rsi, gword ptr [rsi]
call CORINFO_HELP_ASSIGN_REF
jmp G_M46073_IG15
;; size=48 bbWeight=0.50 PerfScore 5.12
G_M46073_IG13:
mov rdi, 0xD1FFAB1E ; System.Linq.Expressions.Expression[]
mov esi, 1
call CORINFO_HELP_NEWARR_1_OBJ
mov gword ptr [rbp-0x70], rax
mov rbx, gword ptr [rbx+0x08]
mov rdi, 0xD1FFAB1E ; System.Linq.Expressions.AssignBinaryExpression
call CORINFO_HELP_NEWSFAST
mov gword ptr [rbp-0x78], rax
mov rsi, gword ptr [rbx+0x08]
mov rdi, r15
mov rcx, 0xD1FFAB1E ; code for System.Linq.Expressions.MemberExpression:Make(System.Linq.Expressions.Expression,System.Reflection.MemberInfo):System.Linq.Expressions.MemberExpression
call [rcx]System.Linq.Expressions.MemberExpression:Make(System.Linq.Expressions.Expression,System.Reflection.MemberInfo):System.Linq.Expressions.MemberExpression
mov rbx, gword ptr [rbp-0x78]
lea rdi, bword ptr [rbx+0x10]
mov rsi, rax
call CORINFO_HELP_ASSIGN_REF
lea rdi, bword ptr [rbx+0x08]
mov rsi, r13
call CORINFO_HELP_ASSIGN_REF
mov r15, gword ptr [rbp-0x70]
lea rdi, bword ptr [r15+0x10]
mov rsi, rbx
call CORINFO_HELP_ASSIGN_REF
mov rdi, 0xD1FFAB1E ; global ptr
test byte ptr [rdi], 1
je SHORT G_M46073_IG17
;; size=125 bbWeight=0.50 PerfScore 11.88
G_M46073_IG14:
mov rsi, 0xD1FFAB1E ; data for System.Collections.ObjectModel.ReadOnlyCollection`1[System.Linq.Expressions.ParameterExpression]:<Empty>k__BackingField
mov rsi, gword ptr [rsi]
mov rdx, r15
mov rdi, 0xD1FFAB1E ; 'System.Void'
mov rax, 0xD1FFAB1E ; code for System.Linq.Expressions.Expression:Block(System.Type,System.Collections.Generic.IEnumerable`1[System.Linq.Expressions.ParameterExpression],System.Collections.Generic.IEnumerable`1[System.Linq.Expressions.Expression]):System.Linq.Expressions.BlockExpression
call [rax]System.Linq.Expressions.Expression:Block(System.Type,System.Collections.Generic.IEnumerable`1[System.Linq.Expressions.ParameterExpression],System.Collections.Generic.IEnumerable`1[System.Linq.Expressions.Expression]):System.Linq.Expressions.BlockExpression
lea edi, [r12+0x01]
cmp edi, dword ptr [rbp-0x38]
jae G_M46073_IG20
lea edi, [r12+0x01]
lea rdi, bword ptr [r14+8*rdi+0x10]
mov rsi, rax
call CORINFO_HELP_ASSIGN_REF
;; size=70 bbWeight=0.50 PerfScore 6.12
G_M46073_IG15:
mov rdi, 0xD1FFAB1E ; System.Linq.Expressions.Compiler.SpilledExpressionBlock
call CORINFO_HELP_NEWSFAST
mov rbx, rax
lea rdi, bword ptr [rbx+0x08]
mov rsi, r14
call CORINFO_HELP_ASSIGN_REF
mov rax, rbx
;; size=33 bbWeight=1 PerfScore 3.50
G_M46073_IG16:
add rsp, 136
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=18 bbWeight=1 PerfScore 4.25
G_M46073_IG17:
mov rdi, 0xD1FFAB1E ; System.Collections.ObjectModel.ReadOnlyCollection`1[System.Linq.Expressions.ParameterExpression]
call CORINFO_HELP_GET_GCSTATIC_BASE
jmp G_M46073_IG14
;; size=20 bbWeight=0 PerfScore 0.00
G_M46073_IG18:
mov edi, 0x47FD
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov rdx, rax
mov esi, dword ptr [rbp-0x2C]
mov edi, dword ptr [rbp-0x30]
mov rax, 0xD1FFAB1E ; code for System.ArgumentOutOfRangeException:ThrowLess[int](int,int,System.String)
call [rax]System.ArgumentOutOfRangeException:ThrowLess[int](int,int,System.String)
int3
;; size=42 bbWeight=0 PerfScore 0.00
G_M46073_IG19:
mov edi, 0x4809
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov rsi, rax
mov edi, dword ptr [rbp-0x2C]
mov rax, 0xD1FFAB1E ; code for System.ArgumentOutOfRangeException:ThrowNegative[int](int,System.String)
call [rax]System.ArgumentOutOfRangeException:ThrowNegative[int](int,System.String)
int3
;; size=39 bbWeight=0 PerfScore 0.00
G_M46073_IG20:
call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1203, prolog size 25, PerfScore 548.62, instruction count 275, allocated bytes for code 1203 (MethodHash=f4a44c06) for method System.Linq.Expressions.Compiler.StackSpiller+ListBindingRewriter:AsExpression(System.Linq.Expressions.Expression):System.Linq.Expressions.Expression:this (FullOpts)
+; Total bytes of code 1194, prolog size 25, PerfScore 525.62, instruction count 272, allocated bytes for code 1194 (MethodHash=f4a44c06) for method System.Linq.Expressions.Compiler.StackSpiller+ListBindingRewriter:AsExpression(System.Linq.Expressions.Expression):System.Linq.Expressions.Expression:this (FullOpts)
; ============================================================
-7 (-2.39 % of base) - System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:get_Item(int,int):System.Linq.Expressions.Expression[]:this
; Assembly listing for method System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:get_Item(int,int):System.Linq.Expressions.Expression[]:this (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; 3 single block inlinees; 4 inlinees without PGO data
+; 0 inlinees with PGO data; 4 single block inlinees; 4 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 6, 5.50) ref -> r15 this class-hnd single-def <System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter>
+; V00 this [V00,T02] ( 5, 4.50) ref -> r14 this class-hnd single-def <System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter>
; V01 arg1 [V01,T00] ( 7, 5.50) int -> rbx single-def
-; V02 arg2 [V02,T02] ( 6, 5 ) int -> r14
-; V03 loc0 [V03,T03] ( 8, 5 ) int -> r14
-; V04 loc1 [V04,T07] ( 3, 1.50) ref -> r15 class-hnd exact single-def <System.Linq.Expressions.Expression[]>
+; V02 arg2 [V02,T01] ( 6, 5 ) int -> r15
+; V03 loc0 [V03,T03] ( 8, 5 ) int -> r15
+; V04 loc1 [V04,T07] ( 3, 1.50) ref -> r14 class-hnd exact single-def <System.Linq.Expressions.Expression[]>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T05] ( 2, 4 ) ref -> rdi class-hnd single-def "Inlining Arg" <System.Linq.Expressions.Expression[]>
-; V07 tmp2 [V07,T04] ( 3, 4 ) int -> r13 ld-addr-op "Inlining Arg"
+; V06 tmp1 [V06,T06] ( 2, 4 ) ref -> rsi class-hnd single-def "Inlining Arg" <System.Linq.Expressions.Expression[]>
+; V07 tmp2 [V07,T05] ( 3, 4 ) int -> r14 ld-addr-op "Inlining Arg"
;* V08 tmp3 [V08 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
; V09 tmp4 [V09,T08] ( 2, 0 ) ref -> rsi single-def "argument with side effect"
; V10 tmp5 [V10,T09] ( 2, 0 ) ref -> rsi single-def "argument with side effect"
; V11 tmp6 [V11,T10] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
-; V12 cse0 [V12,T06] ( 4, 3 ) ref -> r13 "CSE #02: aggressive"
+; V12 cse0 [V12,T04] ( 7, 5 ) ref -> r13 multi-def "CSE #01: aggressive"
;
; Lcl frame size = 0
G_M14820_IG01:
push rbp
push r15
push r14
push r13
push rbx
lea rbp, [rsp+0x20]
- mov r15, rdi
+ mov r14, rdi
mov ebx, esi
- mov r14d, edx
+ mov r15d, edx
;; size=21 bbWeight=1 PerfScore 6.25
G_M14820_IG02:
- mov rdi, r15
+ mov rdi, r14
mov rax, 0xD1FFAB1E ; code for System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:EnsureDone():this
call [rax]System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:EnsureDone():this
- test r14d, r14d
+ test r15d, r15d
jge SHORT G_M14820_IG04
;; size=20 bbWeight=1 PerfScore 4.75
G_M14820_IG03:
- mov rdi, gword ptr [r15+0x10]
- add r14d, dword ptr [rdi+0x08]
+ mov r13, gword ptr [r14+0x10]
+ add r15d, dword ptr [r13+0x08]
;; size=8 bbWeight=0.50 PerfScore 2.50
G_M14820_IG04:
- sub r14d, ebx
- inc r14d
- mov rdi, gword ptr [r15+0x10]
- test r14d, r14d
+ sub r15d, ebx
+ inc r15d
+ mov r13, gword ptr [r14+0x10]
+ mov rsi, r13
+ test r15d, r15d
jl G_M14820_IG11
test ebx, ebx
jl G_M14820_IG10
- cmp dword ptr [rdi], edi
- call System.SZArrayHelper:get_Count[System.Object]():int:this
- mov r13d, eax
- sub r13d, ebx
- cmp r13d, r14d
+ mov r14d, dword ptr [rsi+0x08]
+ sub r14d, ebx
+ cmp r14d, r15d
jl SHORT G_M14820_IG09
- mov r13, gword ptr [r15+0x10]
- cmp dword ptr [r13+0x08], r14d
+ cmp dword ptr [r13+0x08], r15d
je SHORT G_M14820_IG07
- ;; size=55 bbWeight=1 PerfScore 16.75
+ ;; size=48 bbWeight=1 PerfScore 12.75
G_M14820_IG05:
- movsxd rsi, r14d
+ movsxd rsi, r15d
mov rdi, 0xD1FFAB1E ; System.Linq.Expressions.Expression[]
call CORINFO_HELP_NEWARR_1_OBJ
- mov r15, rax
+ mov r14, rax
mov rdi, r13
mov esi, ebx
- mov rdx, r15
- mov r8d, r14d
+ mov rdx, r14
+ mov r8d, r15d
xor ecx, ecx
mov rax, 0xD1FFAB1E ; code for System.Array:Copy(System.Array,int,System.Array,int,int)
call [rax]System.Array:Copy(System.Array,int,System.Array,int,int)
- mov rax, r15
+ mov rax, r14
;; size=49 bbWeight=0.50 PerfScore 3.25
G_M14820_IG06:
pop rbx
pop r13
pop r14
pop r15
pop rbp
ret
;; size=9 bbWeight=0.50 PerfScore 1.75
G_M14820_IG07:
mov rax, r13
;; size=3 bbWeight=0.50 PerfScore 0.12
G_M14820_IG08:
pop rbx
pop r13
pop r14
pop r15
pop rbp
ret
;; size=9 bbWeight=0.50 PerfScore 1.75
G_M14820_IG09:
mov edi, 0x47FD
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov rdx, rax
- mov esi, r14d
- mov edi, r13d
+ mov esi, r15d
+ mov edi, r14d
mov rax, 0xD1FFAB1E ; code for System.ArgumentOutOfRangeException:ThrowLess[int](int,int,System.String)
call [rax]System.ArgumentOutOfRangeException:ThrowLess[int](int,int,System.String)
int3
;; size=42 bbWeight=0 PerfScore 0.00
G_M14820_IG10:
mov edi, 0x47FD
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov rsi, rax
mov edi, ebx
mov rax, 0xD1FFAB1E ; code for System.ArgumentOutOfRangeException:ThrowNegative[int](int,System.String)
call [rax]System.ArgumentOutOfRangeException:ThrowNegative[int](int,System.String)
int3
;; size=38 bbWeight=0 PerfScore 0.00
G_M14820_IG11:
mov edi, 0x4809
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov rsi, rax
- mov edi, r14d
+ mov edi, r15d
mov rax, 0xD1FFAB1E ; code for System.ArgumentOutOfRangeException:ThrowNegative[int](int,System.String)
call [rax]System.ArgumentOutOfRangeException:ThrowNegative[int](int,System.String)
int3
;; size=39 bbWeight=0 PerfScore 0.00
-; Total bytes of code 293, prolog size 13, PerfScore 37.12, instruction count 82, allocated bytes for code 293 (MethodHash=8d08c61b) for method System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:get_Item(int,int):System.Linq.Expressions.Expression[]:this (FullOpts)
+; Total bytes of code 286, prolog size 13, PerfScore 33.12, instruction count 80, allocated bytes for code 286 (MethodHash=8d08c61b) for method System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:get_Item(int,int):System.Linq.Expressions.Expression[]:this (FullOpts)
; ============================================================
-6 (-3.64 % of base) - System.Linq.Expressions.Expression:GetDelegateType(System.Type[]):System.Type
; Assembly listing for method System.Linq.Expressions.Expression:GetDelegateType(System.Type[]):System.Type (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; 0 single block inlinees; 2 inlinees without PGO data
+; 0 inlinees with PGO data; 1 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
; V00 arg0 [V00,T00] ( 6, 6 ) ref -> rbx class-hnd single-def <System.Type[]>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
; Lcl frame size = 8
G_M54830_IG01:
push rbp
push rbx
push rax
lea rbp, [rsp+0x10]
mov rbx, rdi
;; size=11 bbWeight=1 PerfScore 3.75
G_M54830_IG02:
test rbx, rbx
je SHORT G_M54830_IG05
- mov rdi, rbx
- call System.SZArrayHelper:get_Count[System.Object]():int:this
- test eax, eax
+ cmp dword ptr [rbx+0x08], 0
je SHORT G_M54830_IG04
mov rsi, rbx
mov rdi, 0xD1FFAB1E ; System.Dynamic.Utils.ContractUtils:RequiresNotNullItems[System.Type](System.Collections.Generic.IList`1[System.Type],System.String)
mov rdx, 0xD1FFAB1E ; 'typeArgs'
mov rax, 0xD1FFAB1E ; code for System.Dynamic.Utils.ContractUtils:RequiresNotNullItems[System.__Canon](System.Collections.Generic.IList`1[System.__Canon],System.String)
call [rax]System.Dynamic.Utils.ContractUtils:RequiresNotNullItems[System.__Canon](System.Collections.Generic.IList`1[System.__Canon],System.String)
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.Linq.Expressions.Compiler.DelegateHelpers:MakeDelegateType(System.Type[]):System.Type
- ;; size=65 bbWeight=1 PerfScore 8.25
+ ;; size=59 bbWeight=1 PerfScore 9.75
G_M54830_IG03:
add rsp, 8
pop rbx
pop rbp
tail.jmp [rax]System.Linq.Expressions.Compiler.DelegateHelpers:MakeDelegateType(System.Type[]):System.Type
;; size=9 bbWeight=1 PerfScore 3.25
G_M54830_IG04:
mov edi, 0x30FF
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov rdi, rax
mov rax, 0xD1FFAB1E ; code for System.Linq.Expressions.Error:NonEmptyCollectionRequired(System.String):System.ArgumentException
call [rax]System.Linq.Expressions.Error:NonEmptyCollectionRequired(System.String):System.ArgumentException
mov rdi, rax
call CORINFO_HELP_THROW
int3
;; size=44 bbWeight=0 PerfScore 0.00
G_M54830_IG05:
mov edi, 0x30FF
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
-; Total bytes of code 165, prolog size 8, PerfScore 15.25, instruction count 38, allocated bytes for code 165 (MethodHash=af2a29d1) for method System.Linq.Expressions.Expression:GetDelegateType(System.Type[]):System.Type (FullOpts)
+; Total bytes of code 159, prolog size 8, PerfScore 16.75, instruction count 36, allocated bytes for code 159 (MethodHash=af2a29d1) for method System.Linq.Expressions.Expression:GetDelegateType(System.Type[]):System.Type (FullOpts)
; ============================================================
-5 (-0.52 % of base) - System.Linq.Expressions.Compiler.StackSpiller:RewriteMethodCallExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this
; Assembly listing for method System.Linq.Expressions.Compiler.StackSpiller:RewriteMethodCallExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (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; 13 inlinees without PGO data
+; 0 inlinees with PGO data; 27 single block inlinees; 13 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T07] ( 3, 3 ) ref -> r15 this class-hnd single-def <System.Linq.Expressions.Compiler.StackSpiller>
-; V01 arg1 [V01,T01] ( 13, 10.25) ref -> rbx class-hnd <System.Linq.Expressions.Expression>
+; V01 arg1 [V01,T00] ( 13, 10.25) ref -> rbx class-hnd <System.Linq.Expressions.Expression>
; V02 arg2 [V02,T08] ( 3, 3 ) int -> r14 single-def
-; V03 loc0 [V03,T16] ( 4, 2.50) ref -> r13 class-hnd single-def <System.Linq.Expressions.MethodCallExpression>
-; V04 loc1 [V04,T00] ( 19, 12.50) ref -> r12 class-hnd exact single-def <System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter>
+; V03 loc0 [V03,T18] ( 4, 2.50) ref -> r13 class-hnd single-def <System.Linq.Expressions.MethodCallExpression>
+; V04 loc1 [V04,T01] ( 17, 11.50) ref -> r12 class-hnd exact single-def <System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V06 tmp1 [V06,T02] ( 5, 10 ) ref -> r12 class-hnd exact single-def "NewObj constructor temp" <System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter>
;* V07 tmp2 [V07 ] ( 0, 0 ) struct (16) zero-ref multireg-ret "Return value temp for multireg return" <System.Linq.Expressions.Compiler.StackSpiller+Result>
; V08 tmp3 [V08,T22] ( 2, 2 ) ref -> rbx class-hnd single-def "impAppendStmt" <System.Reflection.MethodInfo>
-; V09 tmp4 [V09,T10] ( 4, 4 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <System.Linq.Expressions.MethodCallExpressionN>
+; V09 tmp4 [V09,T10] ( 4, 4 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <System.Linq.Expressions.MethodCallExpressionN>
; V10 tmp5 [V10,T23] ( 2, 2 ) ref -> rbx class-hnd single-def "impAppendStmt" <System.Reflection.MethodInfo>
; V11 tmp6 [V11,T24] ( 2, 2 ) ref -> r15 class-hnd single-def "impAppendStmt" <System.Linq.Expressions.Expression>
-; V12 tmp7 [V12,T06] ( 5, 5 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <System.Linq.Expressions.InstanceMethodCallExpressionN>
+; V12 tmp7 [V12,T06] ( 5, 5 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <System.Linq.Expressions.InstanceMethodCallExpressionN>
; V13 tmp8 [V13,T12] ( 2, 4 ) int -> [rbp-0x2C] spill-single-def "Inlining Arg"
; V14 tmp9 [V14,T25] ( 2, 2 ) ref -> rdi class-hnd single-def "Inlining Arg" <System.Linq.Expressions.Expression>
-;* V15 tmp10 [V15,T36] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V16 tmp11 [V16,T30] ( 3, 1.50) ref -> r14 class-hnd "Inline return value spill temp" <System.Linq.Expressions.Expression[]>
-; V17 tmp12 [V17,T04] ( 8, 6 ) int -> r14 "Inlining Arg"
+;* V15 tmp10 [V15,T34] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+; V16 tmp11 [V16,T30] ( 3, 1.50) ref -> r13 class-hnd "Inline return value spill temp" <System.Linq.Expressions.Expression[]>
+; V17 tmp12 [V17,T04] ( 8, 6 ) int -> r13 "Inlining Arg"
;* V18 tmp13 [V18 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
; V19 tmp14 [V19,T31] ( 3, 1.50) ref -> [rbp-0x50] class-hnd exact spill-single-def "Inline stloc first use temp" <System.Linq.Expressions.Expression[]>
-; V20 tmp15 [V20,T26] ( 2, 2 ) ref -> rdi class-hnd single-def "Inlining Arg" <System.Linq.Expressions.Expression[]>
-; V21 tmp16 [V21,T20] ( 3, 2 ) int -> r13 ld-addr-op "Inlining Arg"
+; V20 tmp15 [V20,T26] ( 2, 2 ) ref -> rsi class-hnd single-def "Inlining Arg" <System.Linq.Expressions.Expression[]>
+; V21 tmp16 [V21,T20] ( 3, 2 ) int -> [rbp-0x30] ld-addr-op spill-single-def "Inlining Arg"
;* V22 tmp17 [V22 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
; V23 tmp18 [V23,T32] ( 3, 1.50) ref -> r14 class-hnd "Inline return value spill temp" <System.Linq.Expressions.Expression[]>
-; V24 tmp19 [V24,T05] ( 8, 6 ) int -> r13 "Inlining Arg"
+; V24 tmp19 [V24,T05] ( 8, 6 ) int -> r15 "Inlining Arg"
;* V25 tmp20 [V25 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
; V26 tmp21 [V26,T33] ( 3, 1.50) ref -> r14 class-hnd exact single-def "Inline stloc first use temp" <System.Linq.Expressions.Expression[]>
-; V27 tmp22 [V27,T27] ( 2, 2 ) ref -> rdi class-hnd single-def "Inlining Arg" <System.Linq.Expressions.Expression[]>
-; V28 tmp23 [V28,T21] ( 3, 2 ) int -> r15 ld-addr-op "Inlining Arg"
+; V27 tmp22 [V27,T27] ( 2, 2 ) ref -> rsi class-hnd single-def "Inlining Arg" <System.Linq.Expressions.Expression[]>
+; V28 tmp23 [V28,T21] ( 3, 2 ) int -> r14 ld-addr-op "Inlining Arg"
;* V29 tmp24 [V29 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
; V30 tmp25 [V30,T28] ( 2, 2 ) ref -> rax single-def "field V07.Node (fldOffset=0x0)" P-INDEP
; V31 tmp26 [V31,T29] ( 2, 2 ) int -> rdx "field V07.Action (fldOffset=0x8)" P-INDEP
; V32 tmp27 [V32,T11] ( 2, 4 ) ref -> rsi single-def "argument with side effect"
-; V33 tmp28 [V33,T13] ( 3, 3 ) ref -> rsi single-def "arr expr"
-; V34 tmp29 [V34,T37] ( 2, 0 ) ref -> rsi single-def "argument with side effect"
-; V35 tmp30 [V35,T38] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
-; V36 tmp31 [V36,T14] ( 3, 3 ) ref -> rdi single-def "arr expr"
-; V37 tmp32 [V37,T39] ( 2, 0 ) ref -> rsi single-def "argument with side effect"
-; V38 tmp33 [V38,T40] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
-; V39 tmp34 [V39,T15] ( 3, 3 ) struct (16) [rbp-0x40] do-not-enreg[SFR] multireg-ret must-init "Return value temp for multi-reg return (rejected tail call)." <System.Linq.Expressions.Compiler.StackSpiller+Result>
+; V33 tmp28 [V33,T15] ( 3, 3 ) ref -> rsi single-def "arr expr"
+; V34 tmp29 [V34,T35] ( 2, 0 ) ref -> rsi single-def "argument with side effect"
+; V35 tmp30 [V35,T36] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
+; V36 tmp31 [V36,T16] ( 3, 3 ) ref -> rdi single-def "arr expr"
+; V37 tmp32 [V37,T37] ( 2, 0 ) ref -> rsi single-def "argument with side effect"
+; V38 tmp33 [V38,T38] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
+; V39 tmp34 [V39,T17] ( 3, 3 ) struct (16) [rbp-0x40] do-not-enreg[SFR] multireg-ret must-init "Return value temp for multi-reg return (rejected tail call)." <System.Linq.Expressions.Compiler.StackSpiller+Result>
; V40 cse0 [V40,T09] ( 5, 4 ) long -> [rbp-0x48] spill-single-def "CSE #02: aggressive"
-; V41 cse1 [V41,T18] ( 4, 2 ) ref -> r13 "CSE #04: moderate"
-; V42 cse2 [V42,T19] ( 4, 2 ) ref -> r15 "CSE #08: moderate"
-; V43 cse3 [V43,T34] ( 3, 1.50) ref -> rdi "CSE #03: conservative"
-; V44 cse4 [V44,T35] ( 3, 1.50) ref -> rdi "CSE #07: conservative"
-; V45 rat0 [V45,T03] ( 5, 7.50) ref -> r13 "replacement local"
-; V46 rat1 [V46,T17] ( 3, 2.50) long -> rdi "CSE for expectedClsNode"
+; V41 cse1 [V41,T13] ( 6, 3 ) ref -> r14 "CSE #03: moderate"
+; V42 cse2 [V42,T14] ( 6, 3 ) ref -> r13 "CSE #06: moderate"
+; V43 rat0 [V43,T03] ( 5, 7.50) ref -> r13 "replacement local"
+; V44 rat1 [V44,T19] ( 3, 2.50) long -> rdi "CSE for expectedClsNode"
;
; Lcl frame size = 40
G_M59517_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
sub rsp, 40
lea rbp, [rsp+0x50]
xor eax, eax
mov qword ptr [rbp-0x40], rax
mov r15, rdi
mov rbx, rsi
mov r14d, edx
;; size=34 bbWeight=1 PerfScore 8.75
G_M59517_IG02:
mov r13, rbx
test r13, r13
je SHORT G_M59517_IG05
;; size=8 bbWeight=1 PerfScore 1.50
G_M59517_IG03:
mov rdi, 0xD1FFAB1E ; System.Linq.Expressions.MethodCallExpression
cmp qword ptr [r13], rdi
je SHORT G_M59517_IG05
;; size=16 bbWeight=0.50 PerfScore 2.12
G_M59517_IG04:
mov rsi, rbx
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_CHKCASTCLASS_SPECIAL
call [rax]CORINFO_HELP_CHKCASTCLASS_SPECIAL
mov r13, rax
;; size=18 bbWeight=0.25 PerfScore 0.94
G_M59517_IG05:
mov rdi, 0xD1FFAB1E ; System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter
call CORINFO_HELP_NEWSFAST
mov r12, rax
mov rdi, rbx
mov rax, qword ptr [rbx]
mov rax, qword ptr [rax+0x48]
mov qword ptr [rbp-0x48], rax
call [rax+0x38]System.Linq.Expressions.MethodCallExpression:get_ArgumentCount():int:this
inc eax
mov dword ptr [rbp-0x2C], eax
lea rdi, bword ptr [r12+0x08]
mov rsi, r15
call CORINFO_HELP_ASSIGN_REF
mov dword ptr [r12+0x34], r14d
movsxd rsi, dword ptr [rbp-0x2C]
mov rdi, 0xD1FFAB1E ; System.Linq.Expressions.Expression[]
call CORINFO_HELP_NEWARR_1_OBJ
lea rdi, bword ptr [r12+0x10]
mov rsi, rax
call CORINFO_HELP_ASSIGN_REF
mov rdi, rbx
mov r15, qword ptr [rbp-0x48]
call [r15+0x10]System.Linq.Expressions.MethodCallExpression:GetInstance():System.Linq.Expressions.Expression:this
mov rsi, rax
mov rdi, r12
mov rax, 0xD1FFAB1E ; code for System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:Add(System.Linq.Expressions.Expression):this
call [rax]System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:Add(System.Linq.Expressions.Expression):this
mov rdi, r12
mov rsi, rbx
mov rax, 0xD1FFAB1E ; code for System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:AddArguments(System.Linq.Expressions.IArgumentProvider):this
call [rax]System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:AddArguments(System.Linq.Expressions.IArgumentProvider):this
cmp dword ptr [r12+0x30], 3
jne SHORT G_M59517_IG09
;; size=145 bbWeight=1 PerfScore 35.50
G_M59517_IG06:
mov rdi, rbx
call [r15+0x10]System.Linq.Expressions.MethodCallExpression:GetInstance():System.Linq.Expressions.Expression:this
mov rdi, rax
mov rax, 0xD1FFAB1E ; code for System.Linq.Expressions.Compiler.StackSpiller:IsRefInstance(System.Linq.Expressions.Expression):ubyte
call [rax]System.Linq.Expressions.Compiler.StackSpiller:IsRefInstance(System.Linq.Expressions.Expression):ubyte
test eax, eax
je SHORT G_M59517_IG08
cmp gword ptr [r12+0x20], 0
jne SHORT G_M59517_IG07
mov rsi, gword ptr [r12+0x10]
mov esi, dword ptr [rsi+0x08]
mov rdi, 0xD1FFAB1E ; ubyte[]
call CORINFO_HELP_NEWARR_1_VC
lea rdi, bword ptr [r12+0x20]
mov rsi, rax
call CORINFO_HELP_ASSIGN_REF
;; size=70 bbWeight=0.50 PerfScore 9.50
G_M59517_IG07:
mov rsi, gword ptr [r12+0x20]
cmp dword ptr [rsi+0x08], 0
jbe G_M59517_IG22
mov byte ptr [rsi+0x10], 1
;; size=19 bbWeight=0.50 PerfScore 3.50
G_M59517_IG08:
mov rsi, gword ptr [rbx+0x08]
mov rdi, r12
mov edx, 1
mov rax, 0xD1FFAB1E ; code for System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:MarkRefArgs(System.Reflection.MethodBase,int):this
call [rax]System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:MarkRefArgs(System.Reflection.MethodBase,int):this
;; size=24 bbWeight=0.50 PerfScore 2.88
G_M59517_IG09:
cmp dword ptr [r12+0x30], 0
je G_M59517_IG16
;; size=12 bbWeight=1 PerfScore 4.00
G_M59517_IG10:
mov rdi, r13
call [r15+0x10]System.Linq.Expressions.MethodCallExpression:GetInstance():System.Linq.Expressions.Expression:this
test rax, rax
jne G_M59517_IG13
mov rbx, gword ptr [r13+0x08]
mov rdi, r12
mov rax, 0xD1FFAB1E ; code for System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:EnsureDone():this
call [rax]System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:EnsureDone():this
- mov rdi, gword ptr [r12+0x10]
- mov r13d, dword ptr [rdi+0x08]
- dec r13d
- js G_M59517_IG19
- cmp dword ptr [rdi], edi
- call System.SZArrayHelper:get_Count[System.Object]():int:this
- lea r15d, [rax-0x01]
- cmp r15d, r13d
+ mov r13, gword ptr [r12+0x10]
+ mov r15d, dword ptr [r13+0x08]
+ dec r15d
+ mov rsi, r13
+ test r15d, r15d
+ jl G_M59517_IG19
+ mov r14d, dword ptr [rsi+0x08]
+ dec r14d
+ cmp r14d, r15d
jl G_M59517_IG18
- mov r15, gword ptr [r12+0x10]
- cmp dword ptr [r15+0x08], r13d
+ cmp dword ptr [r13+0x08], r15d
je SHORT G_M59517_IG11
- movsxd rsi, r13d
+ movsxd rsi, r15d
mov rdi, 0xD1FFAB1E ; System.Linq.Expressions.Expression[]
call CORINFO_HELP_NEWARR_1_OBJ
mov r14, rax
- mov rdi, r15
- mov r8d, r13d
+ mov rdi, r13
+ mov r8d, r15d
mov rdx, r14
mov esi, 1
xor ecx, ecx
mov rax, 0xD1FFAB1E ; code for System.Array:Copy(System.Array,int,System.Array,int,int)
call [rax]System.Array:Copy(System.Array,int,System.Array,int,int)
jmp SHORT G_M59517_IG12
- ;; size=135 bbWeight=0.50 PerfScore 17.62
+ ;; size=132 bbWeight=0.50 PerfScore 15.75
G_M59517_IG11:
- mov r14, r15
+ mov r14, r13
;; size=3 bbWeight=0.50 PerfScore 0.12
G_M59517_IG12:
mov rdi, 0xD1FFAB1E ; System.Linq.Expressions.MethodCallExpressionN
call CORINFO_HELP_NEWSFAST
- mov r13, rax
- lea rdi, bword ptr [r13+0x08]
+ mov r15, rax
+ lea rdi, bword ptr [r15+0x08]
mov rsi, rbx
call CORINFO_HELP_ASSIGN_REF
- lea rdi, bword ptr [r13+0x10]
+ lea rdi, bword ptr [r15+0x10]
mov rsi, r14
call CORINFO_HELP_ASSIGN_REF
- mov rbx, r13
+ mov rbx, r15
jmp G_M59517_IG16
;; size=50 bbWeight=0.50 PerfScore 3.62
G_M59517_IG13:
mov rbx, gword ptr [r13+0x08]
mov rdi, r12
mov rax, 0xD1FFAB1E ; code for System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:EnsureDone():this
call [rax]System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:EnsureDone():this
mov rdi, gword ptr [r12+0x10]
cmp dword ptr [rdi+0x08], 0
jbe G_M59517_IG22
mov r15, gword ptr [rdi+0x10]
mov rdi, r12
mov rax, 0xD1FFAB1E ; code for System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:EnsureDone():this
call [rax]System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:EnsureDone():this
- mov rdi, gword ptr [r12+0x10]
- mov r14d, dword ptr [rdi+0x08]
- dec r14d
- js G_M59517_IG21
- cmp dword ptr [rdi], edi
- call System.SZArrayHelper:get_Count[System.Object]():int:this
- lea r13d, [rax-0x01]
- cmp r13d, r14d
+ mov r14, gword ptr [r12+0x10]
+ mov r13d, dword ptr [r14+0x08]
+ dec r13d
+ mov rsi, r14
+ test r13d, r13d
+ jl G_M59517_IG21
+ mov eax, dword ptr [rsi+0x08]
+ dec eax
+ mov dword ptr [rbp-0x30], eax
+ cmp eax, r13d
jl G_M59517_IG20
- mov r13, gword ptr [r12+0x10]
- cmp dword ptr [r13+0x08], r14d
+ cmp dword ptr [r14+0x08], r13d
je SHORT G_M59517_IG14
- movsxd rsi, r14d
+ movsxd rsi, r13d
mov rdi, 0xD1FFAB1E ; System.Linq.Expressions.Expression[]
call CORINFO_HELP_NEWARR_1_OBJ
mov gword ptr [rbp-0x50], rax
- mov rdi, r13
- mov r8d, r14d
+ mov rdi, r14
+ mov r8d, r13d
mov rdx, rax
mov esi, 1
xor ecx, ecx
mov r9, 0xD1FFAB1E ; code for System.Array:Copy(System.Array,int,System.Array,int,int)
call [r9]System.Array:Copy(System.Array,int,System.Array,int,int)
- mov r14, gword ptr [rbp-0x50]
+ mov r13, gword ptr [rbp-0x50]
jmp SHORT G_M59517_IG15
- ;; size=159 bbWeight=0.50 PerfScore 22.00
+ ;; size=157 bbWeight=0.50 PerfScore 20.62
G_M59517_IG14:
- mov r14, r13
+ mov r13, r14
;; size=3 bbWeight=0.50 PerfScore 0.12
G_M59517_IG15:
mov rdi, 0xD1FFAB1E ; System.Linq.Expressions.InstanceMethodCallExpressionN
call CORINFO_HELP_NEWSFAST
- mov r13, rax
- lea rdi, bword ptr [r13+0x08]
+ mov r14, rax
+ lea rdi, bword ptr [r14+0x08]
mov rsi, rbx
call CORINFO_HELP_ASSIGN_REF
- lea rdi, bword ptr [r13+0x10]
+ lea rdi, bword ptr [r14+0x10]
mov rsi, r15
call CORINFO_HELP_ASSIGN_REF
- lea rdi, bword ptr [r13+0x18]
- mov rsi, r14
+ lea rdi, bword ptr [r14+0x18]
+ mov rsi, r13
call CORINFO_HELP_ASSIGN_REF
- mov rbx, r13
+ mov rbx, r14
;; size=57 bbWeight=0.50 PerfScore 3.50
G_M59517_IG16:
mov rdi, r12
mov rsi, rbx
mov rax, 0xD1FFAB1E ; code for System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:Finish(System.Linq.Expressions.Expression):System.Linq.Expressions.Compiler.StackSpiller+Result:this
call [rax]System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:Finish(System.Linq.Expressions.Expression):System.Linq.Expressions.Compiler.StackSpiller+Result:this
mov gword ptr [rbp-0x40], rax
mov qword ptr [rbp-0x38], rdx
mov rax, gword ptr [rbp-0x40]
mov edx, dword ptr [rbp-0x38]
;; size=33 bbWeight=1 PerfScore 7.75
G_M59517_IG17:
add rsp, 40
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=1 PerfScore 4.25
G_M59517_IG18:
mov edi, 0x47FD
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov rdx, rax
- mov esi, r13d
- mov edi, r15d
+ mov esi, r15d
+ mov edi, r14d
mov rax, 0xD1FFAB1E ; code for System.ArgumentOutOfRangeException:ThrowLess[int](int,int,System.String)
call [rax]System.ArgumentOutOfRangeException:ThrowLess[int](int,int,System.String)
int3
;; size=42 bbWeight=0 PerfScore 0.00
G_M59517_IG19:
mov edi, 0x4809
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov rsi, rax
- mov edi, r13d
+ mov edi, r15d
mov rax, 0xD1FFAB1E ; code for System.ArgumentOutOfRangeException:ThrowNegative[int](int,System.String)
call [rax]System.ArgumentOutOfRangeException:ThrowNegative[int](int,System.String)
int3
;; size=39 bbWeight=0 PerfScore 0.00
G_M59517_IG20:
mov edi, 0x47FD
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov rdx, rax
- mov esi, r14d
- mov edi, r13d
+ mov esi, r13d
+ mov edi, dword ptr [rbp-0x30]
mov rax, 0xD1FFAB1E ; code for System.ArgumentOutOfRangeException:ThrowLess[int](int,int,System.String)
call [rax]System.ArgumentOutOfRangeException:ThrowLess[int](int,int,System.String)
int3
;; size=42 bbWeight=0 PerfScore 0.00
G_M59517_IG21:
mov edi, 0x4809
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov rsi, rax
- mov edi, r14d
+ mov edi, r13d
mov rax, 0xD1FFAB1E ; code for System.ArgumentOutOfRangeException:ThrowNegative[int](int,System.String)
call [rax]System.ArgumentOutOfRangeException:ThrowNegative[int](int,System.String)
int3
;; size=39 bbWeight=0 PerfScore 0.00
G_M59517_IG22:
call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 969, prolog size 25, PerfScore 127.69, instruction count 229, allocated bytes for code 969 (MethodHash=e8441782) for method System.Linq.Expressions.Compiler.StackSpiller:RewriteMethodCallExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (FullOpts)
+; Total bytes of code 964, prolog size 25, PerfScore 124.44, instruction count 230, allocated bytes for code 964 (MethodHash=e8441782) for method System.Linq.Expressions.Compiler.StackSpiller:RewriteMethodCallExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (FullOpts)
; ============================================================
-4 (-0.61 % of base) - System.Linq.Expressions.Compiler.StackSpiller:RewriteNewArrayExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this
; Assembly listing for method System.Linq.Expressions.Compiler.StackSpiller:RewriteNewArrayExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (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; 20 single block inlinees; 7 inlinees without PGO data
+; 0 inlinees with PGO data; 21 single block inlinees; 7 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T04] ( 3, 3 ) ref -> r14 this class-hnd single-def <System.Linq.Expressions.Compiler.StackSpiller>
; V01 arg1 [V01,T01] ( 10, 8.75) ref -> rbx class-hnd <System.Linq.Expressions.Expression>
; V02 arg2 [V02,T03] ( 5, 5 ) int -> r15
; V03 loc0 [V03,T17] ( 3, 2 ) ref -> r13 class-hnd single-def <System.Linq.Expressions.NewArrayExpression>
;* V04 loc1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T00] ( 10, 17 ) ref -> [rbp-0x48] class-hnd exact spill-single-def "NewObj constructor temp" <System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter>
+; V06 tmp1 [V06,T00] ( 9, 16 ) ref -> [rbp-0x48] class-hnd exact spill-single-def "NewObj constructor temp" <System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter>
;* V07 tmp2 [V07 ] ( 0, 0 ) struct (16) zero-ref multireg-ret "Return value temp for multireg return" <System.Linq.Expressions.Compiler.StackSpiller+Result>
; V08 tmp3 [V08,T21] ( 2, 2 ) int -> rbx "impAppendStmt"
-; V09 tmp4 [V09,T11] ( 3, 3 ) ref -> r15 class-hnd single-def "impAppendStmt" <System.Type>
-; V10 tmp5 [V10,T05] ( 4, 4 ) ref -> r12 class-hnd exact single-def "NewObj constructor temp" <System.Runtime.CompilerServices.TrueReadOnlyCollection`1[System.Linq.Expressions.Expression]>
+; V09 tmp4 [V09,T12] ( 3, 3 ) ref -> r15 class-hnd single-def "impAppendStmt" <System.Type>
+; V10 tmp5 [V10,T05] ( 4, 4 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <System.Runtime.CompilerServices.TrueReadOnlyCollection`1[System.Linq.Expressions.Expression]>
; V11 tmp6 [V11,T08] ( 2, 4 ) ref -> [rbp-0x50] class-hnd spill-single-def "Inlining Arg" <System.Collections.ObjectModel.ReadOnlyCollection`1[System.Linq.Expressions.Expression]>
; V12 tmp7 [V12,T09] ( 2, 4 ) int -> [rbp-0x2C] spill-single-def "Inlining Arg"
-; V13 tmp8 [V13,T15] ( 4, 2 ) ref -> r13 class-hnd "Inline return value spill temp" <System.Linq.Expressions.Expression[]>
-; V14 tmp9 [V14,T22] ( 2, 2 ) int -> r13 "Inlining Arg"
-; V15 tmp10 [V15,T10] ( 8, 3 ) int -> r13 "Inline stloc first use temp"
+; V13 tmp8 [V13,T16] ( 4, 2 ) ref -> r12 class-hnd "Inline return value spill temp" <System.Linq.Expressions.Expression[]>
+; V14 tmp9 [V14,T22] ( 2, 2 ) int -> r12 "Inlining Arg"
+; V15 tmp10 [V15,T10] ( 8, 3 ) int -> r12 "Inline stloc first use temp"
; V16 tmp11 [V16,T24] ( 3, 1.50) ref -> [rbp-0x58] class-hnd exact spill-single-def "Inline stloc first use temp" <System.Linq.Expressions.Expression[]>
-; V17 tmp12 [V17,T19] ( 2, 2 ) ref -> rdi class-hnd single-def "Inlining Arg" <System.Linq.Expressions.Expression[]>
-; V18 tmp13 [V18,T18] ( 3, 2 ) int -> r12 ld-addr-op "Inlining Arg"
+; V17 tmp12 [V17,T19] ( 2, 2 ) ref -> rsi class-hnd single-def "Inlining Arg" <System.Linq.Expressions.Expression[]>
+; V18 tmp13 [V18,T18] ( 3, 2 ) int -> [rbp-0x30] ld-addr-op spill-single-def "Inlining Arg"
;* V19 tmp14 [V19 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
; V20 tmp15 [V20,T25] ( 3, 1.50) ref -> rbx class-hnd "Inline return value spill temp" <System.Linq.Expressions.NewArrayExpression>
; V21 tmp16 [V21,T06] ( 4, 4 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.Linq.Expressions.NewArrayBoundsExpression>
; V22 tmp17 [V22,T07] ( 4, 4 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.Linq.Expressions.NewArrayInitExpression>
; V23 tmp18 [V23,T20] ( 2, 2 ) ref -> rax single-def "field V07.Node (fldOffset=0x0)" P-INDEP
; V24 tmp19 [V24,T23] ( 2, 2 ) int -> rdx "field V07.Action (fldOffset=0x8)" P-INDEP
-; V25 tmp20 [V25,T27] ( 2, 0 ) ref -> rsi single-def "argument with side effect"
-; V26 tmp21 [V26,T28] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
-; V27 tmp22 [V27,T12] ( 3, 3 ) struct (16) [rbp-0x40] do-not-enreg[SFR] multireg-ret must-init "Return value temp for multi-reg return (rejected tail call)." <System.Linq.Expressions.Compiler.StackSpiller+Result>
-; V28 cse0 [V28,T13] ( 3, 2.50) long -> r12 "CSE #02: moderate"
-; V29 cse1 [V29,T16] ( 4, 2 ) ref -> r12 "CSE #04: moderate"
-; V30 cse2 [V30,T26] ( 3, 1.50) ref -> rdi "CSE #03: conservative"
-; V31 rat0 [V31,T02] ( 5, 7.50) ref -> r13 "replacement local"
-; V32 rat1 [V32,T14] ( 3, 2.50) long -> rdi "CSE for expectedClsNode"
+; V25 tmp20 [V25,T26] ( 2, 0 ) ref -> rsi single-def "argument with side effect"
+; V26 tmp21 [V26,T27] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
+; V27 tmp22 [V27,T13] ( 3, 3 ) struct (16) [rbp-0x40] do-not-enreg[SFR] multireg-ret must-init "Return value temp for multi-reg return (rejected tail call)." <System.Linq.Expressions.Compiler.StackSpiller+Result>
+; V28 cse0 [V28,T14] ( 3, 2.50) long -> r12 "CSE #02: moderate"
+; V29 cse1 [V29,T11] ( 6, 3 ) ref -> r13 "CSE #03: moderate"
+; V30 rat0 [V30,T02] ( 5, 7.50) ref -> r13 "replacement local"
+; V31 rat1 [V31,T15] ( 3, 2.50) long -> rdi "CSE for expectedClsNode"
;
; Lcl frame size = 56
G_M11077_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
sub rsp, 56
lea rbp, [rsp+0x60]
xor eax, eax
mov qword ptr [rbp-0x40], rax
mov r14, rdi
mov rbx, rsi
mov r15d, edx
;; size=34 bbWeight=1 PerfScore 8.75
G_M11077_IG02:
mov r13, rbx
test r13, r13
je SHORT G_M11077_IG05
;; size=8 bbWeight=1 PerfScore 1.50
G_M11077_IG03:
mov rdi, 0xD1FFAB1E ; System.Linq.Expressions.NewArrayExpression
cmp qword ptr [r13], rdi
je SHORT G_M11077_IG05
;; size=16 bbWeight=0.50 PerfScore 2.12
G_M11077_IG04:
mov rsi, rbx
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_CHKCASTCLASS_SPECIAL
call [rax]CORINFO_HELP_CHKCASTCLASS_SPECIAL
mov r13, rax
;; size=18 bbWeight=0.25 PerfScore 0.94
G_M11077_IG05:
mov rdi, rbx
mov rax, qword ptr [rbx]
mov r12, qword ptr [rax+0x40]
call [r12+0x20]System.Linq.Expressions.Expression:get_NodeType():int:this
mov edi, 1
cmp eax, 32
cmove r15d, edi
mov rax, gword ptr [rbx+0x10]
mov gword ptr [rbp-0x50], rax
mov rdi, 0xD1FFAB1E ; System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter
call CORINFO_HELP_NEWSFAST
mov gword ptr [rbp-0x48], rax
mov rdi, gword ptr [rbp-0x50]
mov rdi, gword ptr [rdi+0x08]
mov r11, 0xD1FFAB1E ; code for System.Collections.Generic.ICollection`1[System.__Canon]:get_Count():int:this
call [r11]System.Collections.Generic.ICollection`1[System.__Canon]:get_Count():int:this
mov dword ptr [rbp-0x2C], eax
mov rcx, gword ptr [rbp-0x48]
lea rdi, bword ptr [rcx+0x08]
mov rsi, r14
call CORINFO_HELP_ASSIGN_REF
mov r14, gword ptr [rbp-0x48]
mov dword ptr [r14+0x34], r15d
movsxd rsi, dword ptr [rbp-0x2C]
mov rdi, 0xD1FFAB1E ; System.Linq.Expressions.Expression[]
call CORINFO_HELP_NEWARR_1_OBJ
lea rdi, bword ptr [r14+0x10]
mov rsi, rax
call CORINFO_HELP_ASSIGN_REF
mov rsi, gword ptr [rbx+0x10]
mov rdi, r14
mov rax, 0xD1FFAB1E ; code for System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:Add(System.Collections.ObjectModel.ReadOnlyCollection`1[System.Linq.Expressions.Expression]):this
call [rax]System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:Add(System.Collections.ObjectModel.ReadOnlyCollection`1[System.Linq.Expressions.Expression]):this
cmp dword ptr [r14+0x30], 0
je G_M11077_IG10
;; size=163 bbWeight=1 PerfScore 40.75
G_M11077_IG06:
mov rdi, r13
call [r12+0x20]System.Linq.Expressions.Expression:get_NodeType():int:this
mov ebx, eax
mov r15, gword ptr [r13+0x08]
mov rdi, r14
mov rax, 0xD1FFAB1E ; code for System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:EnsureDone():this
call [rax]System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:EnsureDone():this
- mov rdi, gword ptr [r14+0x10]
- mov r13d, dword ptr [rdi+0x08]
- dec r13d
- inc r13d
- js G_M11077_IG14
- cmp dword ptr [rdi], edi
- call System.SZArrayHelper:get_Count[System.Object]():int:this
- mov r12d, eax
- cmp r12d, r13d
+ mov r13, gword ptr [r14+0x10]
+ mov r12d, dword ptr [r13+0x08]
+ dec r12d
+ inc r12d
+ mov rsi, r13
+ test r12d, r12d
+ jl G_M11077_IG14
+ mov eax, dword ptr [rsi+0x08]
+ mov dword ptr [rbp-0x30], eax
+ cmp eax, r12d
jl G_M11077_IG13
- mov r12, gword ptr [r14+0x10]
- cmp dword ptr [r12+0x08], r13d
+ cmp dword ptr [r13+0x08], r12d
je SHORT G_M11077_IG07
- movsxd rsi, r13d
+ movsxd rsi, r12d
mov rdi, 0xD1FFAB1E ; System.Linq.Expressions.Expression[]
call CORINFO_HELP_NEWARR_1_OBJ
mov gword ptr [rbp-0x58], rax
- mov rdi, r12
- mov r8d, r13d
+ mov rdi, r13
+ mov r8d, r12d
mov rdx, rax
xor esi, esi
xor ecx, ecx
mov r9, 0xD1FFAB1E ; code for System.Array:Copy(System.Array,int,System.Array,int,int)
call [r9]System.Array:Copy(System.Array,int,System.Array,int,int)
- mov r13, gword ptr [rbp-0x58]
+ mov r12, gword ptr [rbp-0x58]
jmp SHORT G_M11077_IG08
- ;; size=133 bbWeight=0.50 PerfScore 18.00
+ ;; size=130 bbWeight=0.50 PerfScore 16.62
G_M11077_IG07:
- mov r13, r12
+ mov r12, r13
;; size=3 bbWeight=0.50 PerfScore 0.12
G_M11077_IG08:
mov rdi, 0xD1FFAB1E ; System.Runtime.CompilerServices.TrueReadOnlyCollection`1[System.Linq.Expressions.Expression]
call CORINFO_HELP_NEWSFAST
- mov r12, rax
- test r13, r13
+ mov r13, rax
+ test r12, r12
je G_M11077_IG12
- lea rdi, bword ptr [r12+0x08]
- mov rsi, r13
+ lea rdi, bword ptr [r13+0x08]
+ mov rsi, r12
call CORINFO_HELP_ASSIGN_REF
cmp ebx, 32
je SHORT G_M11077_IG09
mov rdi, 0xD1FFAB1E ; System.Linq.Expressions.NewArrayBoundsExpression
call CORINFO_HELP_NEWSFAST
mov rbx, rax
lea rdi, bword ptr [rbx+0x10]
- mov rsi, r12
+ mov rsi, r13
call CORINFO_HELP_ASSIGN_REF
lea rdi, bword ptr [rbx+0x08]
mov rsi, r15
call CORINFO_HELP_ASSIGN_REF
jmp SHORT G_M11077_IG10
- ;; size=89 bbWeight=0.50 PerfScore 6.38
+ ;; size=88 bbWeight=0.50 PerfScore 6.38
G_M11077_IG09:
mov rdi, 0xD1FFAB1E ; System.Linq.Expressions.NewArrayInitExpression
call CORINFO_HELP_NEWSFAST
mov rbx, rax
lea rdi, bword ptr [rbx+0x10]
- mov rsi, r12
+ mov rsi, r13
call CORINFO_HELP_ASSIGN_REF
lea rdi, bword ptr [rbx+0x08]
mov rsi, r15
call CORINFO_HELP_ASSIGN_REF
;; size=42 bbWeight=0.50 PerfScore 2.50
G_M11077_IG10:
mov rdi, r14
mov rsi, rbx
mov rax, 0xD1FFAB1E ; code for System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:Finish(System.Linq.Expressions.Expression):System.Linq.Expressions.Compiler.StackSpiller+Result:this
call [rax]System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:Finish(System.Linq.Expressions.Expression):System.Linq.Expressions.Compiler.StackSpiller+Result:this
mov gword ptr [rbp-0x40], rax
mov qword ptr [rbp-0x38], rdx
mov rax, gword ptr [rbp-0x40]
mov edx, dword ptr [rbp-0x38]
;; size=33 bbWeight=1 PerfScore 7.75
G_M11077_IG11:
add rsp, 56
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=1 PerfScore 4.25
G_M11077_IG12:
mov edi, 20
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentNullException(int)
call [rax]System.ThrowHelper:ThrowArgumentNullException(int)
int3
;; size=18 bbWeight=0 PerfScore 0.00
G_M11077_IG13:
mov edi, 0x47FD
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov rdx, rax
- mov esi, r13d
- mov edi, r12d
+ mov esi, r12d
+ mov edi, dword ptr [rbp-0x30]
mov rax, 0xD1FFAB1E ; code for System.ArgumentOutOfRangeException:ThrowLess[int](int,int,System.String)
call [rax]System.ArgumentOutOfRangeException:ThrowLess[int](int,int,System.String)
int3
;; size=42 bbWeight=0 PerfScore 0.00
G_M11077_IG14:
mov edi, 0x4809
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov rsi, rax
- mov edi, r13d
+ mov edi, r12d
mov rax, 0xD1FFAB1E ; code for System.ArgumentOutOfRangeException:ThrowNegative[int](int,System.String)
call [rax]System.ArgumentOutOfRangeException:ThrowNegative[int](int,System.String)
int3
;; size=39 bbWeight=0 PerfScore 0.00
-; Total bytes of code 653, prolog size 25, PerfScore 93.06, instruction count 158, allocated bytes for code 653 (MethodHash=6dc2d4ba) for method System.Linq.Expressions.Compiler.StackSpiller:RewriteNewArrayExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (FullOpts)
+; Total bytes of code 649, prolog size 25, PerfScore 91.69, instruction count 158, allocated bytes for code 649 (MethodHash=6dc2d4ba) for method System.Linq.Expressions.Compiler.StackSpiller:RewriteNewArrayExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (FullOpts)
; ============================================================
-3 (-0.55 % of base) - System.Linq.Expressions.Compiler.StackSpiller:RewriteNewExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this
; Assembly listing for method System.Linq.Expressions.Compiler.StackSpiller:RewriteNewExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (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; 14 single block inlinees; 5 inlinees without PGO data
+; 0 inlinees with PGO data; 15 single block inlinees; 5 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T04] ( 3, 3 ) ref -> r15 this class-hnd single-def <System.Linq.Expressions.Compiler.StackSpiller>
; V01 arg1 [V01,T01] ( 8, 6.25) ref -> rbx class-hnd single-def <System.Linq.Expressions.Expression>
; V02 arg2 [V02,T05] ( 3, 3 ) int -> r14 single-def
; V03 loc0 [V03,T12] ( 3, 2 ) ref -> r13 class-hnd single-def <System.Linq.Expressions.NewExpression>
;* V04 loc1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T00] ( 12, 20 ) ref -> r12 class-hnd exact single-def "NewObj constructor temp" <System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter>
+; V06 tmp1 [V06,T00] ( 11, 19 ) ref -> r12 class-hnd exact single-def "NewObj constructor temp" <System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter>
;* V07 tmp2 [V07 ] ( 0, 0 ) ref -> zero-ref single-def
; V08 tmp3 [V08,T15] ( 2, 2 ) ref -> rbx class-hnd single-def "impAppendStmt" <System.Reflection.ConstructorInfo>
-; V09 tmp4 [V09,T08] ( 3, 3 ) ref -> r15 class-hnd "impAppendStmt" <System.Linq.Expressions.Expression[]>
-; V10 tmp5 [V10,T03] ( 5, 5 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <System.Linq.Expressions.NewExpression>
+; V09 tmp4 [V09,T09] ( 3, 3 ) ref -> r14 class-hnd "impAppendStmt" <System.Linq.Expressions.Expression[]>
+; V10 tmp5 [V10,T03] ( 5, 5 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <System.Linq.Expressions.NewExpression>
;* V11 tmp6 [V11 ] ( 0, 0 ) ref -> zero-ref
-; V12 tmp7 [V12,T13] ( 3, 2 ) ref -> r14
+; V12 tmp7 [V12,T13] ( 3, 2 ) ref -> r15
;* V13 tmp8 [V13 ] ( 0, 0 ) struct (16) zero-ref multireg-ret "Return value temp for multireg return" <System.Linq.Expressions.Compiler.StackSpiller+Result>
; V14 tmp9 [V14,T06] ( 2, 4 ) int -> [rbp-0x2C] spill-single-def "Inlining Arg"
-; V15 tmp10 [V15,T19] ( 2, 2 ) int -> r15 "Inlining Arg"
-; V16 tmp11 [V16,T07] ( 8, 3 ) int -> r15 "Inline stloc first use temp"
+; V15 tmp10 [V15,T19] ( 2, 2 ) int -> r14 "Inlining Arg"
+; V16 tmp11 [V16,T07] ( 8, 3 ) int -> r14 "Inline stloc first use temp"
; V17 tmp12 [V17,T21] ( 3, 1.50) ref -> [rbp-0x48] class-hnd exact spill-single-def "Inline stloc first use temp" <System.Linq.Expressions.Expression[]>
-; V18 tmp13 [V18,T16] ( 2, 2 ) ref -> rdi class-hnd single-def "Inlining Arg" <System.Linq.Expressions.Expression[]>
-; V19 tmp14 [V19,T14] ( 3, 2 ) int -> r14 ld-addr-op "Inlining Arg"
+; V18 tmp13 [V18,T16] ( 2, 2 ) ref -> rsi class-hnd single-def "Inlining Arg" <System.Linq.Expressions.Expression[]>
+; V19 tmp14 [V19,T14] ( 3, 2 ) int -> [rbp-0x30] ld-addr-op spill-single-def "Inlining Arg"
;* V20 tmp15 [V20 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
; V21 tmp16 [V21,T17] ( 2, 2 ) ref -> r13 class-hnd single-def "Inlining Arg" <System.Collections.ObjectModel.ReadOnlyCollection`1[System.Reflection.MemberInfo]>
; V22 tmp17 [V22,T18] ( 2, 2 ) ref -> rax single-def "field V13.Node (fldOffset=0x0)" P-INDEP
; V23 tmp18 [V23,T20] ( 2, 2 ) int -> rdx "field V13.Action (fldOffset=0x8)" P-INDEP
-; V24 tmp19 [V24,T23] ( 2, 0 ) ref -> rsi single-def "argument with side effect"
-; V25 tmp20 [V25,T24] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
-; V26 tmp21 [V26,T09] ( 3, 3 ) struct (16) [rbp-0x40] do-not-enreg[SFR] multireg-ret must-init "Return value temp for multi-reg return (rejected tail call)." <System.Linq.Expressions.Compiler.StackSpiller+Result>
-; V27 cse0 [V27,T11] ( 4, 2 ) ref -> r14 "CSE #02: moderate"
-; V28 cse1 [V28,T22] ( 3, 1.50) ref -> rdi "CSE #01: moderate"
-; V29 rat0 [V29,T02] ( 5, 7.50) ref -> r13 "replacement local"
-; V30 rat1 [V30,T10] ( 3, 2.50) long -> rdi "CSE for expectedClsNode"
+; V24 tmp19 [V24,T22] ( 2, 0 ) ref -> rsi single-def "argument with side effect"
+; V25 tmp20 [V25,T23] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
+; V26 tmp21 [V26,T10] ( 3, 3 ) struct (16) [rbp-0x40] do-not-enreg[SFR] multireg-ret must-init "Return value temp for multi-reg return (rejected tail call)." <System.Linq.Expressions.Compiler.StackSpiller+Result>
+; V27 cse0 [V27,T08] ( 6, 3 ) ref -> r15 "CSE #01: moderate"
+; V28 rat0 [V28,T02] ( 5, 7.50) ref -> r13 "replacement local"
+; V29 rat1 [V29,T11] ( 3, 2.50) long -> rdi "CSE for expectedClsNode"
;
; Lcl frame size = 40
G_M42396_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
sub rsp, 40
lea rbp, [rsp+0x50]
xor eax, eax
mov qword ptr [rbp-0x40], rax
mov r15, rdi
mov rbx, rsi
mov r14d, edx
;; size=34 bbWeight=1 PerfScore 8.75
G_M42396_IG02:
mov r13, rbx
test r13, r13
je SHORT G_M42396_IG05
;; size=8 bbWeight=1 PerfScore 1.50
G_M42396_IG03:
mov rdi, 0xD1FFAB1E ; System.Linq.Expressions.NewExpression
cmp qword ptr [r13], rdi
je SHORT G_M42396_IG05
;; size=16 bbWeight=0.50 PerfScore 2.12
G_M42396_IG04:
mov rsi, rbx
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_CHKCASTCLASS_SPECIAL
call [rax]CORINFO_HELP_CHKCASTCLASS_SPECIAL
mov r13, rax
;; size=18 bbWeight=0.25 PerfScore 0.94
G_M42396_IG05:
mov rdi, 0xD1FFAB1E ; System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter
call CORINFO_HELP_NEWSFAST
mov r12, rax
mov rdi, gword ptr [rbx+0x08]
mov r11, 0xD1FFAB1E ; code for System.Collections.Generic.IReadOnlyCollection`1[System.__Canon]:get_Count():int:this
call [r11]System.Collections.Generic.IReadOnlyCollection`1[System.__Canon]:get_Count():int:this
mov dword ptr [rbp-0x2C], eax
lea rdi, bword ptr [r12+0x08]
mov rsi, r15
call CORINFO_HELP_ASSIGN_REF
mov dword ptr [r12+0x34], r14d
movsxd rsi, dword ptr [rbp-0x2C]
mov rdi, 0xD1FFAB1E ; System.Linq.Expressions.Expression[]
call CORINFO_HELP_NEWARR_1_OBJ
lea rdi, bword ptr [r12+0x10]
mov rsi, rax
call CORINFO_HELP_ASSIGN_REF
mov rdi, r12
mov rsi, rbx
mov rax, 0xD1FFAB1E ; code for System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:AddArguments(System.Linq.Expressions.IArgumentProvider):this
call [rax]System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:AddArguments(System.Linq.Expressions.IArgumentProvider):this
cmp dword ptr [r12+0x30], 3
jne SHORT G_M42396_IG07
;; size=114 bbWeight=1 PerfScore 24.25
G_M42396_IG06:
mov rsi, gword ptr [rbx+0x10]
mov rdi, r12
xor edx, edx
mov rax, 0xD1FFAB1E ; code for System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:MarkRefArgs(System.Reflection.MethodBase,int):this
call [rax]System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:MarkRefArgs(System.Reflection.MethodBase,int):this
;; size=21 bbWeight=0.50 PerfScore 2.88
G_M42396_IG07:
cmp dword ptr [r12+0x30], 0
je G_M42396_IG11
;; size=12 bbWeight=1 PerfScore 4.00
G_M42396_IG08:
mov rbx, gword ptr [r13+0x10]
mov rdi, r12
mov rax, 0xD1FFAB1E ; code for System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:EnsureDone():this
call [rax]System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:EnsureDone():this
- mov rdi, gword ptr [r12+0x10]
- mov r15d, dword ptr [rdi+0x08]
- dec r15d
- inc r15d
- js G_M42396_IG15
- cmp dword ptr [rdi], edi
- call System.SZArrayHelper:get_Count[System.Object]():int:this
- mov r14d, eax
- cmp r14d, r15d
+ mov r15, gword ptr [r12+0x10]
+ mov r14d, dword ptr [r15+0x08]
+ dec r14d
+ inc r14d
+ mov rsi, r15
+ test r14d, r14d
+ jl G_M42396_IG15
+ mov eax, dword ptr [rsi+0x08]
+ mov dword ptr [rbp-0x30], eax
+ cmp eax, r14d
jl G_M42396_IG14
- mov r14, gword ptr [r12+0x10]
- cmp dword ptr [r14+0x08], r15d
+ cmp dword ptr [r15+0x08], r14d
je SHORT G_M42396_IG09
- movsxd rsi, r15d
+ movsxd rsi, r14d
mov rdi, 0xD1FFAB1E ; System.Linq.Expressions.Expression[]
call CORINFO_HELP_NEWARR_1_OBJ
mov gword ptr [rbp-0x48], rax
- mov rdi, r14
- mov r8d, r15d
+ mov rdi, r15
+ mov r8d, r14d
mov rdx, rax
xor esi, esi
xor ecx, ecx
mov r9, 0xD1FFAB1E ; code for System.Array:Copy(System.Array,int,System.Array,int,int)
call [r9]System.Array:Copy(System.Array,int,System.Array,int,int)
- mov r15, gword ptr [rbp-0x48]
+ mov r14, gword ptr [rbp-0x48]
jmp SHORT G_M42396_IG10
- ;; size=124 bbWeight=0.50 PerfScore 16.25
+ ;; size=121 bbWeight=0.50 PerfScore 14.88
G_M42396_IG09:
- mov r15, r14
+ mov r14, r15
;; size=3 bbWeight=0.50 PerfScore 0.12
G_M42396_IG10:
mov rdi, 0xD1FFAB1E ; System.Linq.Expressions.NewExpression
call CORINFO_HELP_NEWSFAST
- mov r14, rax
+ mov r15, rax
mov r13, gword ptr [r13+0x18]
- lea rdi, bword ptr [r14+0x10]
+ lea rdi, bword ptr [r15+0x10]
mov rsi, rbx
call CORINFO_HELP_ASSIGN_REF
- lea rdi, bword ptr [r14+0x08]
- mov rsi, r15
+ lea rdi, bword ptr [r15+0x08]
+ mov rsi, r14
call CORINFO_HELP_ASSIGN_REF
- lea rdi, bword ptr [r14+0x18]
+ lea rdi, bword ptr [r15+0x18]
mov rsi, r13
call CORINFO_HELP_ASSIGN_REF
jmp SHORT G_M42396_IG12
;; size=60 bbWeight=0.50 PerfScore 5.38
G_M42396_IG11:
- mov r14, rbx
+ mov r15, rbx
;; size=3 bbWeight=0.50 PerfScore 0.12
G_M42396_IG12:
mov rdi, r12
- mov rsi, r14
+ mov rsi, r15
mov rax, 0xD1FFAB1E ; code for System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:Finish(System.Linq.Expressions.Expression):System.Linq.Expressions.Compiler.StackSpiller+Result:this
call [rax]System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:Finish(System.Linq.Expressions.Expression):System.Linq.Expressions.Compiler.StackSpiller+Result:this
mov gword ptr [rbp-0x40], rax
mov qword ptr [rbp-0x38], rdx
mov rax, gword ptr [rbp-0x40]
mov edx, dword ptr [rbp-0x38]
;; size=33 bbWeight=1 PerfScore 7.75
G_M42396_IG13:
add rsp, 40
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=1 PerfScore 4.25
G_M42396_IG14:
mov edi, 0x47FD
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov rdx, rax
- mov esi, r15d
- mov edi, r14d
+ mov esi, r14d
+ mov edi, dword ptr [rbp-0x30]
mov rax, 0xD1FFAB1E ; code for System.ArgumentOutOfRangeException:ThrowLess[int](int,int,System.String)
call [rax]System.ArgumentOutOfRangeException:ThrowLess[int](int,int,System.String)
int3
;; size=42 bbWeight=0 PerfScore 0.00
G_M42396_IG15:
mov edi, 0x4809
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov rsi, rax
- mov edi, r15d
+ mov edi, r14d
mov rax, 0xD1FFAB1E ; code for System.ArgumentOutOfRangeException:ThrowNegative[int](int,System.String)
call [rax]System.ArgumentOutOfRangeException:ThrowNegative[int](int,System.String)
int3
;; size=39 bbWeight=0 PerfScore 0.00
-; Total bytes of code 542, prolog size 25, PerfScore 78.31, instruction count 132, allocated bytes for code 542 (MethodHash=1c085a63) for method System.Linq.Expressions.Compiler.StackSpiller:RewriteNewExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (FullOpts)
+; Total bytes of code 539, prolog size 25, PerfScore 76.94, instruction count 132, allocated bytes for code 539 (MethodHash=1c085a63) for method System.Linq.Expressions.Compiler.StackSpiller:RewriteNewExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (FullOpts)
; ============================================================
-2 (-0.26 % of base) - System.Linq.Expressions.Compiler.StackSpiller:RewriteIndexAssignment(System.Linq.Expressions.BinaryExpression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this
; Assembly listing for method System.Linq.Expressions.Compiler.StackSpiller:RewriteIndexAssignment(System.Linq.Expressions.BinaryExpression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (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; 20 single block inlinees; 10 inlinees without PGO data
+; 0 inlinees with PGO data; 21 single block inlinees; 10 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T07] ( 3, 3 ) ref -> r15 this class-hnd single-def <System.Linq.Expressions.Compiler.StackSpiller>
; V01 arg1 [V01,T02] ( 6, 5.50) ref -> rbx class-hnd <System.Linq.Expressions.BinaryExpression>
; V02 arg2 [V02,T08] ( 3, 3 ) int -> r14 single-def
; V03 loc0 [V03,T05] ( 6, 5 ) ref -> r13 class-hnd exact single-def <System.Linq.Expressions.IndexExpression>
-; V04 loc1 [V04,T00] ( 18, 12.50) ref -> r12 class-hnd exact single-def <System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter>
+; V04 loc1 [V04,T00] ( 17, 12 ) ref -> r12 class-hnd exact single-def <System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V06 tmp1 [V06,T01] ( 5, 10 ) ref -> r12 class-hnd exact single-def "NewObj constructor temp" <System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter>
;* V07 tmp2 [V07 ] ( 0, 0 ) struct (16) zero-ref multireg-ret "Return value temp for multireg return" <System.Linq.Expressions.Compiler.StackSpiller+Result>
; V08 tmp3 [V08,T20] ( 2, 2 ) ref -> rbx class-hnd single-def "impAppendStmt" <System.Linq.Expressions.Expression>
; V09 tmp4 [V09,T21] ( 2, 2 ) ref -> r15 class-hnd single-def "impAppendStmt" <System.Reflection.PropertyInfo>
-; V10 tmp5 [V10,T06] ( 5, 5 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <System.Linq.Expressions.IndexExpression>
-; V11 tmp6 [V11,T09] ( 4, 4 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <System.Linq.Expressions.AssignBinaryExpression>
+; V10 tmp5 [V10,T06] ( 5, 5 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <System.Linq.Expressions.IndexExpression>
+; V11 tmp6 [V11,T09] ( 4, 4 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <System.Linq.Expressions.AssignBinaryExpression>
; V12 tmp7 [V12,T11] ( 2, 4 ) int -> [rbp-0x2C] spill-single-def "Inlining Arg"
; V13 tmp8 [V13,T22] ( 2, 2 ) ref -> rdi class-hnd single-def "Inlining Arg" <System.Linq.Expressions.Expression>
-;* V14 tmp9 [V14,T31] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V15 tmp10 [V15,T27] ( 3, 1.50) ref -> r14 class-hnd "Inline return value spill temp" <System.Linq.Expressions.Expression[]>
-; V16 tmp11 [V16,T04] ( 8, 6 ) int -> r14 "Inlining Arg"
+;* V14 tmp9 [V14,T30] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+; V15 tmp10 [V15,T27] ( 3, 1.50) ref -> r13 class-hnd "Inline return value spill temp" <System.Linq.Expressions.Expression[]>
+; V16 tmp11 [V16,T04] ( 8, 6 ) int -> r13 "Inlining Arg"
;* V17 tmp12 [V17 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
; V18 tmp13 [V18,T28] ( 3, 1.50) ref -> [rbp-0x48] class-hnd exact spill-single-def "Inline stloc first use temp" <System.Linq.Expressions.Expression[]>
-; V19 tmp14 [V19,T23] ( 2, 2 ) ref -> rdi class-hnd single-def "Inlining Arg" <System.Linq.Expressions.Expression[]>
-; V20 tmp15 [V20,T18] ( 3, 2 ) int -> r13 ld-addr-op "Inlining Arg"
+; V19 tmp14 [V19,T23] ( 2, 2 ) ref -> rsi class-hnd single-def "Inlining Arg" <System.Linq.Expressions.Expression[]>
+; V20 tmp15 [V20,T18] ( 3, 2 ) int -> [rbp-0x30] ld-addr-op spill-single-def "Inlining Arg"
;* V21 tmp16 [V21 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V22 tmp17 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V23 tmp18 [V23,T15] ( 3, 3 ) int -> r15 "Inlining Arg"
+; V23 tmp18 [V23,T16] ( 3, 3 ) int -> r15 "Inlining Arg"
; V24 tmp19 [V24,T24] ( 2, 2 ) ref -> rbx class-hnd single-def "Inlining Arg" <System.Linq.Expressions.Expression>
; V25 tmp20 [V25,T25] ( 2, 2 ) ref -> rax single-def "field V07.Node (fldOffset=0x0)" P-INDEP
; V26 tmp21 [V26,T26] ( 2, 2 ) int -> rdx "field V07.Action (fldOffset=0x8)" P-INDEP
-; V27 tmp22 [V27,T12] ( 3, 3 ) ref -> rdi single-def "arr expr"
-; V28 tmp23 [V28,T13] ( 3, 3 ) ref -> rdi single-def "arr expr"
-; V29 tmp24 [V29,T32] ( 2, 0 ) ref -> rsi single-def "argument with side effect"
-; V30 tmp25 [V30,T33] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
-; V31 tmp26 [V31,T14] ( 3, 3 ) ref -> rbx single-def "arr expr"
-; V32 tmp27 [V32,T16] ( 3, 3 ) struct (16) [rbp-0x40] do-not-enreg[SFR] multireg-ret must-init "Return value temp for multi-reg return (rejected tail call)." <System.Linq.Expressions.Compiler.StackSpiller+Result>
-; V33 cse0 [V33,T17] ( 4, 2 ) ref -> r13 "CSE #02: moderate"
-; V34 cse1 [V34,T29] ( 3, 1.50) ref -> rdi "CSE #01: moderate"
-; V35 cse2 [V35,T30] ( 3, 1.50) ref -> rbx "CSE #04: moderate"
-; V36 rat0 [V36,T10] ( 3, 4 ) ref -> rsi "Spilling to split statement for tree"
-; V37 rat1 [V37,T03] ( 4, 7 ) ref -> r13 "replacement local"
-; V38 rat2 [V38,T19] ( 3, 2 ) long -> rdi "CSE for expectedClsNode"
+; V27 tmp22 [V27,T13] ( 3, 3 ) ref -> rdi single-def "arr expr"
+; V28 tmp23 [V28,T14] ( 3, 3 ) ref -> rdi single-def "arr expr"
+; V29 tmp24 [V29,T31] ( 2, 0 ) ref -> rsi single-def "argument with side effect"
+; V30 tmp25 [V30,T32] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
+; V31 tmp26 [V31,T15] ( 3, 3 ) ref -> rbx single-def "arr expr"
+; V32 tmp27 [V32,T17] ( 3, 3 ) struct (16) [rbp-0x40] do-not-enreg[SFR] multireg-ret must-init "Return value temp for multi-reg return (rejected tail call)." <System.Linq.Expressions.Compiler.StackSpiller+Result>
+; V33 cse0 [V33,T12] ( 6, 3 ) ref -> r14 "CSE #01: moderate"
+; V34 cse1 [V34,T29] ( 3, 1.50) ref -> rbx "CSE #03: moderate"
+; V35 rat0 [V35,T10] ( 3, 4 ) ref -> rsi "Spilling to split statement for tree"
+; V36 rat1 [V36,T03] ( 4, 7 ) ref -> r13 "replacement local"
+; V37 rat2 [V37,T19] ( 3, 2 ) long -> rdi "CSE for expectedClsNode"
;
; Lcl frame size = 40
G_M54480_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
sub rsp, 40
lea rbp, [rsp+0x50]
xor eax, eax
mov qword ptr [rbp-0x40], rax
mov r15, rdi
mov rbx, rsi
mov r14d, edx
;; size=34 bbWeight=1 PerfScore 8.75
G_M54480_IG02:
mov rsi, gword ptr [rbx+0x10]
mov r13, rsi
test r13, r13
je SHORT G_M54480_IG04
;; size=12 bbWeight=1 PerfScore 3.50
G_M54480_IG03:
mov rdi, 0xD1FFAB1E ; System.Linq.Expressions.IndexExpression
cmp qword ptr [r13], rdi
jne G_M54480_IG15
;; size=20 bbWeight=0.50 PerfScore 2.12
G_M54480_IG04:
mov rdi, 0xD1FFAB1E ; System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter
call CORINFO_HELP_NEWSFAST
mov r12, rax
mov rdi, gword ptr [r13+0x08]
mov r11, 0xD1FFAB1E ; code for System.Collections.Generic.IReadOnlyCollection`1[System.__Canon]:get_Count():int:this
call [r11]System.Collections.Generic.IReadOnlyCollection`1[System.__Canon]:get_Count():int:this
add eax, 2
mov dword ptr [rbp-0x2C], eax
lea rdi, bword ptr [r12+0x08]
mov rsi, r15
call CORINFO_HELP_ASSIGN_REF
mov dword ptr [r12+0x34], r14d
movsxd rsi, dword ptr [rbp-0x2C]
mov rdi, 0xD1FFAB1E ; System.Linq.Expressions.Expression[]
call CORINFO_HELP_NEWARR_1_OBJ
lea rdi, bword ptr [r12+0x10]
mov rsi, rax
call CORINFO_HELP_ASSIGN_REF
mov rsi, gword ptr [r13+0x10]
mov rdi, r12
mov rax, 0xD1FFAB1E ; code for System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:Add(System.Linq.Expressions.Expression):this
call [rax]System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:Add(System.Linq.Expressions.Expression):this
mov rdi, r12
mov rsi, r13
mov rax, 0xD1FFAB1E ; code for System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:AddArguments(System.Linq.Expressions.IArgumentProvider):this
call [rax]System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:AddArguments(System.Linq.Expressions.IArgumentProvider):this
mov rsi, gword ptr [rbx+0x08]
mov rdi, r12
mov rax, 0xD1FFAB1E ; code for System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:Add(System.Linq.Expressions.Expression):this
call [rax]System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:Add(System.Linq.Expressions.Expression):this
cmp dword ptr [r12+0x30], 3
jne SHORT G_M54480_IG07
;; size=155 bbWeight=1 PerfScore 35.50
G_M54480_IG05:
mov rdi, gword ptr [r13+0x10]
mov rax, 0xD1FFAB1E ; code for System.Linq.Expressions.Compiler.StackSpiller:IsRefInstance(System.Linq.Expressions.Expression):ubyte
call [rax]System.Linq.Expressions.Compiler.StackSpiller:IsRefInstance(System.Linq.Expressions.Expression):ubyte
test eax, eax
je SHORT G_M54480_IG07
cmp gword ptr [r12+0x20], 0
jne SHORT G_M54480_IG06
mov rsi, gword ptr [r12+0x10]
mov esi, dword ptr [rsi+0x08]
mov rdi, 0xD1FFAB1E ; ubyte[]
call CORINFO_HELP_NEWARR_1_VC
lea rdi, bword ptr [r12+0x20]
mov rsi, rax
call CORINFO_HELP_ASSIGN_REF
;; size=64 bbWeight=0.50 PerfScore 8.75
G_M54480_IG06:
mov rdi, gword ptr [r12+0x20]
cmp dword ptr [rdi+0x08], 0
jbe G_M54480_IG16
mov byte ptr [rdi+0x10], 1
;; size=19 bbWeight=0.50 PerfScore 3.50
G_M54480_IG07:
cmp dword ptr [r12+0x30], 0
je G_M54480_IG11
;; size=12 bbWeight=1 PerfScore 4.00
G_M54480_IG08:
mov rdi, r12
mov rax, 0xD1FFAB1E ; code for System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:EnsureDone():this
call [rax]System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:EnsureDone():this
mov rdi, gword ptr [r12+0x10]
cmp dword ptr [rdi+0x08], 0
jbe G_M54480_IG16
mov rbx, gword ptr [rdi+0x10]
mov r15, gword ptr [r13+0x18]
mov rdi, r12
mov rax, 0xD1FFAB1E ; code for System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:EnsureDone():this
call [rax]System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:EnsureDone():this
- mov rdi, gword ptr [r12+0x10]
- mov r14d, dword ptr [rdi+0x08]
- add r14d, -2
- js G_M54480_IG14
- cmp dword ptr [rdi], edi
- call System.SZArrayHelper:get_Count[System.Object]():int:this
- lea r13d, [rax-0x01]
- cmp r13d, r14d
+ mov r14, gword ptr [r12+0x10]
+ mov r13d, dword ptr [r14+0x08]
+ add r13d, -2
+ mov rsi, r14
+ test r13d, r13d
+ jl G_M54480_IG14
+ mov eax, dword ptr [rsi+0x08]
+ dec eax
+ mov dword ptr [rbp-0x30], eax
+ cmp eax, r13d
jl G_M54480_IG13
- mov r13, gword ptr [r12+0x10]
- cmp dword ptr [r13+0x08], r14d
+ cmp dword ptr [r14+0x08], r13d
je SHORT G_M54480_IG09
- movsxd rsi, r14d
+ movsxd rsi, r13d
mov rdi, 0xD1FFAB1E ; System.Linq.Expressions.Expression[]
call CORINFO_HELP_NEWARR_1_OBJ
mov gword ptr [rbp-0x48], rax
- mov rdi, r13
- mov r8d, r14d
+ mov rdi, r14
+ mov r8d, r13d
mov rdx, rax
mov esi, 1
xor ecx, ecx
mov r9, 0xD1FFAB1E ; code for System.Array:Copy(System.Array,int,System.Array,int,int)
call [r9]System.Array:Copy(System.Array,int,System.Array,int,int)
- mov r14, gword ptr [rbp-0x48]
+ mov r13, gword ptr [rbp-0x48]
jmp SHORT G_M54480_IG10
- ;; size=160 bbWeight=0.50 PerfScore 22.00
+ ;; size=158 bbWeight=0.50 PerfScore 20.62
G_M54480_IG09:
- mov r14, r13
+ mov r13, r14
;; size=3 bbWeight=0.50 PerfScore 0.12
G_M54480_IG10:
mov rdi, 0xD1FFAB1E ; System.Linq.Expressions.IndexExpression
call CORINFO_HELP_NEWSFAST
- mov r13, rax
- lea rdi, bword ptr [r13+0x10]
+ mov r14, rax
+ lea rdi, bword ptr [r14+0x10]
mov rsi, rbx
call CORINFO_HELP_ASSIGN_REF
- lea rdi, bword ptr [r13+0x18]
+ lea rdi, bword ptr [r14+0x18]
mov rsi, r15
call CORINFO_HELP_ASSIGN_REF
- lea rdi, bword ptr [r13+0x08]
- mov rsi, r14
+ lea rdi, bword ptr [r14+0x08]
+ mov rsi, r13
call CORINFO_HELP_ASSIGN_REF
mov rdi, r12
mov rax, 0xD1FFAB1E ; code for System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:EnsureDone():this
call [rax]System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:EnsureDone():this
mov rbx, gword ptr [r12+0x10]
mov r15d, dword ptr [rbx+0x08]
dec r15d
mov rdi, 0xD1FFAB1E ; System.Linq.Expressions.AssignBinaryExpression
call CORINFO_HELP_NEWSFAST
- mov r14, rax
+ mov r13, rax
cmp r15d, dword ptr [rbx+0x08]
jae G_M54480_IG16
mov edi, r15d
mov rbx, gword ptr [rbx+8*rdi+0x10]
- lea rdi, bword ptr [r14+0x10]
- mov rsi, r13
+ lea rdi, bword ptr [r13+0x10]
+ mov rsi, r14
call CORINFO_HELP_ASSIGN_REF
- lea rdi, bword ptr [r14+0x08]
+ lea rdi, bword ptr [r13+0x08]
mov rsi, rbx
call CORINFO_HELP_ASSIGN_REF
- mov rbx, r14
+ mov rbx, r13
;; size=144 bbWeight=0.50 PerfScore 13.00
G_M54480_IG11:
mov rdi, r12
mov rsi, rbx
mov rax, 0xD1FFAB1E ; code for System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:Finish(System.Linq.Expressions.Expression):System.Linq.Expressions.Compiler.StackSpiller+Result:this
call [rax]System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:Finish(System.Linq.Expressions.Expression):System.Linq.Expressions.Compiler.StackSpiller+Result:this
mov gword ptr [rbp-0x40], rax
mov qword ptr [rbp-0x38], rdx
mov rax, gword ptr [rbp-0x40]
mov edx, dword ptr [rbp-0x38]
;; size=33 bbWeight=1 PerfScore 7.75
G_M54480_IG12:
add rsp, 40
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=1 PerfScore 4.25
G_M54480_IG13:
mov edi, 0x47FD
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov rdx, rax
- mov esi, r14d
- mov edi, r13d
+ mov esi, r13d
+ mov edi, dword ptr [rbp-0x30]
mov rax, 0xD1FFAB1E ; code for System.ArgumentOutOfRangeException:ThrowLess[int](int,int,System.String)
call [rax]System.ArgumentOutOfRangeException:ThrowLess[int](int,int,System.String)
int3
;; size=42 bbWeight=0 PerfScore 0.00
G_M54480_IG14:
mov edi, 0x4809
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov rsi, rax
- mov edi, r14d
+ mov edi, r13d
mov rax, 0xD1FFAB1E ; code for System.ArgumentOutOfRangeException:ThrowNegative[int](int,System.String)
call [rax]System.ArgumentOutOfRangeException:ThrowNegative[int](int,System.String)
int3
;; size=39 bbWeight=0 PerfScore 0.00
G_M54480_IG15:
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_CHKCASTCLASS
call [rax]CORINFO_HELP_CHKCASTCLASS
int3
;; size=13 bbWeight=0 PerfScore 0.00
G_M54480_IG16:
call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 771, prolog size 25, PerfScore 113.25, instruction count 179, allocated bytes for code 771 (MethodHash=8a7f2b2f) for method System.Linq.Expressions.Compiler.StackSpiller:RewriteIndexAssignment(System.Linq.Expressions.BinaryExpression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (FullOpts)
+; Total bytes of code 769, prolog size 25, PerfScore 111.88, instruction count 180, allocated bytes for code 769 (MethodHash=8a7f2b2f) for method System.Linq.Expressions.Compiler.StackSpiller:RewriteIndexAssignment(System.Linq.Expressions.BinaryExpression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (FullOpts)
; ============================================================
-2 (-0.30 % of base) - System.Linq.Expressions.Compiler.StackSpiller:RewriteIndexExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this
; Assembly listing for method System.Linq.Expressions.Compiler.StackSpiller:RewriteIndexExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (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; 14 single block inlinees; 9 inlinees without PGO data
+; 0 inlinees with PGO data; 15 single block inlinees; 9 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T06] ( 3, 3 ) ref -> r15 this class-hnd single-def <System.Linq.Expressions.Compiler.StackSpiller>
; V01 arg1 [V01,T01] ( 10, 8 ) ref -> rbx class-hnd <System.Linq.Expressions.Expression>
; V02 arg2 [V02,T07] ( 3, 3 ) int -> r14 single-def
-; V03 loc0 [V03,T24] ( 2, 1.50) ref -> r13 class-hnd exact single-def <System.Linq.Expressions.IndexExpression>
-; V04 loc1 [V04,T00] ( 15, 10.50) ref -> r12 class-hnd exact single-def <System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter>
+; V03 loc0 [V03,T23] ( 2, 1.50) ref -> r13 class-hnd exact single-def <System.Linq.Expressions.IndexExpression>
+; V04 loc1 [V04,T00] ( 14, 10 ) ref -> r12 class-hnd exact single-def <System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V06 tmp1 [V06,T02] ( 5, 10 ) ref -> r12 class-hnd exact single-def "NewObj constructor temp" <System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter>
;* V07 tmp2 [V07 ] ( 0, 0 ) struct (16) zero-ref multireg-ret "Return value temp for multireg return" <System.Linq.Expressions.Compiler.StackSpiller+Result>
; V08 tmp3 [V08,T15] ( 2, 2 ) ref -> rbx class-hnd single-def "impAppendStmt" <System.Linq.Expressions.Expression>
; V09 tmp4 [V09,T16] ( 2, 2 ) ref -> r15 class-hnd single-def "impAppendStmt" <System.Reflection.PropertyInfo>
-; V10 tmp5 [V10,T05] ( 5, 5 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <System.Linq.Expressions.IndexExpression>
+; V10 tmp5 [V10,T05] ( 5, 5 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <System.Linq.Expressions.IndexExpression>
; V11 tmp6 [V11,T08] ( 2, 4 ) int -> [rbp-0x2C] spill-single-def "Inlining Arg"
; V12 tmp7 [V12,T17] ( 2, 2 ) ref -> rdi class-hnd single-def "Inlining Arg" <System.Linq.Expressions.Expression>
-;* V13 tmp8 [V13,T25] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V14 tmp9 [V14,T21] ( 3, 1.50) ref -> r14 class-hnd "Inline return value spill temp" <System.Linq.Expressions.Expression[]>
-; V15 tmp10 [V15,T04] ( 8, 6 ) int -> r14 "Inlining Arg"
+;* V13 tmp8 [V13,T24] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+; V14 tmp9 [V14,T21] ( 3, 1.50) ref -> r13 class-hnd "Inline return value spill temp" <System.Linq.Expressions.Expression[]>
+; V15 tmp10 [V15,T04] ( 8, 6 ) int -> r13 "Inlining Arg"
;* V16 tmp11 [V16 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
; V17 tmp12 [V17,T22] ( 3, 1.50) ref -> [rbp-0x48] class-hnd exact spill-single-def "Inline stloc first use temp" <System.Linq.Expressions.Expression[]>
-; V18 tmp13 [V18,T18] ( 2, 2 ) ref -> rdi class-hnd single-def "Inlining Arg" <System.Linq.Expressions.Expression[]>
-; V19 tmp14 [V19,T13] ( 3, 2 ) int -> r13 ld-addr-op "Inlining Arg"
+; V18 tmp13 [V18,T18] ( 2, 2 ) ref -> rsi class-hnd single-def "Inlining Arg" <System.Linq.Expressions.Expression[]>
+; V19 tmp14 [V19,T13] ( 3, 2 ) int -> [rbp-0x30] ld-addr-op spill-single-def "Inlining Arg"
;* V20 tmp15 [V20 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V21 tmp16 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V22 tmp17 [V22,T19] ( 2, 2 ) ref -> rax single-def "field V07.Node (fldOffset=0x0)" P-INDEP
; V23 tmp18 [V23,T20] ( 2, 2 ) int -> rdx "field V07.Action (fldOffset=0x8)" P-INDEP
-; V24 tmp19 [V24,T09] ( 3, 3 ) ref -> rdi single-def "arr expr"
-; V25 tmp20 [V25,T10] ( 3, 3 ) ref -> rdi single-def "arr expr"
-; V26 tmp21 [V26,T26] ( 2, 0 ) ref -> rsi single-def "argument with side effect"
-; V27 tmp22 [V27,T27] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
-; V28 tmp23 [V28,T11] ( 3, 3 ) struct (16) [rbp-0x40] do-not-enreg[SFR] multireg-ret must-init "Return value temp for multi-reg return (rejected tail call)." <System.Linq.Expressions.Compiler.StackSpiller+Result>
-; V29 cse0 [V29,T12] ( 4, 2 ) ref -> r13 "CSE #02: moderate"
-; V30 cse1 [V30,T23] ( 3, 1.50) ref -> rdi "CSE #01: moderate"
-; V31 rat0 [V31,T03] ( 4, 7 ) ref -> r13 "replacement local"
-; V32 rat1 [V32,T14] ( 3, 2 ) long -> rdi "CSE for expectedClsNode"
+; V24 tmp19 [V24,T10] ( 3, 3 ) ref -> rdi single-def "arr expr"
+; V25 tmp20 [V25,T11] ( 3, 3 ) ref -> rdi single-def "arr expr"
+; V26 tmp21 [V26,T25] ( 2, 0 ) ref -> rsi single-def "argument with side effect"
+; V27 tmp22 [V27,T26] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
+; V28 tmp23 [V28,T12] ( 3, 3 ) struct (16) [rbp-0x40] do-not-enreg[SFR] multireg-ret must-init "Return value temp for multi-reg return (rejected tail call)." <System.Linq.Expressions.Compiler.StackSpiller+Result>
+; V29 cse0 [V29,T09] ( 6, 3 ) ref -> r14 "CSE #01: moderate"
+; V30 rat0 [V30,T03] ( 4, 7 ) ref -> r13 "replacement local"
+; V31 rat1 [V31,T14] ( 3, 2 ) long -> rdi "CSE for expectedClsNode"
;
; Lcl frame size = 40
G_M56350_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
sub rsp, 40
lea rbp, [rsp+0x50]
xor eax, eax
mov qword ptr [rbp-0x40], rax
mov r15, rdi
mov rbx, rsi
mov r14d, edx
;; size=34 bbWeight=1 PerfScore 8.75
G_M56350_IG02:
mov r13, rbx
test r13, r13
je SHORT G_M56350_IG04
;; size=8 bbWeight=1 PerfScore 1.50
G_M56350_IG03:
mov rdi, 0xD1FFAB1E ; System.Linq.Expressions.IndexExpression
cmp qword ptr [r13], rdi
jne G_M56350_IG15
;; size=20 bbWeight=0.50 PerfScore 2.12
G_M56350_IG04:
mov rdi, 0xD1FFAB1E ; System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter
call CORINFO_HELP_NEWSFAST
mov r12, rax
mov rdi, gword ptr [rbx+0x08]
mov r11, 0xD1FFAB1E ; code for System.Collections.Generic.IReadOnlyCollection`1[System.__Canon]:get_Count():int:this
call [r11]System.Collections.Generic.IReadOnlyCollection`1[System.__Canon]:get_Count():int:this
inc eax
mov dword ptr [rbp-0x2C], eax
lea rdi, bword ptr [r12+0x08]
mov rsi, r15
call CORINFO_HELP_ASSIGN_REF
mov dword ptr [r12+0x34], r14d
movsxd rsi, dword ptr [rbp-0x2C]
mov rdi, 0xD1FFAB1E ; System.Linq.Expressions.Expression[]
call CORINFO_HELP_NEWARR_1_OBJ
lea rdi, bword ptr [r12+0x10]
mov rsi, rax
call CORINFO_HELP_ASSIGN_REF
mov rsi, gword ptr [rbx+0x10]
mov rdi, r12
mov rax, 0xD1FFAB1E ; code for System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:Add(System.Linq.Expressions.Expression):this
call [rax]System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:Add(System.Linq.Expressions.Expression):this
mov rdi, r12
mov rsi, rbx
mov rax, 0xD1FFAB1E ; code for System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:AddArguments(System.Linq.Expressions.IArgumentProvider):this
call [rax]System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:AddArguments(System.Linq.Expressions.IArgumentProvider):this
cmp dword ptr [r12+0x30], 3
jne SHORT G_M56350_IG07
;; size=135 bbWeight=1 PerfScore 30.00
G_M56350_IG05:
mov rdi, gword ptr [rbx+0x10]
mov rax, 0xD1FFAB1E ; code for System.Linq.Expressions.Compiler.StackSpiller:IsRefInstance(System.Linq.Expressions.Expression):ubyte
call [rax]System.Linq.Expressions.Compiler.StackSpiller:IsRefInstance(System.Linq.Expressions.Expression):ubyte
test eax, eax
je SHORT G_M56350_IG07
cmp gword ptr [r12+0x20], 0
jne SHORT G_M56350_IG06
mov rsi, gword ptr [r12+0x10]
mov esi, dword ptr [rsi+0x08]
mov rdi, 0xD1FFAB1E ; ubyte[]
call CORINFO_HELP_NEWARR_1_VC
lea rdi, bword ptr [r12+0x20]
mov rsi, rax
call CORINFO_HELP_ASSIGN_REF
;; size=64 bbWeight=0.50 PerfScore 8.75
G_M56350_IG06:
mov rdi, gword ptr [r12+0x20]
cmp dword ptr [rdi+0x08], 0
jbe G_M56350_IG16
mov byte ptr [rdi+0x10], 1
;; size=19 bbWeight=0.50 PerfScore 3.50
G_M56350_IG07:
cmp dword ptr [r12+0x30], 0
je G_M56350_IG11
;; size=12 bbWeight=1 PerfScore 4.00
G_M56350_IG08:
mov rdi, r12
mov rax, 0xD1FFAB1E ; code for System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:EnsureDone():this
call [rax]System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:EnsureDone():this
mov rdi, gword ptr [r12+0x10]
cmp dword ptr [rdi+0x08], 0
jbe G_M56350_IG16
mov rbx, gword ptr [rdi+0x10]
mov r15, gword ptr [r13+0x18]
mov rdi, r12
mov rax, 0xD1FFAB1E ; code for System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:EnsureDone():this
call [rax]System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:EnsureDone():this
- mov rdi, gword ptr [r12+0x10]
- mov r14d, dword ptr [rdi+0x08]
- dec r14d
- js G_M56350_IG14
- cmp dword ptr [rdi], edi
- call System.SZArrayHelper:get_Count[System.Object]():int:this
- lea r13d, [rax-0x01]
- cmp r13d, r14d
+ mov r14, gword ptr [r12+0x10]
+ mov r13d, dword ptr [r14+0x08]
+ dec r13d
+ mov rsi, r14
+ test r13d, r13d
+ jl G_M56350_IG14
+ mov eax, dword ptr [rsi+0x08]
+ dec eax
+ mov dword ptr [rbp-0x30], eax
+ cmp eax, r13d
jl G_M56350_IG13
- mov r13, gword ptr [r12+0x10]
- cmp dword ptr [r13+0x08], r14d
+ cmp dword ptr [r14+0x08], r13d
je SHORT G_M56350_IG09
- movsxd rsi, r14d
+ movsxd rsi, r13d
mov rdi, 0xD1FFAB1E ; System.Linq.Expressions.Expression[]
call CORINFO_HELP_NEWARR_1_OBJ
mov gword ptr [rbp-0x48], rax
- mov rdi, r13
- mov r8d, r14d
+ mov rdi, r14
+ mov r8d, r13d
mov rdx, rax
mov esi, 1
xor ecx, ecx
mov r9, 0xD1FFAB1E ; code for System.Array:Copy(System.Array,int,System.Array,int,int)
call [r9]System.Array:Copy(System.Array,int,System.Array,int,int)
- mov r14, gword ptr [rbp-0x48]
+ mov r13, gword ptr [rbp-0x48]
jmp SHORT G_M56350_IG10
- ;; size=159 bbWeight=0.50 PerfScore 22.00
+ ;; size=157 bbWeight=0.50 PerfScore 20.62
G_M56350_IG09:
- mov r14, r13
+ mov r13, r14
;; size=3 bbWeight=0.50 PerfScore 0.12
G_M56350_IG10:
mov rdi, 0xD1FFAB1E ; System.Linq.Expressions.IndexExpression
call CORINFO_HELP_NEWSFAST
- mov r13, rax
- lea rdi, bword ptr [r13+0x10]
+ mov r14, rax
+ lea rdi, bword ptr [r14+0x10]
mov rsi, rbx
call CORINFO_HELP_ASSIGN_REF
- lea rdi, bword ptr [r13+0x18]
+ lea rdi, bword ptr [r14+0x18]
mov rsi, r15
call CORINFO_HELP_ASSIGN_REF
- lea rdi, bword ptr [r13+0x08]
- mov rsi, r14
+ lea rdi, bword ptr [r14+0x08]
+ mov rsi, r13
call CORINFO_HELP_ASSIGN_REF
- mov rbx, r13
+ mov rbx, r14
;; size=57 bbWeight=0.50 PerfScore 3.50
G_M56350_IG11:
mov rdi, r12
mov rsi, rbx
mov rax, 0xD1FFAB1E ; code for System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:Finish(System.Linq.Expressions.Expression):System.Linq.Expressions.Compiler.StackSpiller+Result:this
call [rax]System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:Finish(System.Linq.Expressions.Expression):System.Linq.Expressions.Compiler.StackSpiller+Result:this
mov gword ptr [rbp-0x40], rax
mov qword ptr [rbp-0x38], rdx
mov rax, gword ptr [rbp-0x40]
mov edx, dword ptr [rbp-0x38]
;; size=33 bbWeight=1 PerfScore 7.75
G_M56350_IG12:
add rsp, 40
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=1 PerfScore 4.25
G_M56350_IG13:
mov edi, 0x47FD
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov rdx, rax
- mov esi, r14d
- mov edi, r13d
+ mov esi, r13d
+ mov edi, dword ptr [rbp-0x30]
mov rax, 0xD1FFAB1E ; code for System.ArgumentOutOfRangeException:ThrowLess[int](int,int,System.String)
call [rax]System.ArgumentOutOfRangeException:ThrowLess[int](int,int,System.String)
int3
;; size=42 bbWeight=0 PerfScore 0.00
G_M56350_IG14:
mov edi, 0x4809
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov rsi, rax
- mov edi, r14d
+ mov edi, r13d
mov rax, 0xD1FFAB1E ; code for System.ArgumentOutOfRangeException:ThrowNegative[int](int,System.String)
call [rax]System.ArgumentOutOfRangeException:ThrowNegative[int](int,System.String)
int3
;; size=39 bbWeight=0 PerfScore 0.00
G_M56350_IG15:
mov rsi, rbx
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_CHKCASTCLASS
call [rax]CORINFO_HELP_CHKCASTCLASS
int3
;; size=16 bbWeight=0 PerfScore 0.00
G_M56350_IG16:
call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 662, prolog size 25, PerfScore 96.25, instruction count 156, allocated bytes for code 662 (MethodHash=831323e1) for method System.Linq.Expressions.Compiler.StackSpiller:RewriteIndexExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (FullOpts)
+; Total bytes of code 660, prolog size 25, PerfScore 94.88, instruction count 157, allocated bytes for code 660 (MethodHash=831323e1) for method System.Linq.Expressions.Compiler.StackSpiller:RewriteIndexExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (FullOpts)
; ============================================================