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

Reply via email to