[pypy-svn] r76678 - pypy/trunk/pypy/jit/backend/llgraph

arigo at codespeak.net arigo at codespeak.net
Fri Aug 20 14:34:31 CEST 2010


Author: arigo
Date: Fri Aug 20 14:34:30 2010
New Revision: 76678

Modified:
   pypy/trunk/pypy/jit/backend/llgraph/llimpl.py
Log:
Add {set,get}arrayitem_raw to the llgraph backend.


Modified: pypy/trunk/pypy/jit/backend/llgraph/llimpl.py
==============================================================================
--- pypy/trunk/pypy/jit/backend/llgraph/llimpl.py	(original)
+++ pypy/trunk/pypy/jit/backend/llgraph/llimpl.py	Fri Aug 20 14:34:30 2010
@@ -123,6 +123,9 @@
     'setarrayitem_gc' : (('ref', 'int', 'intorptr'), None),
     'getarrayitem_gc' : (('ref', 'int'), 'intorptr'),
     'getarrayitem_gc_pure' : (('ref', 'int'), 'intorptr'),
+    'setarrayitem_raw' : (('ref', 'int', 'intorptr'), None),
+    'getarrayitem_raw' : (('ref', 'int'), 'intorptr'),
+    'getarrayitem_raw_pure' : (('ref', 'int'), 'intorptr'),
     'arraylen_gc'     : (('ref',), 'int'),
     'call'            : (('ref', 'varargs'), 'intorptr'),
     'call_assembler'  : (('ref', 'varargs'), 'intorptr'),
@@ -689,6 +692,18 @@
 
     op_getarrayitem_gc_pure = op_getarrayitem_gc
 
+    def op_getarrayitem_raw(self, arraydescr, array, index):
+        if arraydescr.typeinfo == REF:
+            raise NotImplementedError("getarrayitem_raw -> gcref")
+        elif arraydescr.typeinfo == INT:
+            return do_getarrayitem_raw_int(array, index)
+        elif arraydescr.typeinfo == FLOAT:
+            return do_getarrayitem_raw_float(array, index)
+        else:
+            raise NotImplementedError
+
+    op_getarrayitem_raw_pure = op_getarrayitem_raw
+
     def op_getfield_gc(self, fielddescr, struct):
         if fielddescr.typeinfo == REF:
             return do_getfield_gc_ptr(struct, fielddescr.ofs)
@@ -734,6 +749,16 @@
         else:
             raise NotImplementedError
 
+    def op_setarrayitem_raw(self, arraydescr, array, index, newvalue):
+        if arraydescr.typeinfo == REF:
+            raise NotImplementedError("setarrayitem_raw <- gcref")
+        elif arraydescr.typeinfo == INT:
+            do_setarrayitem_raw_int(array, index, newvalue)
+        elif arraydescr.typeinfo == FLOAT:
+            do_setarrayitem_raw_float(array, index, newvalue)
+        else:
+            raise NotImplementedError
+
     def op_setfield_gc(self, fielddescr, struct, newvalue):
         if fielddescr.typeinfo == REF:
             do_setfield_gc_ptr(struct, fielddescr.ofs, newvalue)



More information about the Pypy-commit mailing list