[pypy-svn] r47643 - in pypy/dist/pypy/rpython/memory: gc gctransform
arigo at codespeak.net
arigo at codespeak.net
Sat Oct 20 16:09:51 CEST 2007
Author: arigo
Date: Sat Oct 20 16:09:49 2007
New Revision: 47643
Modified:
pypy/dist/pypy/rpython/memory/gc/semispace.py
pypy/dist/pypy/rpython/memory/gctransform/framework.py
Log:
Two obvious bug fixes.
Modified: pypy/dist/pypy/rpython/memory/gc/semispace.py
==============================================================================
--- pypy/dist/pypy/rpython/memory/gc/semispace.py (original)
+++ pypy/dist/pypy/rpython/memory/gc/semispace.py Sat Oct 20 16:09:49 2007
@@ -280,7 +280,7 @@
return llmemory.cast_adr_to_ptr(addr, lltype.Ptr(self.HDR))
def get_type_id(self, addr):
- return self.header(addr).tid
+ return self.header(addr).tid & TYPEID_MASK
def init_gc_object(self, addr, typeid):
hdr = llmemory.cast_adr_to_ptr(addr, lltype.Ptr(self.HDR))
Modified: pypy/dist/pypy/rpython/memory/gctransform/framework.py
==============================================================================
--- pypy/dist/pypy/rpython/memory/gctransform/framework.py (original)
+++ pypy/dist/pypy/rpython/memory/gctransform/framework.py Sat Oct 20 16:09:49 2007
@@ -590,7 +590,8 @@
v_newvalue = hop.spaceop.args[-1]
# XXX for some GCs the skipping if the newvalue is a constant won't be
# ok
- if self.write_barrier_ptr is None or isinstance(v_newvalue, Constant):
+ if (self.write_barrier_ptr is None or isinstance(v_newvalue, Constant)
+ or v_struct.concretetype.TO._gckind != "gc"):
super(FrameworkGCTransformer, self).transform_generic_set(hop)
else:
self.write_barrier_calls += 1
More information about the Pypy-commit
mailing list