Index: runtime/bin/socket_impl.dart |
diff --git a/runtime/bin/socket_impl.dart b/runtime/bin/socket_impl.dart |
index 49654130d1132e1aeac09c08c10343097025d226..3cd2c770f1cc6a8b7de41ace2b18d256f6beb8f4 100644 |
--- a/runtime/bin/socket_impl.dart |
+++ b/runtime/bin/socket_impl.dart |
@@ -404,28 +404,8 @@ class _Socket extends _SocketBase implements Socket { |
if ((offset + bytes) > buffer.length) { |
throw new IndexOutOfRangeException(offset + bytes); |
} |
- // When using the Dart C API to access raw data, using a ByteArray is |
- // currently much faster. This function will make a copy of the |
- // supplied List to a ByteArray if it isn't already. |
- List outBuffer; |
- int outOffset = offset; |
- if (buffer is Uint8List || buffer is ObjectArray) { |
- outBuffer = buffer; |
- } else { |
- outBuffer = new Uint8List(bytes); |
- outOffset = 0; |
- int j = offset; |
- for (int i = 0; i < bytes; i++) { |
- int value = buffer[j]; |
- if (value is! int) { |
- throw new FileIOException( |
- "List element is not an integer at index $j"); |
- } |
- outBuffer[i] = value; |
- j++; |
- } |
- } |
- var result = _writeList(outBuffer, outOffset, bytes); |
+ var fastBuffer = _ensureFastAndSerializableBuffer(buffer, offset, bytes); |
+ var result = _writeList(fastBuffer[0], fastBuffer[1], bytes); |
if (result is OSError) { |
_reportError(result, "Write failed"); |
// If writing fails we return 0 as the number of bytes and |