[pypy-svn] r51733 - pypy/branch/unified-rtti/pypy/rpython/memory/gctransform
arigo at codespeak.net
arigo at codespeak.net
Thu Feb 21 16:53:51 CET 2008
Author: arigo
Date: Thu Feb 21 16:53:50 2008
New Revision: 51733
Modified:
pypy/branch/unified-rtti/pypy/rpython/memory/gctransform/boehm.py
Log:
Merge r51732 from the trunk.
Modified: pypy/branch/unified-rtti/pypy/rpython/memory/gctransform/boehm.py
==============================================================================
--- pypy/branch/unified-rtti/pypy/rpython/memory/gctransform/boehm.py (original)
+++ pypy/branch/unified-rtti/pypy/rpython/memory/gctransform/boehm.py Thu Feb 21 16:53:50 2008
@@ -16,28 +16,21 @@
atomic_mh = mallocHelpers()
atomic_mh.allocate = lambda size: llop.boehm_malloc_atomic(llmemory.Address, size)
- def ll_malloc_fixedsize_atomic(size, finalizer):
- result = atomic_mh._ll_malloc_fixedsize(size)
- if finalizer: # XXX runtime check here is bad?
- llop.boehm_register_finalizer(lltype.Void, result, finalizer)
- return result
+ ll_malloc_fixedsize_atomic = atomic_mh._ll_malloc_fixedsize
mh = mallocHelpers()
mh.allocate = lambda size: llop.boehm_malloc(llmemory.Address, size)
- def ll_malloc_fixedsize(size, finalizer):
- result = mh._ll_malloc_fixedsize(size)
- if finalizer: # XXX runtime check here is bad?
- llop.boehm_register_finalizer(lltype.Void, result, finalizer)
- return result
+ ll_malloc_fixedsize = mh._ll_malloc_fixedsize
+
# XXX, do we need/want an atomic version of this function?
ll_malloc_varsize_no_length = mh.ll_malloc_varsize_no_length
ll_malloc_varsize = mh.ll_malloc_varsize
if self.translator:
self.malloc_fixedsize_ptr = self.inittime_helper(
- ll_malloc_fixedsize, [lltype.Signed, self.FINALIZER_PTR], llmemory.Address)
+ ll_malloc_fixedsize, [lltype.Signed], llmemory.Address)
self.malloc_fixedsize_atomic_ptr = self.inittime_helper(
- ll_malloc_fixedsize_atomic, [lltype.Signed, self.FINALIZER_PTR], llmemory.Address)
+ ll_malloc_fixedsize_atomic, [lltype.Signed], llmemory.Address)
self.malloc_varsize_no_length_ptr = self.inittime_helper(
ll_malloc_varsize_no_length, [lltype.Signed]*3, llmemory.Address, inline=False)
self.malloc_varsize_ptr = self.inittime_helper(
@@ -62,10 +55,13 @@
funcptr = self.malloc_fixedsize_atomic_ptr
else:
funcptr = self.malloc_fixedsize_ptr
- c_finalizer_ptr = Constant(self.finalizer_funcptr_for_type(TYPE), self.FINALIZER_PTR)
v_raw = hop.genop("direct_call",
- [funcptr, c_size, c_finalizer_ptr],
+ [funcptr, c_size],
resulttype=llmemory.Address)
+ finalizer_ptr = self.finalizer_funcptr_for_type(TYPE)
+ if finalizer_ptr:
+ c_finalizer_ptr = Constant(finalizer_ptr, self.FINALIZER_PTR)
+ hop.genop("boehm_register_finalizer", [v_raw, c_finalizer_ptr])
return v_raw
More information about the Pypy-commit
mailing list