Author: Antonio Cuni <anto.c...@gmail.com> 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 pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit