1.0.20.2: Fewer XC/reader-conditional confusions
[sbcl.git] / src / code / win32.lisp
index 3e55344..facc8c9 100644 (file)
           ;;870       IBM EBCDIC - Multilingual/ROECE (Latin-2)
           (874 :CP874) ;; ANSI/OEM - Thai (same as 28605, ISO 8859-15)
           ;;875       IBM EBCDIC - Modern Greek
-          ;;932       ANSI/OEM - Japanese, Shift-JIS
+          (932 :CP932)     ;; ANSI/OEM - Japanese, Shift-JIS
           ;;936       ANSI/OEM - Simplified Chinese (PRC, Singapore)
           ;;949       ANSI/OEM - Korean (Unified Hangul Code)
           ;;950       ANSI/OEM - Traditional Chinese (Taiwan; Hong Kong SAR, PRC)
                (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)