[pypy-svn] pypy jit-usable_retrace: fixed merge error, only insert GUARD_NO_OVERFLOW when needed

hakanardo commits-noreply at bitbucket.org
Sun Mar 27 20:30:32 CEST 2011


Author: Hakan Ardo <hakan at debian.org>
Branch: jit-usable_retrace
Changeset: r42986:dacd6928545b
Date: 2011-03-27 16:10 +0200
http://bitbucket.org/pypy/pypy/changeset/dacd6928545b/

Log:	fixed merge error, only insert GUARD_NO_OVERFLOW when needed

diff --git a/pypy/jit/metainterp/optimizeopt/unroll.py b/pypy/jit/metainterp/optimizeopt/unroll.py
--- a/pypy/jit/metainterp/optimizeopt/unroll.py
+++ b/pypy/jit/metainterp/optimizeopt/unroll.py
@@ -492,11 +492,12 @@
         self.boxes_seen_in_short[box] = True
         op = self.optimizer.producer[box]
 
-        ok = False
+        ok = need_ovf_guard = False
         if op.is_always_pure():
             ok = True
         elif op.is_ovf() and op in self.optimizer.overflow_guarded:
             ok = True
+            need_ovf_guard = True
         elif op.has_no_side_effect():
             # FIXME: When are these safe to include? Allow getitems only
             # if they are still in the heap cache?
@@ -512,8 +513,9 @@
                 self.produce_box_in_short_preamble(arg)
             if self.short_operations is not None:
                 self.short_operations.append(op)
-                guard = ResOperation(rop.GUARD_NO_OVERFLOW, [], None)
-                self.short_operations.append(guard)
+                if need_ovf_guard:
+                    guard = ResOperation(rop.GUARD_NO_OVERFLOW, [], None)
+                    self.short_operations.append(guard)
         else:
             import pdb; pdb.set_trace()
             

diff --git a/pypy/jit/metainterp/optimizeopt/heap.py b/pypy/jit/metainterp/optimizeopt/heap.py
--- a/pypy/jit/metainterp/optimizeopt/heap.py
+++ b/pypy/jit/metainterp/optimizeopt/heap.py
@@ -90,12 +90,12 @@
             fieldvalue  = optheap.getvalue(op.getarg(1))
             self.remember_field_value(structvalue, fieldvalue)
 
-    def get_reconstructed(self, optimizer, valuemap):
+    def get_cloned(self, optimizer, valuemap):
         assert self._lazy_setfield is None
         cf = CachedField()
         for structvalue, fieldvalue in self._cached_fields.iteritems():
-            structvalue2 = structvalue.get_reconstructed(optimizer, valuemap)
-            fieldvalue2  = fieldvalue .get_reconstructed(optimizer, valuemap)
+            structvalue2 = structvalue.get_cloned(optimizer, valuemap)
+            fieldvalue2  = fieldvalue .get_cloned(optimizer, valuemap)
             cf._cached_fields[structvalue2] = fieldvalue2
         return cf
 
@@ -129,7 +129,7 @@
             assert 0   # was: new.lazy_setfields = self.lazy_setfields
         
         for descr, d in self.cached_fields.items():
-            new.cached_fields[descr] = d.get_cloneded(optimizer, valuemap)
+            new.cached_fields[descr] = d.get_cloned(optimizer, valuemap)
 
         new.cached_arrayitems = {}
         for descr, d in self.cached_arrayitems.items():


More information about the Pypy-commit mailing list