[pypy-svn] r62546 - in pypy/branch/pyjitpl5/pypy/jit/backend: llgraph x86
fijal at codespeak.net
fijal at codespeak.net
Wed Mar 4 20:38:35 CET 2009
Author: fijal
Date: Wed Mar 4 20:38:33 2009
New Revision: 62546
Modified:
pypy/branch/pyjitpl5/pypy/jit/backend/llgraph/llimpl.py
pypy/branch/pyjitpl5/pypy/jit/backend/x86/assembler.py
pypy/branch/pyjitpl5/pypy/jit/backend/x86/regalloc.py
Log:
Implement missing ops in backends
Modified: pypy/branch/pyjitpl5/pypy/jit/backend/llgraph/llimpl.py
==============================================================================
--- pypy/branch/pyjitpl5/pypy/jit/backend/llgraph/llimpl.py (original)
+++ pypy/branch/pyjitpl5/pypy/jit/backend/llgraph/llimpl.py Wed Mar 4 20:38:33 2009
@@ -90,10 +90,13 @@
'ooisnot' : (('ptr', 'ptr'), 'bool'),
'setfield_gc' : (('ptr', 'fieldname', 'intorptr'), None),
'getfield_gc' : (('ptr', 'fieldname'), 'intorptr'),
+ 'getfield_gc_pure': (('ptr', 'fieldname'), 'intorptr'),
'setfield_raw' : (('ptr', 'fieldname', 'intorptr'), None),
'getfield_raw' : (('ptr', 'fieldname'), 'intorptr'),
+ 'getfield_raw_pure': (('ptr', 'fieldname'), 'intorptr'),
'setarrayitem_gc' : (('ptr', 'int', 'int', 'intorptr'), None),
'getarrayitem_gc' : (('ptr', 'int', 'int'), 'intorptr'),
+ 'getarrayitem_gc_pure' : (('ptr', 'int', 'int'), 'intorptr'),
'arraylen_gc' : (('ptr', 'int'), 'int'),
'call_ptr' : (('ptr', 'varargs'), 'ptr'),
'call__4' : (('ptr', 'varargs'), 'int'),
@@ -723,12 +726,16 @@
ptr = lltype.cast_opaque_ptr(lltype.Ptr(STRUCT), ptr)
return getattr(ptr, fieldname)
+ op_getfield_gc_pure = op_getfield_gc
+
def op_getfield_raw(self, intval, fielddesc):
STRUCT, fieldname = symbolic.TokenToField[fielddesc/2]
ptr = llmemory.cast_adr_to_ptr(cast_int_to_adr(self.memocast, intval),
lltype.Ptr(STRUCT))
return getattr(ptr, fieldname)
+ op_getfield_raw_pure = op_getfield_raw
+
def _cast_newvalue(self, desc, TYPE, newvalue):
if desc % 2:
newvalue = lltype.cast_opaque_ptr(TYPE, newvalue)
@@ -760,6 +767,8 @@
array = array._obj.container
return array.getitem(index)
+ op_getarrayitem_gc_pure = op_getarrayitem_gc
+
def op_arraylen_gc(self, array, arraydesc):
array = array._obj.container
return array.getlength()
Modified: pypy/branch/pyjitpl5/pypy/jit/backend/x86/assembler.py
==============================================================================
--- pypy/branch/pyjitpl5/pypy/jit/backend/x86/assembler.py (original)
+++ pypy/branch/pyjitpl5/pypy/jit/backend/x86/assembler.py Wed Mar 4 20:38:33 2009
@@ -358,6 +358,8 @@
else:
raise NotImplementedError("getfield size = %d" % size)
+ genop_getfield_gc_pure = genop_getfield_gc
+
def genop_getarrayitem_gc(self, op, arglocs, resloc):
base_loc, ofs_loc, scale, ofs = arglocs
assert isinstance(ofs, IMM32)
@@ -365,6 +367,7 @@
self.mc.MOV(resloc, addr_add(base_loc, ofs_loc, ofs.value, scale.value))
genop_getfield_raw = genop_getfield_gc
+ genop_getarrayitem_gc_pure = genop_getarrayitem_gc
def genop_setfield_gc(self, op, arglocs):
base_loc, ofs_loc, size_loc, value_loc = arglocs
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 Wed Mar 4 20:38:33 2009
@@ -828,6 +828,8 @@
return (ops0 + more_ops +
[Perform(op, [base_loc, ofs_loc, size_loc], result_loc)])
+ consider_getfield_gc_pure = consider_getfield_gc
+
def consider_getarrayitem_gc(self, op, ignored):
scale, ofs = self._unpack_arraydescr(op.args[1].getint())
args = [op.args[0], op.args[2]]
@@ -840,7 +842,7 @@
result_loc)])
consider_getfield_raw = consider_getfield_gc
-
+ consider_getarrayitem_gc_pure = consider_getarrayitem_gc
def _consider_listop(self, op, ignored):
return self._call(op, [self.loc(arg) for arg in op.args])
More information about the Pypy-commit
mailing list