Author: mattip <matti.pi...@gmail.com> Branch: Changeset: r83308:3d5dcf2b84e1 Date: 2016-03-23 23:54 +0200 http://bitbucket.org/pypy/pypy/changeset/3d5dcf2b84e1/
Log: replace FixedSizeArray with CArrayPtr and scoped_alloc diff --git a/rpython/rlib/rtime.py b/rpython/rlib/rtime.py --- a/rpython/rlib/rtime.py +++ b/rpython/rlib/rtime.py @@ -148,13 +148,12 @@ if _WIN32: # hacking to avoid LARGE_INTEGER which is a union... - A = lltype.FixedSizeArray(lltype.SignedLongLong, 1) QueryPerformanceCounter = external( - 'QueryPerformanceCounter', [lltype.Ptr(A)], lltype.Void, - releasegil=False) + 'QueryPerformanceCounter', [rffi.CArrayPtr(lltype.SignedLongLong)], + lltype.Void, releasegil=False) QueryPerformanceFrequency = external( - 'QueryPerformanceFrequency', [lltype.Ptr(A)], rffi.INT, - releasegil=False) + 'QueryPerformanceFrequency', [rffi.CArrayPtr(lltype.SignedLongLong)], + rffi.INT, releasegil=False) class State(object): divisor = 0.0 counter_start = 0 @@ -178,15 +177,14 @@ releasegil=False) def win_perf_counter(): - a = lltype.malloc(A, flavor='raw') - if state.divisor == 0.0: + with lltype.scoped_alloc(rffi.CArray(rffi.lltype.SignedLongLong), 1) as a: + if state.divisor == 0.0: + QueryPerformanceCounter(a) + state.counter_start = a[0] + QueryPerformanceFrequency(a) + state.divisor = float(a[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') + diff = a[0] - state.counter_start return float(diff) / state.divisor @replace_time_function('clock') _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit