[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