Author: Amaury Forgeot d'Arc <[email protected]>
Branch: py3.3
Changeset: r81995:a9fccbdef513
Date: 2016-01-28 17:44 +0100
http://bitbucket.org/pypy/pypy/changeset/a9fccbdef513/
Log: Fix rposix module after bad merge
diff --git a/rpython/rlib/rposix.py b/rpython/rlib/rposix.py
--- a/rpython/rlib/rposix.py
+++ b/rpython/rlib/rposix.py
@@ -27,6 +27,22 @@
from rpython.rlib import rwin32
from rpython.rlib.rwin32file import make_win32_traits
+class CConfig:
+ _compilation_info_ = ExternalCompilationInfo(
+ includes=['sys/stat.h',
+ 'unistd.h',
+ 'fcntl.h'],
+ )
+ for _name in """fchdir fchmod fchmodat fchown fchownat fexecve fdopendir
+ fpathconf fstat fstatat fstatvfs ftruncate futimens futimes
+ futimesat linkat lchflags lchmod lchown lstat lutimes
+ mkdirat mkfifoat mknodat openat readlinkat renameat
+ symlinkat unlinkat utimensat""".split():
+ locals()['HAVE_%s' % _name.upper()] = rffi_platform.Has(_name)
+cConfig = rffi_platform.configure(CConfig)
+globals().update(cConfig)
+
+
class CConstantErrno(CConstant):
# these accessors are used when calling get_errno() or set_errno()
# on top of CPython
@@ -1053,6 +1069,13 @@
if not win32traits.MoveFile(path1, path2):
raise rwin32.lastSavedWindowsError()
[email protected](0, 1)
+def replace(path1, path2):
+ if os.name == 'nt':
+ raise NotImplementedError(
+ 'On windows, os.replace() should overwrite the destination')
+ return rename(path1, path2)
+
#___________________________________________________________________
c_mkfifo = external('mkfifo', [rffi.CCHARP, rffi.MODE_T], rffi.INT,
diff --git a/rpython/rlib/rtime.py b/rpython/rlib/rtime.py
--- a/rpython/rlib/rtime.py
+++ b/rpython/rlib/rtime.py
@@ -9,7 +9,6 @@
from rpython.rtyper.tool import rffi_platform
from rpython.rtyper.lltypesystem import rffi, lltype
from rpython.rlib.objectmodel import register_replacement_for
-from rpython.rlib import jit
from rpython.rlib.rarithmetic import intmask, UINT_MAX
from rpython.rlib import rposix
@@ -168,28 +167,30 @@
c_clock_gettime = external('clock_gettime',
[lltype.Signed, lltype.Ptr(TIMESPEC)],
rffi.INT, releasegil=False)
-else:
+if need_rusage:
RUSAGE = RUSAGE
RUSAGE_SELF = RUSAGE_SELF or 0
c_getrusage = external('getrusage',
[rffi.INT, lltype.Ptr(RUSAGE)],
- lltype.Void,
+ rffi.INT,
releasegil=False)
+def win_perf_counter():
+ a = lltype.malloc(A, flavor='raw')
+ if state.divisor == 0.0:
+ QueryPerformanceCounter(a)
+ state.counter_start = a[0]
+ QueryPerformanceFrequency(a)
+ state.divisor = float(a[0])
+ QueryPerformanceCounter(a)
+ diff = a[0] - state.counter_start
+ lltype.free(a, flavor='raw')
+ return float(diff) / state.divisor
+
@replace_time_function('clock')
[email protected]_look_inside # the JIT doesn't like FixedSizeArray
def clock():
if _WIN32:
- a = lltype.malloc(A, flavor='raw')
- if state.divisor == 0.0:
- QueryPerformanceCounter(a)
- state.counter_start = a[0]
- QueryPerformanceFrequency(a)
- state.divisor = float(a[0])
- QueryPerformanceCounter(a)
- diff = a[0] - state.counter_start
- lltype.free(a, flavor='raw')
- return float(diff) / state.divisor
+ return win_perf_counter()
elif CLOCK_PROCESS_CPUTIME_ID is not None:
with lltype.scoped_alloc(TIMESPEC) as a:
c_clock_gettime(CLOCK_PROCESS_CPUTIME_ID, a)
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit