コード例 #1
0
def unicode_dealloc(space, py_obj):
    if get_wbuffer(py_obj):
        lltype.free(get_wbuffer(py_obj), flavor="raw")
    if get_utf8(py_obj):
        lltype.free(get_utf8(py_obj), flavor="raw")
    from pypy.module.cpyext.object import _dealloc
    _dealloc(space, py_obj)
コード例 #2
0
def frame_dealloc(space, py_obj):
    py_frame = rffi.cast(PyFrameObject, py_obj)
    py_code = rffi.cast(PyObject, py_frame.c_f_code)
    Py_DecRef(space, py_code)
    Py_DecRef(space, py_frame.c_f_globals)
    Py_DecRef(space, py_frame.c_f_locals)
    from pypy.module.cpyext.object import _dealloc
    _dealloc(space, py_obj)
コード例 #3
0
ファイル: frameobject.py プロジェクト: mozillazg/pypy
def frame_dealloc(space, py_obj):
    py_frame = rffi.cast(PyFrameObject, py_obj)
    py_code = rffi.cast(PyObject, py_frame.c_f_code)
    Py_DecRef(space, py_code)
    Py_DecRef(space, py_frame.c_f_globals)
    Py_DecRef(space, py_frame.c_f_locals)
    from pypy.module.cpyext.object import _dealloc
    _dealloc(space, py_obj)
コード例 #4
0
ファイル: unicodeobject.py プロジェクト: mozillazg/pypy
def unicode_dealloc(space, py_obj):
    py_unicode = rffi.cast(PyUnicodeObject, py_obj)
    Py_DecRef(space, py_unicode.c_defenc)
    if py_unicode.c_str:
        lltype.free(py_unicode.c_str, flavor="raw")

    from pypy.module.cpyext.object import _dealloc
    _dealloc(space, py_obj)
コード例 #5
0
def buffer_dealloc(space, py_obj):
    py_buf = rffi.cast(PyBufferObject, py_obj)
    if py_buf.c_b_base:
        decref(space, py_buf.c_b_base)
    else:
        rffi.free_charp(rffi.cast(rffi.CCHARP, py_buf.c_b_ptr))
    from pypy.module.cpyext.object import _dealloc
    _dealloc(space, py_obj)
コード例 #6
0
ファイル: bufferobject.py プロジェクト: mozillazg/pypy
def buffer_dealloc(space, py_obj):
    py_buf = rffi.cast(PyBufferObject, py_obj)
    if py_buf.c_b_base:
        Py_DecRef(space, py_buf.c_b_base)
    else:
        rffi.free_charp(rffi.cast(rffi.CCHARP, py_buf.c_b_ptr))
    from pypy.module.cpyext.object import _dealloc
    _dealloc(space, py_obj)
コード例 #7
0
def unicode_dealloc(space, py_obj):
    py_unicode = rffi.cast(PyUnicodeObject, py_obj)
    Py_DecRef(space, py_unicode.c_defenc)
    if py_unicode.c_str:
        lltype.free(py_unicode.c_str, flavor="raw")

    from pypy.module.cpyext.object import _dealloc
    _dealloc(space, py_obj)
コード例 #8
0
ファイル: tupleobject.py プロジェクト: mozillazg/pypy
def tuple_dealloc(space, py_obj):
    """Frees allocated PyTupleObject resources.
    """
    py_tup = rffi.cast(PyTupleObject, py_obj)
    p = py_tup.c_ob_item
    for i in range(py_tup.c_ob_size):
        decref(space, p[i])
    from pypy.module.cpyext.object import _dealloc
    _dealloc(space, py_obj)
コード例 #9
0
def slice_dealloc(space, py_obj):
    """Frees allocated PySliceObject resources.
    """
    py_slice = rffi.cast(PySliceObject, py_obj)
    decref(space, py_slice.c_start)
    decref(space, py_slice.c_stop)
    decref(space, py_slice.c_step)
    from pypy.module.cpyext.object import _dealloc
    _dealloc(space, py_obj)
コード例 #10
0
def tuple_dealloc(space, py_obj):
    """Frees allocated PyTupleObject resources.
    """
    py_tup = rffi.cast(PyTupleObject, py_obj)
    p = py_tup.c_ob_item
    for i in range(py_tup.c_ob_size):
        decref(space, p[i])
    from pypy.module.cpyext.object import _dealloc
    _dealloc(space, py_obj)
コード例 #11
0
ファイル: sliceobject.py プロジェクト: mozillazg/pypy
def slice_dealloc(space, py_obj):
    """Frees allocated PyBytesObject resources.
    """
    py_slice = rffi.cast(PySliceObject, py_obj)
    Py_DecRef(space, py_slice.c_start)
    Py_DecRef(space, py_slice.c_stop)
    Py_DecRef(space, py_slice.c_step)
    from pypy.module.cpyext.object import _dealloc
    _dealloc(space, py_obj)
コード例 #12
0
def memory_dealloc(space, py_obj):
    mem_obj = rffi.cast(PyMemoryViewObject, py_obj)
    view = mem_obj.c_view
    if view.c_obj:
        decref(space, view.c_obj)
    view.c_obj = rffi.cast(PyObject, 0)
    flags = widen(view.c_flags)
    if flags & FORMAT_ALLOCATED == FORMAT_ALLOCATED:
        lltype.free(view.c_format, flavor='raw')
    _dealloc(space, py_obj)
コード例 #13
0
ファイル: typeobject.py プロジェクト: mozillazg/pypy
def type_dealloc(space, obj):
    from pypy.module.cpyext.object import _dealloc
    obj_pto = rffi.cast(PyTypeObjectPtr, obj)
    base_pyo = rffi.cast(PyObject, obj_pto.c_tp_base)
    Py_DecRef(space, obj_pto.c_tp_bases)
    Py_DecRef(space, obj_pto.c_tp_mro)
    Py_DecRef(space, obj_pto.c_tp_cache) # let's do it like cpython
    Py_DecRef(space, obj_pto.c_tp_dict)
    if obj_pto.c_tp_flags & Py_TPFLAGS_HEAPTYPE:
        heaptype = rffi.cast(PyHeapTypeObject, obj)
        Py_DecRef(space, heaptype.c_ht_name)
        Py_DecRef(space, base_pyo)
        _dealloc(space, obj)
コード例 #14
0
def type_dealloc(space, obj):
    from pypy.module.cpyext.object import _dealloc
    obj_pto = rffi.cast(PyTypeObjectPtr, obj)
    base_pyo = rffi.cast(PyObject, obj_pto.c_tp_base)
    decref(space, obj_pto.c_tp_bases)
    decref(space, obj_pto.c_tp_mro)
    decref(space, obj_pto.c_tp_cache)  # let's do it like cpython
    decref(space, obj_pto.c_tp_dict)
    if obj_pto.c_tp_flags & Py_TPFLAGS_HEAPTYPE:
        heaptype = rffi.cast(PyHeapTypeObject, obj)
        decref(space, heaptype.c_ht_name)
        decref(space, base_pyo)
        _dealloc(space, obj)
コード例 #15
0
ファイル: cdatetime.py プロジェクト: pointworld/pypy
def type_dealloc(space, py_obj):
    from pypy.module.cpyext.object import _dealloc
    state = space.fromcache(State)
    # cannot raise here, so just crash
    assert len(state.datetimeAPI) > 0
    if state.datetimeAPI[0].c_TimeType == py_obj.c_ob_type:
        py_datetime = rffi.cast(PyDateTime_Time, py_obj)
        if (widen(py_datetime.c_hastzinfo) != 0):
            decref(space, py_datetime.c_tzinfo)
    elif state.datetimeAPI[0].c_DateTimeType == py_obj.c_ob_type:
        py_datetime = rffi.cast(PyDateTime_DateTime, py_obj)
        if (widen(py_datetime.c_hastzinfo) != 0):
            decref(space, py_datetime.c_tzinfo)
    _dealloc(space, py_obj)
コード例 #16
0
def bytes_dealloc(space, py_obj):
    """Frees allocated PyBytesObject resources.
    """
    from pypy.module.cpyext.object import _dealloc
    _dealloc(space, py_obj)
コード例 #17
0
def date_dealloc(space, py_obj):
    from pypy.module.cpyext.object import _dealloc
    _dealloc(space, py_obj)
コード例 #18
0
def type_dealloc(space, py_obj):
    py_datetime = rffi.cast(PyDateTime_Time, py_obj)
    if (widen(py_datetime.c_hastzinfo) != 0):
        decref(space, py_datetime.c_tzinfo)
    from pypy.module.cpyext.object import _dealloc
    _dealloc(space, py_obj)
コード例 #19
0
def gi_dealloc(space, py_obj):
    _dealloc(space, py_obj)
コード例 #20
0
ファイル: methodobject.py プロジェクト: mozillazg/pypy
def cfunction_dealloc(space, py_obj):
    py_func = rffi.cast(PyCFunctionObject, py_obj)
    Py_DecRef(space, py_func.c_m_self)
    Py_DecRef(space, py_func.c_m_module)
    from pypy.module.cpyext.object import _dealloc
    _dealloc(space, py_obj)
コード例 #21
0
ファイル: bytesobject.py プロジェクト: mozillazg/pypy
def bytes_dealloc(space, py_obj):
    """Frees allocated PyBytesObject resources.
    """
    from pypy.module.cpyext.object import _dealloc
    _dealloc(space, py_obj)
コード例 #22
0
ファイル: setobject.py プロジェクト: zcxowwww/pypy
def set_dealloc(space, py_obj):
    py_set = rffi.cast(PySetObject, py_obj)
    decref(space, py_set.c__tmplist)
    py_set.c__tmplist = lltype.nullptr(PyObject.TO)
    _dealloc(space, py_obj)
コード例 #23
0
def stopiteration_dealloc(space, py_obj):
    py_stopiteration = rffi.cast(PyStopIterationObject, py_obj)
    decref(space, py_stopiteration.c_value)
    from pypy.module.cpyext.object import _dealloc
    _dealloc(space, py_obj)
コード例 #24
0
def function_dealloc(space, py_obj):
    py_func = rffi.cast(PyFunctionObject, py_obj)
    Py_DecRef(space, py_func.c_func_name)
    from pypy.module.cpyext.object import _dealloc
    _dealloc(space, py_obj)
コード例 #25
0
def cfunction_dealloc(space, py_obj):
    py_func = rffi.cast(PyCFunctionObject, py_obj)
    Py_DecRef(space, py_func.c_m_self)
    Py_DecRef(space, py_func.c_m_module)
    from pypy.module.cpyext.object import _dealloc
    _dealloc(space, py_obj)
コード例 #26
0
ファイル: pytraceback.py プロジェクト: mozillazg/pypy
def traceback_dealloc(space, py_obj):
    py_traceback = rffi.cast(PyTracebackObject, py_obj)
    Py_DecRef(space, rffi.cast(PyObject, py_traceback.c_tb_next))
    Py_DecRef(space, rffi.cast(PyObject, py_traceback.c_tb_frame))
    from pypy.module.cpyext.object import _dealloc
    _dealloc(space, py_obj)
コード例 #27
0
def module_dealloc(space, py_obj):
    py_module = rffi.cast(PyModuleObject, py_obj)
    if py_module.c_md_state:
        lltype.free(py_module.c_md_state, flavor='raw')
    from pypy.module.cpyext.object import _dealloc
    _dealloc(space, py_obj)
コード例 #28
0
def code_dealloc(space, py_obj):
    py_code = rffi.cast(PyCodeObject, py_obj)
    Py_DecRef(space, py_code.c_co_name)
    Py_DecRef(space, py_code.c_co_filename)
    from pypy.module.cpyext.object import _dealloc
    _dealloc(space, py_obj)
コード例 #29
0
def dict_dealloc(space, py_obj):
    py_dict = rffi.cast(PyDictObject, py_obj)
    decref(space, py_dict.c__tmpkeys)
    py_dict.c__tmpkeys = lltype.nullptr(PyObject.TO)
    _dealloc(space, py_obj)
コード例 #30
0
ファイル: memoryobject.py プロジェクト: yuanleilei/pypy
def memory_dealloc(space, py_obj):
    mem_obj = rffi.cast(PyMemoryViewObject, py_obj)
    if mem_obj.c_view.c_obj:
        decref(space, mem_obj.c_view.c_obj)
    mem_obj.c_view.c_obj = rffi.cast(PyObject, 0)
    _dealloc(space, py_obj)
コード例 #31
0
def descr_dealloc(space, py_obj):
    from pypy.module.cpyext.object import _dealloc
    py_descr = cts.cast('PyDescrObject*', py_obj)
    decref(space, py_descr.c_d_type)
    decref(space, py_descr.c_d_name)
    _dealloc(space, py_obj)
コード例 #32
0
ファイル: funcobject.py プロジェクト: mozillazg/pypy
def function_dealloc(space, py_obj):
    py_func = rffi.cast(PyFunctionObject, py_obj)
    Py_DecRef(space, py_func.c_func_name)
    from pypy.module.cpyext.object import _dealloc
    _dealloc(space, py_obj)
コード例 #33
0
def traceback_dealloc(space, py_obj):
    py_traceback = rffi.cast(PyTracebackObject, py_obj)
    decref(space, rffi.cast(PyObject, py_traceback.c_tb_next))
    decref(space, rffi.cast(PyObject, py_traceback.c_tb_frame))
    from pypy.module.cpyext.object import _dealloc
    _dealloc(space, py_obj)
コード例 #34
0
ファイル: funcobject.py プロジェクト: mozillazg/pypy
def code_dealloc(space, py_obj):
    py_code = rffi.cast(PyCodeObject, py_obj)
    Py_DecRef(space, py_code.c_co_name)
    Py_DecRef(space, py_code.c_co_filename)
    from pypy.module.cpyext.object import _dealloc
    _dealloc(space, py_obj)