Merge branch 'anderman/faster-unsafe' into dev
This commit is contained in:
commit
b1a4e8cd1e
|
|
@ -770,7 +770,7 @@ namespace Microsoft.AspNet.Server.Kestrel.Http
|
||||||
}
|
}
|
||||||
protected override StringValues GetValueFast(string key)
|
protected override StringValues GetValueFast(string key)
|
||||||
{
|
{
|
||||||
switch(key.Length)
|
switch (key.Length)
|
||||||
{
|
{
|
||||||
case 13:
|
case 13:
|
||||||
{
|
{
|
||||||
|
|
@ -1384,7 +1384,7 @@ namespace Microsoft.AspNet.Server.Kestrel.Http
|
||||||
}
|
}
|
||||||
protected override bool TryGetValueFast(string key, out StringValues value)
|
protected override bool TryGetValueFast(string key, out StringValues value)
|
||||||
{
|
{
|
||||||
switch(key.Length)
|
switch (key.Length)
|
||||||
{
|
{
|
||||||
case 13:
|
case 13:
|
||||||
{
|
{
|
||||||
|
|
@ -2083,7 +2083,7 @@ namespace Microsoft.AspNet.Server.Kestrel.Http
|
||||||
}
|
}
|
||||||
protected override void SetValueFast(string key, StringValues value)
|
protected override void SetValueFast(string key, StringValues value)
|
||||||
{
|
{
|
||||||
switch(key.Length)
|
switch (key.Length)
|
||||||
{
|
{
|
||||||
case 13:
|
case 13:
|
||||||
{
|
{
|
||||||
|
|
@ -2473,7 +2473,7 @@ namespace Microsoft.AspNet.Server.Kestrel.Http
|
||||||
}
|
}
|
||||||
protected override void AddValueFast(string key, StringValues value)
|
protected override void AddValueFast(string key, StringValues value)
|
||||||
{
|
{
|
||||||
switch(key.Length)
|
switch (key.Length)
|
||||||
{
|
{
|
||||||
case 13:
|
case 13:
|
||||||
{
|
{
|
||||||
|
|
@ -3039,7 +3039,7 @@ namespace Microsoft.AspNet.Server.Kestrel.Http
|
||||||
}
|
}
|
||||||
protected override bool RemoveFast(string key)
|
protected override bool RemoveFast(string key)
|
||||||
{
|
{
|
||||||
switch(key.Length)
|
switch (key.Length)
|
||||||
{
|
{
|
||||||
case 13:
|
case 13:
|
||||||
{
|
{
|
||||||
|
|
@ -4237,8 +4237,13 @@ namespace Microsoft.AspNet.Server.Kestrel.Http
|
||||||
|
|
||||||
public unsafe void Append(byte[] keyBytes, int keyOffset, int keyLength, string value)
|
public unsafe void Append(byte[] keyBytes, int keyOffset, int keyLength, string value)
|
||||||
{
|
{
|
||||||
fixed(byte* ptr = keyBytes) { var pUB = ptr + keyOffset; var pUL = (ulong*)pUB; var pUI = (uint*)pUB; var pUS = (ushort*)pUB;
|
fixed (byte* ptr = &keyBytes[keyOffset])
|
||||||
switch(keyLength)
|
{
|
||||||
|
var pUB = ptr;
|
||||||
|
var pUL = (ulong*)pUB;
|
||||||
|
var pUI = (uint*)pUB;
|
||||||
|
var pUS = (ushort*)pUB;
|
||||||
|
switch (keyLength)
|
||||||
{
|
{
|
||||||
case 13:
|
case 13:
|
||||||
{
|
{
|
||||||
|
|
@ -4931,7 +4936,8 @@ namespace Microsoft.AspNet.Server.Kestrel.Http
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}}
|
}
|
||||||
|
}
|
||||||
var key = System.Text.Encoding.ASCII.GetString(keyBytes, keyOffset, keyLength);
|
var key = System.Text.Encoding.ASCII.GetString(keyBytes, keyOffset, keyLength);
|
||||||
StringValues existing;
|
StringValues existing;
|
||||||
Unknown.TryGetValue(key, out existing);
|
Unknown.TryGetValue(key, out existing);
|
||||||
|
|
@ -6114,7 +6120,7 @@ namespace Microsoft.AspNet.Server.Kestrel.Http
|
||||||
}
|
}
|
||||||
protected override StringValues GetValueFast(string key)
|
protected override StringValues GetValueFast(string key)
|
||||||
{
|
{
|
||||||
switch(key.Length)
|
switch (key.Length)
|
||||||
{
|
{
|
||||||
case 13:
|
case 13:
|
||||||
{
|
{
|
||||||
|
|
@ -6628,7 +6634,7 @@ namespace Microsoft.AspNet.Server.Kestrel.Http
|
||||||
}
|
}
|
||||||
protected override bool TryGetValueFast(string key, out StringValues value)
|
protected override bool TryGetValueFast(string key, out StringValues value)
|
||||||
{
|
{
|
||||||
switch(key.Length)
|
switch (key.Length)
|
||||||
{
|
{
|
||||||
case 13:
|
case 13:
|
||||||
{
|
{
|
||||||
|
|
@ -7211,7 +7217,7 @@ namespace Microsoft.AspNet.Server.Kestrel.Http
|
||||||
}
|
}
|
||||||
protected override void SetValueFast(string key, StringValues value)
|
protected override void SetValueFast(string key, StringValues value)
|
||||||
{
|
{
|
||||||
switch(key.Length)
|
switch (key.Length)
|
||||||
{
|
{
|
||||||
case 13:
|
case 13:
|
||||||
{
|
{
|
||||||
|
|
@ -7546,7 +7552,7 @@ namespace Microsoft.AspNet.Server.Kestrel.Http
|
||||||
}
|
}
|
||||||
protected override void AddValueFast(string key, StringValues value)
|
protected override void AddValueFast(string key, StringValues value)
|
||||||
{
|
{
|
||||||
switch(key.Length)
|
switch (key.Length)
|
||||||
{
|
{
|
||||||
case 13:
|
case 13:
|
||||||
{
|
{
|
||||||
|
|
@ -8025,7 +8031,7 @@ namespace Microsoft.AspNet.Server.Kestrel.Http
|
||||||
}
|
}
|
||||||
protected override bool RemoveFast(string key)
|
protected override bool RemoveFast(string key)
|
||||||
{
|
{
|
||||||
switch(key.Length)
|
switch (key.Length)
|
||||||
{
|
{
|
||||||
case 13:
|
case 13:
|
||||||
{
|
{
|
||||||
|
|
@ -9027,7 +9033,7 @@ namespace Microsoft.AspNet.Server.Kestrel.Http
|
||||||
|
|
||||||
if (((_bits & 1L) != 0))
|
if (((_bits & 1L) != 0))
|
||||||
{
|
{
|
||||||
foreach(var value in _CacheControl)
|
foreach (var value in _CacheControl)
|
||||||
{
|
{
|
||||||
if (value != null)
|
if (value != null)
|
||||||
{
|
{
|
||||||
|
|
@ -9042,8 +9048,9 @@ namespace Microsoft.AspNet.Server.Kestrel.Http
|
||||||
if (_rawConnection != null)
|
if (_rawConnection != null)
|
||||||
{
|
{
|
||||||
output.CopyFrom(_rawConnection, 0, _rawConnection.Length);
|
output.CopyFrom(_rawConnection, 0, _rawConnection.Length);
|
||||||
} else
|
}
|
||||||
foreach(var value in _Connection)
|
else
|
||||||
|
foreach (var value in _Connection)
|
||||||
{
|
{
|
||||||
if (value != null)
|
if (value != null)
|
||||||
{
|
{
|
||||||
|
|
@ -9058,8 +9065,9 @@ namespace Microsoft.AspNet.Server.Kestrel.Http
|
||||||
if (_rawDate != null)
|
if (_rawDate != null)
|
||||||
{
|
{
|
||||||
output.CopyFrom(_rawDate, 0, _rawDate.Length);
|
output.CopyFrom(_rawDate, 0, _rawDate.Length);
|
||||||
} else
|
}
|
||||||
foreach(var value in _Date)
|
else
|
||||||
|
foreach (var value in _Date)
|
||||||
{
|
{
|
||||||
if (value != null)
|
if (value != null)
|
||||||
{
|
{
|
||||||
|
|
@ -9071,7 +9079,7 @@ namespace Microsoft.AspNet.Server.Kestrel.Http
|
||||||
|
|
||||||
if (((_bits & 8L) != 0))
|
if (((_bits & 8L) != 0))
|
||||||
{
|
{
|
||||||
foreach(var value in _KeepAlive)
|
foreach (var value in _KeepAlive)
|
||||||
{
|
{
|
||||||
if (value != null)
|
if (value != null)
|
||||||
{
|
{
|
||||||
|
|
@ -9083,7 +9091,7 @@ namespace Microsoft.AspNet.Server.Kestrel.Http
|
||||||
|
|
||||||
if (((_bits & 16L) != 0))
|
if (((_bits & 16L) != 0))
|
||||||
{
|
{
|
||||||
foreach(var value in _Pragma)
|
foreach (var value in _Pragma)
|
||||||
{
|
{
|
||||||
if (value != null)
|
if (value != null)
|
||||||
{
|
{
|
||||||
|
|
@ -9095,7 +9103,7 @@ namespace Microsoft.AspNet.Server.Kestrel.Http
|
||||||
|
|
||||||
if (((_bits & 32L) != 0))
|
if (((_bits & 32L) != 0))
|
||||||
{
|
{
|
||||||
foreach(var value in _Trailer)
|
foreach (var value in _Trailer)
|
||||||
{
|
{
|
||||||
if (value != null)
|
if (value != null)
|
||||||
{
|
{
|
||||||
|
|
@ -9110,8 +9118,9 @@ namespace Microsoft.AspNet.Server.Kestrel.Http
|
||||||
if (_rawTransferEncoding != null)
|
if (_rawTransferEncoding != null)
|
||||||
{
|
{
|
||||||
output.CopyFrom(_rawTransferEncoding, 0, _rawTransferEncoding.Length);
|
output.CopyFrom(_rawTransferEncoding, 0, _rawTransferEncoding.Length);
|
||||||
} else
|
}
|
||||||
foreach(var value in _TransferEncoding)
|
else
|
||||||
|
foreach (var value in _TransferEncoding)
|
||||||
{
|
{
|
||||||
if (value != null)
|
if (value != null)
|
||||||
{
|
{
|
||||||
|
|
@ -9123,7 +9132,7 @@ namespace Microsoft.AspNet.Server.Kestrel.Http
|
||||||
|
|
||||||
if (((_bits & 128L) != 0))
|
if (((_bits & 128L) != 0))
|
||||||
{
|
{
|
||||||
foreach(var value in _Upgrade)
|
foreach (var value in _Upgrade)
|
||||||
{
|
{
|
||||||
if (value != null)
|
if (value != null)
|
||||||
{
|
{
|
||||||
|
|
@ -9135,7 +9144,7 @@ namespace Microsoft.AspNet.Server.Kestrel.Http
|
||||||
|
|
||||||
if (((_bits & 256L) != 0))
|
if (((_bits & 256L) != 0))
|
||||||
{
|
{
|
||||||
foreach(var value in _Via)
|
foreach (var value in _Via)
|
||||||
{
|
{
|
||||||
if (value != null)
|
if (value != null)
|
||||||
{
|
{
|
||||||
|
|
@ -9147,7 +9156,7 @@ namespace Microsoft.AspNet.Server.Kestrel.Http
|
||||||
|
|
||||||
if (((_bits & 512L) != 0))
|
if (((_bits & 512L) != 0))
|
||||||
{
|
{
|
||||||
foreach(var value in _Warning)
|
foreach (var value in _Warning)
|
||||||
{
|
{
|
||||||
if (value != null)
|
if (value != null)
|
||||||
{
|
{
|
||||||
|
|
@ -9159,7 +9168,7 @@ namespace Microsoft.AspNet.Server.Kestrel.Http
|
||||||
|
|
||||||
if (((_bits & 1024L) != 0))
|
if (((_bits & 1024L) != 0))
|
||||||
{
|
{
|
||||||
foreach(var value in _Allow)
|
foreach (var value in _Allow)
|
||||||
{
|
{
|
||||||
if (value != null)
|
if (value != null)
|
||||||
{
|
{
|
||||||
|
|
@ -9174,8 +9183,9 @@ namespace Microsoft.AspNet.Server.Kestrel.Http
|
||||||
if (_rawContentLength != null)
|
if (_rawContentLength != null)
|
||||||
{
|
{
|
||||||
output.CopyFrom(_rawContentLength, 0, _rawContentLength.Length);
|
output.CopyFrom(_rawContentLength, 0, _rawContentLength.Length);
|
||||||
} else
|
}
|
||||||
foreach(var value in _ContentLength)
|
else
|
||||||
|
foreach (var value in _ContentLength)
|
||||||
{
|
{
|
||||||
if (value != null)
|
if (value != null)
|
||||||
{
|
{
|
||||||
|
|
@ -9187,7 +9197,7 @@ namespace Microsoft.AspNet.Server.Kestrel.Http
|
||||||
|
|
||||||
if (((_bits & 4096L) != 0))
|
if (((_bits & 4096L) != 0))
|
||||||
{
|
{
|
||||||
foreach(var value in _ContentType)
|
foreach (var value in _ContentType)
|
||||||
{
|
{
|
||||||
if (value != null)
|
if (value != null)
|
||||||
{
|
{
|
||||||
|
|
@ -9199,7 +9209,7 @@ namespace Microsoft.AspNet.Server.Kestrel.Http
|
||||||
|
|
||||||
if (((_bits & 8192L) != 0))
|
if (((_bits & 8192L) != 0))
|
||||||
{
|
{
|
||||||
foreach(var value in _ContentEncoding)
|
foreach (var value in _ContentEncoding)
|
||||||
{
|
{
|
||||||
if (value != null)
|
if (value != null)
|
||||||
{
|
{
|
||||||
|
|
@ -9211,7 +9221,7 @@ namespace Microsoft.AspNet.Server.Kestrel.Http
|
||||||
|
|
||||||
if (((_bits & 16384L) != 0))
|
if (((_bits & 16384L) != 0))
|
||||||
{
|
{
|
||||||
foreach(var value in _ContentLanguage)
|
foreach (var value in _ContentLanguage)
|
||||||
{
|
{
|
||||||
if (value != null)
|
if (value != null)
|
||||||
{
|
{
|
||||||
|
|
@ -9223,7 +9233,7 @@ namespace Microsoft.AspNet.Server.Kestrel.Http
|
||||||
|
|
||||||
if (((_bits & 32768L) != 0))
|
if (((_bits & 32768L) != 0))
|
||||||
{
|
{
|
||||||
foreach(var value in _ContentLocation)
|
foreach (var value in _ContentLocation)
|
||||||
{
|
{
|
||||||
if (value != null)
|
if (value != null)
|
||||||
{
|
{
|
||||||
|
|
@ -9235,7 +9245,7 @@ namespace Microsoft.AspNet.Server.Kestrel.Http
|
||||||
|
|
||||||
if (((_bits & 65536L) != 0))
|
if (((_bits & 65536L) != 0))
|
||||||
{
|
{
|
||||||
foreach(var value in _ContentMD5)
|
foreach (var value in _ContentMD5)
|
||||||
{
|
{
|
||||||
if (value != null)
|
if (value != null)
|
||||||
{
|
{
|
||||||
|
|
@ -9247,7 +9257,7 @@ namespace Microsoft.AspNet.Server.Kestrel.Http
|
||||||
|
|
||||||
if (((_bits & 131072L) != 0))
|
if (((_bits & 131072L) != 0))
|
||||||
{
|
{
|
||||||
foreach(var value in _ContentRange)
|
foreach (var value in _ContentRange)
|
||||||
{
|
{
|
||||||
if (value != null)
|
if (value != null)
|
||||||
{
|
{
|
||||||
|
|
@ -9259,7 +9269,7 @@ namespace Microsoft.AspNet.Server.Kestrel.Http
|
||||||
|
|
||||||
if (((_bits & 262144L) != 0))
|
if (((_bits & 262144L) != 0))
|
||||||
{
|
{
|
||||||
foreach(var value in _Expires)
|
foreach (var value in _Expires)
|
||||||
{
|
{
|
||||||
if (value != null)
|
if (value != null)
|
||||||
{
|
{
|
||||||
|
|
@ -9271,7 +9281,7 @@ namespace Microsoft.AspNet.Server.Kestrel.Http
|
||||||
|
|
||||||
if (((_bits & 524288L) != 0))
|
if (((_bits & 524288L) != 0))
|
||||||
{
|
{
|
||||||
foreach(var value in _LastModified)
|
foreach (var value in _LastModified)
|
||||||
{
|
{
|
||||||
if (value != null)
|
if (value != null)
|
||||||
{
|
{
|
||||||
|
|
@ -9283,7 +9293,7 @@ namespace Microsoft.AspNet.Server.Kestrel.Http
|
||||||
|
|
||||||
if (((_bits & 1048576L) != 0))
|
if (((_bits & 1048576L) != 0))
|
||||||
{
|
{
|
||||||
foreach(var value in _AcceptRanges)
|
foreach (var value in _AcceptRanges)
|
||||||
{
|
{
|
||||||
if (value != null)
|
if (value != null)
|
||||||
{
|
{
|
||||||
|
|
@ -9295,7 +9305,7 @@ namespace Microsoft.AspNet.Server.Kestrel.Http
|
||||||
|
|
||||||
if (((_bits & 2097152L) != 0))
|
if (((_bits & 2097152L) != 0))
|
||||||
{
|
{
|
||||||
foreach(var value in _Age)
|
foreach (var value in _Age)
|
||||||
{
|
{
|
||||||
if (value != null)
|
if (value != null)
|
||||||
{
|
{
|
||||||
|
|
@ -9307,7 +9317,7 @@ namespace Microsoft.AspNet.Server.Kestrel.Http
|
||||||
|
|
||||||
if (((_bits & 4194304L) != 0))
|
if (((_bits & 4194304L) != 0))
|
||||||
{
|
{
|
||||||
foreach(var value in _ETag)
|
foreach (var value in _ETag)
|
||||||
{
|
{
|
||||||
if (value != null)
|
if (value != null)
|
||||||
{
|
{
|
||||||
|
|
@ -9319,7 +9329,7 @@ namespace Microsoft.AspNet.Server.Kestrel.Http
|
||||||
|
|
||||||
if (((_bits & 8388608L) != 0))
|
if (((_bits & 8388608L) != 0))
|
||||||
{
|
{
|
||||||
foreach(var value in _Location)
|
foreach (var value in _Location)
|
||||||
{
|
{
|
||||||
if (value != null)
|
if (value != null)
|
||||||
{
|
{
|
||||||
|
|
@ -9331,7 +9341,7 @@ namespace Microsoft.AspNet.Server.Kestrel.Http
|
||||||
|
|
||||||
if (((_bits & 16777216L) != 0))
|
if (((_bits & 16777216L) != 0))
|
||||||
{
|
{
|
||||||
foreach(var value in _ProxyAutheticate)
|
foreach (var value in _ProxyAutheticate)
|
||||||
{
|
{
|
||||||
if (value != null)
|
if (value != null)
|
||||||
{
|
{
|
||||||
|
|
@ -9343,7 +9353,7 @@ namespace Microsoft.AspNet.Server.Kestrel.Http
|
||||||
|
|
||||||
if (((_bits & 33554432L) != 0))
|
if (((_bits & 33554432L) != 0))
|
||||||
{
|
{
|
||||||
foreach(var value in _RetryAfter)
|
foreach (var value in _RetryAfter)
|
||||||
{
|
{
|
||||||
if (value != null)
|
if (value != null)
|
||||||
{
|
{
|
||||||
|
|
@ -9358,8 +9368,9 @@ namespace Microsoft.AspNet.Server.Kestrel.Http
|
||||||
if (_rawServer != null)
|
if (_rawServer != null)
|
||||||
{
|
{
|
||||||
output.CopyFrom(_rawServer, 0, _rawServer.Length);
|
output.CopyFrom(_rawServer, 0, _rawServer.Length);
|
||||||
} else
|
}
|
||||||
foreach(var value in _Server)
|
else
|
||||||
|
foreach (var value in _Server)
|
||||||
{
|
{
|
||||||
if (value != null)
|
if (value != null)
|
||||||
{
|
{
|
||||||
|
|
@ -9371,7 +9382,7 @@ namespace Microsoft.AspNet.Server.Kestrel.Http
|
||||||
|
|
||||||
if (((_bits & 134217728L) != 0))
|
if (((_bits & 134217728L) != 0))
|
||||||
{
|
{
|
||||||
foreach(var value in _SetCookie)
|
foreach (var value in _SetCookie)
|
||||||
{
|
{
|
||||||
if (value != null)
|
if (value != null)
|
||||||
{
|
{
|
||||||
|
|
@ -9383,7 +9394,7 @@ namespace Microsoft.AspNet.Server.Kestrel.Http
|
||||||
|
|
||||||
if (((_bits & 268435456L) != 0))
|
if (((_bits & 268435456L) != 0))
|
||||||
{
|
{
|
||||||
foreach(var value in _Vary)
|
foreach (var value in _Vary)
|
||||||
{
|
{
|
||||||
if (value != null)
|
if (value != null)
|
||||||
{
|
{
|
||||||
|
|
@ -9395,7 +9406,7 @@ namespace Microsoft.AspNet.Server.Kestrel.Http
|
||||||
|
|
||||||
if (((_bits & 536870912L) != 0))
|
if (((_bits & 536870912L) != 0))
|
||||||
{
|
{
|
||||||
foreach(var value in _WWWAuthenticate)
|
foreach (var value in _WWWAuthenticate)
|
||||||
{
|
{
|
||||||
if (value != null)
|
if (value != null)
|
||||||
{
|
{
|
||||||
|
|
@ -9407,7 +9418,7 @@ namespace Microsoft.AspNet.Server.Kestrel.Http
|
||||||
|
|
||||||
if (((_bits & 1073741824L) != 0))
|
if (((_bits & 1073741824L) != 0))
|
||||||
{
|
{
|
||||||
foreach(var value in _AccessControlAllowCredentials)
|
foreach (var value in _AccessControlAllowCredentials)
|
||||||
{
|
{
|
||||||
if (value != null)
|
if (value != null)
|
||||||
{
|
{
|
||||||
|
|
@ -9419,7 +9430,7 @@ namespace Microsoft.AspNet.Server.Kestrel.Http
|
||||||
|
|
||||||
if (((_bits & 2147483648L) != 0))
|
if (((_bits & 2147483648L) != 0))
|
||||||
{
|
{
|
||||||
foreach(var value in _AccessControlAllowHeaders)
|
foreach (var value in _AccessControlAllowHeaders)
|
||||||
{
|
{
|
||||||
if (value != null)
|
if (value != null)
|
||||||
{
|
{
|
||||||
|
|
@ -9431,7 +9442,7 @@ namespace Microsoft.AspNet.Server.Kestrel.Http
|
||||||
|
|
||||||
if (((_bits & 4294967296L) != 0))
|
if (((_bits & 4294967296L) != 0))
|
||||||
{
|
{
|
||||||
foreach(var value in _AccessControlAllowMethods)
|
foreach (var value in _AccessControlAllowMethods)
|
||||||
{
|
{
|
||||||
if (value != null)
|
if (value != null)
|
||||||
{
|
{
|
||||||
|
|
@ -9443,7 +9454,7 @@ namespace Microsoft.AspNet.Server.Kestrel.Http
|
||||||
|
|
||||||
if (((_bits & 8589934592L) != 0))
|
if (((_bits & 8589934592L) != 0))
|
||||||
{
|
{
|
||||||
foreach(var value in _AccessControlAllowOrigin)
|
foreach (var value in _AccessControlAllowOrigin)
|
||||||
{
|
{
|
||||||
if (value != null)
|
if (value != null)
|
||||||
{
|
{
|
||||||
|
|
@ -9455,7 +9466,7 @@ namespace Microsoft.AspNet.Server.Kestrel.Http
|
||||||
|
|
||||||
if (((_bits & 17179869184L) != 0))
|
if (((_bits & 17179869184L) != 0))
|
||||||
{
|
{
|
||||||
foreach(var value in _AccessControlExposeHeaders)
|
foreach (var value in _AccessControlExposeHeaders)
|
||||||
{
|
{
|
||||||
if (value != null)
|
if (value != null)
|
||||||
{
|
{
|
||||||
|
|
@ -9467,7 +9478,7 @@ namespace Microsoft.AspNet.Server.Kestrel.Http
|
||||||
|
|
||||||
if (((_bits & 34359738368L) != 0))
|
if (((_bits & 34359738368L) != 0))
|
||||||
{
|
{
|
||||||
foreach(var value in _AccessControlMaxAge)
|
foreach (var value in _AccessControlMaxAge)
|
||||||
{
|
{
|
||||||
if (value != null)
|
if (value != null)
|
||||||
{
|
{
|
||||||
|
|
@ -9480,8 +9491,13 @@ namespace Microsoft.AspNet.Server.Kestrel.Http
|
||||||
}
|
}
|
||||||
public unsafe void Append(byte[] keyBytes, int keyOffset, int keyLength, string value)
|
public unsafe void Append(byte[] keyBytes, int keyOffset, int keyLength, string value)
|
||||||
{
|
{
|
||||||
fixed(byte* ptr = keyBytes) { var pUB = ptr + keyOffset; var pUL = (ulong*)pUB; var pUI = (uint*)pUB; var pUS = (ushort*)pUB;
|
fixed (byte* ptr = &keyBytes[keyOffset])
|
||||||
switch(keyLength)
|
{
|
||||||
|
var pUB = ptr;
|
||||||
|
var pUL = (ulong*)pUB;
|
||||||
|
var pUI = (uint*)pUB;
|
||||||
|
var pUS = (ushort*)pUB;
|
||||||
|
switch (keyLength)
|
||||||
{
|
{
|
||||||
case 13:
|
case 13:
|
||||||
{
|
{
|
||||||
|
|
@ -10063,7 +10079,8 @@ namespace Microsoft.AspNet.Server.Kestrel.Http
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}}
|
}
|
||||||
|
}
|
||||||
var key = System.Text.Encoding.ASCII.GetString(keyBytes, keyOffset, keyLength);
|
var key = System.Text.Encoding.ASCII.GetString(keyBytes, keyOffset, keyLength);
|
||||||
StringValues existing;
|
StringValues existing;
|
||||||
Unknown.TryGetValue(key, out existing);
|
Unknown.TryGetValue(key, out existing);
|
||||||
|
|
|
||||||
|
|
@ -175,9 +175,9 @@ namespace Microsoft.AspNet.Server.Kestrel.Infrastructure
|
||||||
}
|
}
|
||||||
else if (_block.End - _index >= sizeof(long))
|
else if (_block.End - _index >= sizeof(long))
|
||||||
{
|
{
|
||||||
fixed (byte* ptr = _block.Array)
|
fixed (byte* ptr = &_block.Array[_index])
|
||||||
{
|
{
|
||||||
return *(long*)(ptr + _index);
|
return *(long*)(ptr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (_block.Next == null)
|
else if (_block.Next == null)
|
||||||
|
|
@ -195,15 +195,15 @@ namespace Microsoft.AspNet.Server.Kestrel.Infrastructure
|
||||||
}
|
}
|
||||||
|
|
||||||
long blockLong;
|
long blockLong;
|
||||||
fixed (byte* ptr = _block.Array)
|
fixed (byte* ptr = &_block.Array[_block.End - sizeof(long)])
|
||||||
{
|
{
|
||||||
blockLong = *(long*)(ptr + _block.End - sizeof(long));
|
blockLong = *(long*)(ptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
long nextLong;
|
long nextLong;
|
||||||
fixed (byte* ptr = _block.Next.Array)
|
fixed (byte* ptr = &_block.Next.Array[_block.Next.Start])
|
||||||
{
|
{
|
||||||
nextLong = *(long*)(ptr + _block.Next.Start);
|
nextLong = *(long*)(ptr );
|
||||||
}
|
}
|
||||||
|
|
||||||
return (blockLong >> (sizeof(long) - blockBytes) * 8) | (nextLong << (sizeof(long) - nextBytes) * 8);
|
return (blockLong >> (sizeof(long) - blockBytes) * 8) | (nextLong << (sizeof(long) - nextBytes) * 8);
|
||||||
|
|
@ -770,9 +770,10 @@ namespace Microsoft.AspNet.Server.Kestrel.Infrastructure
|
||||||
bytesLeftInBlockMinusSpan = bytesLeftInBlock - 3;
|
bytesLeftInBlockMinusSpan = bytesLeftInBlock - 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
fixed (byte* pOutput = block.Data.Array)
|
fixed (byte* pOutput = &block.Data.Array[block.End])
|
||||||
{
|
{
|
||||||
var output = pOutput + block.End;
|
//this line is needed to allow output be an register var
|
||||||
|
var output = pOutput;
|
||||||
|
|
||||||
var copied = 0;
|
var copied = 0;
|
||||||
for (; input < inputEndMinusSpan && copied < bytesLeftInBlockMinusSpan; copied += 4)
|
for (; input < inputEndMinusSpan && copied < bytesLeftInBlockMinusSpan; copied += 4)
|
||||||
|
|
|
||||||
|
|
@ -66,7 +66,7 @@ namespace Microsoft.AspNet.Server.Kestrel.Infrastructure
|
||||||
|
|
||||||
var bytes = Encoding.ASCII.GetBytes(str);
|
var bytes = Encoding.ASCII.GetBytes(str);
|
||||||
|
|
||||||
fixed (byte* ptr = bytes)
|
fixed (byte* ptr = &bytes[0])
|
||||||
{
|
{
|
||||||
return *(long*)ptr;
|
return *(long*)ptr;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -256,7 +256,7 @@ namespace Microsoft.AspNet.Server.Kestrel.Http
|
||||||
}}
|
}}
|
||||||
protected override StringValues GetValueFast(string key)
|
protected override StringValues GetValueFast(string key)
|
||||||
{{
|
{{
|
||||||
switch(key.Length)
|
switch (key.Length)
|
||||||
{{{Each(loop.HeadersByLength, byLength => $@"
|
{{{Each(loop.HeadersByLength, byLength => $@"
|
||||||
case {byLength.Key}:
|
case {byLength.Key}:
|
||||||
{{{Each(byLength, header => $@"
|
{{{Each(byLength, header => $@"
|
||||||
|
|
@ -282,7 +282,7 @@ namespace Microsoft.AspNet.Server.Kestrel.Http
|
||||||
}}
|
}}
|
||||||
protected override bool TryGetValueFast(string key, out StringValues value)
|
protected override bool TryGetValueFast(string key, out StringValues value)
|
||||||
{{
|
{{
|
||||||
switch(key.Length)
|
switch (key.Length)
|
||||||
{{{Each(loop.HeadersByLength, byLength => $@"
|
{{{Each(loop.HeadersByLength, byLength => $@"
|
||||||
case {byLength.Key}:
|
case {byLength.Key}:
|
||||||
{{{Each(byLength, header => $@"
|
{{{Each(byLength, header => $@"
|
||||||
|
|
@ -307,7 +307,7 @@ namespace Microsoft.AspNet.Server.Kestrel.Http
|
||||||
}}
|
}}
|
||||||
protected override void SetValueFast(string key, StringValues value)
|
protected override void SetValueFast(string key, StringValues value)
|
||||||
{{
|
{{
|
||||||
switch(key.Length)
|
switch (key.Length)
|
||||||
{{{Each(loop.HeadersByLength, byLength => $@"
|
{{{Each(loop.HeadersByLength, byLength => $@"
|
||||||
case {byLength.Key}:
|
case {byLength.Key}:
|
||||||
{{{Each(byLength, header => $@"
|
{{{Each(byLength, header => $@"
|
||||||
|
|
@ -325,7 +325,7 @@ namespace Microsoft.AspNet.Server.Kestrel.Http
|
||||||
}}
|
}}
|
||||||
protected override void AddValueFast(string key, StringValues value)
|
protected override void AddValueFast(string key, StringValues value)
|
||||||
{{
|
{{
|
||||||
switch(key.Length)
|
switch (key.Length)
|
||||||
{{{Each(loop.HeadersByLength, byLength => $@"
|
{{{Each(loop.HeadersByLength, byLength => $@"
|
||||||
case {byLength.Key}:
|
case {byLength.Key}:
|
||||||
{{{Each(byLength, header => $@"
|
{{{Each(byLength, header => $@"
|
||||||
|
|
@ -347,7 +347,7 @@ namespace Microsoft.AspNet.Server.Kestrel.Http
|
||||||
}}
|
}}
|
||||||
protected override bool RemoveFast(string key)
|
protected override bool RemoveFast(string key)
|
||||||
{{
|
{{
|
||||||
switch(key.Length)
|
switch (key.Length)
|
||||||
{{{Each(loop.HeadersByLength, byLength => $@"
|
{{{Each(loop.HeadersByLength, byLength => $@"
|
||||||
case {byLength.Key}:
|
case {byLength.Key}:
|
||||||
{{{Each(byLength, header => $@"
|
{{{Each(byLength, header => $@"
|
||||||
|
|
@ -405,8 +405,9 @@ namespace Microsoft.AspNet.Server.Kestrel.Http
|
||||||
if (_raw{header.Identifier} != null)
|
if (_raw{header.Identifier} != null)
|
||||||
{{
|
{{
|
||||||
output.CopyFrom(_raw{header.Identifier}, 0, _raw{header.Identifier}.Length);
|
output.CopyFrom(_raw{header.Identifier}, 0, _raw{header.Identifier}.Length);
|
||||||
}} else ")}
|
}}
|
||||||
foreach(var value in _{header.Identifier})
|
else ")}
|
||||||
|
foreach (var value in _{header.Identifier})
|
||||||
{{
|
{{
|
||||||
if (value != null)
|
if (value != null)
|
||||||
{{
|
{{
|
||||||
|
|
@ -419,8 +420,13 @@ namespace Microsoft.AspNet.Server.Kestrel.Http
|
||||||
}}" : "")}
|
}}" : "")}
|
||||||
public unsafe void Append(byte[] keyBytes, int keyOffset, int keyLength, string value)
|
public unsafe void Append(byte[] keyBytes, int keyOffset, int keyLength, string value)
|
||||||
{{
|
{{
|
||||||
fixed(byte* ptr = keyBytes) {{ var pUB = ptr + keyOffset; var pUL = (ulong*)pUB; var pUI = (uint*)pUB; var pUS = (ushort*)pUB;
|
fixed (byte* ptr = &keyBytes[keyOffset])
|
||||||
switch(keyLength)
|
{{
|
||||||
|
var pUB = ptr;
|
||||||
|
var pUL = (ulong*)pUB;
|
||||||
|
var pUI = (uint*)pUB;
|
||||||
|
var pUS = (ushort*)pUB;
|
||||||
|
switch (keyLength)
|
||||||
{{{Each(loop.HeadersByLength, byLength => $@"
|
{{{Each(loop.HeadersByLength, byLength => $@"
|
||||||
case {byLength.Key}:
|
case {byLength.Key}:
|
||||||
{{{Each(byLength, header => $@"
|
{{{Each(byLength, header => $@"
|
||||||
|
|
@ -440,7 +446,8 @@ namespace Microsoft.AspNet.Server.Kestrel.Http
|
||||||
}}
|
}}
|
||||||
")}}}
|
")}}}
|
||||||
break;
|
break;
|
||||||
")}}}}}
|
")}}}
|
||||||
|
}}
|
||||||
var key = System.Text.Encoding.ASCII.GetString(keyBytes, keyOffset, keyLength);
|
var key = System.Text.Encoding.ASCII.GetString(keyBytes, keyOffset, keyLength);
|
||||||
StringValues existing;
|
StringValues existing;
|
||||||
Unknown.TryGetValue(key, out existing);
|
Unknown.TryGetValue(key, out existing);
|
||||||
|
|
@ -479,8 +486,7 @@ namespace Microsoft.AspNet.Server.Kestrel.Http
|
||||||
}}
|
}}
|
||||||
}}
|
}}
|
||||||
}}
|
}}
|
||||||
")}}}
|
")}}}";
|
||||||
";
|
|
||||||
}
|
}
|
||||||
public virtual void AfterCompile(AfterCompileContext context)
|
public virtual void AfterCompile(AfterCompileContext context)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue