Author: Maciej Fijalkowski <[email protected]>
Branch: optresult
Changeset: r77854:7fb61d4136c7
Date: 2015-06-04 13:42 +0200
http://bitbucket.org/pypy/pypy/changeset/7fb61d4136c7/
Log: track the length of strings
diff --git a/rpython/jit/metainterp/optimizeopt/intbounds.py
b/rpython/jit/metainterp/optimizeopt/intbounds.py
--- a/rpython/jit/metainterp/optimizeopt/intbounds.py
+++ b/rpython/jit/metainterp/optimizeopt/intbounds.py
@@ -384,13 +384,13 @@
self.emit_operation(op)
self.make_nonnull_str(op.getarg(0), vstring.mode_string)
array = self.getptrinfo(op.getarg(0))
- #self.get_box_replacement(op).set_forwarded(array.getlenbound())
+ self.get_box_replacement(op).set_forwarded(array.getlenbound())
def optimize_UNICODELEN(self, op):
self.emit_operation(op)
self.make_nonnull_str(op.getarg(0), vstring.mode_unicode)
array = self.getptrinfo(op.getarg(0))
- #self.get_box_replacement(op).set_forwarded(array.getlenbound())
+ self.get_box_replacement(op).set_forwarded(array.getlenbound())
def optimize_STRGETITEM(self, op):
self.emit_operation(op)
diff --git a/rpython/jit/metainterp/optimizeopt/test/test_optimizebasic.py
b/rpython/jit/metainterp/optimizeopt/test/test_optimizebasic.py
--- a/rpython/jit/metainterp/optimizeopt/test/test_optimizebasic.py
+++ b/rpython/jit/metainterp/optimizeopt/test/test_optimizebasic.py
@@ -64,33 +64,6 @@
lst6 = virt1._get_field_descr_list()
assert lst6 is lst3
-def test_descrlist_dict():
- from rpython.jit.metainterp.optimizeopt import util as optimizeutil
- h1 = optimizeutil.descrlist_hash([])
- h2 = optimizeutil.descrlist_hash([LLtypeMixin.valuedescr])
- h3 = optimizeutil.descrlist_hash(
- [LLtypeMixin.valuedescr, LLtypeMixin.nextdescr])
- assert h1 != h2
- assert h2 != h3
- assert optimizeutil.descrlist_eq([], [])
- assert not optimizeutil.descrlist_eq([], [LLtypeMixin.valuedescr])
- assert optimizeutil.descrlist_eq([LLtypeMixin.valuedescr],
- [LLtypeMixin.valuedescr])
- assert not optimizeutil.descrlist_eq([LLtypeMixin.valuedescr],
- [LLtypeMixin.nextdescr])
- assert optimizeutil.descrlist_eq([LLtypeMixin.valuedescr,
LLtypeMixin.nextdescr],
- [LLtypeMixin.valuedescr,
LLtypeMixin.nextdescr])
- assert not optimizeutil.descrlist_eq([LLtypeMixin.nextdescr,
LLtypeMixin.valuedescr],
- [LLtypeMixin.valuedescr,
LLtypeMixin.nextdescr])
-
- # descrlist_eq should compare by identity of the descrs, not by the result
- # of sort_key
- class FakeDescr(object):
- def sort_key(self):
- return 1
-
- assert not optimizeutil.descrlist_eq([FakeDescr()], [FakeDescr()])
-
# ____________________________________________________________
diff --git a/rpython/jit/metainterp/optimizeopt/vstring.py
b/rpython/jit/metainterp/optimizeopt/vstring.py
--- a/rpython/jit/metainterp/optimizeopt/vstring.py
+++ b/rpython/jit/metainterp/optimizeopt/vstring.py
@@ -123,6 +123,7 @@
if not create_ops:
return None
lengthop = ResOperation(mode.STRLEN, [op])
+ lengthop.set_forwarded(self.getlenbound())
self.lgtop = lengthop
string_optimizer.emit_operation(lengthop)
return lengthop
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit