| Index: sdk/lib/collection/queue.dart
|
| diff --git a/sdk/lib/collection/queue.dart b/sdk/lib/collection/queue.dart
|
| index 72c4e959459752fea930646827888f70089d38cd..9e8580d6d18751a8b48ea7c9a2d83abeee6e8fe3 100644
|
| --- a/sdk/lib/collection/queue.dart
|
| +++ b/sdk/lib/collection/queue.dart
|
| @@ -587,7 +587,7 @@ class ListQueue<E> extends IterableBase<E> implements Queue<E> {
|
| */
|
| static int _nextPowerOf2(int number) {
|
| assert(number > 0);
|
| - number = (number << 2) - 1;
|
| + number = (number << 1) - 1;
|
| for(;;) {
|
| int nextNumber = number & (number - 1);
|
| if (nextNumber == 0) return number;
|
| @@ -678,6 +678,10 @@ class ListQueue<E> extends IterableBase<E> implements Queue<E> {
|
| /** Grows the table even if it is not full. */
|
| void _preGrow(int newElementCount) {
|
| assert(newElementCount >= length);
|
| +
|
| + // Add some extra room to ensure that there's room for more elements after
|
| + // expansion.
|
| + newElementCount += newElementCount >> 1;
|
| int newCapacity = _nextPowerOf2(newElementCount);
|
| List<E> newTable = new List<E>(newCapacity);
|
| _tail = _writeToList(newTable);
|
|
|