You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
It does a double reference assign + write barrier CORINFO_HELP_ASSIGN_BYREF.
Also it means data structures like FrameRequestHeaders.HeaderReferences is 688 bytes and FrameResponseHeaders.HeaderReferences is 592 bytes; so clearing needs to Memset quite a large amount of data; and Kestrel has a "faster" path where under 12 headers it does a bit count; then steps though all the headers checking if they are set and clearing them (with early bail)
An example of how this could be done is: benaadams@0b567e9; however there are knock on issues around foreach vs for patterns and I haven't confirmed it would be a net win, so am not making a PR for this at this time.
The text was updated successfully, but these errors were encountered:
Saw this while doing some disassembling https://github.com/dotnet/coreclr/issues/9039 where assigning to
StringValues
It does a double reference assign + write barrier
CORINFO_HELP_ASSIGN_BYREF
.Also it means data structures like
FrameRequestHeaders.HeaderReferences
is 688 bytes andFrameResponseHeaders.HeaderReferences
is 592 bytes; so clearing needs to Memset quite a large amount of data; and Kestrel has a "faster" path where under 12 headers it does a bit count; then steps though all the headers checking if they are set and clearing them (with early bail)The double ptr struct field also causes knock on issues like "FrameRequestHeaders:AppendNonPrimaryHeaders uses (and zeros) 888 bytes of stack" aspnet/KestrelHttpServer#1317 (issue in coreclr https://github.com/dotnet/coreclr/issues/9041)
An example of how this could be done is: benaadams@0b567e9; however there are knock on issues around
foreach
vsfor
patterns and I haven't confirmed it would be a net win, so am not making a PR for this at this time.The text was updated successfully, but these errors were encountered: