[pypy-commit] pypy default: clean-up: reduce the frequency of 'gc_(load, store)_indexed',

arigo pypy.commits at gmail.com
Thu Dec 24 16:48:18 EST 2015


Author: Armin Rigo <arigo at tunes.org>
Branch: 
Changeset: r81445:39e277d9a468
Date: 2015-12-24 22:37 +0100
http://bitbucket.org/pypy/pypy/changeset/39e277d9a468/

Log:	clean-up: reduce the frequency of 'gc_(load,store)_indexed', which
	right now is used even for get/setfield, which makes little sense

diff --git a/rpython/jit/backend/llsupport/rewrite.py b/rpython/jit/backend/llsupport/rewrite.py
--- a/rpython/jit/backend/llsupport/rewrite.py
+++ b/rpython/jit/backend/llsupport/rewrite.py
@@ -126,11 +126,11 @@
     def emit_gc_store_or_indexed(self, op, ptr_box, index_box, value_box,
                                  itemsize, factor, offset):
         factor, offset, index_box = \
-                self._emit_mul_add_if_factor_offset_not_supported(index_box,
+                self._emit_mul_if_factor_offset_not_supported(index_box,
                         factor, offset)
         #
-        if factor == 1 and offset == 0:
-            args = [ptr_box, index_box, value_box, ConstInt(itemsize)]
+        if index_box is None:
+            args = [ptr_box, ConstInt(offset), value_box, ConstInt(itemsize)]
             newload = ResOperation(rop.GC_STORE, args)
         else:
             args = [ptr_box, index_box, value_box, ConstInt(factor),
@@ -153,18 +153,15 @@
         index_box = op.getarg(1)
         self.emit_gc_load_or_indexed(op, ptr_box, index_box, itemsize, 1, ofs, sign)
 
-    def _emit_mul_add_if_factor_offset_not_supported(self, index_box, factor, offset):
-        orig_factor = factor
-        # factor
-        must_manually_load_const = False # offset != 0 and not self.cpu.load_constant_offset
-        if factor != 1 and (factor not in self.cpu.load_supported_factors or \
-                            (not index_box.is_constant() and must_manually_load_const)):
-            # enter here if the factor is supported by the cpu
-            # OR the index is not constant and a new resop must be emitted
-            # to add the offset
-            if isinstance(index_box, ConstInt):
-                index_box = ConstInt(index_box.value * factor)
-            else:
+    def _emit_mul_if_factor_offset_not_supported(self, index_box,
+                                                 factor, offset):
+        # Returns (factor, offset, index_box) where index_box is either
+        # a non-constant BoxInt or None.
+        if isinstance(index_box, ConstInt):
+            return 1, index_box.value * factor + offset, None
+        else:
+            if factor != 1 and factor not in self.cpu.load_supported_factors:
+                # the factor is supported by the cpu
                 # x & (x - 1) == 0 is a quick test for power of 2
                 assert factor > 0
                 if (factor & (factor - 1)) == 0:
@@ -174,20 +171,13 @@
                     index_box = ResOperation(rop.INT_MUL,
                             [index_box, ConstInt(factor)])
                 self.emit_op(index_box)
-            factor = 1
-        # adjust the constant offset
-        #if must_manually_load_const:
-        #    if isinstance(index_box, ConstInt):
-        #        index_box = ConstInt(index_box.value + offset)
-        #    else:
-        #        index_box = ResOperation(rop.INT_ADD, [index_box, ConstInt(offset)])
-        #        self.emit_op(index_box)
-        #    offset = 0
-        return factor, offset, index_box
+                factor = 1
+            return factor, offset, index_box
 
-    def emit_gc_load_or_indexed(self, op, ptr_box, index_box, itemsize, factor, offset, sign, type='i'):
+    def emit_gc_load_or_indexed(self, op, ptr_box, index_box, itemsize,
+                                factor, offset, sign, type='i'):
         factor, offset, index_box = \
-                self._emit_mul_add_if_factor_offset_not_supported(index_box,
+                self._emit_mul_if_factor_offset_not_supported(index_box,
                         factor, offset)
         #
         if sign:
@@ -197,8 +187,8 @@
         optype = type
         if op is not None:
             optype = op.type
-        if factor == 1 and offset == 0:
-            args = [ptr_box, index_box, ConstInt(itemsize)]
+        if index_box is None:
+            args = [ptr_box, ConstInt(offset), ConstInt(itemsize)]
             newload = ResOperation(OpHelpers.get_gc_load(optype), args)
         else:
             args = [ptr_box, index_box, ConstInt(factor),
@@ -547,9 +537,8 @@
             ofs, size, sign = unpack_fielddescr(descrs.jfi_frame_depth)
             if sign:
                 size = -size
-            args = [ConstInt(frame_info), ConstInt(0), ConstInt(1),
-                    ConstInt(ofs), ConstInt(size)]
-            size = ResOperation(rop.GC_LOAD_INDEXED_I, args)
+            args = [ConstInt(frame_info), ConstInt(ofs), ConstInt(size)]
+            size = ResOperation(rop.GC_LOAD_I, args)
             self.emit_op(size)
             frame = ResOperation(rop.NEW_ARRAY, [size],
                                  descr=descrs.arraydescr)
@@ -560,9 +549,8 @@
             ofs, size, sign = unpack_fielddescr(descrs.jfi_frame_size)
             if sign:
                 size = -size
-            args = [ConstInt(frame_info), ConstInt(0), ConstInt(1),
-                    ConstInt(ofs), ConstInt(size)]
-            size = ResOperation(rop.GC_LOAD_INDEXED_I, args)
+            args = [ConstInt(frame_info), ConstInt(ofs), ConstInt(size)]
+            size = ResOperation(rop.GC_LOAD_I, args)
             self.emit_op(size)
             frame = self.gen_malloc_nursery_varsize_frame(size)
             self.gen_initialize_tid(frame, descrs.arraydescr.tid)
@@ -612,15 +600,12 @@
             descr = self.cpu.getarraydescr_for_frame(arg.type)
             assert self.cpu.JITFRAME_FIXED_SIZE & 1 == 0
             _, itemsize, _ = self.cpu.unpack_arraydescr_size(descr)
-            index = index_list[i] // itemsize # index is in bytes
-            # emit GC_LOAD_INDEXED
-            itemsize, basesize, _ = unpack_arraydescr(descr)
-            factor, offset, index_box = \
-                    self._emit_mul_add_if_factor_offset_not_supported(ConstInt(index),
-                            itemsize, basesize)
-            args = [frame, index_box, arg, ConstInt(factor),
-                    ConstInt(offset), ConstInt(itemsize)]
-            self.emit_op(ResOperation(rop.GC_STORE_INDEXED, args))
+            array_offset = index_list[i]   # index, already measured in bytes
+            # emit GC_STORE
+            _, basesize, _ = unpack_arraydescr(descr)
+            offset = basesize + array_offset
+            args = [frame, ConstInt(offset), arg, ConstInt(itemsize)]
+            self.emit_op(ResOperation(rop.GC_STORE, args))
 
         descr = op.getdescr()
         assert isinstance(descr, JitCellToken)
diff --git a/rpython/jit/backend/llsupport/test/test_rewrite.py b/rpython/jit/backend/llsupport/test/test_rewrite.py
--- a/rpython/jit/backend/llsupport/test/test_rewrite.py
+++ b/rpython/jit/backend/llsupport/test/test_rewrite.py
@@ -30,13 +30,26 @@
 
 class RewriteTests(object):
     def check_rewrite(self, frm_operations, to_operations, **namespace):
-        def trans_getarray_to_load(descr):
-            size = descr.basesize
-            if descr.is_item_signed():
-                size = -size
-            return ','.join([str(n) for n in [descr.itemsize,
-                                              descr.basesize,
-                                              size]])
+        def setfield(baseptr, newvalue, descr):
+            assert isinstance(baseptr, str)
+            assert isinstance(newvalue, (str, int))
+            assert not isinstance(descr, (str, int))
+            return 'gc_store(%s, %d, %s, %d)' % (baseptr, descr.offset,
+                                                 newvalue, descr.field_size)
+        def setarrayitem(baseptr, index, newvalue, descr):
+            assert isinstance(baseptr, str)
+            assert isinstance(index, (str, int))
+            assert isinstance(newvalue, (str, int))
+            assert not isinstance(descr, (str, int))
+            if isinstance(index, int):
+                offset = descr.basesize + index * descr.itemsize
+                return 'gc_store(%s, %d, %s, %d)' % (baseptr, offset,
+                                                     newvalue, descr.itemsize)
+            else:
+                return 'gc_store_indexed(%s, %s, %s, %d, %d, %s)' % (
+                    baseptr, index, newvalue,
+                    descr.itemsize, descr.basesize, descr.itemsize)
+        #
         WORD = globals()['WORD']
         S = lltype.GcStruct('S', ('x', lltype.Signed),
                                  ('y', lltype.Signed))
@@ -376,7 +389,7 @@
             gc_store(p1, 0, 5678, 8)
             p2 = nursery_ptr_increment(p1, %(tdescr.size)d)
             gc_store(p2, 0, 1234, 8)
-            gc_store(p1, %(tdescr.gc_fielddescrs[0].offset)s, 0, %(tdescr.gc_fielddescrs[0].offset)s)
+            %(setfield('p1', 0, tdescr.gc_fielddescrs[0]))s
             jump()
         """)
 
@@ -485,7 +498,7 @@
         """, """
         [i0]
         p0 = call_malloc_nursery_varsize(1, 1, i0, descr=strdescr)
-        gc_store_indexed(p0, 0, i0, 1, %(strlendescr.offset)s, %(strlendescr.field_size)s)
+        gc_store(p0, %(strlendescr.offset)s, i0, %(strlendescr.field_size)s)
         gc_store(p0, 0, 0, %(strlendescr.field_size)s)
         jump(i0)
         """)
@@ -611,19 +624,19 @@
                       %(strdescr.basesize + 16 * strdescr.itemsize + \
                         unicodedescr.basesize + 10 * unicodedescr.itemsize)d)
             gc_store(p0, 0,  %(strdescr.tid)d, %(tiddescr.field_size)s)
-            gc_store_indexed(p0, 0,  14, 1, %(strlendescr.offset)s, %(strlendescr.field_size)s)
+            gc_store(p0, %(strlendescr.offset)s, 14, %(strlendescr.field_size)s)
             gc_store(p0, 0,  0, %(strhashdescr.field_size)s)
             p1 = nursery_ptr_increment(p0, %(strdescr.basesize + 16 * strdescr.itemsize)d)
             gc_store(p1, 0,  %(unicodedescr.tid)d, %(tiddescr.field_size)s)
-            gc_store_indexed(p1, 0,  10, 1, %(unicodelendescr.offset)s, %(unicodelendescr.field_size)s)
+            gc_store(p1, %(unicodelendescr.offset)s, 10, %(unicodelendescr.field_size)s)
             gc_store(p1, 0,  0, %(unicodehashdescr.field_size)s)
             p2 = call_malloc_nursery_varsize(2, %(unicodedescr.itemsize)d, i2,\
                                 descr=unicodedescr)
-            gc_store_indexed(p2, 0,  i2, 1, %(unicodelendescr.offset)s, %(unicodelendescr.field_size)s)
+            gc_store(p2, %(unicodelendescr.offset)s, i2, %(unicodelendescr.field_size)s)
             gc_store(p2, 0,  0, %(unicodehashdescr.field_size)s)
             p3 = call_malloc_nursery_varsize(1, 1, i2, \
                                 descr=strdescr)
-            gc_store_indexed(p3, 0,  i2, 1, %(strlendescr.offset)s, %(strlendescr.field_size)s)
+            gc_store(p3, %(strlendescr.offset)s, i2, %(strlendescr.field_size)s)
             gc_store(p3, 0,  0, %(strhashdescr.field_size)s)
             jump()
         """)
@@ -636,7 +649,7 @@
         """, """
             [p1, p2]
             cond_call_gc_wb(p1, descr=wbdescr)
-            gc_store_indexed(p1, 0,  p2, 1, %(tzdescr.offset)s, %(tzdescr.field_size)s)
+            gc_store(p1, %(tzdescr.offset)s, p2, %(tzdescr.field_size)s)
             jump()
         """)
 
@@ -650,7 +663,7 @@
         """, """
             [p1, i2, p3]
             cond_call_gc_wb(p1, descr=wbdescr)
-            gc_store_indexed(p1, i2, p3, %(trans_getarray_to_load(cdescr))s)
+            %(setarrayitem('p1', 'i2', 'p3', cdescr))s
             jump()
         """)
 
@@ -671,7 +684,7 @@
             zero_array(p1, 0, 129, descr=cdescr)
             call_n(123456)
             cond_call_gc_wb(p1, descr=wbdescr)
-            gc_store_indexed(p1, i2, p3, %(trans_getarray_to_load(cdescr))s)
+            %(setarrayitem('p1', 'i2', 'p3', cdescr))s
             jump()
         """)
 
@@ -693,7 +706,7 @@
             zero_array(p1, 0, 130, descr=cdescr)
             call_n(123456)
             cond_call_gc_wb_array(p1, i2, descr=wbdescr)
-            gc_store_indexed(p1, i2, p3, %(trans_getarray_to_load(cdescr))s)
+            %(setarrayitem('p1', 'i2', 'p3', cdescr))s
             jump()
         """)
 
@@ -705,7 +718,7 @@
         """, """
             [p1, i2, p3]
             cond_call_gc_wb_array(p1, i2, descr=wbdescr)
-            gc_store_indexed(p1, i2, p3, %(trans_getarray_to_load(cdescr))s)
+            %(setarrayitem('p1', 'i2', 'p3', cdescr))s
             jump()
         """)
 
@@ -725,7 +738,7 @@
             zero_array(p1, 0, 5, descr=cdescr)
             label(p1, i2, p3)
             cond_call_gc_wb_array(p1, i2, descr=wbdescr)
-            gc_store_indexed(p1, i2, p3, %(trans_getarray_to_load(cdescr))s)
+            %(setarrayitem('p1', 'i2', 'p3', cdescr))s
             jump()
         """)
 
@@ -743,12 +756,12 @@
         size = interiorzdescr.arraydescr.itemsize
         self.check_rewrite("""
             [p1, p2]
-            setinteriorfield_gc(p1, 0, p2, descr=interiorzdescr)
+            setinteriorfield_gc(p1, 7, p2, descr=interiorzdescr)
             jump(p1, p2)
         """, """
             [p1, p2]
-            cond_call_gc_wb_array(p1, 0, descr=wbdescr)
-            gc_store_indexed(p1, 0, p2, %(scale)s, %(offset)s, %(size)s)
+            cond_call_gc_wb_array(p1, 7, descr=wbdescr)
+            gc_store(p1, %(offset + 7 * scale)s, p2, %(size)s)
             jump(p1, p2)
         """, interiorzdescr=interiorzdescr, scale=scale,
              offset=offset, size=size)
@@ -763,7 +776,7 @@
             [p1]
             p0 = call_malloc_nursery(%(tdescr.size)d)
             gc_store(p0, 0,  5678, %(tiddescr.field_size)s)
-            gc_store_indexed(p0, 0,  p1, 1, %(tzdescr.offset)s, %(tzdescr.field_size)s)
+            gc_store(p0, %(tzdescr.offset)s, p1, %(tzdescr.field_size)s)
             jump()
         """)
 
@@ -781,7 +794,7 @@
             p1 = nursery_ptr_increment(p0, %(tdescr.size)d)
             gc_store(p1, 0,  1234, %(tiddescr.field_size)s)
             # <<<no cond_call_gc_wb here>>>
-            gc_store_indexed(p0, 0,  p1, 1, %(tzdescr.offset)s, %(tzdescr.field_size)s)
+            gc_store(p0, %(tzdescr.offset)s, p1, %(tzdescr.field_size)s)
             jump()
         """)
 
@@ -798,7 +811,7 @@
             gc_store(p0, 0,  8111, %(tiddescr.field_size)s)
             gc_store(p0, 0,  5, %(clendescr.field_size)s)
             zero_array(p0, 0, 5, descr=cdescr)
-            gc_store_indexed(p0, i2, p1, %(trans_getarray_to_load(cdescr))s)
+            %(setarrayitem('p0', 'i2', 'p1', cdescr))s
             jump()
         """)
 
@@ -816,8 +829,8 @@
             gc_store(p0, 0,  8111, %(tiddescr.field_size)s)
             gc_store(p0, 0,  5, %(clendescr.field_size)s)
             zero_array(p0, 2, 3, descr=cdescr)
-            gc_store_indexed(p0, 1, p1, %(trans_getarray_to_load(cdescr))s)
-            gc_store_indexed(p0, 0, p2, %(trans_getarray_to_load(cdescr))s)
+            %(setarrayitem('p0', 1, 'p1', cdescr))s
+            %(setarrayitem('p0', 0, 'p2', cdescr))s
             jump()
         """)
 
@@ -835,8 +848,8 @@
             gc_store(p0, 0,  8111, %(tiddescr.field_size)s)
             gc_store(p0, 0,  5, %(clendescr.field_size)s)
             zero_array(p0, 0, 3, descr=cdescr)
-            gc_store_indexed(p0, 3, p1, %(trans_getarray_to_load(cdescr))s)
-            gc_store_indexed(p0, 4, p2, %(trans_getarray_to_load(cdescr))s)
+            %(setarrayitem('p0', 3, 'p1', cdescr))s
+            %(setarrayitem('p0', 4, 'p2', cdescr))s
             jump()
         """)
 
