Author: Maciej Fijalkowski <fij...@gmail.com>
Branch: share-guard-info
Changeset: r79764:cebda0c1b84e
Date: 2015-09-22 13:31 +0200
http://bitbucket.org/pypy/pypy/changeset/cebda0c1b84e/

Log:    fix folding

diff --git a/rpython/jit/metainterp/executor.py 
b/rpython/jit/metainterp/executor.py
--- a/rpython/jit/metainterp/executor.py
+++ b/rpython/jit/metainterp/executor.py
@@ -251,7 +251,6 @@
     b = box2.getint()
     try:
         z = ovfcheck(a + b)
-        metainterp.ovf_flag = False
     except OverflowError:
         assert metainterp is not None
         metainterp.ovf_flag = True
@@ -263,7 +262,6 @@
     b = box2.getint()
     try:
         z = ovfcheck(a - b)
-        metainterp.ovf_flag = False
     except OverflowError:
         assert metainterp is not None
         metainterp.ovf_flag = True
@@ -275,7 +273,6 @@
     b = box2.getint()
     try:
         z = ovfcheck(a * b)
-        metainterp.ovf_flag = False
     except OverflowError:
         assert metainterp is not None
         metainterp.ovf_flag = True
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
@@ -235,11 +235,15 @@
         exec py.code.Source('''
             @arguments("label", "box", "box", "orgpc")
             def opimpl_%s(self, lbl, b1, b2, orgpc):
+                self.metainterp.ovf_flag = False
                 resbox = self.execute(rop.%s, b1, b2)
                 self.make_result_of_lastop(resbox)  # same as execute_varargs()
                 if not isinstance(resbox, Const):
                     return self.handle_possible_overflow_error(lbl, orgpc,
                                                                resbox)
+                elif self.metainterp.ovf_flag:
+                    self.pc = lbl
+                    return None # but don't emit GUARD_OVERFLOW
                 return resbox
         ''' % (_opimpl, resop)).compile()
 
_______________________________________________
pypy-commit mailing list
pypy-commit@python.org
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to