mirror of
https://github.com/jlengrand/kotlin.git
synced 2026-05-08 08:31:26 +00:00
Intrinsify some mismatching range/element combinations for in/in!
It's safe to upcast integer types to Long,
floating-point types to Double.
So we don't have to create a range instance for cases such as
fun testLongInInt(x: Long, a: Int, b: Int) =
x in a .. b
which is equivalent to
fun testLongInInt(x: Long, a: Int, b: Int) =
x in a.toLong() .. b.toLong()
This commit is contained in:
@@ -16,10 +16,12 @@ fun inDouble(x: Float): Boolean {
|
||||
return x in 1.0..2.0
|
||||
}
|
||||
|
||||
// 2 INVOKESPECIAL
|
||||
// 2 NEW
|
||||
// 2 INVOKESTATIC kotlin/ranges/RangesKt.rangeTo
|
||||
// 1 longRangeContains
|
||||
// 1 intRangeContains
|
||||
// 1 doubleRangeContains
|
||||
// 1 floatRangeContains
|
||||
// 3 I2L
|
||||
// 3 F2D
|
||||
// 0 INVOKESPECIAL
|
||||
// 0 NEW
|
||||
// 0 rangeTo
|
||||
// 0 longRangeContains
|
||||
// 0 intRangeContains
|
||||
// 0 doubleRangeContains
|
||||
// 0 floatRangeContains
|
||||
22
compiler/testData/codegen/bytecodeText/ranges/inNonMatchingRangeNotIntrinsified.kt
vendored
Normal file
22
compiler/testData/codegen/bytecodeText/ranges/inNonMatchingRangeNotIntrinsified.kt
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
// WITH_RUNTIME
|
||||
|
||||
fun byteInFloat(x: Byte, a: Float, b: Float) = x in a .. b
|
||||
fun byteInDouble(x: Byte, a: Double, b: Double) = x in a .. b
|
||||
fun shortInFloat(x: Short, a: Float, b: Float) = x in a .. b
|
||||
fun shortInDouble(x: Short, a: Double, b: Double) = x in a .. b
|
||||
fun intInFloat(x: Int, a: Float, b: Float) = x in a .. b
|
||||
fun intInDouble(x: Int, a: Double, b: Double) = x in a .. b
|
||||
fun longInFloat(x: Long, a: Float, b: Float) = x in a .. b
|
||||
fun longInDouble(x: Long, a: Double, b: Double) = x in a .. b
|
||||
fun floatInInt(x: Float, a: Int, b: Int) = x in a .. b
|
||||
fun floatInLong(x: Float, a: Long, b: Long) = x in a .. b
|
||||
fun doubleInInt(x: Double, a: Int, b: Int) = x in a .. b
|
||||
fun doubleInLong(x: Double, a: Long, b: Long) = x in a .. b
|
||||
|
||||
// 4 INVOKESPECIAL
|
||||
// 4 NEW
|
||||
// 8 rangeTo
|
||||
// 2 longRangeContains
|
||||
// 2 intRangeContains
|
||||
// 4 doubleRangeContains
|
||||
// 4 floatRangeContains
|
||||
Reference in New Issue
Block a user