[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