From edff099ab103b2c6d920790d25ecbed807f4d4fb Mon Sep 17 00:00:00 2001 From: Dmitriy Dolovov Date: Thu, 16 Jan 2020 12:40:43 +0700 Subject: [PATCH] [Commonizer] Don't use experimental Kotlin time in commonizer --- .../cli/nativeDistributionCommonizer.kt | 2 - .../konan/NativeDistributionCommonizer.kt | 2 - .../commonizer/utils/ResettableClockMark.kt | 45 ++++++++++++++++--- 3 files changed, 38 insertions(+), 11 deletions(-) diff --git a/konan/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/cli/nativeDistributionCommonizer.kt b/konan/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/cli/nativeDistributionCommonizer.kt index fa7b031c06b..b640ce4537f 100644 --- a/konan/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/cli/nativeDistributionCommonizer.kt +++ b/konan/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/cli/nativeDistributionCommonizer.kt @@ -9,9 +9,7 @@ import org.jetbrains.kotlin.descriptors.commonizer.konan.NativeDistributionCommo import org.jetbrains.kotlin.konan.target.HostManager import java.io.File import kotlin.system.exitProcess -import kotlin.time.ExperimentalTime -@ExperimentalTime fun main(args: Array) { if (args.isEmpty()) printUsageAndExit() diff --git a/konan/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/konan/NativeDistributionCommonizer.kt b/konan/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/konan/NativeDistributionCommonizer.kt index 6eff9123bb2..2e0168adb74 100644 --- a/konan/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/konan/NativeDistributionCommonizer.kt +++ b/konan/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/konan/NativeDistributionCommonizer.kt @@ -27,7 +27,6 @@ import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.serialization.konan.impl.KlibResolvedModuleDescriptorsFactoryImpl import org.jetbrains.kotlin.storage.LockBasedStorageManager import java.io.File -import kotlin.time.ExperimentalTime import org.jetbrains.kotlin.konan.file.File as KFile class NativeDistributionCommonizer( @@ -40,7 +39,6 @@ class NativeDistributionCommonizer( private val handleError: (String) -> Nothing, private val log: (String) -> Unit ) { - @ExperimentalTime fun run() { checkPreconditions() diff --git a/konan/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/utils/ResettableClockMark.kt b/konan/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/utils/ResettableClockMark.kt index ae7ab65fe65..c8c3c85d7e2 100644 --- a/konan/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/utils/ResettableClockMark.kt +++ b/konan/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/utils/ResettableClockMark.kt @@ -5,15 +5,46 @@ package org.jetbrains.kotlin.descriptors.commonizer.utils -import kotlin.time.Duration -import kotlin.time.ExperimentalTime -import kotlin.time.MonoClock +import java.lang.System.currentTimeMillis -@ExperimentalTime internal class ResettableClockMark { - private val startMark = MonoClock.markNow() + internal class Period(val start: Long, val end: Long) { + override fun toString(): String { + var remainder = end - start + + val millis = remainder % 1000 + remainder /= 1000 + + val seconds = remainder % 60 + remainder /= 60 + + val minutes = remainder % 60 + + val hours = remainder / 60 + + // human-friendly formatted duration + return buildString { + if (hours > 0) append(hours).append("h ") + if (minutes > 0 || isNotEmpty()) append(minutes).append("m ") + if (seconds > 0 || isNotEmpty()) append(seconds).append("s ") + if (millis > 0 || isNotEmpty()) append(millis).append("ms") + } + } + } + + private val startMark = currentTimeMillis() private var lastMark = startMark - fun elapsedSinceLast(): Duration = lastMark.elapsedNow().also { lastMark = lastMark.plus(it) } - fun elapsedSinceStart(): Duration = startMark.elapsedNow() + fun elapsedSinceLast(): Period = Period(lastMark, currentTimeMillis()).also { lastMark = it.end } + fun elapsedSinceStart(): Period = Period(startMark, currentTimeMillis()) } + +// TODO: this is how it should be when Kotlin Time will become non-experimental +//@ExperimentalTime +//internal class ResettableClockMark { +// private val startMark = MonoClock.markNow() +// private var lastMark = startMark +// +// fun elapsedSinceLast(): Duration = lastMark.elapsedNow().also { lastMark = lastMark.plus(it) } +// fun elapsedSinceStart(): Duration = startMark.elapsedNow() +//}