Author: Antonio Cuni <[email protected]>
Branch: faster-rstruct
Changeset: r80740:b5ebdf19edb4
Date: 2015-11-18 08:27 +0100
http://bitbucket.org/pypy/pypy/changeset/b5ebdf19edb4/

Log:    support str_storage_getitem(lltype.Float, ...)

diff --git a/rpython/jit/codewriter/jtransform.py 
b/rpython/jit/codewriter/jtransform.py
--- a/rpython/jit/codewriter/jtransform.py
+++ b/rpython/jit/codewriter/jtransform.py
@@ -1028,7 +1028,9 @@
             ARRAY = getattr(STRUCT, c_field.value)
             assert isinstance(ARRAY, lltype.Array)
             arraydescr = self.cpu.arraydescrof(STRUCT)
-            return SpaceOperation('getarrayitem_gc_i',
+            kind = getkind(op.result.concretetype)[0]
+            assert kind in ('i', 'f')
+            return SpaceOperation('getarrayitem_gc_%s' % kind,
                                   [op.args[0], v_index, arraydescr],
                                   op.result)
 
diff --git a/rpython/jit/metainterp/test/test_strstorage.py 
b/rpython/jit/metainterp/test/test_strstorage.py
--- a/rpython/jit/metainterp/test/test_strstorage.py
+++ b/rpython/jit/metainterp/test/test_strstorage.py
@@ -1,6 +1,7 @@
 import py
 from rpython.rlib.strstorage import str_storage_getitem
 from rpython.rlib.test.test_strstorage import BaseStrStorageTest
+from rpython.jit.metainterp.history import getkind
 from rpython.jit.metainterp.test.support import LLJitMixin
 
 class TestStrStorage(BaseStrStorageTest, LLJitMixin):
@@ -12,6 +13,8 @@
         def f():
             return str_storage_getitem(TYPE, buf, offset)
         res = self.interp_operations(f, [])
-        self.check_operations_history({'getarrayitem_gc_i': 1,
+        #
+        kind = getkind(TYPE)[0] # 'i' or 'f'
+        self.check_operations_history({'getarrayitem_gc_%s' % kind: 1,
                                        'finish': 1})
         return res
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to