[pypy-commit] pypy default: Use the correct GETFIELD_RAW instead of GETFIELD_GC, because they

arigo noreply at buildbot.pypy.org
Tue Nov 11 18:37:10 CET 2014


Author: Armin Rigo <arigo at tunes.org>
Branch: 
Changeset: r74451:014332b2ea4b
Date: 2014-11-11 18:28 +0100
http://bitbucket.org/pypy/pypy/changeset/014332b2ea4b/

Log:	Use the correct GETFIELD_RAW instead of GETFIELD_GC, because they
	are done on a raw address. Important for stm.

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
@@ -263,7 +263,7 @@
     def gen_malloc_frame(self, frame_info, frame, size_box):
         descrs = self.gc_ll_descr.getframedescrs(self.cpu)
         if self.gc_ll_descr.kind == 'boehm':
-            op0 = ResOperation(rop.GETFIELD_GC, [history.ConstInt(frame_info)],
+            op0 = ResOperation(rop.GETFIELD_RAW, [history.ConstInt(frame_info)],
                                size_box,
                                descr=descrs.jfi_frame_depth)
             self.newops.append(op0)
@@ -272,7 +272,7 @@
             self.handle_new_array(descrs.arraydescr, op1)
         else:
             # we read size in bytes here, not the length
-            op0 = ResOperation(rop.GETFIELD_GC, [history.ConstInt(frame_info)],
+            op0 = ResOperation(rop.GETFIELD_RAW, [history.ConstInt(frame_info)],
                                size_box,
                                descr=descrs.jfi_frame_size)
             self.newops.append(op0)
@@ -282,7 +282,7 @@
             # we need to explicitely zero all the gc fields, because
             # of the unusal malloc pattern
             extra_ops = [
-                ResOperation(rop.GETFIELD_GC, [history.ConstInt(frame_info)],
+                ResOperation(rop.GETFIELD_RAW, [history.ConstInt(frame_info)],
                              length_box, descr=descrs.jfi_frame_depth),
                 ResOperation(rop.SETFIELD_GC, [frame, self.c_zero],
                              None, descr=descrs.jf_extra_stack_depth),
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
@@ -981,10 +981,10 @@
         i2 = call_assembler(i0, f0, descr=casmdescr)
         """, """
         [i0, f0]
-        i1 = getfield_gc(ConstClass(frame_info), descr=jfi_frame_size)
+        i1 = getfield_raw(ConstClass(frame_info), descr=jfi_frame_size)
         p1 = call_malloc_nursery_varsize_frame(i1)
         setfield_gc(p1, 0, descr=tiddescr)
-        i2 = getfield_gc(ConstClass(frame_info), descr=jfi_frame_depth)
+        i2 = getfield_raw(ConstClass(frame_info), descr=jfi_frame_depth)
         setfield_gc(p1, 0, descr=jf_extra_stack_depth)
         setfield_gc(p1, NULL, descr=jf_savedata)
         setfield_gc(p1, NULL, descr=jf_force_descr)


More information about the pypy-commit mailing list