[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