[pypy-svn] r62890 - pypy/branch/pyjitpl5/pypy/jit/backend/x86

arigo at codespeak.net arigo at codespeak.net
Thu Mar 12 16:06:49 CET 2009


Author: arigo
Date: Thu Mar 12 16:06:49 2009
New Revision: 62890

Modified:
   pypy/branch/pyjitpl5/pypy/jit/backend/x86/regalloc.py
   pypy/branch/pyjitpl5/pypy/jit/backend/x86/runner.py
Log:
Start fixing the x86 backend for the previous checkin.


Modified: pypy/branch/pyjitpl5/pypy/jit/backend/x86/regalloc.py
==============================================================================
--- pypy/branch/pyjitpl5/pypy/jit/backend/x86/regalloc.py	(original)
+++ pypy/branch/pyjitpl5/pypy/jit/backend/x86/regalloc.py	Thu Mar 12 16:06:49 2009
@@ -732,10 +732,10 @@
     consider_call_pure = consider_call
 
     def consider_new(self, op, ignored):
-        return self._call(op, [imm(op.descr.getint())])
+        return self._call(op, [imm(op.descr.v[0])])
 
     def consider_new_with_vtable(self, op, ignored):
-        return self._call(op, [imm(op.descr.getint()), self.loc(op.args[0])])
+        return self._call(op, [imm(op.descr.v[0]), self.loc(op.args[0])])
 
     def consider_newstr(self, op, ignored):
         ofs_items, _, ofs = symbolic.get_array_token(rstr.STR, self.translate_support_code)

Modified: pypy/branch/pyjitpl5/pypy/jit/backend/x86/runner.py
==============================================================================
--- pypy/branch/pyjitpl5/pypy/jit/backend/x86/runner.py	(original)
+++ pypy/branch/pyjitpl5/pypy/jit/backend/x86/runner.py	Thu Mar 12 16:06:49 2009
@@ -10,7 +10,7 @@
 from pypy.rpython.lltypesystem import rclass
 from pypy.jit.metainterp import history, codewriter
 from pypy.jit.metainterp.history import (ResOperation, Box, Const,
-     ConstInt, ConstPtr, BoxInt, BoxPtr, ConstAddr)
+     ConstInt, ConstPtr, BoxInt, BoxPtr, ConstAddr, AbstractDescr)
 from pypy.jit.backend.x86.assembler import Assembler386, WORD, RETURN
 from pypy.jit.backend.x86 import symbolic
 from pypy.jit.metainterp.resoperation import rop, opname
@@ -23,8 +23,9 @@
 PTR = 1
 INT = 2
 
-class ConstDescr3(Const):
+class ConstDescr3(AbstractDescr):
     def __init__(self, v):
+        # XXX don't use a tuple! that's yet another indirection...
         self.v = v
 
     def _v(self):
@@ -409,7 +410,8 @@
         frame[mp.stacklocs[argindex]] = self.convert_box_to_int(valuebox)
 
     def sizeof(self, S):
-        return ConstInt(symbolic.get_size(S, self.translate_support_code))
+        size = symbolic.get_size(S, self.translate_support_code)
+        return ConstDescr3((size, 0, False))
 
     numof = sizeof
 #    addresssuffix = str(symbolic.get_size(llmemory.Address))
@@ -529,11 +531,11 @@
         self._base_do_setfield(fielddescr, args[0].getint(), args[1])
 
     def do_new(self, args, descrsize):
-        res = rffi.cast(GC_MALLOC, gc_malloc_fnaddr())(descrsize.getint())
+        res = rffi.cast(GC_MALLOC, gc_malloc_fnaddr())(descrsize.v[0])
         return BoxPtr(self.cast_int_to_gcref(res))
 
     def do_new_with_vtable(self, args, descrsize):
-        res = rffi.cast(GC_MALLOC, gc_malloc_fnaddr())(descrsize.getint())
+        res = rffi.cast(GC_MALLOC, gc_malloc_fnaddr())(descrsize.v[0])
         rffi.cast(rffi.CArrayPtr(lltype.Signed), res)[0] = args[0].getint()
         return BoxPtr(self.cast_int_to_gcref(res))
 
@@ -598,24 +600,6 @@
             ptr = False
         return ConstDescr3((basesize, itemsize, ptr))
 
-    def ofs_from_descr(self, descr):
-        assert isinstance(descr, ConstDescr3)
-        x = (descr.v[0] << 16) + descr.v[1]
-        if descr.v[2]:
-            return ~x
-        return x
-
-    def repack_descr(self, ofs):
-        orig_ofs = ofs
-        if ofs < 0:
-            ptr = True
-            ofs = ~ofs
-        else:
-            ptr = False
-        res = ConstDescr3((ofs>>16, ofs & 0xffff, ptr))
-        assert self.ofs_from_descr(res) == orig_ofs
-        return res
-
     @staticmethod
     def unpack_arraydescr(arraydescr):
         assert isinstance(arraydescr, ConstDescr3)
@@ -658,12 +642,6 @@
         return fielddescr.v
 
     @staticmethod
-    def typefor(fielddesc):
-        if fieldesc[2]:
-            return 'ptr'
-        return "int"
-
-    @staticmethod
     def cast_int_to_adr(x):
         return llmemory.cast_ptr_to_adr(rffi.cast(llmemory.GCREF, x))
 



More information about the Pypy-commit mailing list