OpenJDK / lambda / lambda / jdk
changeset 8244:8657066e8307
Move MAX_ARRAY_SIZE from Streams to Nodes to reduce pressure on putback dependencies
author | briangoetz |
---|---|
date | Wed, 17 Apr 2013 16:36:23 -0400 |
parents | 76ac19e61df1 |
children | 5544bf8a3d4b |
files | src/share/classes/java/util/stream/Nodes.java src/share/classes/java/util/stream/SortedOps.java src/share/classes/java/util/stream/Streams.java |
diffstat | 3 files changed, 26 insertions(+), 26 deletions(-) [+] |
line wrap: on
line diff
--- a/src/share/classes/java/util/stream/Nodes.java Wed Apr 17 14:41:09 2013 -0400 +++ b/src/share/classes/java/util/stream/Nodes.java Wed Apr 17 16:36:23 2013 -0400 @@ -55,6 +55,11 @@ throw new Error("no instances"); } + /** + * The maximum size of an array that can be allocated. + */ + static final long MAX_ARRAY_SIZE = Integer.MAX_VALUE - 8; + private static final Node EMPTY_NODE = new EmptyNode.OfRef(); private static final Node.OfInt EMPTY_INT_NODE = new EmptyNode.OfInt(); private static final Node.OfLong EMPTY_LONG_NODE = new EmptyNode.OfLong(); @@ -258,7 +263,7 @@ * @return a {@code Node.Builder} */ static <T> Node.Builder<T> builder(long exactSizeIfKnown, IntFunction<T[]> generator) { - return (exactSizeIfKnown >= 0 && exactSizeIfKnown < Streams.MAX_ARRAY_SIZE) + return (exactSizeIfKnown >= 0 && exactSizeIfKnown < MAX_ARRAY_SIZE) ? new FixedNodeBuilder<>(exactSizeIfKnown, generator) : builder(); } @@ -296,7 +301,7 @@ * @return a {@code Node.Builder.OfInt} */ static Node.Builder.OfInt intBuilder(long exactSizeIfKnown) { - return (exactSizeIfKnown >= 0 && exactSizeIfKnown < Streams.MAX_ARRAY_SIZE) + return (exactSizeIfKnown >= 0 && exactSizeIfKnown < MAX_ARRAY_SIZE) ? new IntFixedNodeBuilder(exactSizeIfKnown) : intBuilder(); } @@ -333,7 +338,7 @@ * @return a {@code Node.Builder.OfLong} */ static Node.Builder.OfLong longBuilder(long exactSizeIfKnown) { - return (exactSizeIfKnown >= 0 && exactSizeIfKnown < Streams.MAX_ARRAY_SIZE) + return (exactSizeIfKnown >= 0 && exactSizeIfKnown < MAX_ARRAY_SIZE) ? new LongFixedNodeBuilder(exactSizeIfKnown) : longBuilder(); } @@ -370,7 +375,7 @@ * @return a {@code Node.Builder.OfDouble} */ static Node.Builder.OfDouble doubleBuilder(long exactSizeIfKnown) { - return (exactSizeIfKnown >= 0 && exactSizeIfKnown < Streams.MAX_ARRAY_SIZE) + return (exactSizeIfKnown >= 0 && exactSizeIfKnown < MAX_ARRAY_SIZE) ? new DoubleFixedNodeBuilder(exactSizeIfKnown) : doubleBuilder(); } @@ -413,7 +418,7 @@ IntFunction<P_OUT[]> generator) { long size = helper.exactOutputSizeIfKnown(spliterator); if (size >= 0 && spliterator.hasCharacteristics(Spliterator.SUBSIZED)) { - if (size >= Streams.MAX_ARRAY_SIZE) + if (size >= MAX_ARRAY_SIZE) throw new IllegalArgumentException("Stream size exceeds max array size"); P_OUT[] array = generator.apply((int) size); new SizedCollectorTask.OfRef<>(spliterator, helper, array).invoke(); @@ -449,7 +454,7 @@ boolean flattenTree) { long size = helper.exactOutputSizeIfKnown(spliterator); if (size >= 0 && spliterator.hasCharacteristics(Spliterator.SUBSIZED)) { - if (size >= Streams.MAX_ARRAY_SIZE) + if (size >= MAX_ARRAY_SIZE) throw new IllegalArgumentException("Stream size exceeds max array size"); int[] array = new int[(int) size]; new SizedCollectorTask.OfInt<>(spliterator, helper, array).invoke(); @@ -486,7 +491,7 @@ boolean flattenTree) { long size = helper.exactOutputSizeIfKnown(spliterator); if (size >= 0 && spliterator.hasCharacteristics(Spliterator.SUBSIZED)) { - if (size >= Streams.MAX_ARRAY_SIZE) + if (size >= MAX_ARRAY_SIZE) throw new IllegalArgumentException("Stream size exceeds max array size"); long[] array = new long[(int) size]; new SizedCollectorTask.OfLong<>(spliterator, helper, array).invoke(); @@ -523,7 +528,7 @@ boolean flattenTree) { long size = helper.exactOutputSizeIfKnown(spliterator); if (size >= 0 && spliterator.hasCharacteristics(Spliterator.SUBSIZED)) { - if (size >= Streams.MAX_ARRAY_SIZE) + if (size >= MAX_ARRAY_SIZE) throw new IllegalArgumentException("Stream size exceeds max array size"); double[] array = new double[(int) size]; new SizedCollectorTask.OfDouble<>(spliterator, helper, array).invoke(); @@ -720,7 +725,7 @@ @SuppressWarnings("unchecked") ArrayNode(long size, IntFunction<T[]> generator) { - if (size >= Streams.MAX_ARRAY_SIZE) + if (size >= MAX_ARRAY_SIZE) throw new IllegalArgumentException("Stream size exceeds max array size"); this.array = generator.apply((int) size); this.curSize = 0; @@ -1212,7 +1217,7 @@ FixedNodeBuilder(long size, IntFunction<T[]> generator) { super(size, generator); - assert size < Streams.MAX_ARRAY_SIZE; + assert size < MAX_ARRAY_SIZE; } @Override @@ -1372,7 +1377,7 @@ int curSize; IntArrayNode(long size) { - if (size >= Streams.MAX_ARRAY_SIZE) + if (size >= MAX_ARRAY_SIZE) throw new IllegalArgumentException("Stream size exceeds max array size"); this.array = new int[(int) size]; this.curSize = 0; @@ -1428,7 +1433,7 @@ int curSize; LongArrayNode(long size) { - if (size >= Streams.MAX_ARRAY_SIZE) + if (size >= MAX_ARRAY_SIZE) throw new IllegalArgumentException("Stream size exceeds max array size"); this.array = new long[(int) size]; this.curSize = 0; @@ -1482,7 +1487,7 @@ int curSize; DoubleArrayNode(long size) { - if (size >= Streams.MAX_ARRAY_SIZE) + if (size >= MAX_ARRAY_SIZE) throw new IllegalArgumentException("Stream size exceeds max array size"); this.array = new double[(int) size]; this.curSize = 0; @@ -1636,7 +1641,7 @@ IntFixedNodeBuilder(long size) { super(size); - assert size < Streams.MAX_ARRAY_SIZE; + assert size < MAX_ARRAY_SIZE; } @Override @@ -1690,7 +1695,7 @@ LongFixedNodeBuilder(long size) { super(size); - assert size < Streams.MAX_ARRAY_SIZE; + assert size < MAX_ARRAY_SIZE; } @Override @@ -1744,7 +1749,7 @@ DoubleFixedNodeBuilder(long size) { super(size); - assert size < Streams.MAX_ARRAY_SIZE; + assert size < MAX_ARRAY_SIZE; } @Override @@ -2019,7 +2024,7 @@ Spliterator<P_IN> leftSplit; if (!AbstractTask.suggestSplit(task.spliterator, task.targetSize) || ((leftSplit = task.spliterator.trySplit()) == null)) { - if (task.offset + task.length >= Streams.MAX_ARRAY_SIZE) + if (task.offset + task.length >= MAX_ARRAY_SIZE) throw new IllegalArgumentException("Stream size exceeds max array size"); T_SINK sink = (T_SINK) task; task.helper.wrapAndCopyInto(sink, task.spliterator);
--- a/src/share/classes/java/util/stream/SortedOps.java Wed Apr 17 14:41:09 2013 -0400 +++ b/src/share/classes/java/util/stream/SortedOps.java Wed Apr 17 16:36:23 2013 -0400 @@ -281,7 +281,7 @@ @Override public void begin(long size) { - if (size >= Streams.MAX_ARRAY_SIZE) + if (size >= Nodes.MAX_ARRAY_SIZE) throw new IllegalArgumentException("Stream size exceeds max array size"); array = (T[]) new Object[(int) size]; } @@ -347,7 +347,7 @@ @Override public void begin(long size) { - if (size >= Streams.MAX_ARRAY_SIZE) + if (size >= Nodes.MAX_ARRAY_SIZE) throw new IllegalArgumentException("Stream size exceeds max array size"); array = new int[(int) size]; } @@ -408,7 +408,7 @@ @Override public void begin(long size) { - if (size >= Streams.MAX_ARRAY_SIZE) + if (size >= Nodes.MAX_ARRAY_SIZE) throw new IllegalArgumentException("Stream size exceeds max array size"); array = new long[(int) size]; } @@ -469,7 +469,7 @@ @Override public void begin(long size) { - if (size >= Streams.MAX_ARRAY_SIZE) + if (size >= Nodes.MAX_ARRAY_SIZE) throw new IllegalArgumentException("Stream size exceeds max array size"); array = new double[(int) size]; }
--- a/src/share/classes/java/util/stream/Streams.java Wed Apr 17 14:41:09 2013 -0400 +++ b/src/share/classes/java/util/stream/Streams.java Wed Apr 17 16:36:23 2013 -0400 @@ -67,11 +67,6 @@ */ private static final Object NONE = new Object(); - /** - * The maximum size of an array that can be allocated. - */ - static final long MAX_ARRAY_SIZE = Integer.MAX_VALUE - 8; - // Stream construction /**