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

fijal at codespeak.net fijal at codespeak.net
Sun Apr 6 03:28:05 CEST 2008


Author: fijal
Date: Sun Apr  6 03:28:05 2008
New Revision: 53415

Modified:
   pypy/branch/jit-hotpath/pypy/jit/codegen/ia32/rgenop.py
Log:
* make kindToken return some info
* hack pieces a bit in order to pass test
(the test finally doesn't pass, few more functions to patch)


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	Sun Apr  6 03:28:05 2008
@@ -545,11 +545,13 @@
         res = FloatVar(self.stackdepth + 1)
         if op is st0:
             self.pushfloatfromst0(res)
+        elif op is None:
+            self.push(imm(0))
+            self.push(imm(0))
         else:
             raise NotImplementedError("Return float var not on fp stack")
         return res
 
-
     def newvarfromaddr(self, kindtoken, addr):
         # XXX probably we can still do something here with unrolling
         #     iterable, but let's not be too smart...
@@ -564,6 +566,18 @@
         else:
             raise NotImplementedError("Return var of kind %s" % (kindtoken,))
 
+    def newvar(self, kindtoken):
+        if kindtoken == 'i':
+            return self.returnintvar(None)
+        elif kindtoken == 'a':
+            return self.returnaddrvar(None)
+        elif kindtoken == 'b':
+            return self.returnboolvar(None)
+        elif kindtoken == 'f':
+            return self.returnfloatvar(None)
+        else:
+            raise NotImplementedError("Return var of kind %s" % (kindtoken,))
+    
     def newfloatfrommem(self, (base, reg, shift, ofs)):
         res = FloatVar(self.stackdepth + 1)
         self.mc.PUSH(memSIB(base, reg, shift, ofs + WORD))
@@ -913,12 +927,9 @@
         return self.returnfloatvar(st0)
 
     def alloc_frame_place(self, kind, gv_initial_value=None):
-        # XXX kind
         if gv_initial_value is not None:
-            res = self.returnintvar(gv_initial_value.operand(self))
-        else:
-            res = self.returnintvar(None)
-        return res
+            return gv_initial_value.newvar(self)
+        return self.newvar(kind)
 
     def genop_absorb_place(self, v):
         return v
@@ -1272,7 +1283,7 @@
     @staticmethod
     @specialize.memo()
     def kindToken(T):
-        return None
+        return map_arg(T)
 
     @staticmethod
     @specialize.memo()



More information about the Pypy-commit mailing list