Author: Amaury Forgeot d'Arc <amaur...@gmail.com> 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() +@specialize.argtype(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') -@jit.dont_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 pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit