[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