2c5e73632c4bb75004fd3858b2bba30857e82598 |
|
02-Dec-2009 |
Elliott Hughes <enh@google.com> |
Make java.util.Formatter perform acceptably (and fix two jtreg failures). Here are the slowdowns compared to hand-written StringBuilder.append code, for three cases: a long format string with no format specifiers, a long format string with a single %d, and a long format string with a single %s (in that order): passion-old: 54x 40x 10x sim-new: 1.7x 3.4x 5.3x passion-new: 9.2x 2.2x 1.8x Formatter has been changed to use a less expensive mechanism for parsing the format string, to not create expensive temporary objects unless they're actually needed (particularly strings used only in error messages), to not create a temporary StringBuilder in every transform* method, and to not charge for padding (or truncation) unless actually required. As Stroustrup would say, "you don't pay for what you don't use". Other changes: AbstractStringBuilder adds a special case for appending one StringBuilder to another, similar to its existing special case for String (because we do a much better job of copying a char[] with System.arraycopy than iterating over a CharSequence). Character reinstates the ASCII-range optimizations for isDigit and isUpperCase, both of which are used by Formatter. Bug 2295801 covers reinstating the rest of Character's special cases. String loses the unused inner class ConsolePrintStream, which isn't actually relevant to this change, but offended me greatly. CharBuffer gets a rewritten toString that's less inefficient. (This doesn't matter to us because the new Formatter doesn't use CharBuffer, but one shouldn't leave broken glass on the lawn.) The change to Formatter.close fixes a jtreg failure (and brings our implementation in line with our documentation, which already stated that multiple calls to Formatter.close only close the underlying Closeable once). The change to Formatter.format(Locale, ...) fixes a jtreg failure: any Formattable we call out to needs to be able to use Formatter.locale to find out the locale it's formatting for. I've reworded the documentation so that it's clearer (it was already correct, but ambiguous). Bug: 2272346
|
d2510429e70ab91a04c67d5ca39b30f354eba221 |
|
16-Oct-2009 |
Jesse Wilson <jessewilson@google.com> |
Update NIO and NIO char packages to Harmony 802921. Notable changes: - We don't use Harmony's new indexing for SelectorImpl. See the long bug thread on Harmony's site, https://issues.apache.org/jira/browse/HARMONY-6312 This patch includes the latest Harmony changes to SelectorImpl, which have been optimized since this patch was first created. - Several uses of StringBuffer updated to use StringBuilder - CharBuffer.read implementation changes - Additional checking in CharsetEncoder - Some inner classes made static - Harmony changed their Charset impl from ICU to Java. We're sticking with ICU. - Harmony added support for epoll. We're sticking with standard 'poll'. commit 2ed6cb602a52f4681afbf1348928f1b0c36d914d Merge: 8a74fca bcc5ec7 Author: Jesse Wilson <jessewilson@google.com> Date: Fri Aug 14 15:14:10 2009 -0700 Merge branch 'nio_802921' into nio_dalvik Conflicts: libcore/nio/.classpath libcore/nio/META-INF/MANIFEST.MF libcore/nio/build.xml libcore/nio/make/exclude.linux.x86.drl libcore/nio/make/exclude.linux.x86.ibm libcore/nio/make/exclude.linux.x86_64.drl libcore/nio/src/main/java/java/nio/BaseByteBuffer.java libcore/nio/src/main/java/java/nio/Buffer.java libcore/nio/src/main/java/java/nio/BufferOverflowException.java libcore/nio/src/main/java/java/nio/BufferUnderflowException.java libcore/nio/src/main/java/java/nio/ByteBuffer.java libcore/nio/src/main/java/java/nio/ByteOrder.java libcore/nio/src/main/java/java/nio/CharArrayBuffer.java libcore/nio/src/main/java/java/nio/CharBuffer.java libcore/nio/src/main/java/java/nio/CharSequenceAdapter.java libcore/nio/src/main/java/java/nio/CharToByteBufferAdapter.java libcore/nio/src/main/java/java/nio/DirectByteBuffer.java libcore/nio/src/main/java/java/nio/DirectByteBuffers.java libcore/nio/src/main/java/java/nio/DoubleArrayBuffer.java libcore/nio/src/main/java/java/nio/DoubleBuffer.java libcore/nio/src/main/java/java/nio/DoubleToByteBufferAdapter.java libcore/nio/src/main/java/java/nio/FloatArrayBuffer.java libcore/nio/src/main/java/java/nio/FloatBuffer.java libcore/nio/src/main/java/java/nio/FloatToByteBufferAdapter.java libcore/nio/src/main/java/java/nio/HeapByteBuffer.java libcore/nio/src/main/java/java/nio/IntArrayBuffer.java libcore/nio/src/main/java/java/nio/IntBuffer.java libcore/nio/src/main/java/java/nio/IntToByteBufferAdapter.java libcore/nio/src/main/java/java/nio/InvalidMarkException.java libcore/nio/src/main/java/java/nio/LongArrayBuffer.java libcore/nio/src/main/java/java/nio/LongBuffer.java libcore/nio/src/main/java/java/nio/LongToByteBufferAdapter.java libcore/nio/src/main/java/java/nio/MappedByteBuffer.java libcore/nio/src/main/java/java/nio/MappedByteBufferAdapter.java libcore/nio/src/main/java/java/nio/ReadOnlyBufferException.java libcore/nio/src/main/java/java/nio/ReadOnlyCharArrayBuffer.java libcore/nio/src/main/java/java/nio/ReadOnlyDirectByteBuffer.java libcore/nio/src/main/java/java/nio/ReadOnlyDoubleArrayBuffer.java libcore/nio/src/main/java/java/nio/ReadOnlyFloatArrayBuffer.java libcore/nio/src/main/java/java/nio/ReadOnlyHeapByteBuffer.java libcore/nio/src/main/java/java/nio/ReadOnlyIntArrayBuffer.java libcore/nio/src/main/java/java/nio/ReadOnlyLongArrayBuffer.java libcore/nio/src/main/java/java/nio/ReadOnlyShortArrayBuffer.java libcore/nio/src/main/java/java/nio/ReadWriteCharArrayBuffer.java libcore/nio/src/main/java/java/nio/ReadWriteDirectByteBuffer.java libcore/nio/src/main/java/java/nio/ReadWriteDoubleArrayBuffer.java libcore/nio/src/main/java/java/nio/ReadWriteFloatArrayBuffer.java libcore/nio/src/main/java/java/nio/ReadWriteHeapByteBuffer.java libcore/nio/src/main/java/java/nio/ReadWriteIntArrayBuffer.java libcore/nio/src/main/java/java/nio/ReadWriteLongArrayBuffer.java libcore/nio/src/main/java/java/nio/ReadWriteShortArrayBuffer.java libcore/nio/src/main/java/java/nio/ShortArrayBuffer.java libcore/nio/src/main/java/java/nio/ShortBuffer.java libcore/nio/src/main/java/java/nio/ShortToByteBufferAdapter.java libcore/nio/src/main/java/java/nio/channels/AlreadyConnectedException.java libcore/nio/src/main/java/java/nio/channels/AsynchronousCloseException.java libcore/nio/src/main/java/java/nio/channels/ByteChannel.java libcore/nio/src/main/java/java/nio/channels/CancelledKeyException.java libcore/nio/src/main/java/java/nio/channels/Channel.java libcore/nio/src/main/java/java/nio/channels/Channels.java libcore/nio/src/main/java/java/nio/channels/ClosedByInterruptException.java libcore/nio/src/main/java/java/nio/channels/ClosedChannelException.java libcore/nio/src/main/java/java/nio/channels/ClosedSelectorException.java libcore/nio/src/main/java/java/nio/channels/ConnectionPendingException.java libcore/nio/src/main/java/java/nio/channels/DatagramChannel.java libcore/nio/src/main/java/java/nio/channels/FileChannel.java libcore/nio/src/main/java/java/nio/channels/FileLock.java libcore/nio/src/main/java/java/nio/channels/FileLockInterruptionException.java libcore/nio/src/main/java/java/nio/channels/GatheringByteChannel.java libcore/nio/src/main/java/java/nio/channels/IllegalBlockingModeException.java libcore/nio/src/main/java/java/nio/channels/IllegalSelectorException.java libcore/nio/src/main/java/java/nio/channels/InterruptibleChannel.java libcore/nio/src/main/java/java/nio/channels/NoConnectionPendingException.java libcore/nio/src/main/java/java/nio/channels/NonReadableChannelException.java libcore/nio/src/main/java/java/nio/channels/NonWritableChannelException.java libcore/nio/src/main/java/java/nio/channels/NotYetBoundException.java libcore/nio/src/main/java/java/nio/channels/NotYetConnectedException.java libcore/nio/src/main/java/java/nio/channels/OverlappingFileLockException.java libcore/nio/src/main/java/java/nio/channels/Pipe.java libcore/nio/src/main/java/java/nio/channels/ReadableByteChannel.java libcore/nio/src/main/java/java/nio/channels/ScatteringByteChannel.java libcore/nio/src/main/java/java/nio/channels/SelectableChannel.java libcore/nio/src/main/java/java/nio/channels/SelectionKey.java libcore/nio/src/main/java/java/nio/channels/Selector.java libcore/nio/src/main/java/java/nio/channels/ServerSocketChannel.java libcore/nio/src/main/java/java/nio/channels/SocketChannel.java libcore/nio/src/main/java/java/nio/channels/UnresolvedAddressException.java libcore/nio/src/main/java/java/nio/channels/UnsupportedAddressTypeException.java libcore/nio/src/main/java/java/nio/channels/WritableByteChannel.java libcore/nio/src/main/java/java/nio/channels/spi/AbstractInterruptibleChannel.java libcore/nio/src/main/java/java/nio/channels/spi/AbstractSelectableChannel.java libcore/nio/src/main/java/java/nio/channels/spi/AbstractSelectionKey.java libcore/nio/src/main/java/java/nio/channels/spi/AbstractSelector.java libcore/nio/src/main/java/java/nio/channels/spi/SelectorProvider.java libcore/nio/src/main/java/org/apache/harmony/nio/AddressUtil.java libcore/nio/src/main/java/org/apache/harmony/nio/FileChannelFactory.java libcore/nio/src/main/java/org/apache/harmony/nio/internal/DatagramChannelImpl.java libcore/nio/src/main/java/org/apache/harmony/nio/internal/DirectBuffer.java libcore/nio/src/main/java/org/apache/harmony/nio/internal/FileChannelImpl.java libcore/nio/src/main/java/org/apache/harmony/nio/internal/FileLockImpl.java libcore/nio/src/main/java/org/apache/harmony/nio/internal/IOUtil.java libcore/nio/src/main/java/org/apache/harmony/nio/internal/MappedByteBufferFactory.java libcore/nio/src/main/java/org/apache/harmony/nio/internal/ReadOnlyFileChannel.java libcore/nio/src/main/java/org/apache/harmony/nio/internal/ReadWriteFileChannel.java libcore/nio/src/main/java/org/apache/harmony/nio/internal/SelectorImpl.java libcore/nio/src/main/java/org/apache/harmony/nio/internal/SelectorProviderImpl.java libcore/nio/src/main/java/org/apache/harmony/nio/internal/SocketChannelImpl.java libcore/nio/src/main/java/org/apache/harmony/nio/internal/WriteOnlyFileChannel.java libcore/nio/src/main/native/nio/shared/DirectBufferUtil.c libcore/nio/src/main/native/nio/unix/exports.txt libcore/nio/src/main/native/nio/unix/makefile libcore/nio/src/main/native/nio/windows/makefile libcore/nio/src/test/java/org/apache/harmony/nio/tests/java/nio/BufferOverflowExceptionTest.java libcore/nio/src/test/java/org/apache/harmony/nio/tests/java/nio/BufferUnderflowExceptionTest.java libcore/nio/src/test/java/org/apache/harmony/nio/tests/java/nio/CharBufferTest.java libcore/nio/src/test/java/org/apache/harmony/nio/tests/java/nio/FloatBufferTest.java libcore/nio/src/test/java/org/apache/harmony/nio/tests/java/nio/InvalidMarkExceptionTest.java libcore/nio/src/test/java/org/apache/harmony/nio/tests/java/nio/MappedByteBufferTest.java libcore/nio/src/test/java/org/apache/harmony/nio/tests/java/nio/ReadOnlyBufferExceptionTest.java libcore/nio/src/test/java/org/apache/harmony/nio/tests/java/nio/channels/DatagramChannelTest.java libcore/nio/src/test/java/org/apache/harmony/nio/tests/java/nio/channels/FileChannelLockingTest.java libcore/nio/src/test/java/org/apache/harmony/nio/tests/java/nio/channels/FileChannelTest.java libcore/nio/src/test/java/org/apache/harmony/nio/tests/java/nio/channels/FileChannelWin32OnlyTest.java libcore/nio/src/test/java/org/apache/harmony/nio/tests/java/nio/channels/FileLockTest.java libcore/nio/src/test/java/org/apache/harmony/nio/tests/java/nio/channels/ServerSocketChannelTest.java libcore/nio/src/test/java/org/apache/harmony/nio/tests/java/nio/channels/SocketChannelTest.java libcore/nio/src/test/java/org/apache/harmony/nio/tests/java/nio/channels/spi/AbstractSelectableChannelTest.java libcore/nio_char/.classpath libcore/nio_char/META-INF/MANIFEST.MF libcore/nio_char/build.xml libcore/nio_char/src/main/java/java/nio/charset/CharacterCodingException.java libcore/nio_char/src/main/java/java/nio/charset/Charset.java libcore/nio_char/src/main/java/java/nio/charset/CharsetDecoder.java libcore/nio_char/src/main/java/java/nio/charset/CharsetEncoder.java libcore/nio_char/src/main/java/java/nio/charset/CoderMalfunctionError.java libcore/nio_char/src/main/java/java/nio/charset/CoderResult.java libcore/nio_char/src/main/java/java/nio/charset/CodingErrorAction.java libcore/nio_char/src/main/java/java/nio/charset/IllegalCharsetNameException.java libcore/nio_char/src/main/java/java/nio/charset/MalformedInputException.java libcore/nio_char/src/main/java/java/nio/charset/UnmappableCharacterException.java libcore/nio_char/src/main/java/java/nio/charset/UnsupportedCharsetException.java libcore/nio_char/src/test/java/org/apache/harmony/nio_char/tests/java/nio/charset/CharsetDecoderTest.java libcore/nio_char/src/test/java/org/apache/harmony/nio_char/tests/java/nio/charset/CharsetEncoderTest.java libcore/nio_char/src/test/java/org/apache/harmony/nio_char/tests/java/nio/charset/CharsetTest.java libcore/nio_char/src/test/java/tests/api/java/nio/charset/ASCCharsetDecoderTest.java libcore/nio_char/src/test/java/tests/api/java/nio/charset/CharsetDecoderTest.java libcore/nio_char/src/test/java/tests/api/java/nio/charset/CharsetEncoderTest.java libcore/nio_char/src/test/java/tests/api/java/nio/charset/CharsetProviderTest.java libcore/nio_char/src/test/java/tests/api/java/nio/charset/CharsetTest.java libcore/nio_char/src/test/java/tests/api/java/nio/charset/GBCharsetDecoderTest.java libcore/nio_char/src/test/java/tests/api/java/nio/charset/GBCharsetEncoderTest.java libcore/nio_char/src/test/java/tests/api/java/nio/charset/ISOCharsetDecoderTest.java libcore/nio_char/src/test/java/tests/api/java/nio/charset/UTF16BECharsetDecoderTest.java libcore/nio_char/src/test/java/tests/api/java/nio/charset/UTF16CharsetDecoderTest.java libcore/nio_char/src/test/java/tests/api/java/nio/charset/UTF16CharsetEncoderTest.java libcore/nio_char/src/test/java/tests/api/java/nio/charset/UTF16LECharsetDecoderTest.java libcore/nio_char/src/test/java/tests/api/java/nio/charset/UTFCharsetDecoderTest.java libcore/nio_char/src/test/java/tests/api/java/nio/charset/UTFCharsetEncoderTest.java commit 8a74fca0d85c82a9d02a83d00fd028d9b09755f7 Author: Jesse Wilson <jessewilson@google.com> Date: Thu Aug 13 16:03:25 2009 -0700 Dalvik Nio, Nio char commit bcc5ec78806787fbecab742e716fc0d63bcece5c Author: Jesse Wilson <jessewilson@google.com> Date: Thu Aug 13 16:01:06 2009 -0700 Nio, nio char 802921 commit fc1e09e74aec8e49e0e23f13643deed1e9112af4 Author: Jesse Wilson <jessewilson@google.com> Date: Thu Aug 13 15:48:17 2009 -0700 Nio, nio char 527399
|
f6c387128427e121477c1b32ad35cdcaa5101ba3 |
|
04-Mar-2009 |
The Android Open Source Project <initial-contribution@android.com> |
auto import from //depot/cupcake/@135843
|
f72d5de56a522ac3be03873bdde26f23a5eeeb3c |
|
04-Mar-2009 |
The Android Open Source Project <initial-contribution@android.com> |
auto import from //depot/cupcake/@135843
|
89c1feb0a69a7707b271086e749975b3f7acacf7 |
|
18-Dec-2008 |
The Android Open Source Project <initial-contribution@android.com> |
Code drop from //branches/cupcake/...@124589
|
2ad60cfc28e14ee8f0bb038720836a4696c478ad |
|
21-Oct-2008 |
The Android Open Source Project <initial-contribution@android.com> |
Initial Contribution
|