Author: Hakan Ardo <ha...@debian.org> Branch: jit-short_from_state Changeset: r45801:d5c554280935 Date: 2011-07-20 16:48 +0200 http://bitbucket.org/pypy/pypy/changeset/d5c554280935/
Log: cleaner diff --git a/pypy/jit/metainterp/optimizeopt/intbounds.py b/pypy/jit/metainterp/optimizeopt/intbounds.py --- a/pypy/jit/metainterp/optimizeopt/intbounds.py +++ b/pypy/jit/metainterp/optimizeopt/intbounds.py @@ -289,21 +289,21 @@ array = self.getvalue(op.getarg(0)) result = self.getvalue(op.result) array.make_len_gt(MODE_ARRAY, op.getdescr(), -1) - result.intbound = array.lenbound[2] + result.intbound = array.lenbound.bound def optimize_STRLEN(self, op): self.emit_operation(op) array = self.getvalue(op.getarg(0)) result = self.getvalue(op.result) array.make_len_gt(MODE_STR, op.getdescr(), -1) - result.intbound = array.lenbound[2] + result.intbound = array.lenbound.bound def optimize_UNICODELEN(self, op): self.emit_operation(op) array = self.getvalue(op.getarg(0)) result = self.getvalue(op.result) array.make_len_gt(MODE_UNICODE, op.getdescr(), -1) - result.intbound = array.lenbound[2] + result.intbound = array.lenbound.bound def optimize_STRGETITEM(self, op): self.emit_operation(op) diff --git a/pypy/jit/metainterp/optimizeopt/optimizer.py b/pypy/jit/metainterp/optimizeopt/optimizer.py --- a/pypy/jit/metainterp/optimizeopt/optimizer.py +++ b/pypy/jit/metainterp/optimizeopt/optimizer.py @@ -25,6 +25,11 @@ MODE_ARRAY = '\x00' MODE_STR = '\x01' MODE_UNICODE = '\x02' +class LenBound(object): + def __init__(self, mode, descr, bound): + self.mode = mode + self.descr = descr + self.bound = bound class OptValue(object): __metaclass__ = extendabletype @@ -55,11 +60,11 @@ def make_len_gt(self, mode, descr, val): if self.lenbound: - assert self.lenbound[0] == mode - assert self.lenbound[1] == descr - self.lenbound[2].make_gt(IntBound(val, val)) + assert self.lenbound.mode == mode + assert self.lenbound.descr == descr + self.lenbound.bound.make_gt(IntBound(val, val)) else: - self.lenbound = (mode, descr, IntLowerBound(val + 1)) + self.lenbound = LenBound(mode, descr, IntLowerBound(val + 1)) def make_guards(self, box): guards = [] @@ -78,17 +83,17 @@ self.intbound.make_guards(box, guards) if self.lenbound: lenbox = BoxInt() - if self.lenbound[0] == MODE_ARRAY: - op = ResOperation(rop.ARRAYLEN_GC, [box], lenbox, self.lenbound[1]) - elif self.lenbound[0] == MODE_STR: - op = ResOperation(rop.STRLEN, [box], lenbox, self.lenbound[1]) - elif self.lenbound[0] == MODE_UNICODE: - op = ResOperation(rop.UNICODELEN, [box], lenbox, self.lenbound[1]) + if self.lenbound.mode == MODE_ARRAY: + op = ResOperation(rop.ARRAYLEN_GC, [box], lenbox, self.lenbound.descr) + elif self.lenbound.mode == MODE_STR: + op = ResOperation(rop.STRLEN, [box], lenbox, self.lenbound.descr) + elif self.lenbound.mode == MODE_UNICODE: + op = ResOperation(rop.UNICODELEN, [box], lenbox, self.lenbound.descr) else: debug_print("Unknown lenbound mode") assert False guards.append(op) - self.lenbound[2].make_guards(lenbox, guards) + self.lenbound.bound.make_guards(lenbox, guards) return guards diff --git a/pypy/jit/metainterp/optimizeopt/virtualstate.py b/pypy/jit/metainterp/optimizeopt/virtualstate.py --- a/pypy/jit/metainterp/optimizeopt/virtualstate.py +++ b/pypy/jit/metainterp/optimizeopt/virtualstate.py @@ -237,9 +237,9 @@ bad[other] = True return False if self.lenbound and other.lenbound: - if self.lenbound[0] != other.lenbound[0] or \ - self.lenbound[1] != other.lenbound[1] or \ - not self.lenbound[2].contains_bound(other.lenbound[2]): + if self.lenbound.mode != other.lenbound.mode or \ + self.lenbound.descr != other.lenbound.descr or \ + not self.lenbound.bound.contains_bound(other.lenbound.bound): bad[self] = True bad[other] = True return False @@ -341,7 +341,7 @@ lb = '' if self.lenbound: - lb = ', ' + self.lenbound[2].__repr__() + lb = ', ' + self.lenbound.bound.__repr__() debug_print(indent + mark + 'NotVirtualInfo(%d' % self.position + ', ' + l + ', ' + self.intbound.__repr__() + lb + ')') _______________________________________________ pypy-commit mailing list pypy-commit@python.org http://mail.python.org/mailman/listinfo/pypy-commit