@@ -855,9 +868,9 @@
             gc_store(p0, 0,  8111, %(tiddescr.field_size)s)
             gc_store(p0, 0,  5, %(clendescr.field_size)s)
             zero_array(p0, 0, 5, descr=cdescr)
-            gc_store_indexed(p0, 3, p1, %(trans_getarray_to_load(cdescr))s)
-            gc_store_indexed(p0, 2, p2, %(trans_getarray_to_load(cdescr))s)
-            gc_store_indexed(p0, 1, p2, %(trans_getarray_to_load(cdescr))s)
+            %(setarrayitem('p0', 3, 'p1', cdescr))s
+            %(setarrayitem('p0', 2, 'p2', cdescr))s
+            %(setarrayitem('p0', 1, 'p2', cdescr))s
             jump()
         """)
 
@@ -878,11 +891,11 @@
             gc_store(p0, 0,  8111, %(tiddescr.field_size)s)
             gc_store(p0, 0,  5, %(clendescr.field_size)s)
             zero_array(p0, 5, 0, descr=cdescr)
-            gc_store_indexed(p0, 3, p1, %(trans_getarray_to_load(cdescr))s)
-            gc_store_indexed(p0, 4, p2, %(trans_getarray_to_load(cdescr))s)
-            gc_store_indexed(p0, 0, p1, %(trans_getarray_to_load(cdescr))s)
-            gc_store_indexed(p0, 2, p2, %(trans_getarray_to_load(cdescr))s)
-            gc_store_indexed(p0, 1, p2, %(trans_getarray_to_load(cdescr))s)
+            %(setarrayitem('p0', 3, 'p1', cdescr))s
+            %(setarrayitem('p0', 4, 'p2', cdescr))s
+            %(setarrayitem('p0', 0, 'p1', cdescr))s
+            %(setarrayitem('p0', 2, 'p2', cdescr))s
+            %(setarrayitem('p0', 1, 'p2', cdescr))s
             jump()
         """)
 
@@ -901,10 +914,10 @@
             gc_store(p0, 0,  8111, %(tiddescr.field_size)s)
             gc_store(p0, 0,  5, %(clendescr.field_size)s)
             zero_array(p0, 1, 4, descr=cdescr)
-            gc_store_indexed(p0, 0, p1, %(trans_getarray_to_load(cdescr))s)
+            %(setarrayitem('p0', 0, 'p1', cdescr))s
             call_n(321321)
             cond_call_gc_wb(p0, descr=wbdescr)
-            gc_store_indexed(p0, 1, p2, %(trans_getarray_to_load(cdescr))s)
+            %(setarrayitem('p0', 1, 'p2', cdescr))s
             jump()
         """)
 
@@ -923,10 +936,10 @@
             gc_store(p0, 0,  8111, %(tiddescr.field_size)s)
             gc_store(p0, 0,  5, %(clendescr.field_size)s)
             zero_array(p0, 1, 4, descr=cdescr)
-            gc_store_indexed(p0, 0, p1, %(trans_getarray_to_load(cdescr))s)
+            %(setarrayitem('p0', 0, 'p1', cdescr))s
             label(p0, p2)
             cond_call_gc_wb_array(p0, 1, descr=wbdescr)
-            gc_store_indexed(p0, 1, p2, %(trans_getarray_to_load(cdescr))s)
+            %(setarrayitem('p0', 1, 'p2', cdescr))s
             jump()
         """)
 
@@ -955,7 +968,7 @@
             gc_store(p0, 0,  i3, %(blendescr.field_size)s)
             zero_array(p0, 0, i3, descr=bdescr)
             cond_call_gc_wb_array(p0, 0, descr=wbdescr)
