aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/src/main/scala/org/apache/spark/util/collection/PrimitiveVector.scala15
-rw-r--r--core/src/main/scala/org/apache/spark/util/collection/SizeTrackingVector.scala7
2 files changed, 12 insertions, 10 deletions
diff --git a/core/src/main/scala/org/apache/spark/util/collection/PrimitiveVector.scala b/core/src/main/scala/org/apache/spark/util/collection/PrimitiveVector.scala
index 7e76d060d6..b6c380a8ee 100644
--- a/core/src/main/scala/org/apache/spark/util/collection/PrimitiveVector.scala
+++ b/core/src/main/scala/org/apache/spark/util/collection/PrimitiveVector.scala
@@ -71,12 +71,21 @@ class PrimitiveVector[@specialized(Long, Int, Double) V: ClassTag](initialSize:
/** Resizes the array, dropping elements if the total length decreases. */
def resize(newLength: Int): PrimitiveVector[V] = {
- val newArray = new Array[V](newLength)
- _array.copyToArray(newArray)
- _array = newArray
+ _array = copyArrayWithLength(newLength)
if (newLength < _numElements) {
_numElements = newLength
}
this
}
+
+ /** Return a trimmed version of the underlying array. */
+ def toArray: Array[V] = {
+ copyArrayWithLength(size)
+ }
+
+ private def copyArrayWithLength(length: Int): Array[V] = {
+ val copy = new Array[V](length)
+ _array.copyToArray(copy)
+ copy
+ }
}
diff --git a/core/src/main/scala/org/apache/spark/util/collection/SizeTrackingVector.scala b/core/src/main/scala/org/apache/spark/util/collection/SizeTrackingVector.scala
index 65a7b4e0d4..dfcfb66af8 100644
--- a/core/src/main/scala/org/apache/spark/util/collection/SizeTrackingVector.scala
+++ b/core/src/main/scala/org/apache/spark/util/collection/SizeTrackingVector.scala
@@ -36,11 +36,4 @@ private[spark] class SizeTrackingVector[T: ClassTag]
resetSamples()
this
}
-
- /**
- * Return a trimmed version of the underlying array.
- */
- def toArray: Array[T] = {
- super.iterator.toArray
- }
}