[pypy-svn] r66833 - pypy/branch/pyjitpl5-guardovf/pypy/jit/backend/llgraph

arigo at codespeak.net arigo at codespeak.net
Fri Aug 14 18:49:59 CEST 2009


Author: arigo
Date: Fri Aug 14 18:49:59 2009
New Revision: 66833

Modified:
   pypy/branch/pyjitpl5-guardovf/pypy/jit/backend/llgraph/llimpl.py
Log:
Improve the precision: complain if a guard_overflow is not preceeded
by a int_xxx_ovf.


Modified: pypy/branch/pyjitpl5-guardovf/pypy/jit/backend/llgraph/llimpl.py
==============================================================================
--- pypy/branch/pyjitpl5-guardovf/pypy/jit/backend/llgraph/llimpl.py	(original)
+++ pypy/branch/pyjitpl5-guardovf/pypy/jit/backend/llgraph/llimpl.py	Fri Aug 14 18:49:59 2009
@@ -574,15 +574,18 @@
 
     def op_guard_no_overflow(self, _):
         global _overflow_flag
-        if _overflow_flag:
-            _overflow_flag = False
+        flag = _overflow_flag
+        assert flag != 'unset'
+        _overflow_flag = 'unset'
+        if flag:
             raise GuardFailed
 
     def op_guard_overflow(self, _):
         global _overflow_flag
-        if _overflow_flag:
-            _overflow_flag = False
-        else:
+        flag = _overflow_flag
+        assert flag != 'unset'
+        _overflow_flag = 'unset'
+        if not flag:
             raise GuardFailed
 
     # ----------
@@ -916,9 +919,11 @@
 def set_zero_division_error():
     _set_error(ZeroDivisionError)
 
-_overflow_flag = False
+_overflow_flag = 'unset'
 
 def get_overflow_flag():
+    if _overflow_flag == 'unset':
+        return False
     return _overflow_flag
 
 def set_overflow_flag(flag):



More information about the Pypy-commit mailing list