-            gc_store_indexed(p0, 0, p1, 1, %(bdescr.basesize)s, 1)
+            %(setarrayitem('p0', 0, 'p1', bdescr))s
             jump()
         """)
 
@@ -991,10 +1004,10 @@
             gc_store(p0, %(tdescr.gc_fielddescrs[0].offset)s, 0, %(tdescr.gc_fielddescrs[0].offset)s)
             p1 = call_malloc_nursery_varsize(1, 1, i0, \
                                 descr=strdescr)
-            gc_store_indexed(p1, 0,  i0, 1, %(strlendescr.offset)s, %(strlendescr.field_size)s)
+            gc_store(p1, %(strlendescr.offset)s, i0, %(strlendescr.field_size)s)
             gc_store(p1, 0,  0, %(strhashdescr.field_size)s)
             cond_call_gc_wb(p0, descr=wbdescr)
-            gc_store_indexed(p0, 0,  p1, 1, %(tzdescr.offset)s, %(tzdescr.field_size)s)
+            gc_store(p0, %(tzdescr.offset)s, p1, %(tzdescr.field_size)s)
             jump()
         """)
 
@@ -1012,7 +1025,7 @@
             gc_store(p0, %(tdescr.gc_fielddescrs[0].offset)s, 0, %(tdescr.gc_fielddescrs[0].offset)s)
             label(p0, p1)
             cond_call_gc_wb(p0, descr=wbdescr)
-            gc_store_indexed(p0, 0,  p1, 1, %(tzdescr.offset)s, %(tzdescr.field_size)s)
+            gc_store(p0, %(tzdescr.offset)s, p1, %(tzdescr.field_size)s)
             jump()
         """)
 
@@ -1025,8 +1038,8 @@
         """, """
             [p0, p1, p2]
             cond_call_gc_wb(p0, descr=wbdescr)
-            gc_store_indexed(p0, 0,  p1, 1, %(tzdescr.offset)s, %(tzdescr.field_size)s)
-            gc_store_indexed(p0, 0,  p2, 1, %(tzdescr.offset)s, %(tzdescr.field_size)s)
+            gc_store(p0, %(tzdescr.offset)s, p1, %(tzdescr.field_size)s)
+            gc_store(p0, %(tzdescr.offset)s, p2, %(tzdescr.field_size)s)
             jump(p1, p2, p0)
         """)
 
@@ -1036,20 +1049,20 @@
         i2 = call_assembler_i(i0, f0, descr=casmdescr)
         """, """
         [i0, f0]
-        i1 = gc_load_indexed_i(ConstClass(frame_info), 0, 1, 1, %(jfi_frame_size.field_size)s)
+        i1 = gc_load_i(ConstClass(frame_info), %(jfi_frame_size.offset)s, %(jfi_frame_size.field_size)s)
         p1 = call_malloc_nursery_varsize_frame(i1)
         gc_store(p1, 0,  0, %(tiddescr.field_size)s)
-        i2 = gc_load_indexed_i(ConstClass(frame_info), 0, 1, 1, %(jfi_frame_depth.field_size)s)
-        gc_store_indexed(p1, 0, 0, 1, 1, %(jf_extra_stack_depth.field_size)s)
-        gc_store_indexed(p1, 0, NULL, 1, 1, %(jf_savedata.field_size)s)
-        gc_store_indexed(p1, 0, NULL, 1, 1, %(jf_force_descr.field_size)s)
-        gc_store_indexed(p1, 0, NULL, 1, 1, %(jf_descr.field_size)s)
-        gc_store_indexed(p1, 0, NULL, 1, 1, %(jf_guard_exc.field_size)s)
-        gc_store_indexed(p1, 0, NULL, 1, 1, %(jf_forward.field_size)s)
+        i2 = gc_load_i(ConstClass(frame_info), %(jfi_frame_depth.offset)s, %(jfi_frame_depth.field_size)s)
+        %(setfield('p1', 0, jf_extra_stack_depth))s
+        %(setfield('p1', 'NULL', jf_savedata))s
+        %(setfield('p1', 'NULL', jf_force_descr))s
+        %(setfield('p1', 'NULL', jf_descr))s
+        %(setfield('p1', 'NULL', jf_guard_exc))s
+        %(setfield('p1', 'NULL', jf_forward))s
         gc_store(p1, 0, i2, %(framelendescr.field_size)s)
