[pypy-commit] pypy jit-targets: recursion support

hakanardo noreply at buildbot.pypy.org
Tue Nov 8 10:27:09 CET 2011


Author: Hakan Ardo <hakan at 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 


More information about the pypy-commit mailing list