Author: Armin Rigo <ar...@tunes.org> Branch: Changeset: r66878:2df4a2cdc3d4 Date: 2013-09-09 21:19 +0200 http://bitbucket.org/pypy/pypy/changeset/2df4a2cdc3d4/
Log: Oups, attempt to fix translation diff --git a/rpython/jit/backend/llgraph/runner.py b/rpython/jit/backend/llgraph/runner.py --- a/rpython/jit/backend/llgraph/runner.py +++ b/rpython/jit/backend/llgraph/runner.py @@ -418,7 +418,6 @@ bh_setfield_raw = bh_setfield_gc bh_setfield_raw_i = bh_setfield_raw - bh_setfield_raw_r = bh_setfield_raw bh_setfield_raw_f = bh_setfield_raw def bh_arraylen_gc(self, a, descr): diff --git a/rpython/jit/backend/llsupport/llmodel.py b/rpython/jit/backend/llsupport/llmodel.py --- a/rpython/jit/backend/llsupport/llmodel.py +++ b/rpython/jit/backend/llsupport/llmodel.py @@ -390,9 +390,11 @@ else: raise NotImplementedError("size = %d" % size) + @specialize.argtype(1) def read_ref_at_mem(self, gcref, ofs): return llop.raw_load(llmemory.GCREF, gcref, ofs) + # non-@specialized: must only be called with llmemory.GCREF def write_ref_at_mem(self, gcref, ofs, newvalue): llop.raw_store(lltype.Void, gcref, ofs, newvalue) # the write barrier is implied above @@ -541,6 +543,7 @@ ofs, size, sign = self.unpack_fielddescr_size(fielddescr) return self.read_int_at_mem(struct, ofs, size, sign) + @specialize.argtype(1) def bh_getfield_gc_r(self, struct, fielddescr): ofs = self.unpack_fielddescr(fielddescr) return self.read_ref_at_mem(struct, ofs) @@ -551,6 +554,7 @@ return self.read_float_at_mem(struct, ofs) bh_getfield_raw_i = bh_getfield_gc_i + bh_getfield_raw_r = bh_getfield_gc_r bh_getfield_raw_f = bh_getfield_gc_f @specialize.argtype(1) diff --git a/rpython/jit/backend/model.py b/rpython/jit/backend/model.py --- a/rpython/jit/backend/model.py +++ b/rpython/jit/backend/model.py @@ -264,8 +264,6 @@ def bh_setfield_raw_i(self, struct, newvalue, fielddescr): raise NotImplementedError - def bh_setfield_raw_r(self, struct, newvalue, fielddescr): - raise NotImplementedError def bh_setfield_raw_f(self, struct, newvalue, fielddescr): raise NotImplementedError diff --git a/rpython/jit/codewriter/jtransform.py b/rpython/jit/codewriter/jtransform.py --- a/rpython/jit/codewriter/jtransform.py +++ b/rpython/jit/codewriter/jtransform.py @@ -688,6 +688,10 @@ kind = getkind(RESULT)[0] op1 = SpaceOperation('getfield_%s_%s%s' % (argname, kind, pure), [v_inst, descr], op.result) + if op1.opname == 'getfield_raw_r': + # note: 'getfield_raw_r_pure' is used e.g. to load class + # attributes that are GC objects, so that one is supported. + raise Exception("getfield_raw_r (without _pure) not supported") # if immut in (IR_QUASIIMMUTABLE, IR_QUASIIMMUTABLE_ARRAY): descr1 = self.cpu.fielddescrof( @@ -720,6 +724,8 @@ descr = self.cpu.fielddescrof(v_inst.concretetype.TO, c_fieldname.value) kind = getkind(RESULT)[0] + if argname == 'raw' and kind == 'r': + raise Exception("setfield_raw_r not supported") return SpaceOperation('setfield_%s_%s' % (argname, kind), [v_inst, v_value, descr], None) diff --git a/rpython/jit/metainterp/blackhole.py b/rpython/jit/metainterp/blackhole.py --- a/rpython/jit/metainterp/blackhole.py +++ b/rpython/jit/metainterp/blackhole.py @@ -1263,14 +1263,15 @@ def bhimpl_getfield_raw_i(cpu, struct, fielddescr): return cpu.bh_getfield_raw_i(struct, fielddescr) @arguments("cpu", "i", "d", returns="r") - def bhimpl_getfield_raw_r(cpu, struct, fielddescr): + def _bhimpl_getfield_raw_r(cpu, struct, fielddescr): + # only for 'getfield_raw_r_pure' return cpu.bh_getfield_raw_r(struct, fielddescr) @arguments("cpu", "i", "d", returns="f") def bhimpl_getfield_raw_f(cpu, struct, fielddescr): return cpu.bh_getfield_raw_f(struct, fielddescr) bhimpl_getfield_raw_i_pure = bhimpl_getfield_raw_i - bhimpl_getfield_raw_r_pure = bhimpl_getfield_raw_r + bhimpl_getfield_raw_r_pure = _bhimpl_getfield_raw_r bhimpl_getfield_raw_f_pure = bhimpl_getfield_raw_f @arguments("cpu", "r", "i", "d") @@ -1290,9 +1291,6 @@ @arguments("cpu", "i", "i", "d") def bhimpl_setfield_raw_i(cpu, struct, newvalue, fielddescr): cpu.bh_setfield_raw_i(struct, newvalue, fielddescr) - @arguments("cpu", "i", "r", "d") - def bhimpl_setfield_raw_r(cpu, struct, newvalue, fielddescr): - cpu.bh_setfield_raw_r(struct, newvalue, fielddescr) @arguments("cpu", "i", "f", "d") def bhimpl_setfield_raw_f(cpu, struct, newvalue, fielddescr): cpu.bh_setfield_raw_f(struct, newvalue, fielddescr) diff --git a/rpython/jit/metainterp/executor.py b/rpython/jit/metainterp/executor.py --- a/rpython/jit/metainterp/executor.py +++ b/rpython/jit/metainterp/executor.py @@ -177,9 +177,8 @@ def do_setfield_raw(cpu, _, structbox, itembox, fielddescr): struct = structbox.getint() - if fielddescr.is_pointer_field(): - cpu.bh_setfield_raw_r(struct, itembox.getref_base(), fielddescr) - elif fielddescr.is_float_field(): + assert not fielddescr.is_pointer_field() + if fielddescr.is_float_field(): cpu.bh_setfield_raw_f(struct, itembox.getfloatstorage(), fielddescr) else: cpu.bh_setfield_raw_i(struct, itembox.getint(), fielddescr) diff --git a/rpython/jit/metainterp/pyjitpl.py b/rpython/jit/metainterp/pyjitpl.py --- a/rpython/jit/metainterp/pyjitpl.py +++ b/rpython/jit/metainterp/pyjitpl.py @@ -643,7 +643,6 @@ def _opimpl_getfield_raw_any(self, box, fielddescr): return self.execute_with_descr(rop.GETFIELD_RAW, fielddescr, box) opimpl_getfield_raw_i = _opimpl_getfield_raw_any - opimpl_getfield_raw_r = _opimpl_getfield_raw_any opimpl_getfield_raw_f = _opimpl_getfield_raw_any @arguments("box", "descr") @@ -657,7 +656,6 @@ def _opimpl_setfield_raw_any(self, box, valuebox, fielddescr): self.execute_with_descr(rop.SETFIELD_RAW, fielddescr, box, valuebox) opimpl_setfield_raw_i = _opimpl_setfield_raw_any - opimpl_setfield_raw_r = _opimpl_setfield_raw_any opimpl_setfield_raw_f = _opimpl_setfield_raw_any @arguments("box", "box", "box", "descr") _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit