JVM_IR: Optimize null checks.
Introduce lowering to remove null checks for primitive type expressions and replace them with true/false. Side-effects are preserved. Generate ifnull/ifnonnull instructions for null checks instead of materializing a null literal for an equality check.
This commit is contained in:
committed by
Mikhael Bogdanov
parent
f5312f42c5
commit
690b8e0ac9
+23
@@ -0,0 +1,23 @@
|
||||
var result = "fail 1"
|
||||
|
||||
fun withSideEffect() : Int {
|
||||
result = "OK"
|
||||
return 42
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
if (withSideEffect() == null) {
|
||||
return "fail 2"
|
||||
}
|
||||
|
||||
if (result != "OK") {
|
||||
return "fail 3"
|
||||
}
|
||||
|
||||
result = "fail 4"
|
||||
if (withSideEffect() != null) {
|
||||
return result
|
||||
}
|
||||
|
||||
return result
|
||||
}
|
||||
Reference in New Issue
Block a user