Optimize JVM byte code generation for conditional conjunction

Implement an intrinsic method for boolean.and operation, and replace
ANDAND condition with a call to such intrinsic method.
This commit is contained in:
Jiaxiang Chen
2019-04-02 13:47:27 -07:00
committed by max-kammerer
parent 53493657ff
commit 4b99d85322
18 changed files with 187 additions and 12 deletions
@@ -0,0 +1,18 @@
var s = ""
fun o(): Boolean {
s += "O"
return false
}
fun k(): Boolean {
s += "K"
return true
}
fun box(): String {
val b = o() and k()
if (b)
return "fail: b should be false"
return s
}
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JVM_IR
val a = false
val b = false
val c = false
@@ -0,0 +1,16 @@
val a = false
val b = false
val c = false
fun main() {
do {
"loop"
} while (a && b && c)
}
// 0 ICONST_0
// 0 ICONST_1
// 2 IFEQ
// 1 IFNE
// 3 IF
// 0 GOTO
@@ -0,0 +1,16 @@
val a = false
val b = false
val c = false
fun main() {
while (a && b && c) {
"loop"
}
}
// 0 ICONST_0
// 0 ICONST_1
// 3 IFEQ
// 0 IFNE
// 3 IF
// 1 GOTO
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JVM_IR
val a = false
val b = false
val c = false