Index: runtime/lib/timer_impl.dart |
diff --git a/runtime/lib/timer_impl.dart b/runtime/lib/timer_impl.dart |
index 4a83f935a7f0a6cc9cea77c6f28f749d2b3d21ef..9bb71b43ec7899af599a39369cd53e626df15bea 100644 |
--- a/runtime/lib/timer_impl.dart |
+++ b/runtime/lib/timer_impl.dart |
@@ -16,8 +16,7 @@ class _TimerHeap { |
List<_Timer> _list; |
int _used = 0; |
- _TimerHeap([int initSize = 7]) |
- : _list = new List<_Timer>(initSize); |
+ _TimerHeap([int initSize = 7]) : _list = new List<_Timer>(initSize); |
bool get isEmpty => _used == 0; |
@@ -140,13 +139,12 @@ class _Timer implements Timer { |
static bool _handlingCallbacks = false; |
- Function _callback; // Closure to call when timer fires. null if canceled. |
- int _wakeupTime; // Expiration time. |
- final int _milliSeconds; // Duration specified at creation. |
- final bool _repeating; // Indicates periodic timers. |
- var _indexOrNext; // Index if part of the TimerHeap, link otherwise. |
- int _id; // Incrementing id to enable sorting of timers with same expiry. |
- |
+ Function _callback; // Closure to call when timer fires. null if canceled. |
+ int _wakeupTime; // Expiration time. |
+ final int _milliSeconds; // Duration specified at creation. |
+ final bool _repeating; // Indicates periodic timers. |
+ var _indexOrNext; // Index if part of the TimerHeap, link otherwise. |
+ int _id; // Incrementing id to enable sorting of timers with same expiry. |
// Get the next available id. We accept collisions and reordering when the |
// _idCount overflows and the timers expire at the same millisecond. |
@@ -156,16 +154,12 @@ class _Timer implements Timer { |
return result; |
} |
+ _Timer._internal( |
+ this._callback, this._wakeupTime, this._milliSeconds, this._repeating) |
+ : _id = _nextId(); |
- _Timer._internal(this._callback, |
- this._wakeupTime, |
- this._milliSeconds, |
- this._repeating) : _id = _nextId(); |
- |
- |
- static Timer _createTimer(void callback(Timer timer), |
- int milliSeconds, |
- bool repeating) { |
+ static Timer _createTimer( |
+ void callback(Timer timer), int milliSeconds, bool repeating) { |
// Negative timeouts are treated as if 0 timeout. |
if (milliSeconds < 0) { |
milliSeconds = 0; |
@@ -177,40 +171,32 @@ class _Timer implements Timer { |
int now = VMLibraryHooks.timerMillisecondClock(); |
int wakeupTime = (milliSeconds == 0) ? now : (now + 1 + milliSeconds); |
- _Timer timer = new _Timer._internal(callback, |
- wakeupTime, |
- milliSeconds, |
- repeating); |
+ _Timer timer = |
+ new _Timer._internal(callback, wakeupTime, milliSeconds, repeating); |
// Enqueue this newly created timer in the appropriate structure and |
// notify if necessary. |
timer._enqueue(); |
return timer; |
} |
- |
factory _Timer(int milliSeconds, void callback(Timer timer)) { |
return _createTimer(callback, milliSeconds, false); |
} |
- |
factory _Timer.periodic(int milliSeconds, void callback(Timer timer)) { |
return _createTimer(callback, milliSeconds, true); |
} |
- |
bool get _isInHeap => _indexOrNext is int; |
- |
int _compareTo(_Timer other) { |
int c = _wakeupTime - other._wakeupTime; |
if (c != 0) return c; |
return _id - other._id; |
} |
- |
bool get isActive => _callback != null; |
- |
// Cancels a set timer. The timer is removed from the timer heap if it is a |
// non-zero timer. Zero timers are kept in the list as they need to consume |
// the corresponding pending message. |
@@ -226,7 +212,6 @@ class _Timer implements Timer { |
} |
} |
- |
void _advanceWakeupTime() { |
// Recalculate the next wakeup time. For repeating timers with a 0 timeout |
// the next wakeup time is now. |
@@ -238,7 +223,6 @@ class _Timer implements Timer { |
} |
} |
- |
// Adds a timer to the heap or timer list. Timers with the same wakeup time |
// are enqueued in order and notified in FIFO order. |
void _enqueue() { |
@@ -260,7 +244,6 @@ class _Timer implements Timer { |
} |
} |
- |
// Enqeue one message for each zero timer. To be able to distinguish from |
// EventHandler messages we send a _ZERO_EVENT instead of a _TIMEOUT_EVENT. |
static void _notifyZeroHandler() { |
@@ -270,7 +253,6 @@ class _Timer implements Timer { |
_sendPort.send(_ZERO_EVENT); |
} |
- |
// Handle the notification of a zero timer. Make sure to also execute non-zero |
// timers with a lower expiration time. |
static List _queueFromZeroEvent() { |
@@ -291,7 +273,6 @@ class _Timer implements Timer { |
return pendingTimers; |
} |
- |
static void _notifyEventHandler() { |
if (_handlingCallbacks) { |
// While we are already handling callbacks we will not notify the event |
@@ -324,7 +305,6 @@ class _Timer implements Timer { |
} |
} |
- |
static List _queueFromTimeoutEvent() { |
var pendingTimers = new List(); |
if (_firstZeroTimer != null) { |
@@ -352,7 +332,6 @@ class _Timer implements Timer { |
return pendingTimers; |
} |
- |
static void _runTimers(List pendingTimers) { |
// If there are no pending timers currently reset the id space before we |
// have a chance to enqueue new timers. |
@@ -402,7 +381,6 @@ class _Timer implements Timer { |
} |
} |
- |
static void _handleMessage(msg) { |
var pendingTimers; |
if (msg == _ZERO_EVENT) { |
@@ -410,7 +388,7 @@ class _Timer implements Timer { |
assert(pendingTimers.length > 0); |
} else { |
assert(msg == _TIMEOUT_EVENT); |
- _scheduledWakeupTime = null; // Consumed the last scheduled wakeup now. |
+ _scheduledWakeupTime = null; // Consumed the last scheduled wakeup now. |
pendingTimers = _queueFromTimeoutEvent(); |
} |
_runTimers(pendingTimers); |
@@ -419,7 +397,6 @@ class _Timer implements Timer { |
_notifyEventHandler(); |
} |
- |
// Tell the event handler to wake this isolate at a specific time. |
static void _scheduleWakeup(int wakeupTime) { |
if (_sendPort == null) { |
@@ -429,7 +406,6 @@ class _Timer implements Timer { |
_scheduledWakeupTime = wakeupTime; |
} |
- |
// Cancel pending wakeups in the event handler. |
static void _cancelWakeup() { |
assert(_sendPort != null); |
@@ -437,7 +413,6 @@ class _Timer implements Timer { |
_scheduledWakeupTime = null; |
} |
- |
// Create a receive port and register a message handler for the timer |
// events. |
static void _createTimerHandler() { |
@@ -448,7 +423,6 @@ class _Timer implements Timer { |
_scheduledWakeupTime = null; |
} |
- |
static void _shutdownTimerHandler() { |
_receivePort.close(); |
_receivePort = null; |
@@ -456,11 +430,9 @@ class _Timer implements Timer { |
_scheduledWakeupTime = null; |
} |
- |
// The Timer factory registered with the dart:async library by the embedder. |
- static Timer _factory(int milliSeconds, |
- void callback(Timer timer), |
- bool repeating) { |
+ static Timer _factory( |
+ int milliSeconds, void callback(Timer timer), bool repeating) { |
if (repeating) { |
return new _Timer.periodic(milliSeconds, callback); |
} |
@@ -468,7 +440,6 @@ class _Timer implements Timer { |
} |
} |
- |
_setupHooks() { |
VMLibraryHooks.timerFactory = _Timer._factory; |
} |