Saturate overflowing values when adjusting time marks
KT-46132
This commit is contained in:
@@ -27,11 +27,13 @@ internal actual object MonotonicTimeSource : TimeSource {
|
||||
actual override fun markNow(): DefaultTimeMark = DefaultTimeMark(read())
|
||||
actual fun elapsedFrom(timeMark: DefaultTimeMark): Duration = (read() - timeMark.reading as Double).milliseconds
|
||||
actual fun adjustReading(timeMark: DefaultTimeMark, duration: Duration): DefaultTimeMark =
|
||||
DefaultTimeMark(timeMark.reading as Double + duration.toDouble(DurationUnit.MILLISECONDS))
|
||||
DefaultTimeMark(sumCheckNaN(timeMark.reading as Double + duration.toDouble(DurationUnit.MILLISECONDS)))
|
||||
|
||||
override fun toString(): String =
|
||||
if (performance != null) "TimeSource(globalThis.performance.now())" else "TimeSource(Date.now())"
|
||||
}
|
||||
|
||||
@Suppress("ACTUAL_WITHOUT_EXPECT") // visibility
|
||||
internal actual typealias DefaultTimeMarkReading = Double
|
||||
internal actual typealias DefaultTimeMarkReading = Double
|
||||
|
||||
private fun sumCheckNaN(value: Double): Double = value.also { if (it.isNaN()) throw IllegalArgumentException("Summing infinities of different signs") }
|
||||
Reference in New Issue
Block a user