Author: Armin Rigo <ar...@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) _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit