[pypy-commit] pypy s390x-backend: fixed test. emitting gc_load_r instead of indexed while loading a constant pointer

plan_rich pypy.commits at gmail.com
Fri Feb 12 03:30:44 EST 2016


Author: Richard Plangger <planrichi at gmail.com>
Branch: s390x-backend
Changeset: r82169:0274e5b9e6d2
Date: 2016-02-12 09:29 +0100
http://bitbucket.org/pypy/pypy/changeset/0274e5b9e6d2/

Log:	fixed test. emitting gc_load_r instead of indexed while loading a
	constant pointer LD has only 12 bit unsigned offset, LDY needed

diff --git a/rpython/jit/backend/llsupport/gc.py b/rpython/jit/backend/llsupport/gc.py
--- a/rpython/jit/backend/llsupport/gc.py
+++ b/rpython/jit/backend/llsupport/gc.py
@@ -164,8 +164,7 @@
             array_index = moving_obj_tracker.get_array_index(v)
 
             size, offset, _ = unpack_arraydescr(moving_obj_tracker.ptr_array_descr)
-            factor = size
-            array_index = array_index * factor + offset
+            array_index = array_index * size + offset
             args = [moving_obj_tracker.const_ptr_gcref_array,
                     ConstInt(array_index),
                     ConstInt(size)]
diff --git a/rpython/jit/backend/llsupport/test/test_pinned_object_rewrite.py b/rpython/jit/backend/llsupport/test/test_pinned_object_rewrite.py
--- a/rpython/jit/backend/llsupport/test/test_pinned_object_rewrite.py
+++ b/rpython/jit/backend/llsupport/test/test_pinned_object_rewrite.py
@@ -140,10 +140,10 @@
             i2 = getfield_gc_i(ConstPtr(pinned_obj_gcref), descr=pinned_obj_my_int_descr)
             """, """
             []
-            p1 = gc_load_indexed_r(ConstPtr(ptr_array_gcref), %(0 * ptr_array_descr.itemsize + 1)s, 1, 0, %(ptr_array_descr.itemsize)s)
+            p1 = gc_load_r(ConstPtr(ptr_array_gcref), %(0 * ptr_array_descr.itemsize + 1)s, %(ptr_array_descr.itemsize)s)
             i0 = gc_load_i(p1, 0, -%(pinned_obj_my_int_descr.field_size)s)
             i1 = gc_load_i(ConstPtr(notpinned_obj_gcref), 0, -%(notpinned_obj_my_int_descr.field_size)s)
-            p2 = gc_load_indexed_r(ConstPtr(ptr_array_gcref), %(1 * ptr_array_descr.itemsize + 1)s, 1, 0, %(ptr_array_descr.itemsize)s)
+            p2 = gc_load_r(ConstPtr(ptr_array_gcref), %(1 * ptr_array_descr.itemsize + 1)s, %(ptr_array_descr.itemsize)s)
             i2 = gc_load_i(p2, 0, -%(pinned_obj_my_int_descr.field_size)s)
             """)
         assert len(self.gc_ll_descr.last_moving_obj_tracker._indexes) == 2
diff --git a/rpython/jit/backend/zarch/opassembler.py b/rpython/jit/backend/zarch/opassembler.py
--- a/rpython/jit/backend/zarch/opassembler.py
+++ b/rpython/jit/backend/zarch/opassembler.py
@@ -880,7 +880,7 @@
         # res, base_loc, ofs, size and signed are all locations
         if size == 8:
             if result_loc.is_fp_reg():
-                self.mc.LD(result_loc, source_loc)
+                self.mc.LDY(result_loc, source_loc)
             else:
                 self.mc.LG(result_loc, source_loc)
         elif size == 4:


More information about the pypy-commit mailing list