[Commonizer] Don't use experimental Kotlin time in commonizer

This commit is contained in:
Dmitriy Dolovov
2020-01-16 12:40:43 +07:00
parent 40b358b43c
commit edff099ab1
3 changed files with 38 additions and 11 deletions
@@ -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<String>) {
if (args.isEmpty()) printUsageAndExit()
@@ -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()
@@ -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()
//}