[pypy-commit] pypy default: big-endian fix in the test

arigo noreply at buildbot.pypy.org
Tue Sep 22 18:05:29 CEST 2015


Author: Armin Rigo <arigo at tunes.org>
Branch: 
Changeset: r79776:02ef361e2443
Date: 2015-09-22 17:55 +0200
http://bitbucket.org/pypy/pypy/changeset/02ef361e2443/

Log:	big-endian fix in the test

diff --git a/rpython/jit/metainterp/test/test_fficall.py b/rpython/jit/metainterp/test/test_fficall.py
--- a/rpython/jit/metainterp/test/test_fficall.py
+++ b/rpython/jit/metainterp/test/test_fficall.py
@@ -70,6 +70,7 @@
         cif_description.exchange_result = (len(avalues)+1) * 16
 
         unroll_avalues = unrolling_iterable(avalues)
+        BIG_ENDIAN = (sys.byteorder == 'big')
 
         def fake_call_impl_any(cif_description, func_addr, exchange_buffer):
             ofs = 16
@@ -86,13 +87,19 @@
                     avalue = intmask(avalue)
                 assert got == avalue
                 ofs += 16
+            write_to_ofs = 0
             if rvalue is not None:
                 write_rvalue = rvalue
+                if BIG_ENDIAN:
+                    if (lltype.typeOf(write_rvalue) is rffi.SIGNEDCHAR or
+                        lltype.typeOf(write_rvalue) is rffi.UCHAR):
+                        # 'write_rvalue' is an int type smaller than Signed
+                        write_to_ofs = rffi.sizeof(rffi.LONG) - 1
             else:
                 write_rvalue = 12923  # ignored
             TYPE = rffi.CArray(lltype.typeOf(write_rvalue))
             data = rffi.ptradd(exchange_buffer, ofs)
-            rffi.cast(lltype.Ptr(TYPE), data)[0] = write_rvalue
+            rffi.cast(lltype.Ptr(TYPE), data)[write_to_ofs] = write_rvalue
 
         def f(i):
             exbuf = lltype.malloc(rffi.CCHARP.TO, (len(avalues)+2) * 16,


More information about the pypy-commit mailing list