Allocate less in GetIPEndPoint (#1004)

This commit is contained in:
Pavel Krymets 2016-07-21 12:17:55 -07:00 committed by GitHub
parent 3078f4914c
commit 7b7e2889ce
1 changed files with 4 additions and 7 deletions

View File

@ -22,7 +22,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Internal.Networking
_field3 = _field0 = _field1 = _field2 = _field3 = 0; _field3 = _field0 = _field1 = _field2 = _field3 = 0;
} }
public IPEndPoint GetIPEndPoint() public unsafe IPEndPoint GetIPEndPoint()
{ {
// The bytes are represented in network byte order. // The bytes are represented in network byte order.
// //
@ -84,14 +84,11 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Internal.Networking
else else
{ {
// otherwise IPv6 // otherwise IPv6
var bytes1 = BitConverter.GetBytes(_field1);
var bytes2 = BitConverter.GetBytes(_field2);
var bytes = new byte[16]; var bytes = new byte[16];
for (int i = 0; i < 8; ++i) fixed (byte* b = bytes)
{ {
bytes[i] = bytes1[i]; *((long*)b) = _field1;
bytes[i + 8] = bytes2[i]; *((long*)(b + 8)) = _field2;
} }
return new IPEndPoint(new IPAddress(bytes), port); return new IPEndPoint(new IPAddress(bytes), port);