-        gc_store_indexed(p1, 0, ConstClass(frame_info), 1, 1, %(jf_frame_info.field_size)s)
-        gc_store_indexed(p1, 0, i0, 8, 3, 8)
-        gc_store_indexed(p1, 1, f0, 8, 5, 8)
+        %(setfield('p1', 'ConstClass(frame_info)', jf_frame_info))s
+        gc_store(p1, 3, i0, 8)
+        gc_store(p1, 13, f0, 8)
         i3 = call_assembler_i(p1, descr=casmdescr)
         """)
 
@@ -1101,7 +1114,7 @@
             p0 = call_malloc_nursery(%(tdescr.size)d)
             gc_store(p0, 0,  5678, %(tiddescr.field_size)s)
             gc_store(p0, %(tdescr.gc_fielddescrs[0].offset)s, 0, %(tdescr.gc_fielddescrs[0].offset)s)
-            p1 = gc_load_indexed_r(p0, 0, 1, %(tzdescr.field_size)s, %(tzdescr.field_size)s)
+            p1 = gc_load_r(p0, %(tzdescr.offset)s, %(tzdescr.field_size)s)
             jump(p1)
         """)
 
@@ -1155,23 +1168,19 @@
         #    'i5 = int_add(i1,%(raw_sfdescr.basesize)s);'
         #    'gc_store(p0,i5,i2,%(raw_sfdescr.itemsize)s)'],
         [True, (1,2,4,8), 'i3 = getfield_gc_f(p0,descr=ydescr)' '->'
-           'i3 = gc_load_indexed_f(p0,0,1,%(ydescr.offset)s,%(ydescr.field_size)s)'],
-        [True, (1,2,4,8), 'i3 = getfield_gc_f(p0,descr=ydescr)' '->'
-           'i3 = gc_load_indexed_f(p0,0,1,%(ydescr.offset)s,%(ydescr.field_size)s)'],
-        [True, (1,2,4,8), 'i3 = setfield_raw(p0,i1,descr=ydescr)' '->'
-           'i3 = gc_store_indexed(p0,0,i1,1,'
-           '%(ydescr.offset)s,%(ydescr.field_size)s)'],
-        [True, (1,2,4,8), 'i3 = setfield_gc(p0,p0,descr=zdescr)' '->'
+           'i3 = gc_load_f(p0,%(ydescr.offset)s,%(ydescr.field_size)s)'],
+        [True, (1,2,4,8), 'setfield_raw(p0,i1,descr=ydescr)' '->'
+           'gc_store(p0,%(ydescr.offset)s,i1,%(ydescr.field_size)s)'],
+        [True, (1,2,4,8), 'setfield_gc(p0,p0,descr=zdescr)' '->'
            'cond_call_gc_wb(p0, descr=wbdescr);'
-           'i3 = gc_store_indexed(p0,0,p0,1,'
-           '%(zdescr.offset)s,%(zdescr.field_size)s)'],
+           'gc_store(p0,%(zdescr.offset)s,p0,%(zdescr.field_size)s)'],
         [False, (1,), 'i3 = arraylen_gc(p0, descr=adescr)' '->'
                       'i3 = gc_load_i(p0,0,%(adescr.itemsize)s)'],
         #[False, (1,),  'i3 = strlen(p0)' '->'
         #               'i3 = gc_load_i(p0,'
         #               '%(strlendescr.offset)s,%(strlendescr.field_size)s)'],
         [True,  (1,),  'i3 = strlen(p0)' '->'
-                       'i3 = gc_load_indexed_i(p0,0,1,'
+                       'i3 = gc_load_i(p0,'
                                  '%(strlendescr.offset)s,'
                                  '%(strlendescr.field_size)s)'],
         #[False, (1,),  'i3 = unicodelen(p0)' '->'
@@ -1179,7 +1188,7 @@
         #                       '%(unicodelendescr.offset)s,'
         #                       '%(unicodelendescr.field_size)s)'],
         [True,  (1,),  'i3 = unicodelen(p0)' '->'
-                       'i3 = gc_load_indexed_i(p0,0,1,'
+                       'i3 = gc_load_i(p0,'
                                '%(unicodelendescr.offset)s,'
                                '%(unicodelendescr.field_size)s)'],
 
diff --git a/rpython/jit/metainterp/history.py b/rpython/jit/metainterp/history.py
--- a/rpython/jit/metainterp/history.py
+++ b/rpython/jit/metainterp/history.py
@@ -68,8 +68,8 @@
         return box.value
 
 def repr_rpython(box, typechars):
-    return '%s/%s%d' % (box._get_hash_(), typechars,
-                        compute_unique_id(box))
+    return '%s/%s' % (box._get_hash_(), typechars,
+                        ) #compute_unique_id(box))
 
 
 class XxxAbstractValue(object):


More information about the pypy-commit mailing list