diff --git a/libraries/stdlib/jvm/src/kotlin/system/Timing.kt b/libraries/stdlib/jvm/src/kotlin/system/Timing.kt index b8909a0a6c2..b4cfdef8bee 100644 --- a/libraries/stdlib/jvm/src/kotlin/system/Timing.kt +++ b/libraries/stdlib/jvm/src/kotlin/system/Timing.kt @@ -6,10 +6,15 @@ @file:kotlin.jvm.JvmName("TimingKt") package kotlin.system +import kotlin.contracts.* + /** * Executes the given [block] and returns elapsed time in milliseconds. */ public inline fun measureTimeMillis(block: () -> Unit): Long { + contract { + callsInPlace(block, InvocationKind.EXACTLY_ONCE) + } val start = System.currentTimeMillis() block() return System.currentTimeMillis() - start @@ -19,6 +24,9 @@ public inline fun measureTimeMillis(block: () -> Unit): Long { * Executes the given [block] and returns elapsed time in nanoseconds. */ public inline fun measureNanoTime(block: () -> Unit): Long { + contract { + callsInPlace(block, InvocationKind.EXACTLY_ONCE) + } val start = System.nanoTime() block() return System.nanoTime() - start