Author: Maciej Fijalkowski <[email protected]>
Branch: result-in-resops
Changeset: r57580:22a9e301efd5
Date: 2012-09-25 17:02 +0200
http://bitbucket.org/pypy/pypy/changeset/22a9e301efd5/
Log: (arigo) improve hashing
diff --git a/pypy/jit/metainterp/optimizeopt/rewrite.py
b/pypy/jit/metainterp/optimizeopt/rewrite.py
--- a/pypy/jit/metainterp/optimizeopt/rewrite.py
+++ b/pypy/jit/metainterp/optimizeopt/rewrite.py
@@ -57,7 +57,7 @@
key_op = op.copy_and_change(oldopnum)
oldop = self.get_pure_result(key_op)
if oldop is not None and oldop.getdescr() is op.getdescr():
- self.make_equal_to(op, self.getvalue(oldop))
+ self.replace(op, oldop)
return True
oldopnum = opboolinvers[opboolreflex[op.getopnum()]]
diff --git a/pypy/jit/metainterp/optimizeopt/test/test_optimizebasic.py
b/pypy/jit/metainterp/optimizeopt/test/test_optimizebasic.py
--- a/pypy/jit/metainterp/optimizeopt/test/test_optimizebasic.py
+++ b/pypy/jit/metainterp/optimizeopt/test/test_optimizebasic.py
@@ -2101,8 +2101,8 @@
def test_oois_of_itself(self):
ops = """
[p0]
- p1 = getfield_gc(p0, descr=nextdescr)
- p2 = getfield_gc(p0, descr=nextdescr)
+ p1 = getfield_gc_p(p0, descr=nextdescr)
+ p2 = getfield_gc_p(p0, descr=nextdescr)
i1 = ptr_eq(p1, p2)
guard_true(i1) []
i2 = ptr_ne(p1, p2)
@@ -2111,7 +2111,7 @@
"""
expected = """
[p0]
- p1 = getfield_gc(p0, descr=nextdescr)
+ p1 = getfield_gc_p(p0, descr=nextdescr)
jump(p0)
"""
self.optimize_loop(ops, expected)
diff --git a/pypy/jit/metainterp/resoperation.py
b/pypy/jit/metainterp/resoperation.py
--- a/pypy/jit/metainterp/resoperation.py
+++ b/pypy/jit/metainterp/resoperation.py
@@ -706,9 +706,9 @@
"""
if self._hash != 0:
return self._hash
- hash = (intmask(self.getopnum() << 18) +
- intmask(self.get_result_hash() << 13) +
- intmask(self.get_descr_hash() << 5) +
+ hash = (self.getopnum() ^
+ self.get_result_hash() ^
+ self.get_descr_hash() ^
self.get_arg_hash())
if hash == 0:
hash = -1
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit