1.0.4.39: get rid of hardcoded mutex and spinlock slot indexes
[sbcl.git] / src / code / win32.lisp
index 4b18a45..facc8c9 100644 (file)
                (addr ,kernel-time)
                (addr ,user-time))))
 
-(declaim (inline system-internal-real-time system-internal-run-time))
-(defun system-internal-real-time ()
-  (with-alien ((system-time filetime))
-    (syscall (("GetSystemTimeAsFileTime" 4) void (* filetime))
-             (values (floor system-time 100ns-per-internal-time-unit))
-             (addr system-time))))
+(declaim (inline system-internal-real-time))
+
+(let ((epoch 0))
+  (declare (unsigned-byte epoch))
+  ;; FIXME: For optimization ideas see the unix implementation.
+  (defun reinit-internal-real-time ()
+    (setf epoch 0
+          epoch (get-internal-real-time)))
+  (defun get-internal-real-time ()
+    (- (with-alien ((system-time filetime))
+         (syscall (("GetSystemTimeAsFileTime" 4) void (* filetime))
+                  (values (floor system-time 100ns-per-internal-time-unit))
+                  (addr system-time)))
+       epoch)))
 
 (defun system-internal-run-time ()
   (with-process-times (creation-time exit-time kernel-time user-time)