bdd17cde8cf675f5d5703aad4dfb565932fb4c50 |
|
08-Feb-2012 |
Elliott Hughes <enh@google.com> |
Fix an ICS regression with hasArray on a JNI-allocated DirectByteBuffer. Bug: http://code.google.com/p/android/issues/detail?id=24327 Change-Id: Ib31b60fe01e3d0b5a1ed7125ddf047e09fd64056
|
f934c3d2c8dd9e6bc5299cef41adace2a671637d |
|
15-Mar-2011 |
Elliott Hughes <enh@google.com> |
Make OSMemory the semi-supported libcore.io.Memory. Looks like we're not going to bother with a separate libcore.os package, when libcore.io will do. Change-Id: I2806c59349ed4b6410d768c4207c384ced973c54
|
a1603838fe9e865575c87982e32c6343740e464c |
|
11-Dec-2010 |
Elliott Hughes <enh@google.com> |
Lots more bounds-checking/exception-throwing consistency. Overflow-safe checks all round, plus better detail messages. This isn't quite everything, but it's a large chunk of the work. Most notably, this is all of io and nio. There are numerous changes of exception priority here, and the harmony tests noticed a subset of them in the nio code. I've modified our checked-out copy of the tests to accept any of the throwable exceptions. Change-Id: Id185f1228fb9a1d5fc9494e78375b5623fb0fe14
|
43a9f774d075e0e441d8b996e3f6c81ea483ec89 |
|
19-Oct-2010 |
Elliott Hughes <enh@google.com> |
BufferIterator support for byte[]. Bug: 3032515 Change-Id: I040a92c3ce241aa97719ff94e3cc31c62473bf46
|
af301fb0e674665dae3e9cb94344558923ec8e0a |
|
19-Oct-2010 |
Elliott Hughes <enh@google.com> |
Factor out the code that peeks/pokes ints/longs/shorts from a byte[]. My intention here is that I'll want to reuse this code in my BufferIterator for byte[]s (http://b/3032515). This actually makes a noticeable nio benchmark improvement, presumably because of the switch to static methods, so this helps http://b/2985452 too. I plan on experimenting with native implementations for the new OSMemory methods, but that can wait. Change-Id: Ie5b34910b1e99930ba1f13c0e7002245b901039b
|
17b2f493468764dc1f237c02d94747d122dbd101 |
|
08-Oct-2010 |
Elliott Hughes <enh@google.com> |
Fix our byte order behavior for slice and wrap operations. Our documentation was correct, but our implementation was not. Includes extensive new tests. Bug: 3066167 Change-Id: Ie7d6e6432f1d675f20af020cc662dab6eb181a50
|
8fbc397fc09158bee0bc0cb231c609c4c6e9fc15 |
|
18-Sep-2010 |
Elliott Hughes <enh@google.com> |
Optimize non-direct (heap) buffer bulk put. I've also factored out the bounds checking, even though the JIT can't yet inline it back. I'm unwilling to duplicate all that code again. This patch also fixes bugs in the previous checkin relating to offsets and positions. In real life (and, seemingly, in all our tests) these tend to be 0, making it rare that anyone trips over these bugs. (The first nio change I made was fixing just such a bug.) I've improved the test I added last time so that it covers more of these cases. Here are the "after" performance figures for heap buffer bulk copies: CharBuffer_getCharArray 5797 CharBuffer_putCharArray 5818 DoubleBuffer_getDoubleArray 13053 DoubleBuffer_putDoubleArray 13026 FloatBuffer_getFloatArray 8216 FloatBuffer_putFloatArray 8283 IntBuffer_getIntArray 8253 IntBuffer_putIntArray 8371 LongBuffer_getLongArray 13053 LongBuffer_putLongArray 13020 ShortBuffer_getShortArray 5796 ShortBuffer_putShortArray 5864 This compares well with with direct buffer performance (just gets shown here): CharBuffer_getCharArray 4412 DoubleBuffer_getDoubleArray 11594 FloatBuffer_getFloatArray 6787 IntBuffer_getIntArray 6791 LongBuffer_getLongArray 11672 ShortBuffer_getShortArray 4430 Bug: 2985452 Change-Id: I37307f9b304c87a87af5313790444dcdf6174ff1
|
0bc30ae8420b5b1abc1b2eefbdf8846309b5447d |
|
13-Sep-2010 |
Elliott Hughes <enh@google.com> |
More nio speedups. Small improvements this time. Stop penalizing getChar/putChar with an extra level of indirection through getShort/putShort; our VM can't win that back yet, and the extra method call is a significant fraction of the total time taken for these operations (1/3rd). This applies to direct, heap, and mapped buffers. (One day we'll be able to come back and remove this.) Also remove the float/double specializations from MemoryBlock, rewriting the two callers of each to use int/long directly. Those callers are public API, so this is as far as the removal of useless duplication can go here. This applies to direct and mapped buffers. Unroll loops (!) used to load/store short/int/long values from Java heap byte[]s for performance. This applies to heap buffers. Bug: 2935622 Change-Id: I093122af2b49d3ef864b87dce637c781727445dd
|
0e1b748ecabf720065a632f28330f5d4d037d5ae |
|
10-Sep-2010 |
Elliott Hughes <enh@google.com> |
Consistent naming for get/put/wrap arguments. Bug: 2935622 Change-Id: Icb39392f9106f9fe5ba70ccdcb6b059dbf5617bc
|
0c53cf8b2c46deb41e91db50ddc17d598cc64a10 |
|
09-Sep-2010 |
Elliott Hughes <enh@google.com> |
Speed up MappedByteBuffer. Make it possible to override limit(int) and position(int) internally, so I can avoid updating MappedByteBufferAdapter's wrapped ByteBuffer's limit and position on every get or put. I still need to do extra work with position if you use the get/put overloads that don't take an index, but even that becomes cheaper. The indexed overloads benefit the most, though. Before: benchmark before after (both us) ByteBuffer_getByte 830 757 ByteBuffer_getChar 940 875 ByteBuffer_getByte_indexed 800 509 ByteBuffer_getChar_indexed 936 643 Also factor out duplicated toString implementations. Bug: 2935622 Change-Id: I4cfe206fde638bddb5a7b4a62223e2588f44b8ac
|
29dbfe19b113a13b712be2bc762ef1c81cd06c47 |
|
03-Sep-2010 |
Elliott Hughes <enh@google.com> |
Use finalizers to free direct buffers. Also switch to a cheaper scheme for avoiding double-frees (which could only happen if library code is broken; at the moment the only caller is the iovec-style stuff). This halves the cost of direct buffer access, at the unimportant cost of not throwing an exception if we try to access a buffer we freed while we still had a reference to it. Also use named constants for the sizes of primitive types. Also kill BufferFactory. Bug: 2935622 Change-Id: I6021ce7531f49d8cff7635d6d2cc54851bacaf69
|
f33eae7e84eb6d3b0f4e86b59605bb3de73009f3 |
|
13-May-2010 |
Elliott Hughes <enh@google.com> |
Remove all trailing whitespace from the dalvik team-maintained parts of libcore. Gentlemen, you may now set your editors to "strip trailing whitespace"... Change-Id: I85b2f6c80e5fbef1af6cab11789790b078c11b1b
|
3ff29eb11a241d58c54ecc84230bb0672f4aa148 |
|
23-Apr-2010 |
Peter Hallam <peterhal@google.com> |
More merging of nio into luni Change-Id: Ib4356b3cd57490df8ff246ea6a4bc1c269ba848b
|