diff --git a/kotlin-native/runtime/src/main/kotlin/kotlin/time/MonotonicTimeSource.kt b/kotlin-native/runtime/src/main/kotlin/kotlin/time/MonotonicTimeSource.kt index 8e5e805410b..2d70af79971 100644 --- a/kotlin-native/runtime/src/main/kotlin/kotlin/time/MonotonicTimeSource.kt +++ b/kotlin-native/runtime/src/main/kotlin/kotlin/time/MonotonicTimeSource.kt @@ -6,6 +6,7 @@ package kotlin.time import kotlin.system.* +import kotlin.time.TimeSource.Monotonic.ValueTimeMark @SinceKotlin("1.3") @ExperimentalTime @@ -14,13 +15,13 @@ internal actual object MonotonicTimeSource : TimeSource { private fun read(): Long = getTimeNanos() - zero override fun toString(): String = "TimeSource(System.nanoTime())" - actual override fun markNow(): DefaultTimeMark = DefaultTimeMark(read()) - actual fun elapsedFrom(timeMark: DefaultTimeMark): Duration = + actual override fun markNow(): ValueTimeMark = ValueTimeMark(read()) + actual fun elapsedFrom(timeMark: ValueTimeMark): Duration = saturatingDiff(read(), timeMark.reading) - actual fun adjustReading(timeMark: DefaultTimeMark, duration: Duration): DefaultTimeMark = - DefaultTimeMark(saturatingAdd(timeMark.reading, duration)) + actual fun adjustReading(timeMark: ValueTimeMark, duration: Duration): ValueTimeMark = + ValueTimeMark(saturatingAdd(timeMark.reading, duration)) } @Suppress("ACTUAL_WITHOUT_EXPECT") // visibility -internal actual typealias DefaultTimeMarkReading = Long +internal actual typealias ValueTimeMarkReading = Long diff --git a/libraries/stdlib/api/js-v1/kotlin.time.kt b/libraries/stdlib/api/js-v1/kotlin.time.kt index 0018ed697eb..1ca9965b589 100644 --- a/libraries/stdlib/api/js-v1/kotlin.time.kt +++ b/libraries/stdlib/api/js-v1/kotlin.time.kt @@ -206,27 +206,6 @@ public abstract class AbstractLongTimeSource : kotlin.time.TimeSource { protected abstract fun read(): kotlin.Long } -@kotlin.time.ExperimentalTime -@kotlin.SinceKotlin(version = "1.7") -@kotlin.jvm.JvmInline -public final inline class DefaultTimeMark : kotlin.time.TimeMark { - public open override fun elapsedNow(): kotlin.time.Duration - - public open override operator fun equals(other: kotlin.Any?): kotlin.Boolean - - public open override fun hasNotPassedNow(): kotlin.Boolean - - public open override fun hasPassedNow(): kotlin.Boolean - - public open override fun hashCode(): kotlin.Int - - public open override operator fun minus(duration: kotlin.time.Duration): kotlin.time.DefaultTimeMark - - public open override operator fun plus(duration: kotlin.time.Duration): kotlin.time.DefaultTimeMark - - public open override fun toString(): kotlin.String -} - @kotlin.SinceKotlin(version = "1.6") @kotlin.WasExperimental(markerClass = {kotlin.time.ExperimentalTime::class}) @kotlin.jvm.JvmInline @@ -600,9 +579,30 @@ public interface TimeSource { } public object Monotonic : kotlin.time.TimeSource { - public open override fun markNow(): kotlin.time.DefaultTimeMark + public open override fun markNow(): kotlin.time.TimeSource.Monotonic.ValueTimeMark public open override fun toString(): kotlin.String + + @kotlin.time.ExperimentalTime + @kotlin.SinceKotlin(version = "1.7") + @kotlin.jvm.JvmInline + public final inline class ValueTimeMark : kotlin.time.TimeMark { + public open override fun elapsedNow(): kotlin.time.Duration + + public open override operator fun equals(other: kotlin.Any?): kotlin.Boolean + + public open override fun hasNotPassedNow(): kotlin.Boolean + + public open override fun hasPassedNow(): kotlin.Boolean + + public open override fun hashCode(): kotlin.Int + + public open override operator fun minus(duration: kotlin.time.Duration): kotlin.time.TimeSource.Monotonic.ValueTimeMark + + public open override operator fun plus(duration: kotlin.time.Duration): kotlin.time.TimeSource.Monotonic.ValueTimeMark + + public open override fun toString(): kotlin.String + } } } diff --git a/libraries/stdlib/api/js/kotlin.time.kt b/libraries/stdlib/api/js/kotlin.time.kt index 0018ed697eb..1ca9965b589 100644 --- a/libraries/stdlib/api/js/kotlin.time.kt +++ b/libraries/stdlib/api/js/kotlin.time.kt @@ -206,27 +206,6 @@ public abstract class AbstractLongTimeSource : kotlin.time.TimeSource { protected abstract fun read(): kotlin.Long } -@kotlin.time.ExperimentalTime -@kotlin.SinceKotlin(version = "1.7") -@kotlin.jvm.JvmInline -public final inline class DefaultTimeMark : kotlin.time.TimeMark { - public open override fun elapsedNow(): kotlin.time.Duration - - public open override operator fun equals(other: kotlin.Any?): kotlin.Boolean - - public open override fun hasNotPassedNow(): kotlin.Boolean - - public open override fun hasPassedNow(): kotlin.Boolean - - public open override fun hashCode(): kotlin.Int - - public open override operator fun minus(duration: kotlin.time.Duration): kotlin.time.DefaultTimeMark - - public open override operator fun plus(duration: kotlin.time.Duration): kotlin.time.DefaultTimeMark - - public open override fun toString(): kotlin.String -} - @kotlin.SinceKotlin(version = "1.6") @kotlin.WasExperimental(markerClass = {kotlin.time.ExperimentalTime::class}) @kotlin.jvm.JvmInline @@ -600,9 +579,30 @@ public interface TimeSource { } public object Monotonic : kotlin.time.TimeSource { - public open override fun markNow(): kotlin.time.DefaultTimeMark + public open override fun markNow(): kotlin.time.TimeSource.Monotonic.ValueTimeMark public open override fun toString(): kotlin.String + + @kotlin.time.ExperimentalTime + @kotlin.SinceKotlin(version = "1.7") + @kotlin.jvm.JvmInline + public final inline class ValueTimeMark : kotlin.time.TimeMark { + public open override fun elapsedNow(): kotlin.time.Duration + + public open override operator fun equals(other: kotlin.Any?): kotlin.Boolean + + public open override fun hasNotPassedNow(): kotlin.Boolean + + public open override fun hasPassedNow(): kotlin.Boolean + + public open override fun hashCode(): kotlin.Int + + public open override operator fun minus(duration: kotlin.time.Duration): kotlin.time.TimeSource.Monotonic.ValueTimeMark + + public open override operator fun plus(duration: kotlin.time.Duration): kotlin.time.TimeSource.Monotonic.ValueTimeMark + + public open override fun toString(): kotlin.String + } } } diff --git a/libraries/stdlib/js/src/kotlin/time/MonoTimeSource.kt b/libraries/stdlib/js/src/kotlin/time/MonoTimeSource.kt index 88bb68474c1..379971f55b6 100644 --- a/libraries/stdlib/js/src/kotlin/time/MonoTimeSource.kt +++ b/libraries/stdlib/js/src/kotlin/time/MonoTimeSource.kt @@ -1,5 +1,5 @@ /* - * Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors. * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. */ @@ -9,15 +9,16 @@ import org.w3c.performance.GlobalPerformance import org.w3c.performance.Performance import kotlin.math.truncate import kotlin.time.Duration.Companion.milliseconds +import kotlin.time.TimeSource.Monotonic.ValueTimeMark @Suppress("ACTUAL_WITHOUT_EXPECT") // visibility -internal actual typealias DefaultTimeMarkReading = Any +internal actual typealias ValueTimeMarkReading = Any @ExperimentalTime internal interface DefaultTimeSource : TimeSource { - override fun markNow(): DefaultTimeMark - fun elapsedFrom(timeMark: DefaultTimeMark): Duration - fun adjustReading(timeMark: DefaultTimeMark, duration: Duration): DefaultTimeMark + override fun markNow(): ValueTimeMark + fun elapsedFrom(timeMark: ValueTimeMark): Duration + fun adjustReading(timeMark: ValueTimeMark, duration: Duration): ValueTimeMark } @SinceKotlin("1.3") @@ -35,9 +36,9 @@ internal actual object MonotonicTimeSource : DefaultTimeSource, TimeSource { // } - actual override fun markNow(): DefaultTimeMark = actualSource.markNow() - actual override fun elapsedFrom(timeMark: DefaultTimeMark): Duration = actualSource.elapsedFrom(timeMark) - actual override fun adjustReading(timeMark: DefaultTimeMark, duration: Duration): DefaultTimeMark = + actual override fun markNow(): ValueTimeMark = actualSource.markNow() + actual override fun elapsedFrom(timeMark: ValueTimeMark): Duration = actualSource.elapsedFrom(timeMark) + actual override fun adjustReading(timeMark: ValueTimeMark, duration: Duration): ValueTimeMark = actualSource.adjustReading(timeMark, duration) } @@ -49,18 +50,19 @@ internal external interface Process { @ExperimentalTime internal class HrTimeSource(private val process: Process) : DefaultTimeSource { - override fun markNow(): DefaultTimeMark = DefaultTimeMark(process.hrtime()) - override fun elapsedFrom(timeMark: DefaultTimeMark): Duration = + override fun markNow(): ValueTimeMark = ValueTimeMark(process.hrtime()) + override fun elapsedFrom(timeMark: ValueTimeMark): Duration = @Suppress("UNCHECKED_CAST") - process.hrtime(timeMark.reading as Array).let { (seconds, nanos) -> seconds.toDuration(DurationUnit.SECONDS) + nanos.toDuration(DurationUnit.NANOSECONDS) } + process.hrtime(timeMark.reading as Array) + .let { (seconds, nanos) -> seconds.toDuration(DurationUnit.SECONDS) + nanos.toDuration(DurationUnit.NANOSECONDS) } - override fun adjustReading(timeMark: DefaultTimeMark, duration: Duration): DefaultTimeMark = + override fun adjustReading(timeMark: ValueTimeMark, duration: Duration): ValueTimeMark = @Suppress("UNCHECKED_CAST") (timeMark.reading as Array).let { (seconds, nanos) -> duration.toComponents { _, addNanos -> arrayOf(sumCheckNaN(seconds + truncate(duration.toDouble(DurationUnit.SECONDS))), nanos + addNanos) } - }.let(::DefaultTimeMark) + }.let(TimeSource.Monotonic::ValueTimeMark) override fun toString(): String = "TimeSource(process.hrtime())" @@ -68,13 +70,14 @@ internal class HrTimeSource(private val process: Process) : DefaultTimeSource { @SinceKotlin("1.3") @ExperimentalTime -internal class PerformanceTimeSource(val performance: Performance) : DefaultTimeSource { // AbstractDoubleTimeSource(unit = DurationUnit.MILLISECONDS) { +internal class PerformanceTimeSource(val performance: Performance) : + DefaultTimeSource { // AbstractDoubleTimeSource(unit = DurationUnit.MILLISECONDS) { private fun read(): Double = performance.now() - override fun markNow(): DefaultTimeMark = DefaultTimeMark(read()) - override fun elapsedFrom(timeMark: DefaultTimeMark): Duration = (read() - timeMark.reading as Double).milliseconds - override fun adjustReading(timeMark: DefaultTimeMark, duration: Duration): DefaultTimeMark = - DefaultTimeMark(sumCheckNaN(timeMark.reading as Double + duration.toDouble(DurationUnit.MILLISECONDS))) + override fun markNow(): ValueTimeMark = ValueTimeMark(read()) + override fun elapsedFrom(timeMark: ValueTimeMark): Duration = (read() - timeMark.reading as Double).milliseconds + override fun adjustReading(timeMark: ValueTimeMark, duration: Duration): ValueTimeMark = + ValueTimeMark(sumCheckNaN(timeMark.reading as Double + duration.toDouble(DurationUnit.MILLISECONDS))) override fun toString(): String = "TimeSource(self.performance.now())" } @@ -84,10 +87,10 @@ internal class PerformanceTimeSource(val performance: Performance) : DefaultTime internal object DateNowTimeSource : DefaultTimeSource { private fun read(): Double = kotlin.js.Date.now() - override fun markNow(): DefaultTimeMark = DefaultTimeMark(read()) - override fun elapsedFrom(timeMark: DefaultTimeMark): Duration = (read() - timeMark.reading as Double).milliseconds - override fun adjustReading(timeMark: DefaultTimeMark, duration: Duration): DefaultTimeMark = - DefaultTimeMark(sumCheckNaN(timeMark.reading as Double + duration.toDouble(DurationUnit.MILLISECONDS))) + override fun markNow(): ValueTimeMark = ValueTimeMark(read()) + override fun elapsedFrom(timeMark: ValueTimeMark): Duration = (read() - timeMark.reading as Double).milliseconds + override fun adjustReading(timeMark: ValueTimeMark, duration: Duration): ValueTimeMark = + ValueTimeMark(sumCheckNaN(timeMark.reading as Double + duration.toDouble(DurationUnit.MILLISECONDS))) override fun toString(): String = "TimeSource(Date.now())" } diff --git a/libraries/stdlib/jvm/src/kotlin/time/MonoTimeSource.kt b/libraries/stdlib/jvm/src/kotlin/time/MonoTimeSource.kt index 9348052ddd3..8089b539349 100644 --- a/libraries/stdlib/jvm/src/kotlin/time/MonoTimeSource.kt +++ b/libraries/stdlib/jvm/src/kotlin/time/MonoTimeSource.kt @@ -1,10 +1,12 @@ /* - * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors. * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. */ package kotlin.time +import kotlin.time.TimeSource.Monotonic.ValueTimeMark + @SinceKotlin("1.3") @ExperimentalTime internal actual object MonotonicTimeSource : TimeSource { @@ -12,15 +14,13 @@ internal actual object MonotonicTimeSource : TimeSource { private fun read(): Long = System.nanoTime() - zero override fun toString(): String = "TimeSource(System.nanoTime())" - actual override fun markNow(): DefaultTimeMark = DefaultTimeMark(read()) - actual fun elapsedFrom(timeMark: DefaultTimeMark): Duration = + actual override fun markNow(): ValueTimeMark = ValueTimeMark(read()) + actual fun elapsedFrom(timeMark: ValueTimeMark): Duration = saturatingDiff(read(), timeMark.reading) - actual fun adjustReading(timeMark: DefaultTimeMark, duration: Duration): DefaultTimeMark = - DefaultTimeMark(saturatingAdd(timeMark.reading, duration)) + actual fun adjustReading(timeMark: ValueTimeMark, duration: Duration): ValueTimeMark = + ValueTimeMark(saturatingAdd(timeMark.reading, duration)) } @Suppress("ACTUAL_WITHOUT_EXPECT") // visibility -internal actual typealias DefaultTimeMarkReading = Long - - +internal actual typealias ValueTimeMarkReading = Long diff --git a/libraries/stdlib/src/kotlin/time/TimeSource.kt b/libraries/stdlib/src/kotlin/time/TimeSource.kt index b86fafab991..412c228c075 100644 --- a/libraries/stdlib/src/kotlin/time/TimeSource.kt +++ b/libraries/stdlib/src/kotlin/time/TimeSource.kt @@ -1,5 +1,5 @@ /* - * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors. * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. */ @@ -31,18 +31,44 @@ public interface TimeSource { * * This time source returns its readings from a source of monotonic time when it is available in a target platform, * and resorts to a non-monotonic time source otherwise. + * + * The function [markNow] of this time source returns the specialized [ValueTimeMark] that is an inline value class + * wrapping a platform-dependent time reading value. */ public object Monotonic : TimeSource { - override fun markNow(): DefaultTimeMark = MonotonicTimeSource.markNow() + override fun markNow(): ValueTimeMark = MonotonicTimeSource.markNow() override fun toString(): String = MonotonicTimeSource.toString() - } + /** + * A specialized [kotlin.time.TimeMark] returned by [TimeSource.Monotonic]. + * + * This time mark is implemented as an inline value class wrapping a platform-dependent + * time reading value of the default monotonic time source, thus allowing to avoid additional boxing + * of that value. + * + * The operations [plus] and [minus] are also specialized to return [ValueTimeMark] type. + */ + @ExperimentalTime + @SinceKotlin("1.7") + @JvmInline + public value class ValueTimeMark internal constructor(internal val reading: ValueTimeMarkReading) : TimeMark { + override fun elapsedNow(): Duration = MonotonicTimeSource.elapsedFrom(this) + override fun plus(duration: Duration): ValueTimeMark = MonotonicTimeSource.adjustReading(this, duration) + override fun minus(duration: Duration): ValueTimeMark = MonotonicTimeSource.adjustReading(this, -duration) + override fun hasPassedNow(): Boolean = !elapsedNow().isNegative() + override fun hasNotPassedNow(): Boolean = elapsedNow().isNegative() + } + } public companion object { } } +/** A platform-specific reading type that is wrapped by [TimeSource.Monotonic.ValueTimeMark] inline class. */ +internal expect class ValueTimeMarkReading + + /** * Represents a time point notched on a particular [TimeSource]. Remains bound to the time source it was taken from * and allows querying for the duration of time elapsed from that point (see the function [elapsedNow]). @@ -105,28 +131,6 @@ public interface TimeMark { public fun hasNotPassedNow(): Boolean = elapsedNow().isNegative() } -/** - * A specialized [TimeMark] returned by [TimeSource.Monotonic]. - * - * This time mark is implemented as an inline value class wrapping a platform-dependent - * time reading value of the default monotonic time source, thus allowing to avoid additional boxing - * of that value. - * - * The operations [plus] and [minus] are also specialized to return [DefaultTimeMark] type. - */ -@ExperimentalTime -@SinceKotlin("1.7") -@JvmInline -public value class DefaultTimeMark internal constructor(internal val reading: DefaultTimeMarkReading) : TimeMark { - override fun elapsedNow(): Duration = MonotonicTimeSource.elapsedFrom(this) - override fun plus(duration: Duration): DefaultTimeMark = MonotonicTimeSource.adjustReading(this, duration) - override fun minus(duration: Duration): DefaultTimeMark = MonotonicTimeSource.adjustReading(this, -duration) - override fun hasPassedNow(): Boolean = !elapsedNow().isNegative() - override fun hasNotPassedNow(): Boolean = elapsedNow().isNegative() -} - -internal expect class DefaultTimeMarkReading - @ExperimentalTime @SinceKotlin("1.3") diff --git a/libraries/stdlib/src/kotlin/time/TimeSources.kt b/libraries/stdlib/src/kotlin/time/TimeSources.kt index 759bd56e6c1..a70889d2f80 100644 --- a/libraries/stdlib/src/kotlin/time/TimeSources.kt +++ b/libraries/stdlib/src/kotlin/time/TimeSources.kt @@ -1,5 +1,5 @@ /* - * Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors. * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. */ @@ -8,9 +8,9 @@ package kotlin.time @SinceKotlin("1.3") @ExperimentalTime internal expect object MonotonicTimeSource : TimeSource { - override fun markNow(): DefaultTimeMark - fun elapsedFrom(timeMark: DefaultTimeMark): Duration - fun adjustReading(timeMark: DefaultTimeMark, duration: Duration): DefaultTimeMark + override fun markNow(): TimeSource.Monotonic.ValueTimeMark + fun elapsedFrom(timeMark: TimeSource.Monotonic.ValueTimeMark): Duration + fun adjustReading(timeMark: TimeSource.Monotonic.ValueTimeMark, duration: Duration): TimeSource.Monotonic.ValueTimeMark } /** diff --git a/libraries/stdlib/wasm/src/kotlin/time/TimeSources.kt b/libraries/stdlib/wasm/src/kotlin/time/TimeSources.kt index d9e380716ed..d84d2c5a3e8 100644 --- a/libraries/stdlib/wasm/src/kotlin/time/TimeSources.kt +++ b/libraries/stdlib/wasm/src/kotlin/time/TimeSources.kt @@ -6,6 +6,7 @@ package kotlin.time import kotlin.wasm.internal.ExternalInterfaceType +import kotlin.time.TimeSource.Monotonic.ValueTimeMark @JsFun("() => typeof globalThis !== 'undefined' && typeof globalThis.performance !== 'undefined' ? globalThis.performance : null") private external fun tryGetPerformance(): ExternalInterfaceType? @@ -24,16 +25,16 @@ internal actual object MonotonicTimeSource : TimeSource { private fun read(): Double = if (performance != null) getPerformanceNow(performance) else dateNow() - 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(sumCheckNaN(timeMark.reading as Double + duration.toDouble(DurationUnit.MILLISECONDS))) + actual override fun markNow(): ValueTimeMark = ValueTimeMark(read()) + actual fun elapsedFrom(timeMark: ValueTimeMark): Duration = (read() - timeMark.reading as Double).milliseconds + actual fun adjustReading(timeMark: ValueTimeMark, duration: Duration): ValueTimeMark = + ValueTimeMark(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 ValueTimeMarkReading = Double private fun sumCheckNaN(value: Double): Double = value.also { if (it.isNaN()) throw IllegalArgumentException("Summing infinities of different signs") } \ No newline at end of file diff --git a/libraries/tools/binary-compatibility-validator/reference-public-api/kotlin-stdlib-runtime-merged.txt b/libraries/tools/binary-compatibility-validator/reference-public-api/kotlin-stdlib-runtime-merged.txt index 40014a672f2..321c6c4aeb3 100644 --- a/libraries/tools/binary-compatibility-validator/reference-public-api/kotlin-stdlib-runtime-merged.txt +++ b/libraries/tools/binary-compatibility-validator/reference-public-api/kotlin-stdlib-runtime-merged.txt @@ -5767,30 +5767,6 @@ public abstract class kotlin/time/AbstractLongTimeSource : kotlin/time/TimeSourc protected abstract fun read ()J } -public final class kotlin/time/DefaultTimeMark : kotlin/time/TimeMark { - public static final synthetic fun box-impl (J)Lkotlin/time/DefaultTimeMark; - public fun elapsedNow-UwyO8pc ()J - public static fun elapsedNow-UwyO8pc (J)J - public fun equals (Ljava/lang/Object;)Z - public static fun equals-impl (JLjava/lang/Object;)Z - public static final fun equals-impl0 (JJ)Z - public fun hasNotPassedNow ()Z - public static fun hasNotPassedNow-impl (J)Z - public fun hasPassedNow ()Z - public static fun hasPassedNow-impl (J)Z - public fun hashCode ()I - public static fun hashCode-impl (J)I - public fun minus-LRDsOJo (J)J - public synthetic fun minus-LRDsOJo (J)Lkotlin/time/TimeMark; - public static fun minus-LRDsOJo (JJ)J - public fun plus-LRDsOJo (J)J - public synthetic fun plus-LRDsOJo (J)Lkotlin/time/TimeMark; - public static fun plus-LRDsOJo (JJ)J - public fun toString ()Ljava/lang/String; - public static fun toString-impl (J)Ljava/lang/String; - public final synthetic fun unbox-impl ()J -} - public final class kotlin/time/Duration : java/lang/Comparable { public static final field Companion Lkotlin/time/Duration$Companion; public static final synthetic fun box-impl (J)Lkotlin/time/Duration; @@ -5964,10 +5940,34 @@ public final class kotlin/time/TimeSource$Companion { public final class kotlin/time/TimeSource$Monotonic : kotlin/time/TimeSource { public static final field INSTANCE Lkotlin/time/TimeSource$Monotonic; public synthetic fun markNow ()Lkotlin/time/TimeMark; - public fun markNow-GKr6HC4 ()J + public fun markNow-z9LOYto ()J public fun toString ()Ljava/lang/String; } +public final class kotlin/time/TimeSource$Monotonic$ValueTimeMark : kotlin/time/TimeMark { + public static final synthetic fun box-impl (J)Lkotlin/time/TimeSource$Monotonic$ValueTimeMark; + public fun elapsedNow-UwyO8pc ()J + public static fun elapsedNow-UwyO8pc (J)J + public fun equals (Ljava/lang/Object;)Z + public static fun equals-impl (JLjava/lang/Object;)Z + public static final fun equals-impl0 (JJ)Z + public fun hasNotPassedNow ()Z + public static fun hasNotPassedNow-impl (J)Z + public fun hasPassedNow ()Z + public static fun hasPassedNow-impl (J)Z + public fun hashCode ()I + public static fun hashCode-impl (J)I + public fun minus-LRDsOJo (J)J + public synthetic fun minus-LRDsOJo (J)Lkotlin/time/TimeMark; + public static fun minus-LRDsOJo (JJ)J + public fun plus-LRDsOJo (J)J + public synthetic fun plus-LRDsOJo (J)Lkotlin/time/TimeMark; + public static fun plus-LRDsOJo (JJ)J + public fun toString ()Ljava/lang/String; + public static fun toString-impl (J)Ljava/lang/String; + public final synthetic fun unbox-impl ()J +} + public final class kotlin/time/TimedValue { public synthetic fun (Ljava/lang/Object;JLkotlin/jvm/internal/DefaultConstructorMarker;)V public final fun component1 ()Ljava/lang/Object;