Specialize unsigned range and progression iterator calls

This commit is contained in:
Dmitry Petrov
2019-01-10 17:14:42 +03:00
parent 723e739960
commit 08abf5f2a2
12 changed files with 169 additions and 71 deletions
@@ -0,0 +1,38 @@
// WITH_RUNTIME
// IGNORE_BACKEND: JVM_IR
fun testUIntRangeForEach() {
var s = 0
(1u .. 5u).forEach {
s = s * 10 + it.toInt()
}
if (s != 12345) throw AssertionError("$s")
}
fun testUIntProgressionForEach() {
var s = 0
(5u downTo 1u).forEach {
s = s * 10 + it.toInt()
}
if (s != 54321) throw AssertionError("$s")
}
fun testULongRangeForEach() {
var s = 0
(1UL .. 5UL).forEach {
s = s * 10 + it.toInt()
}
if (s != 12345) throw AssertionError("$s")
}
fun testULongProgressionForEach() {
var s = 0
(5UL downTo 1UL).forEach {
s = s * 10 + it.toInt()
}
if (s != 54321) throw AssertionError("$s")
}
// 0 java/util/Iterator.next \(\)Ljava/lang/Object;
// 2 nextUInt
// 2 nextULong