[pypy-svn] r27516 - pypy/dist/pypy/rpython/memory
arigo at codespeak.net
arigo at codespeak.net
Sat May 20 21:02:14 CEST 2006
Author: arigo
Date: Sat May 20 21:02:13 2006
New Revision: 27516
Modified:
pypy/dist/pypy/rpython/memory/gc.py
Log:
Somehow a fix. But only because the lladdress simulator
doesn't know about direct_fieldptr(). Kill!
Modified: pypy/dist/pypy/rpython/memory/gc.py
==============================================================================
--- pypy/dist/pypy/rpython/memory/gc.py (original)
+++ pypy/dist/pypy/rpython/memory/gc.py Sat May 20 21:02:13 2006
@@ -267,7 +267,8 @@
prevpoolnode = lltype.nullptr(self.POOLNODE)
poolnode = firstpoolnode
while poolnode: #sweep
- ppnext = lltype.direct_fieldptr(poolnode, 'linkedlist')
+ ppnext = llmemory.cast_ptr_to_adr(poolnode)
+ ppnext += llmemory.offsetof(self.POOLNODE, 'linkedlist')
hdr = poolnode.linkedlist
while hdr: #sweep
typeid = hdr.typeid >> 1
@@ -280,14 +281,15 @@
estimate = raw_malloc_usage(size_gc_header + size)
if hdr.typeid & 1:
hdr.typeid = hdr.typeid & (~1)
- ppnext[0] = hdr
- ppnext = lltype.direct_fieldptr(hdr, 'next')
+ ppnext.address[0] = addr
+ ppnext = llmemory.cast_ptr_to_adr(hdr)
+ ppnext += llmemory.offsetof(self.HDR, 'next')
curr_heap_size += estimate
else:
freed_size += estimate
raw_free(addr)
hdr = next
- ppnext[0] = lltype.nullptr(self.HDR)
+ ppnext.address[0] = llmemory.NULL
next = poolnode.nextnode
if not poolnode.linkedlist and prevpoolnode:
# completely empty node
More information about the Pypy-commit
mailing list