Skip to content
This repository was archived by the owner on Dec 22, 2021. It is now read-only.

Commit 4f94cdd

Browse files
committed
break foreach+if into 2 while loops
1 parent faba4cd commit 4f94cdd

File tree

1 file changed

+28
-8
lines changed

1 file changed

+28
-8
lines changed

src/main/scala/strawman/collection/mutable/ArrayDeque.scala

Lines changed: 28 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -103,17 +103,37 @@ class ArrayDeque[A] private(var array: Array[AnyRef], var start: Int, var end: I
103103
copySliceToArray(srcStart = idx + removals - 1, dest = array2, destStart = idx, maxItems = size)
104104
set(array = array2, start = 0, end = size - removals)
105105
} else if (size - idx <= idx + removals) {
106-
//TODO: Instead of if in the loop, break into 2 loops
107-
(idx until size) foreach {i =>
108-
val elem = if (i + removals < size) get(i + removals) else null
109-
set(i, elem)
106+
/* We are doing this but without a if and foreach but 2 while loops for perf reasons:
107+
(idx until size) foreach {i =>
108+
val elem = if (i + removals < size) get(i + removals) else null
109+
set(i, elem)
110+
}
111+
*/
112+
var i = idx
113+
while(i + removals < size) {
114+
set(i, get(i + removals))
115+
i += 1
116+
}
117+
while(i < size) {
118+
set(i, null)
119+
i += 1
110120
}
111121
end = (end - removals) & mask
112122
} else {
113-
//TODO: Instead of if in the loop, break into 2 loops
114-
(0 until (idx + removals)).reverse foreach {i =>
115-
val elem = if (i - removals < 0) null else get(i - removals)
116-
set(i, elem)
123+
/* We are doing this but without a if and foreach but 2 while loops for perf reasons:
124+
(0 until (idx + removals)).reverse foreach {i =>
125+
val elem = if (i - removals < 0) null else get(i - removals)
126+
set(i, elem)
127+
}
128+
*/
129+
var i = idx + removals - 1
130+
while(i - removals >= 0) {
131+
set(i, get(i - removals))
132+
i -= 1
133+
}
134+
while (i >= 0) {
135+
set(i, null)
136+
i -= 1
117137
}
118138
start = (start + removals) & mask
119139
}

0 commit comments

Comments
 (0)