Author: Armin Rigo <ar...@tunes.org> Branch: Changeset: r64795:6ee99f717da5 Date: 2013-06-05 15:01 +0200 http://bitbucket.org/pypy/pypy/changeset/6ee99f717da5/
Log: A test and fix for jit.look_inside. diff --git a/rpython/jit/codewriter/policy.py b/rpython/jit/codewriter/policy.py --- a/rpython/jit/codewriter/policy.py +++ b/rpython/jit/codewriter/policy.py @@ -39,8 +39,6 @@ return True # look into everything by default def _reject_function(self, func): - if hasattr(func, '_jit_look_inside_'): - return not func._jit_look_inside_ # explicitly elidable functions are always opaque if getattr(func, '_elidable_function_', False): return True @@ -58,8 +56,11 @@ except AttributeError: see_function = True else: - see_function = (self.look_inside_function(func) and not - self._reject_function(func)) + if hasattr(func, '_jit_look_inside_'): + see_function = func._jit_look_inside_ # override guessing + else: + see_function = (self.look_inside_function(func) and not + self._reject_function(func)) contains_loop = contains_loop and not getattr( func, '_jit_unroll_safe_', False) diff --git a/rpython/jit/codewriter/test/test_policy.py b/rpython/jit/codewriter/test/test_policy.py --- a/rpython/jit/codewriter/test/test_policy.py +++ b/rpython/jit/codewriter/test/test_policy.py @@ -65,6 +65,20 @@ graph = support.getgraph(h, [5]) assert not JitPolicy().look_inside_graph(graph) +def test_look_inside(): + def h1(x): + return x + 1 + @jit.look_inside # force True, even if look_inside_function() thinks not + def h2(x): + return x + 2 + class MyPolicy(JitPolicy): + def look_inside_function(self, func): + return False + graph1 = support.getgraph(h1, [5]) + graph2 = support.getgraph(h2, [5]) + assert not MyPolicy().look_inside_graph(graph1) + assert MyPolicy().look_inside_graph(graph2) + def test_loops(): def g(x): i = 0 _______________________________________________ pypy-commit mailing list pypy-commit@python.org http://mail.python.org/mailman/listinfo/pypy-commit