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

hakanardo noreply at buildbot.pypy.org
Tue Nov 8 14:10:00 CET 2011


Author: Hakan Ardo <hakan at debian.org>
Branch: jit-targets
Changeset: r48927:31885b3fa5e9
Date: 2011-11-08 10:43 +0100
http://bitbucket.org/pypy/pypy/changeset/31885b3fa5e9/

Log:	exception 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
@@ -2127,20 +2127,19 @@
             assert False
         # FIXME: kill TerminatingLoopToken?
         # FIXME: can we call compile_trace?
-        self.history.record(rop.FINISH, exits, None, descr=loop_tokens[0].finishdescr)
+        token = loop_tokens[0].finishdescr
+        self.history.record(rop.FINISH, exits, None, descr=token)
         target_token = compile.compile_trace(self, self.resumekey)
-        if not target_token:
+        if target_token is not token:
             compile.giveup()
 
     def compile_exit_frame_with_exception(self, valuebox):
         self.gen_store_back_in_virtualizable()
-        # temporarily put a JUMP to a pseudo-loop
-        self.history.record(rop.JUMP, [valuebox], None)
         sd = self.staticdata
-        loop_tokens = sd.loop_tokens_exit_frame_with_exception_ref
-        target_loop_token = compile.compile_new_bridge(self, loop_tokens,
-                                                       self.resumekey)
-        if target_loop_token is not loop_tokens[0]:
+        token = sd.loop_tokens_exit_frame_with_exception_ref[0].finishdescr
+        self.history.record(rop.FINISH, [valuebox], None, descr=token)
+        target_token = compile.compile_trace(self, self.resumekey)
+        if target_token is not token:
             compile.giveup()
 
     @specialize.arg(1)


More information about the pypy-commit mailing list