[pypy-commit] pypy default: extra passing test
arigo
pypy.commits at gmail.com
Thu Nov 24 10:47:50 EST 2016
Author: Armin Rigo <arigo at tunes.org>
Branch:
Changeset: r88639:2e8473885ae1
Date: 2016-11-24 15:07 +0100
http://bitbucket.org/pypy/pypy/changeset/2e8473885ae1/
Log: extra passing test
diff --git a/rpython/jit/metainterp/test/test_call.py b/rpython/jit/metainterp/test/test_call.py
--- a/rpython/jit/metainterp/test/test_call.py
+++ b/rpython/jit/metainterp/test/test_call.py
@@ -206,7 +206,39 @@
# remaining: only the first call to get_triple(), as a call_i
# because we know that x.triple == 0 here. The remaining calls
# are removed because equal to the first one.
- self.check_resops(call_i=2, cond_call_value_i=0)
+ self.check_resops(call_i=2, cond_call_value_i=0,
+ new_with_vtable=2) # escapes: _compute_triple(self)
+
+ def test_cond_call_constant_in_optimizer_5(self):
+ def _compute_triple(value):
+ return value * 3
+ class X:
+ def __init__(self, value):
+ self.value = value
+ self.triple = 0
+ def get_triple(self):
+ res = jit.conditional_call_elidable(self.triple,
+ _compute_triple, self.value)
+ self.triple = res
+ return res
+
+ myjitdriver = jit.JitDriver(greens = [], reds = 'auto')
+ def main(n):
+ total = 0
+ while n > 1:
+ myjitdriver.jit_merge_point()
+ x = X(n)
+ total += x.get_triple() + x.get_triple() + x.get_triple()
+ n -= 10
+ return total
+
+ res = self.meta_interp(main, [100])
+ assert res == main(100)
+ # remaining: only the first call to get_triple(), as a call_i
+ # because we know that x.triple == 0 here. The remaining calls
+ # are removed because equal to the first one.
+ self.check_resops(call_i=2, cond_call_value_i=0,
+ new_with_vtable=0) # all virtual
def test_cond_call_multiple_in_optimizer_1(self):
# test called several times with the same arguments, but
More information about the pypy-commit
mailing list