[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