[pypy-svn] r53496 - pypy/branch/jit-hotpath/pypy/jit/codegen/ia32

fijal at codespeak.net fijal at codespeak.net
Mon Apr 7 04:08:58 CEST 2008


Author: fijal
Date: Mon Apr  7 04:08:58 2008
New Revision: 53496

Modified:
   pypy/branch/jit-hotpath/pypy/jit/codegen/ia32/rgenop.py
Log:
Attempt to fix translation a bit


Modified: pypy/branch/jit-hotpath/pypy/jit/codegen/ia32/rgenop.py
==============================================================================
--- pypy/branch/jit-hotpath/pypy/jit/codegen/ia32/rgenop.py	(original)
+++ pypy/branch/jit-hotpath/pypy/jit/codegen/ia32/rgenop.py	Mon Apr  7 04:08:58 2008
@@ -27,8 +27,12 @@
     if objectmodel.we_are_translated():
         if T is lltype.Float:
             return addr.float[0]
+        elif T is llmemory.Address:
+            return addr.address[0]
+        elif isinstance(T, lltype.Ptr):
+            return lltype.cast_int_to_ptr(T, addr.signed[0])
         else:
-            return addr.signed[0]
+            return lltype.cast_primitive(T, addr.signed[0])
     else:
         tp = ctypes_mapping[T]
         p = cast(c_void_p(addr), POINTER(tp))
@@ -42,8 +46,12 @@
     if objectmodel.we_are_translated():
         if T is lltype.Float:
             addr.float[0] = value
+        elif isinstance(T, lltype.Ptr):
+            addr.signed[0] = intmask(lltype.cast_ptr_to_int(value))
+        elif T is llmemory.Address:
+            addr.signed[0] = intmask(llmemory.cast_adr_to_int(value))
         else:
-            addr.signed[0] = value
+            addr.signed[0] = lltype.cast_primitive(lltype.Signed, value)
     else:
         tp = ctypes_mapping[T]
         p = cast(c_void_p(addr), POINTER(tp))



More information about the Pypy-commit mailing list