Author: Philip Jenvey <pjen...@underboss.org>
Branch: py3k-get_clock_info
Changeset: r84775:b7cc151633f3
Date: 2016-05-28 00:04 -0700
http://bitbucket.org/pypy/pypy/changeset/b7cc151633f3/

Log:    plug clock_gettime into time()

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
@@ -576,8 +576,24 @@
 
     Return the current time in seconds since the Epoch.
     Fractions of a second may be present if the system clock provides them."""
-    # XXX: support clock_gettime
+    if HAS_CLOCK_GETTIME:
+        with lltype.scoped_alloc(TIMESPEC) as timespec:
+            ret = c_clock_gettime(cConfig.CLOCK_REALTIME, timespec)
+            if ret == 0:
+                if w_info is not None:
+                    with lltype.scoped_alloc(TIMESPEC) as tsres:
+                        ret = c_clock_gettime(cConfig.CLOCK_REALTIME, tsres)
+                        if ret == 0:
+                            res = _timespec_to_seconds(tsres)
+                        else:
+                            res = 1e-9
+                        fill_clock_info(space, w_info,
+                                    "clock_gettime(CLOCK_REALTIME)",
+                                    res, False, True)
+                return space.wrap(_timespec_to_seconds(timespec))
 
+    # XXX: rewrite the final fallback into gettimeofday w/ windows
+    # GetSystemTimeAsFileTime() support
     secs = pytime.time()
     if w_info is not None:
         # XXX: time.time delegates to the host python's time.time
@@ -591,30 +607,6 @@
         fill_clock_info(space, w_info, implementation,
                         resolution, False, True)
     return space.wrap(secs)
-
-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:
-        with lltype.scoped_alloc(TIMESPEC) as timespec:
-            ret = c_clock_gettime(cConfig.CLOCK_REALTIME, timespec)
-            if ret != 0:
-                raise exception_from_saved_errno(space, space.w_OSError)
-            space.setattr(w_info, space.wrap("monotonic"), space.w_False)
-            space.setattr(w_info, space.wrap("implementation"),
-                          space.wrap("clock_gettime(CLOCK_REALTIME)"))
-            space.setattr(w_info, space.wrap("adjustable"), space.w_True)
-            try:
-                res = clock_getres(space, cConfig.CLOCK_REALTIME)
-            except OperationError:
-                res = 1e-9
-           
-            space.setattr(w_info, space.wrap("resolution"),
-                          res)
-            secs = _timespec_to_seconds(timespec)
-            return secs
-    else:
-        return gettimeofday(w_info)
         
 
 def ctime(space, w_seconds=None):
_______________________________________________
pypy-commit mailing list
pypy-commit@python.org
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to