Author: Hakan Ardo <ha...@debian.org> Branch: jit-targets Changeset: r48909:df9f538c4ae9 Date: 2011-11-08 10:15 +0100 http://bitbucket.org/pypy/pypy/changeset/df9f538c4ae9/
Log: recursion support diff --git a/pypy/jit/metainterp/pyjitpl.py b/pypy/jit/metainterp/pyjitpl.py --- a/pypy/jit/metainterp/pyjitpl.py +++ b/pypy/jit/metainterp/pyjitpl.py @@ -2025,7 +2025,8 @@ num_green_args = self.jitdriver_sd.num_green_args greenkey = original_boxes[:num_green_args] if not self.partial_trace: - assert self.get_procedure_token(greenkey) == None # FIXME: recursion? + assert self.get_procedure_token(greenkey) is None or \ + self.get_procedure_token(greenkey).target_tokens is None if self.partial_trace: target_token = compile.compile_retrace(self, greenkey, start, original_boxes[num_green_args:], @@ -2051,6 +2052,8 @@ target_jitcell_token = self.get_procedure_token(greenkey) if not target_jitcell_token: return + if not target_jitcell_token.target_tokens: + return self.history.record(rop.JUMP, live_arg_boxes[num_green_args:], None, descr=target_jitcell_token) diff --git a/pypy/jit/metainterp/test/test_ajit.py b/pypy/jit/metainterp/test/test_ajit.py --- a/pypy/jit/metainterp/test/test_ajit.py +++ b/pypy/jit/metainterp/test/test_ajit.py @@ -3667,3 +3667,6 @@ assert x == -42 x = self.interp_operations(f, [1000, 1], translationoptions=topt) assert x == 999 + + def test_retracing_bridge_from_interpreter_to_finnish(self): + assert False # FIXME _______________________________________________ pypy-commit mailing list pypy-commit@python.org http://mail.python.org/mailman/listinfo/pypy-commit