Author: Armin Rigo <[email protected]>
Branch:
Changeset: r68594:d681e26981e8
Date: 2014-01-10 13:16 +0100
http://bitbucket.org/pypy/pypy/changeset/d681e26981e8/
Log: With DO_TRACING=False, we can now ensure that these finalizers are
light.
diff --git a/pypy/module/_rawffi/array.py b/pypy/module/_rawffi/array.py
--- a/pypy/module/_rawffi/array.py
+++ b/pypy/module/_rawffi/array.py
@@ -15,6 +15,7 @@
from pypy.module._rawffi.interp_rawffi import unpack_shape_with_length
from pypy.module._rawffi.interp_rawffi import read_ptr, write_ptr
from rpython.rlib.rarithmetic import r_uint
+from rpython.rlib import rgc
class W_Array(W_DataShape):
@@ -220,6 +221,7 @@
def __init__(self, space, shape, length):
W_ArrayInstance.__init__(self, space, shape, length, 0)
+ @rgc.must_be_light_finalizer
def __del__(self):
if self.ll_buffer:
self._free()
diff --git a/pypy/module/_rawffi/structure.py b/pypy/module/_rawffi/structure.py
--- a/pypy/module/_rawffi/structure.py
+++ b/pypy/module/_rawffi/structure.py
@@ -16,7 +16,7 @@
from pypy.module._rawffi.interp_rawffi import unroll_letters_for_numbers
from pypy.module._rawffi.interp_rawffi import size_alignment
from pypy.module._rawffi.interp_rawffi import read_ptr, write_ptr
-from rpython.rlib import clibffi
+from rpython.rlib import clibffi, rgc
from rpython.rlib.rarithmetic import intmask, signedtype, widen
from rpython.rlib.rarithmetic import r_uint, r_ulonglong, r_longlong
@@ -226,6 +226,7 @@
fieldtypes)
return self.ffi_struct.ffistruct
+ @rgc.must_be_light_finalizer
def __del__(self):
if self.ffi_struct:
lltype.free(self.ffi_struct, flavor='raw')
@@ -380,6 +381,7 @@
def __init__(self, space, shape):
W_StructureInstance.__init__(self, space, shape, 0)
+ @rgc.must_be_light_finalizer
def __del__(self):
if self.ll_buffer:
self._free()
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit