Less StringValue struct copies for header checks#2488
Conversation
|
Ubuntu 16.04 Release Build Failed DoesNotRejectRequestWithContentLengthHeaderExceedingGlobalLimitIfLimitDisabledPerRequest
Error Message:
System.TimeoutException : The operation at /_/test/shared/TestConnection.cs:129 timed out after reaching the limit of 60000ms.
Stack Trace:
at Microsoft.AspNetCore.Testing.TaskExtensions.<TimeoutAfter>d__0`1.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Microsoft.AspNetCore.Testing.TestConnection.<Receive>d__21.MoveNext() in /_/test/shared/TestConnection.cs:line 131
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Microsoft.AspNetCore.Server.Kestrel.FunctionalTests.MaxRequestBodySizeTests.<DoesNotRejectRequestWithContentLengthHeaderExceedingGlobalLimitIfLimitDisabledPerRequest>d__2.MoveNext() in /_/test/Kestrel.FunctionalTests/MaxRequestBodySizeTests.cs:line 131
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) |
|
test Ubuntu 16.04 Release Build |
|
Odd error on Ubuntu 16.04 Release Build https://github.com/dotnet/corefx/issues/29075 |
|
test Ubuntu 16.04 Release Build |
|
OSX 10.12 Release Build |
| if (hostText[offset] != ':' || hostText.Length == offset + 1) | ||
| var firstChar = hostText[offset]; | ||
| offset++; | ||
| if (firstChar != ':' || (uint)offset >= (uint)hostText.Length) |
There was a problem hiding this comment.
The other uint casts look to be eliminating a comparison which I'm OK with. This looks like it's just for the JIT though.
There was a problem hiding this comment.
Sorta, its verifying offset is positive so the var i = offset in the for loop so the bounds checks can be eliminated in the for loop below.
However, the Jit still doesn't eliminate the bounds check at this time; so I can remove it? (doesn't really like doing it for things that start with variables)
|
@Tratcher Can you review this? |
|
Maybe tomorrow, I'm in meetings the rest of the day. |
|
OSX 10.12 Release Build Libuv tests failed with no explaination test Ubuntu 16.04 Release Build |
|
The aborted test is probably related to #2454 |
|
Ubuntu 16.04 Release Build is grumpy test Ubuntu 16.04 Release Build |
|
Ubuntu 16.04 Release Build #2486 |
|
OSX 10.12 Release Build test OSX 10.12 Release Build |
|
OSX 10.12 Release Build test OSX 10.12 Release Build |
Tratcher
left a comment
There was a problem hiding this comment.
Are there current perf metrics? What's the gain?
|
@Tratcher Thee are some benchmarks results with just this change in dotnet/coreclr#17512 (comment) under "Skip struct copies (improve implementations)". |
|
Thanks! |
/cc @halter73 @davidfowl something more like this?