| 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
 | 
| 
 |