[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