| Index: sdk/lib/core/stopwatch.dart
|
| diff --git a/sdk/lib/core/stopwatch.dart b/sdk/lib/core/stopwatch.dart
|
| index b446069f70c1ad298a441051ec28816114d9149a..55648014c42149904c6829f3a8e3bfb9f8b02736 100644
|
| --- a/sdk/lib/core/stopwatch.dart
|
| +++ b/sdk/lib/core/stopwatch.dart
|
| @@ -7,7 +7,15 @@ part of dart.core;
|
| /**
|
| * A simple [Stopwatch] interface to measure elapsed time.
|
| */
|
| -abstract class Stopwatch {
|
| +class Stopwatch {
|
| + // The _start and _stop fields capture the time when [start] and [stop]
|
| + // are called respectively.
|
| + // If _start is null, then the [Stopwatch] has not been started yet.
|
| + // If _stop is null, then the [Stopwatch] has not been stopped yet,
|
| + // or is running.
|
| + int _start;
|
| + int _stop;
|
| +
|
| /**
|
| * Creates a [Stopwatch] in stopped state with a zero elapsed count.
|
| *
|
| @@ -16,7 +24,7 @@ abstract class Stopwatch {
|
| *
|
| * Stopwatch stopwatch = new Stopwatch()..start();
|
| */
|
| - factory Stopwatch() => new _StopwatchImpl();
|
| + Stopwatch() : _start = null, _stop = null {}
|
|
|
| /**
|
| * Starts the [Stopwatch]. The [elapsed] count is increasing monotonically.
|
| @@ -24,63 +32,6 @@ abstract class Stopwatch {
|
| * without resetting the [elapsed] count.
|
| * If the [Stopwatch] is currently running, then calling start does nothing.
|
| */
|
| - void start();
|
| -
|
| - /**
|
| - * Stops the [Stopwatch]. The [elapsed] count stops increasing.
|
| - * If the [Stopwatch] is currently not running, then calling stop does
|
| - * nothing.
|
| - */
|
| - void stop();
|
| -
|
| - /**
|
| - * Resets the [elapsed] count to zero. This method does not stop or start
|
| - * the [Stopwatch].
|
| - */
|
| - void reset();
|
| -
|
| - /**
|
| - * Returns the elapsed number of clock ticks since calling [start] while the
|
| - * [Stopwatch] is running.
|
| - * Returns the elapsed number of clock ticks between calling [start] and
|
| - * calling [stop].
|
| - * Returns 0 if the [Stopwatch] has never been started.
|
| - * The elapsed number of clock ticks increases by [frequency] every second.
|
| - */
|
| - int get elapsedTicks;
|
| -
|
| - /**
|
| - * Returns the [elapsedTicks] counter converted to microseconds.
|
| - */
|
| - int get elapsedMicroseconds;
|
| -
|
| - /**
|
| - * Returns the [elapsedTicks] counter converted to milliseconds.
|
| - */
|
| - int get elapsedMilliseconds;
|
| -
|
| - /**
|
| - * Returns the frequency of the elapsed counter in Hz.
|
| - */
|
| - int get frequency;
|
| -
|
| - /**
|
| - * Returns wether the [StopWatch] is currently running.
|
| - */
|
| - bool get isRunning;
|
| -}
|
| -
|
| -class _StopwatchImpl implements Stopwatch {
|
| - // The _start and _stop fields capture the time when [start] and [stop]
|
| - // are called respectively.
|
| - // If _start is null, then the [Stopwatch] has not been started yet.
|
| - // If _stop is null, then the [Stopwatch] has not been stopped yet,
|
| - // or is running.
|
| - int _start;
|
| - int _stop;
|
| -
|
| - _StopwatchImpl() : _start = null, _stop = null {}
|
| -
|
| void start() {
|
| if (isRunning) return;
|
| if (_start == null) {
|
| @@ -94,11 +45,20 @@ class _StopwatchImpl implements Stopwatch {
|
| }
|
| }
|
|
|
| + /**
|
| + * Stops the [Stopwatch]. The [elapsed] count stops increasing.
|
| + * If the [Stopwatch] is currently not running, then calling stop does
|
| + * nothing.
|
| + */
|
| void stop() {
|
| if (!isRunning) return;
|
| _stop = _now();
|
| }
|
|
|
| + /**
|
| + * Resets the [elapsed] count to zero. This method does not stop or start
|
| + * the [Stopwatch].
|
| + */
|
| void reset() {
|
| if (_start == null) return;
|
| // If [_start] is not null, then the stopwatch had already been started. It
|
| @@ -111,6 +71,14 @@ class _StopwatchImpl implements Stopwatch {
|
| }
|
| }
|
|
|
| + /**
|
| + * Returns the elapsed number of clock ticks since calling [start] while the
|
| + * [Stopwatch] is running.
|
| + * Returns the elapsed number of clock ticks between calling [start] and
|
| + * calling [stop].
|
| + * Returns 0 if the [Stopwatch] has never been started.
|
| + * The elapsed number of clock ticks increases by [frequency] every second.
|
| + */
|
| int get elapsedTicks {
|
| if (_start == null) {
|
| return 0;
|
| @@ -118,16 +86,28 @@ class _StopwatchImpl implements Stopwatch {
|
| return (_stop == null) ? (_now() - _start) : (_stop - _start);
|
| }
|
|
|
| + /**
|
| + * Returns the [elapsedTicks] counter converted to microseconds.
|
| + */
|
| int get elapsedMicroseconds {
|
| return (elapsedTicks * 1000000) ~/ frequency;
|
| }
|
|
|
| + /**
|
| + * Returns the [elapsedTicks] counter converted to milliseconds.
|
| + */
|
| int get elapsedMilliseconds {
|
| return (elapsedTicks * 1000) ~/ frequency;
|
| }
|
|
|
| + /**
|
| + * Returns the frequency of the elapsed counter in Hz.
|
| + */
|
| int get frequency => _frequency();
|
|
|
| + /**
|
| + * Returns wether the [StopWatch] is currently running.
|
| + */
|
| bool get isRunning => _start != null && _stop == null;
|
|
|
| external static int _frequency();
|
|
|