Author: Antonio Cuni <[email protected]>
Branch: faster-rstruct-2
Changeset: r91250:892ab4160ec6
Date: 2017-05-11 16:21 +0200
http://bitbucket.org/pypy/pypy/changeset/892ab4160ec6/
Log: add the JIT version of test_llop
diff --git a/rpython/jit/backend/x86/test/test_llop.py
b/rpython/jit/backend/x86/test/test_llop.py
new file mode 100644
--- /dev/null
+++ b/rpython/jit/backend/x86/test/test_llop.py
@@ -0,0 +1,9 @@
+from rpython.jit.backend.x86.test.test_basic import Jit386Mixin
+from rpython.jit.metainterp.test.test_llop import TestLLOp as _TestLLOp
+
+
+class TestLLOp(Jit386Mixin, _TestLLOp):
+ # for the individual tests see
+ # ====> ../../../metainterp/test/test_llop.py
+ pass
+
diff --git a/rpython/jit/metainterp/test/test_llop.py
b/rpython/jit/metainterp/test/test_llop.py
new file mode 100644
--- /dev/null
+++ b/rpython/jit/metainterp/test/test_llop.py
@@ -0,0 +1,49 @@
+import py
+import sys
+import struct
+from rpython.rtyper.lltypesystem import lltype, rffi
+from rpython.rtyper.test.test_llop import BaseLLOpTest, str_gc_load
+from rpython.jit.codewriter import longlong
+from rpython.jit.metainterp.history import getkind
+from rpython.jit.metainterp.test.support import LLJitMixin
+
+class TestLLOp(BaseLLOpTest, LLJitMixin):
+
+ # for the individual tests see
+ # ====> ../../../rtyper/test/test_llop.py
+
+ def gc_load_from_string(self, TYPE, buf, offset):
+ def f(offset):
+ return str_gc_load(TYPE, buf, offset)
+ res = self.interp_operations(f, [offset], supports_singlefloats=True)
+ #
+ kind = getkind(TYPE)[0] # 'i' or 'f'
+ self.check_operations_history({'gc_load_indexed_%s' % kind: 1,
+ 'finish': 1})
+ #
+ if TYPE == lltype.SingleFloat:
+ # interp_operations returns the int version of r_singlefloat, but
+ # our tests expects to receive an r_singlefloat: let's convert it
+ # back!
+ return longlong.int2singlefloat(res)
+ return res
+
+ def test_force_virtual_str_storage(self):
+ byteorder = sys.byteorder
+ size = rffi.sizeof(lltype.Signed)
+ def f(val):
+ if byteorder == 'little':
+ x = chr(val) + '\x00'*(size-1)
+ else:
+ x = '\x00'*(size-1) + chr(val)
+ return str_gc_load(lltype.Signed, x, 0)
+ res = self.interp_operations(f, [42], supports_singlefloats=True)
+ assert res == 42
+ self.check_operations_history({
+ 'newstr': 1, # str forcing
+ 'strsetitem': 1, # str forcing
+ 'call_pure_r': 1, # str forcing (copystrcontent)
+ 'guard_no_exception': 1, # str forcing
+ 'gc_load_indexed_i': 1, # str_storage_getitem
+ 'finish': 1
+ })
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit