Bug 16324
| Summary: | match() spends 15% of self time on switch(), over 0.5% of total time! | ||
|---|---|---|---|
| Product: | WebKit | Reporter: | Eric Seidel (no email) <eric> |
| Component: | JavaScriptCore | Assignee: | Nobody <webkit-unassigned> |
| Status: | RESOLVED INVALID | ||
| Severity: | Normal | CC: | barraclough |
| Priority: | P2 | ||
| Version: | 523.x (Safari 3) | ||
| Hardware: | Mac | ||
| OS: | OS X 10.4 | ||
Eric Seidel (no email)
match() spends 15% of self time on switch(), over 0.5% of total time!
Maybe someone who has a better command of x86 assembler can help understand what's going on here:
1.0% 0x244f64 movzxl (%esi), %ecx pcre_exec.cpp:460
0.5% 0x244f67 movzxl %cl, %eax pcre_exec.cpp:460
1.4% 0x244f6a cmpl $66, %eax pcre_exec.cpp:460
2.4% 0x244f6d ja 0x002450fa pcre_exec.cpp:460
2.4% 0x244f73 movl +117(%ebx, %eax, 4), %eax pcre_exec.cpp:460
1.4% 0x244f7a addl %ebx, %eax pcre_exec.cpp:460
1.4% 0x244f7c jmp %eax pcre_exec.cpp:460
0x244f7e nop pcre_exec.cpp:460
0x244f80 sbbb %al, (%ebx) pcre_exec.cpp:460
0x244f82 addb %al, (%eax) pcre_exec.cpp:460
0x244f84 retf pcre_exec.cpp:460
0x244f85 sbbb (%eax), %al pcre_exec.cpp:460
0x244f87 addb %cl, %bl pcre_exec.cpp:460
0x244f89 sbbb (%eax), %al pcre_exec.cpp:460
0x244f8b addb %ah, +1962934298(%eax) pcre_exec.cpp:460
0x244f91 sbbb (%eax), %al pcre_exec.cpp:460
0x244f93 addb %dh, (0x1e00001a) pcre_exec.cpp:460
0x244f99 sbbb $0, %al pcre_exec.cpp:460
0x244f9b addb %ah, -503316453(%edx) pcre_exec.cpp:460
0x244fa1 sbbl (%eax), %eax pcre_exec.cpp:460
0x244fa3 addb %al, +17(%esi) pcre_exec.cpp:460
0x244fa6 addb %al, (%eax) pcre_exec.cpp:460
0x244fa8 cmpl (%ecx), %ebx pcre_exec.cpp:460
0x244faa addb %al, (%eax) pcre_exec.cpp:460
0x244fac in al, dx pcre_exec.cpp:460
0x244fad sbbb %al, (%eax) pcre_exec.cpp:460
0x244faf addb %bh, +24(%ecx) pcre_exec.cpp:460
0x244fb2 addb %al, (%eax) pcre_exec.cpp:460
0x244fb4 hlt pcre_exec.cpp:460
0x244fb5 pop ss pcre_exec.cpp:460
0x244fb6 addb %al, (%eax) pcre_exec.cpp:460
0x244fb8 cmpsb pcre_exec.cpp:460
0x244fb9 sbbl %eax, (%eax) pcre_exec.cpp:460
0x244fbb addb %bh, +0(%ecx, %ebx) pcre_exec.cpp:460
0x244fbf addb %cl, %dl pcre_exec.cpp:460
0x244fc1 sbbl %eax, (%eax) pcre_exec.cpp:460
0x244fc3 addb %al, (0x500000f) pcre_exec.cpp:460
0x244fc9 sldt (%eax) pcre_exec.cpp:460
0x244fcc addl $83886095, %eax pcre_exec.cpp:460
0x244fd1 sldt (%eax) pcre_exec.cpp:460
0x244fd4 addl $83886095, %eax pcre_exec.cpp:460
0x244fd9 sldt (%eax) pcre_exec.cpp:460
0x244fdc push es pcre_exec.cpp:460
0x244fdd sbbl $486932480, %eax pcre_exec.cpp:460
0x244fe2 addb %al, (%eax) pcre_exec.cpp:460
0x244fe4 fcomp (%eax, %eax) pcre_exec.cpp:460
0x244fe7 addb %al, %ch pcre_exec.cpp:460
0x244fe9 pop ss pcre_exec.cpp:460
0x244fea addb %al, (%eax) pcre_exec.cpp:460
0x244fec ldsl (%edi), %edx pcre_exec.cpp:460
0x244fee addb %al, (%eax) pcre_exec.cpp:460
0x244ff0 ldsl (%edi), %edx pcre_exec.cpp:460
0x244ff2 addb %al, (%eax) pcre_exec.cpp:460
0x244ff4 ldsl (%edi), %edx pcre_exec.cpp:460
0x244ff6 addb %al, (%eax) pcre_exec.cpp:460
0x244ff8 ldsl (%edi), %edx pcre_exec.cpp:460
0x244ffa addb %al, (%eax) pcre_exec.cpp:460
0x244ffc ldsl (%edi), %edx pcre_exec.cpp:460
0x244ffe addb %al, (%eax) pcre_exec.cpp:460
0x245000 insw pcre_exec.cpp:460
0x245001 push ss pcre_exec.cpp:460
0x245002 addb %al, (%eax) pcre_exec.cpp:460
0x245004 insw pcre_exec.cpp:460
0x245005 push ss pcre_exec.cpp:460
0x245006 addb %al, (%eax) pcre_exec.cpp:460
0x245008 movw %ds, (%eax, %eax) pcre_exec.cpp:460
0x24500b addb %bl, +28(%edx) pcre_exec.cpp:460
0x24500e addb %al, (%eax) pcre_exec.cpp:460
0x245010 popl %edx pcre_exec.cpp:460
0x245011 sbbb $0, %al pcre_exec.cpp:460
0x245013 addb %bl, +28(%edx) pcre_exec.cpp:460
0x245016 addb %al, (%eax) pcre_exec.cpp:460
0x245018 popl %edx pcre_exec.cpp:460
0x245019 sbbb $0, %al pcre_exec.cpp:460
0x24501b addb %bl, +28(%edx) pcre_exec.cpp:460
0x24501e addb %al, (%eax) pcre_exec.cpp:460
0x245020 popl %edx pcre_exec.cpp:460
0x245021 sbbb $0, %al pcre_exec.cpp:460
0x245023 addb %ch, -1358954468(%edi) pcre_exec.cpp:460
0x245029 sbbb $0, %al pcre_exec.cpp:460
0x24502b addb %dh, -1795162096(%ebp) pcre_exec.cpp:460
0x245031 adcl $362086400, %eax pcre_exec.cpp:460
0x245036 addb %al, (%eax) pcre_exec.cpp:460
0x245038 xchgl %eax, %ebp pcre_exec.cpp:460
0x245039 adcl $362086400, %eax pcre_exec.cpp:460
0x24503e addb %al, (%eax) pcre_exec.cpp:460
0x245040 xchgl %eax, %ebp pcre_exec.cpp:460
0x245041 adcl $362086400, %eax pcre_exec.cpp:460
0x245046 addb %al, (%eax) pcre_exec.cpp:460
0x245048 xchgl %eax, %ebp pcre_exec.cpp:460
0x245049 adcl $362086400, %eax pcre_exec.cpp:460
0x24504e addb %al, (%eax) pcre_exec.cpp:460
0x245050 adcb $0, %al pcre_exec.cpp:460
0x245053 addb %ah, +20(%ebp) pcre_exec.cpp:460
0x245056 addb %al, (%eax) pcre_exec.cpp:460
0x245058 andl $2566914067, %eax pcre_exec.cpp:460
0x24505d adcl %eax, (%eax) pcre_exec.cpp:460
0x24505f addb %al, +22(%ebp) pcre_exec.cpp:460
0x245062 addb %al, (%eax) pcre_exec.cpp:460
0x245064 aaa pcre_exec.cpp:460
0x245065 addl (%eax), %eax pcre_exec.cpp:460
0x245067 addb %dh, (%edi) pcre_exec.cpp:460
0x245069 addl (%eax), %eax pcre_exec.cpp:460
0x24506b addb %dh, (%edi) pcre_exec.cpp:460
0x24506d addl (%eax), %eax pcre_exec.cpp:460
0x24506f addb %dh, +1962934293(%edx) pcre_exec.cpp:460
0x245075 push cs pcre_exec.cpp:460
0x245076 addb %al, (%eax) pcre_exec.cpp:460
0x245078 aadl $13 pcre_exec.cpp:460
0x24507a addb %al, (%eax) pcre_exec.cpp:460
0x24507c incl %ebp pcre_exec.cpp:460
0x24507d orl $210370560, %eax pcre_exec.cpp:460
0x245082 addb %al, (%eax) pcre_exec.cpp:460
0x245084 jge 0x00245092 pcre_exec.cpp:460
0x245086 addb %al, (%eax) pcre_exec.cpp:460
0x245088 addl $2005598208, (%ecx) pcre_exec.cpp:460
0x24508e orb $139, %al pcre_exec.cpp:460
| Attachments | ||
|---|---|---|
| Add attachment proposed patch, testcase, etc. |
Gavin Barraclough
This is a proposed optimization for PCRE; we no longer use PCRE.