Chromium Code Reviews| 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); |
|
Ivan Posva
2012/09/28 16:26:09
Returning a List with two elements for buffer and
Mads Ager (google)
2012/09/29 11:54:53
Agreed, that is not pretty. I have a change up for
|
| + 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 |