diff options
author | kenton@google.com <kenton@google.com@630680e5-0e50-0410-840e-4b1c322b438d> | 2009-08-07 21:19:29 +0000 |
---|---|---|
committer | kenton@google.com <kenton@google.com@630680e5-0e50-0410-840e-4b1c322b438d> | 2009-08-07 21:19:29 +0000 |
commit | 7ddfb4c3c7ccce125a4060a0b7049c626b28064b (patch) | |
tree | 87ae627e5071b03479eda30fc3757b6328d76dc0 /java/src | |
parent | 68996fc874300337ec7349f50d0b1cbb3a6f1bec (diff) | |
download | protobuf-7ddfb4c3c7ccce125a4060a0b7049c626b28064b.tar.gz protobuf-7ddfb4c3c7ccce125a4060a0b7049c626b28064b.tar.bz2 protobuf-7ddfb4c3c7ccce125a4060a0b7049c626b28064b.zip |
Remove semi-broken Java thread-local builder freelist 'optimization'. Maybe bring back later in optional form.
Diffstat (limited to 'java/src')
-rw-r--r-- | java/src/main/java/com/google/protobuf/Internal.java | 75 |
1 files changed, 1 insertions, 74 deletions
diff --git a/java/src/main/java/com/google/protobuf/Internal.java b/java/src/main/java/com/google/protobuf/Internal.java index ba8e6aee..965465e1 100644 --- a/java/src/main/java/com/google/protobuf/Internal.java +++ b/java/src/main/java/com/google/protobuf/Internal.java @@ -38,83 +38,10 @@ import java.io.UnsupportedEncodingException; * those generated messages do not reside in the {@code protobuf} package. * Others should not use this class directly. * - * @author cyrusn@google.com (Cyrus Najmabadi) + * @author kenton@google.com (Kenton Varda) */ public class Internal { /** - * Implementation of a Queue designed to have as little overhead as possible. - * No guarantees are made as to the order you will get values back from the - * queue. Currently it is a Last-In-First-Out implementation, but that may - * change in the future. - * - * Duplicate values are allowed, as are null values. - * - * Not threadsafe. - * - * @author cyrusn@google.com (Cyrus Najmabadi) - */ - public static final class QuickQueue<T> { - @SuppressWarnings("unchecked") - private T[] array = (T[]) new Object[16]; - private int size; - - /** - * Adds a value to the queue. - * - * @param value The value to add to the queue. - */ - public void offer(final T value) { - if (size == array.length) { - // I'd like to use Arrays.copy here. However, it is currently - // unavailable - // on android. So, for now, we just use the tried and true arraycopy - // technique. - @SuppressWarnings("unchecked") - final T[] copy = (T[]) new Object[size * 2]; - System.arraycopy(array, 0, copy, 0, array.length); - array = copy; - } - - array[size++] = value; - } - - /** - * Removes some previously added value to the queue, or {@code null} if the - * queue is empty. - * - * @return An existing value in the queue, or {@code null} if the queue is - * empty. - */ - public T poll() { - if (size == 0) { - return null; - } - - final T result = array[--size]; - // make sure we null out the entry so that we're not keeping anything - // alive unnecessarily. - array[size] = null; - - return result; - } - } - - /** - * Instances of this class will provide a unique {@code QuickQueue} to each - * thread that accesses it. Very useful for providing free lists without - * needing to take any locks. - * - * @author cyrusn@google.com (Cyrus Najmabadi) - */ - public static final class ThreadLocalQuickQueue<T> - extends ThreadLocal<QuickQueue<T>> { - @Override - protected QuickQueue<T> initialValue() { - return new QuickQueue<T>(); - } - } - - /** * Helper called by generated code to construct default values for string * fields. * <p> |