[pypy-commit] pypy stringbuilder2-perf: Fix this test. Explain why it's longer.
arigo
noreply at buildbot.pypy.org
Sun Jun 15 22:13:58 CEST 2014
Author: Armin Rigo <arigo at tunes.org>
Branch: stringbuilder2-perf
Changeset: r72068:2667bb527c66
Date: 2014-06-15 22:13 +0200
http://bitbucket.org/pypy/pypy/changeset/2667bb527c66/
Log: Fix this test. Explain why it's longer.
diff --git a/pypy/module/pypyjit/test_pypy_c/test_string.py b/pypy/module/pypyjit/test_pypy_c/test_string.py
--- a/pypy/module/pypyjit/test_pypy_c/test_string.py
+++ b/pypy/module/pypyjit/test_pypy_c/test_string.py
@@ -101,39 +101,64 @@
log = self.run(main, [1000])
assert log.result == main(1000)
loop, = log.loops_by_filename(self.filepath)
+ # NB: since the stringbuilder2-perf branch we get more operations than
+ # before, but a lot less branches that might fail randomly.
assert loop.match("""
- i7 = int_gt(i4, 0)
- guard_true(i7, descr=...)
+ i100 = int_gt(i95, 0)
+ guard_true(i100, descr=...)
guard_not_invalidated(descr=...)
- p9 = call(ConstClass(ll_int2dec__Signed), i4, descr=<Callr . i EF=3>)
+ p101 = call(ConstClass(ll_int2dec__Signed), i95, descr=<Callr . i EF=3>)
guard_no_exception(descr=...)
- i10 = strlen(p9)
- i11 = int_is_true(i10)
- guard_true(i11, descr=...)
- i13 = strgetitem(p9, 0)
- i15 = int_eq(i13, 45)
- guard_false(i15, descr=...)
- i17 = int_neg(i10)
- i19 = int_gt(i10, 23)
- guard_false(i19, descr=...)
- p21 = newstr(23)
- copystrcontent(p9, p21, 0, 0, i10)
- i25 = int_add(1, i10)
- i26 = int_gt(i25, 23)
- guard_false(i26, descr=...)
- strsetitem(p21, i10, 32)
- i30 = int_add(i10, i25)
- i31 = int_gt(i30, 23)
- guard_false(i31, descr=...)
- copystrcontent(p9, p21, 0, i25, i10)
- i33 = int_lt(i30, 23)
- guard_true(i33, descr=...)
- p35 = call(ConstClass(ll_shrink_array__rpy_stringPtr_Signed), p21, i30, descr=<Callr . ri EF=4 OS=3>)
+ i102 = strlen(p101)
+ i103 = int_is_true(i102)
+ guard_true(i103, descr=...)
+ i104 = strgetitem(p101, 0)
+ i105 = int_eq(i104, 45)
+ guard_false(i105, descr=...)
+ i106 = int_neg(i102)
+ i107 = int_gt(i102, 23)
+ p108 = new(descr=<SizeDescr .+>)
+ p110 = newstr(23)
+ setfield_gc(..., descr=<Field. stringbuilder.+>)
+ setfield_gc(..., descr=<Field. stringbuilder.+>)
+ setfield_gc(..., descr=<Field. stringbuilder.+>)
+ cond_call(i107, ConstClass(stringbuilder_append_overflow__stringbuilderPtr_rpy_stringPtr_Signed), p108, p101, i102, descr=<Callv 0 rri EF=4>)
guard_no_exception(descr=...)
- i37 = strlen(p35)
- i38 = int_add_ovf(i5, i37)
+ i111 = getfield_gc(p108, descr=<FieldS stringbuilder.skip .+>)
+ i112 = int_sub(i102, i111)
+ i113 = getfield_gc(p108, descr=<FieldS stringbuilder.current_pos .+>)
+ p114 = getfield_gc(p108, descr=<FieldP stringbuilder.current_buf .+>)
+ copystrcontent(p101, p114, i111, i113, i112)
+ i115 = int_add(i113, i112)
+ i116 = getfield_gc(p108, descr=<FieldS stringbuilder.current_end .+>)
+ setfield_gc(p108, i115, descr=<FieldS stringbuilder.current_pos .+>)
+ i117 = int_eq(i115, i116)
+ cond_call(i117, ConstClass(stringbuilder_grow__stringbuilderPtr_Signed), p108, 1, descr=<Callv 0 ri EF=4>)
+ guard_no_exception(descr=...)
+ i118 = getfield_gc(p108, descr=<FieldS stringbuilder.current_pos .+>)
+ i119 = int_add(i118, 1)
+ p120 = getfield_gc(p108, descr=<FieldP stringbuilder.current_buf .+>)
+ strsetitem(p120, i118, 32)
+ i121 = getfield_gc(p108, descr=<FieldS stringbuilder.current_end .+>)
+ i122 = int_sub(i121, i119)
+ setfield_gc(..., descr=<FieldS stringbuilder.+>)
+ setfield_gc(..., descr=<FieldS stringbuilder.+>)
+ i123 = int_gt(i102, i122)
+ cond_call(i123, ConstClass(stringbuilder_append_overflow__stringbuilderPtr_rpy_stringPtr_Signed), p108, p101, i102, descr=<Callv 0 rri EF=4>)
+ guard_no_exception(descr=...)
+ i124 = getfield_gc(p108, descr=<FieldS stringbuilder.skip .+>)
+ i125 = int_sub(i102, i124)
+ i126 = getfield_gc(p108, descr=<FieldS stringbuilder.current_pos .+>)
+ p127 = getfield_gc(p108, descr=<FieldP stringbuilder.current_buf .+>)
+ copystrcontent(p101, p127, i124, i126, i125)
+ i128 = int_add(i126, i125)
+ setfield_gc(p108, i128, descr=<FieldS stringbuilder.current_pos .+>)
+ p135 = call(..., descr=<Callr . r EF=4) # ll_build
+ guard_no_exception(descr=...)
+ i136 = strlen(p135)
+ i137 = int_add_ovf(i92, i136)
guard_no_overflow(descr=...)
- i40 = int_sub(i4, 1)
+ i138 = int_sub(i95, 1)
--TICK--
jump(..., descr=...)
""")
More information about the pypy-commit
mailing list