From 7ddfb4c3c7ccce125a4060a0b7049c626b28064b Mon Sep 17 00:00:00 2001 From: "kenton@google.com" Date: Fri, 7 Aug 2009 21:19:29 +0000 Subject: Remove semi-broken Java thread-local builder freelist 'optimization'. Maybe bring back later in optional form. --- .../main/java/com/google/protobuf/Internal.java | 75 +--------------------- 1 file changed, 1 insertion(+), 74 deletions(-) (limited to 'java/src/main') 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,82 +38,9 @@ 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 { - @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 - extends ThreadLocal> { - @Override - protected QuickQueue initialValue() { - return new QuickQueue(); - } - } - /** * Helper called by generated code to construct default values for string * fields. -- cgit v1.2.3