Use java.lang.Long.divideUnsigned/remainderUnsigned in Java 1.8+

#KT-24876
This commit is contained in:
Dmitry Petrov
2019-01-11 17:32:12 +03:00
parent a344feff5c
commit 9973d59643
19 changed files with 361 additions and 2 deletions
@@ -0,0 +1,16 @@
// JVM_TARGET: 1.6
// WITH_RUNTIME
// IGNORE_BACKEND: JVM_IR
val ua = 1234UL
val ub = 5678UL
val u = ua * ub
fun box(): String {
val div = u / ua
if (div != ub) throw AssertionError("$div")
return "OK"
}
// 1 INVOKESTATIC kotlin/UnsignedKt.ulongDivide
@@ -0,0 +1,17 @@
// JVM_TARGET: 1.8
// WITH_RUNTIME
// IGNORE_BACKEND: JVM_IR
val ua = 1234UL
val ub = 5678UL
val u = ua * ub
fun box(): String {
val div = u / ua
if (div != ub) throw AssertionError("$div")
return "OK"
}
// 0 kotlin/UnsignedKt.ulongDivide
// 1 INVOKESTATIC java/lang/Long.divideUnsigned \(JJ\)J
@@ -0,0 +1,17 @@
// JVM_TARGET: 1.6
// WITH_RUNTIME
// IGNORE_BACKEND: JVM_IR
val ua = 1234UL
val ub = 5678UL
val uc = 3456UL
val u = ua * ub + uc
fun box(): String {
val rem = u % ub
if (rem != uc) throw AssertionError("$rem")
return "OK"
}
// 1 kotlin/UnsignedKt.ulongRemainder
@@ -0,0 +1,18 @@
// JVM_TARGET: 1.8
// WITH_RUNTIME
// IGNORE_BACKEND: JVM_IR
val ua = 1234UL
val ub = 5678UL
val uc = 3456UL
val u = ua * ub + uc
fun box(): String {
val rem = u % ub
if (rem != uc) throw AssertionError("$rem")
return "OK"
}
// 0 kotlin/UnsignedKt.ulongRemainder
// 1 INVOKESTATIC java/lang/Long.remainderUnsigned \(JJ\)J