Author: Richard Plangger <planri...@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:
_______________________________________________
pypy-commit mailing list
pypy-commit@python.org
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to