Author: Mark Young <[email protected]>
Branch: py3k
Changeset: r85278:aa738befc92c
Date: 2016-05-29 11:16 -0400
http://bitbucket.org/pypy/pypy/changeset/aa738befc92c/

Log:    Committing so I can diff between mine and upstream.

diff --git a/pypy/module/time/interp_time.py b/pypy/module/time/interp_time.py
--- a/pypy/module/time/interp_time.py
+++ b/pypy/module/time/interp_time.py
@@ -182,11 +182,12 @@
         ("tm_yday", rffi.INT), ("tm_isdst", rffi.INT)])
 
     # TODO: Figure out how to implement this...
+    u = platform.Struct("struct u", [("LowPart", rwin32.DWORD),
+        ("HighPart", rwin32.DWORD)])
+
     CConfig.ULARGE_INTEGER = platform.Struct("struct ULARGE_INTEGER", [
-        ("tm_sec", rffi.INT),
-        ("tm_min", rffi.INT), ("tm_hour", rffi.INT), ("tm_mday", rffi.INT),
-        ("tm_mon", rffi.INT), ("tm_year", rffi.INT), ("tm_wday", rffi.INT),
-        ("tm_yday", rffi.INT), ("tm_isdst", rffi.INT)])
+        ("LowPart", rwin32.DWORD), ("HighPart", rwin32.DWORD),
+        ("u", u), ("QuadPart", rffi.ULONGLONG)])
 
 if _MACOSX:
     CConfig.TIMEBASE_INFO = platform.Struct("struct mach_timebase_info", [
@@ -234,17 +235,38 @@
 rffi.VOIDP], 
                               rffi.INT)
     if _WIN:
-       GetSystemTimeAsFileTime = external('GetSystemTimeAsFileTime', 
+        GetSystemTimeAsFileTime = external('GetSystemTimeAsFileTime', 
                                           [rwin32.FILETIME], 
                                           lltype.VOID)
+        LPDWORD = rwin32.LPDWORD
+        _GetSystemTimeAdjustment = rwin32.winexternal(
+                                                'GetSystemTimeAdjustment',
+                                                [LPDWORD, LPDWORD, 
rwin32.LPBOOL], 
+                                                rffi.INT)
         def gettimeofday(space, w_info=None):
-            with lltype.scoped_alloc(rwin32.FILETIME) as system_time, 
+            with lltype.scoped_alloc(rwin32.FILETIME) as system_time, \
+                 lltype.scoped_alloc(CConfig.ULARGE_INTEGER) as large, \
+                 lltype.scoped_alloc(rffi.ULONGLONG) as microseconds:
+
                 GetSystemTimeAsFileTime(system_time)
-                
+                large.u.LowPart = system_time.dwLowDateTime
+                large.u.HighPart = system_time.dwHighDateTime
+                microseconds = system_time.Quadpart / (10 - 11644473600000000)
+                tp.tv_sec = microseconds / 1000000
+                tp.tv_usec = microseconds % 1000000
+                if w_info:
+                    with lltype.scoped_alloc(rwin32.DWORD) as time_adjustment, 
\
+                         lltype.scoped_alloc(rwin32.DWORD) as time_increment, \
+                         lltype.scoped_alloc(rwin32.BOOL) as 
is_time_adjustmentDisabled:
+                        w_info.implementation = "GetSystemTimeAsFileTime()"
+                        w_info.monotonic = space.w_False
+                        _GetSystemTimeAdjustment(time_adjustment, 
time_increment,
+                                                is_time_adjustment_disabled)
+                        w_info.resolution = time_increment * 1e-7
+                        w_info.adjustable = space.w_True
+            # TODO: Find docs for ftime
+            return space.wrap(1)
 
-                seconds = float(timeval.tv_sec) + timeval.tv_usec * 1e-6
-
-            return space.wrap(seconds)
     else:
         def gettimeofday(space, w_info=None):
             with lltype.scoped_alloc(CConfig.timeval) as timeval:
@@ -581,7 +603,7 @@
 def get_time_time_clock_info(space, w_info):
     # Can't piggy back on time.time because time.time delegates to the 
     # host python's time.time (so we can't see the internals)
-    if HAS_CLOCK_GETTIME:
+    if HAS_CLOCK_GETTIME and False:
         with lltype.scoped_alloc(TIMESPEC) as timespec:
             ret = c_clock_gettime(cConfig.CLOCK_REALTIME, timespec)
             if ret != 0:
@@ -804,11 +826,6 @@
 if _WIN:
     # untested so far
     _GetTickCount = rwin32.winexternal('GetTickCount', [], rwin32.DWORD)
-    LPDWORD = rwin32.LPDWORD
-    _GetSystemTimeAdjustment = rwin32.winexternal(
-                                            'GetSystemTimeAdjustment',
-                                            [LPDWORD, LPDWORD, rwin32.LPBOOL], 
-                                            rffi.INT)
     def monotonic(space, w_info=None):
         result = 0
         if HAS_GETTICKCOUNT64:
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to