Author: Armin Rigo <[email protected]>
Branch: issue2335
Changeset: r85626:790e1806bcc0
Date: 2016-07-09 15:31 +0200
http://bitbucket.org/pypy/pypy/changeset/790e1806bcc0/

Log:    Fixes, comments

diff --git a/rpython/jit/metainterp/pyjitpl.py 
b/rpython/jit/metainterp/pyjitpl.py
--- a/rpython/jit/metainterp/pyjitpl.py
+++ b/rpython/jit/metainterp/pyjitpl.py
@@ -2544,11 +2544,11 @@
             elif box.type == history.FLOAT: args.append(box.getfloatstorage())
             else: assert 0
         res = self.jitdriver_sd.warmstate.execute_assembler(loop_token, *args)
-        kind = getkind(lltype.typeOf(res))
-        if kind == history.VOID:  raise DoneWithThisFrameVoid()
-        if kind == history.INT:   raise DoneWithThisFrameInt(res)
-        if kind == history.REF:   raise DoneWithThisFrameRef(self.cpu, res)
-        if kind == history.FLOAT: raise DoneWithThisFrameFloat(res)
+        kind = history.getkind(lltype.typeOf(res))
+        if kind == 'void':  raise jitexc.DoneWithThisFrameVoid()
+        if kind == 'int':   raise jitexc.DoneWithThisFrameInt(res)
+        if kind == 'ref':   raise jitexc.DoneWithThisFrameRef(self.cpu, res)
+        if kind == 'float': raise jitexc.DoneWithThisFrameFloat(res)
         raise AssertionError(kind)
 
     def prepare_resume_from_failure(self, deadframe, inputargs, resumedescr):
diff --git a/rpython/jit/metainterp/warmspot.py 
b/rpython/jit/metainterp/warmspot.py
--- a/rpython/jit/metainterp/warmspot.py
+++ b/rpython/jit/metainterp/warmspot.py
@@ -834,7 +834,6 @@
         #               more stuff
         #
         # to that:
-        # XXX there are too many exceptions all around...
         #
         #       def original_portal(..):
         #           stuff
@@ -843,20 +842,9 @@
         #       def portal_runner(*args):
         #           while 1:
         #               try:
-        #                   try:
-        #                       return portal(*args)
-        #                   except EnterJitAssembler, e:
-        #                       while True:
-        #                           try:
-        #                               return e.execute()
-        #                           except EnterJitAssembler, e:
-        #                               continue
-        #               except ContinueRunningNormally, e:
-        #                   *args = *e.new_args
-        #               except DoneWithThisFrame, e:
-        #                   return e.return
-        #               except ExitFrameWithException, e:
-        #                   raise Exception, e.value
+        #                   return portal(*args)
+        #               except JitException, e:
+        #                   return handle_jitexception(e)
         #
         #       def portal(*args):
         #           while 1:
@@ -920,6 +908,7 @@
                 return result
 
         def handle_jitexception(e):
+            # XXX there are too many exceptions all around...
             while True:
                 if isinstance(e, EnterJitAssembler):
                     try:
diff --git a/rpython/jit/metainterp/warmstate.py 
b/rpython/jit/metainterp/warmstate.py
--- a/rpython/jit/metainterp/warmstate.py
+++ b/rpython/jit/metainterp/warmstate.py
@@ -407,13 +407,13 @@
                     return None
             if result_type == history.INT:
                 if isinstance(fail_descr, compile.DoneWithThisFrameDescrInt):
-                    return fail_descr.get_result()
+                    return fail_descr.get_result(cpu, deadframe)
             if result_type == history.REF:
                 if isinstance(fail_descr, compile.DoneWithThisFrameDescrRef):
-                    return fail_descr.get_result()
+                    return fail_descr.get_result(cpu, deadframe)
             if result_type == history.FLOAT:
                 if isinstance(fail_descr, compile.DoneWithThisFrameDescrFloat):
-                    return fail_descr.get_result()
+                    return fail_descr.get_result(cpu, deadframe)
             #
             # General case
             fail_descr.handle_fail(deadframe, metainterp_sd, jitdriver_sd)
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to