~Watchdog();
 
     typedef bool (*ShouldTerminateCallback)(ExecState*, void* data1, void* data2);
-    void setTimeLimit(VM&, double seconds, ShouldTerminateCallback = 0, void* data1 = 0, void* data2 = 0);
+    void setTimeLimit(VM&, std::chrono::microseconds limit, ShouldTerminateCallback = 0, void* data1 = 0, void* data2 = 0);
 
     // This version of didFire() will check the elapsed CPU time and call the
     // callback (if needed) to determine if the watchdog should fire.
     void arm();
     void disarm();
     void startCountdownIfNeeded();
-    void startCountdown(double limit);
+    void startCountdown(std::chrono::microseconds limit);
     void stopCountdown();
     bool isArmed() { return !!m_reentryCount; }
 
     // Platform specific timer implementation:
     void initTimer();
     void destroyTimer();
-    void startTimer(double limit);
+    void startTimer(std::chrono::microseconds limit);
     void stopTimer();
 
     // m_timerDidFire (above) indicates whether the timer fired. The Watchdog
     bool m_timerDidFire;
     bool m_didFire;
 
-    // All time units are in seconds.
-    double m_limit;
-    double m_startTime;
-    double m_elapsedTime;
+    std::chrono::microseconds m_limit;
+    std::chrono::microseconds m_startTime;
+    std::chrono::microseconds m_elapsedTime;
 
     int m_reentryCount;
     bool m_isStopped;