[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