From 1b3d539a25acf4792969147d83258c906bf11d32 Mon Sep 17 00:00:00 2001 From: Elifarley C Date: Mon, 2 Apr 2018 09:26:49 -0300 Subject: [PATCH] toBigDecimal: Avoid creating new BigDecimal instance for some values Avoid creating new `BigDecimal` instance by calling `BigDecimal.valueOf(this)`, which doesn't create a new instance if the argument falls in the range [0..10]. (there's a `private static final BigDecimal[] zeroThroughTen` cache in BigDecimal.java with 11 BigDecimal instances) --- libraries/stdlib/src/kotlin/util/BigDecimals.kt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/libraries/stdlib/src/kotlin/util/BigDecimals.kt b/libraries/stdlib/src/kotlin/util/BigDecimals.kt index 335be3420b7..e2c0185fca6 100644 --- a/libraries/stdlib/src/kotlin/util/BigDecimals.kt +++ b/libraries/stdlib/src/kotlin/util/BigDecimals.kt @@ -89,7 +89,7 @@ public inline operator fun BigDecimal.dec(): BigDecimal = this.subtract(BigDecim */ @SinceKotlin("1.2") @kotlin.internal.InlineOnly -public inline fun Int.toBigDecimal(): BigDecimal = BigDecimal(this) +public inline fun Int.toBigDecimal(): BigDecimal = BigDecimal.valueOf(this.toLong()) /** @@ -105,7 +105,7 @@ public inline fun Int.toBigDecimal(mathContext: MathContext): BigDecimal = BigDe */ @SinceKotlin("1.2") @kotlin.internal.InlineOnly -public inline fun Long.toBigDecimal(): BigDecimal = BigDecimal(this) +public inline fun Long.toBigDecimal(): BigDecimal = BigDecimal.valueOf(this) /** * Returns the value of this [Long] number as a [BigDecimal]. @@ -154,4 +154,4 @@ public inline fun Double.toBigDecimal(): BigDecimal = BigDecimal(this.toString() */ @SinceKotlin("1.2") @kotlin.internal.InlineOnly -public inline fun Double.toBigDecimal(mathContext: MathContext): BigDecimal = BigDecimal(this.toString(), mathContext) \ No newline at end of file +public inline fun Double.toBigDecimal(mathContext: MathContext): BigDecimal = BigDecimal(this.toString(), mathContext)