Author: Carl Friedrich Bolz <cfb...@gmx.de> Branch: guard-compatible Changeset: r83028:2567141c9d53 Date: 2016-03-14 10:03 +0100 http://bitbucket.org/pypy/pypy/changeset/2567141c9d53/
Log: implement the boring part of guard_compatible (which is exactly like guard_value :-)) diff --git a/rpython/jit/backend/x86/assembler.py b/rpython/jit/backend/x86/assembler.py --- a/rpython/jit/backend/x86/assembler.py +++ b/rpython/jit/backend/x86/assembler.py @@ -1725,6 +1725,12 @@ self.guard_success_cc = rx86.Conditions['E'] self.implement_guard(guard_token) + def genop_guard_guard_compatible(self, guard_op, guard_token, locs, ign): + assert guard_op.getarg(0).type == REF # XXX for now? + self.mc.CMP(locs[0], locs[1]) + self.guard_success_cc = rx86.Conditions['E'] + self.implement_guard(guard_token) + def _cmp_guard_class(self, locs): loc_ptr = locs[0] loc_classptr = locs[1] diff --git a/rpython/jit/backend/x86/regalloc.py b/rpython/jit/backend/x86/regalloc.py --- a/rpython/jit/backend/x86/regalloc.py +++ b/rpython/jit/backend/x86/regalloc.py @@ -483,6 +483,13 @@ y = self.loc(op.getarg(1)) self.perform_guard(op, [x, y], None) + def consider_guard_compatible(self, op): + x = self.make_sure_var_in_reg(op.getarg(0)) + loc = self.assembler.cpu.all_reg_indexes[x.value] + op.getdescr().make_a_counter_per_value(op, loc) + y = self.loc(op.getarg(1)) + self.perform_guard(op, [x, y], None) + def consider_guard_class(self, op): assert not isinstance(op.getarg(0), Const) x = self.rm.make_sure_var_in_reg(op.getarg(0)) _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit