Author: Armin Rigo <[email protected]>
Branch: stringbuilder3-perf
Changeset: r72109:3ee90a683997
Date: 2014-06-20 20:50 +0200
http://bitbucket.org/pypy/pypy/changeset/3ee90a683997/
Log: Shorten the JIT code.
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,64 +101,38 @@
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("""
- i100 = int_gt(i95, 0)
- guard_true(i100, descr=...)
+ i79 = int_gt(i74, 0)
+ guard_true(i79, descr=...)
guard_not_invalidated(descr=...)
- p101 = call(ConstClass(ll_int2dec__Signed), i95, descr=<Callr . i
EF=3>)
+ p80 = call(ConstClass(ll_int2dec__Signed), i74, descr=<Callr . i
EF=3>)
guard_no_exception(descr=...)
- 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)
+ i85 = strlen(p80)
+ p86 = new(descr=<SizeDescr .+>)
+ p88 = 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>)
+ call(ConstClass(ll_append_res0__stringbuilderPtr_rpy_stringPtr),
p86, p80, descr=<Callv 0 rr EF=4>)
guard_no_exception(descr=...)
- 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>)
+ i89 = getfield_gc(p86, descr=<FieldS stringbuilder.current_pos .+>)
+ i90 = getfield_gc(p86, descr=<FieldS stringbuilder.current_end .+>)
+ i91 = int_eq(i89, i90)
+ cond_call(i91, ConstClass(ll_grow_by__stringbuilderPtr_Signed),
p86, 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>)
+ i92 = getfield_gc(p86, descr=<FieldS stringbuilder.current_pos .+>)
+ i93 = int_add(i92, 1)
+ p94 = getfield_gc(p86, descr=<FieldP stringbuilder.current_buf .+>)
+ strsetitem(p94, i92, 32)
+ setfield_gc(p86, i93, descr=<FieldS stringbuilder.current_pos .+>)
+ call(ConstClass(ll_append_res0__stringbuilderPtr_rpy_stringPtr),
p86, p80, descr=<Callv 0 rr 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
+ p95 = call(..., descr=<Callr . r EF=4>) # ll_build
guard_no_exception(descr=...)
- i136 = strlen(p135)
- i137 = int_add_ovf(i92, i136)
+ i96 = strlen(p95)
+ i97 = int_add_ovf(i71, i96)
guard_no_overflow(descr=...)
- i138 = int_sub(i95, 1)
+ i98 = int_sub(i74, 1)
--TICK--
jump(..., descr=...)
""")
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit