[pypy-svn] r36821 - pypy/dist/pypy/jit/codegen/ppc

mwh at codespeak.net mwh at codespeak.net
Tue Jan 16 16:59:46 CET 2007


Author: mwh
Date: Tue Jan 16 16:59:45 2007
New Revision: 36821

Modified:
   pypy/dist/pypy/jit/codegen/ppc/rgenop.py
Log:
fix shallow failure of test_red_varsized_struct


Modified: pypy/dist/pypy/jit/codegen/ppc/rgenop.py
==============================================================================
--- pypy/dist/pypy/jit/codegen/ppc/rgenop.py	(original)
+++ pypy/dist/pypy/jit/codegen/ppc/rgenop.py	Tue Jan 16 16:59:45 2007
@@ -258,7 +258,7 @@
         return gv_result
 
     def genop_getsubstruct(self, fieldtoken, gv_ptr):
-        return self._arg_imm_op(gv_ptr, IntConst(fieldtoken), _PPC.addi)
+        return self._arg_imm_op(gv_ptr, IntConst(fieldtoken[0]), _PPC.addi)
 
     def genop_getarrayitem(self, arraytoken, gv_ptr, gv_index):
         _, _, itemsize = arraytoken
@@ -971,7 +971,12 @@
     @staticmethod
     @specialize.memo()
     def fieldToken(T, name):
-        return (llmemory.offsetof(T, name), llmemory.sizeof(getattr(T, name)))
+        FIELD = getattr(T, name)
+        if isinstance(FIELD, lltype.ContainerType):
+            fieldsize = 0      # not useful for getsubstruct
+        else:
+            fieldsize = llmemory.sizeof(FIELD)
+        return (llmemory.offsetof(T, name), fieldsize)
 
     @staticmethod
     @specialize.memo()



More information about the Pypy-commit mailing list