[pypy-commit] pypy quad-color-gc: "Fix" initialization (WIP)
ntruessel
pypy.commits at gmail.com
Fri Aug 19 08:48:42 EDT 2016
Author: Nicolas Truessel <ntruessel at njsm.de>
Branch: quad-color-gc
Changeset: r86314:d6468116edd7
Date: 2016-08-19 14:48 +0200
http://bitbucket.org/pypy/pypy/changeset/d6468116edd7/
Log: "Fix" initialization (WIP)
diff --git a/rpython/memory/gc/qcgc.py b/rpython/memory/gc/qcgc.py
--- a/rpython/memory/gc/qcgc.py
+++ b/rpython/memory/gc/qcgc.py
@@ -1,5 +1,6 @@
from rpython.memory.gc.base import GCBase
from rpython.rtyper.lltypesystem import rffi, lltype, llgroup, llmemory
+from rpython.rtyper.lltypesystem.lloperation import llop
class QCGC(GCBase):
_alloc_flavor_ = "raw"
@@ -12,13 +13,14 @@
gcflag_extra = 0 # or a real GC flag that is always 0 when not collecting
typeid_is_in_field = 'tid'
+ withhash_flag_is_in_field = 'hash', 0
TRANSLATION_PARAMS = {}
HDR = lltype.Struct(
'PYPYHDR',
('hdr', rffi.COpaque('object_t')),
- ('tid', lltype.Unsigned),
- ('hash', lltype.Unsigned))
+ ('tid', lltype.Signed),
+ ('hash', lltype.Signed))
#HDR = rffi.COpaque('object_t')
def malloc_fixedsize_clear(self, typeid16, size,
@@ -70,11 +72,12 @@
def init_gc_object(self, addr, typeid, flags=0):
assert flags == 0
hdr = llmemory.cast_adr_to_ptr(addr, lltype.Ptr(self.HDR))
- hdr.tid = typeid
+ hdr.tid = llop.combine_ushort(lltype.Signed, typeid, 0)
def init_gc_object_immortal(self, addr, typeid, flags=0): # XXX: Prebuilt Objects?
assert flags == 0
self.init_gc_object(addr, typeid, flags)
+ ptr = self.gcheaderbuilder.object_from_header(addr.ptr)
prebuilt_hash = lltype.identityhash_nocache(ptr)
assert prebuilt_hash != 0
#
More information about the pypy-commit
mailing list