[pypy-svn] r68287 - pypy/branch/gc-compress/pypy/rpython/memory/gctransform
arigo at codespeak.net
arigo at codespeak.net
Fri Oct 9 18:19:44 CEST 2009
Author: arigo
Date: Fri Oct 9 18:19:43 2009
New Revision: 68287
Modified:
pypy/branch/gc-compress/pypy/rpython/memory/gctransform/framework.py
Log:
Write a debug_assert for setfield('typeptr').
Modified: pypy/branch/gc-compress/pypy/rpython/memory/gctransform/framework.py
==============================================================================
--- pypy/branch/gc-compress/pypy/rpython/memory/gctransform/framework.py (original)
+++ pypy/branch/gc-compress/pypy/rpython/memory/gctransform/framework.py Fri Oct 9 18:19:43 2009
@@ -789,7 +789,16 @@
def transform_setfield_typeptr(self, hop):
# replace such a setfield with an assertion that the typeptr is right
- pass # XXX later
+ v_new = hop.spaceop.args[2]
+ v_old = hop.genop('getfield_typeptr_group', [hop.spaceop.args[0],
+ self.c_type_info_group,
+ self.c_vtableinfo],
+ resulttype = v_new.concretetype)
+ v_eq = hop.genop("ptr_eq", [v_old, v_new],
+ resulttype = lltype.Bool)
+ c_errmsg = rmodel.inputconst(lltype.Void,
+ "setfield_typeptr: wrong type")
+ hop.genop('debug_assert', [v_eq, c_errmsg])
def gct_getfield(self, hop):
if (hop.spaceop.args[1].value == 'typeptr' and
More information about the Pypy-commit
mailing list