Summary: | Baseline op_jtrue emits an insane amount of code | ||||||
---|---|---|---|---|---|---|---|
Product: | WebKit | Reporter: | Filip Pizlo <fpizlo> | ||||
Component: | JavaScriptCore | Assignee: | Yusuke Suzuki <ysuzuki> | ||||
Status: | RESOLVED FIXED | ||||||
Severity: | Normal | CC: | commit-queue, ews-watchlist, keith_miller, mark.lam, msaboff, saam, sam, webkit-bug-importer, ysuzuki | ||||
Priority: | P2 | Keywords: | InRadar | ||||
Version: | WebKit Nightly Build | ||||||
Hardware: | All | ||||||
OS: | All | ||||||
Attachments: |
|
Description
Filip Pizlo
2018-05-16 18:18:52 PDT
Created attachment 341752 [details]
Patch
Attachment 341752 [details] did not pass style-queue:
ERROR: Source/JavaScriptCore/jit/AssemblyHelpers.h:1761: The parameter name "value" adds no information, so it should be removed. [readability/parameter_name] [5]
Total errors found: 1 in 12 files
If any of these errors are false positives, please file a bug against check-webkit-style.
Comment on attachment 341752 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=341752&action=review > Source/JavaScriptCore/ChangeLog:104 > + [ 12] jtrue arg1, 6(->18) > + 0x7f6c8710156c: mov 0x30(%rbp), %rax > + 0x7f6c87101570: test %rax, %r15 > + 0x7f6c87101573: jnz 0x7f6c871015c8 > + 0x7f6c87101579: cmp $0x1, 0x5(%rax) > + 0x7f6c8710157d: jnz 0x7f6c87101592 > + 0x7f6c87101583: cmp $0x0, 0x8(%rax) > + 0x7f6c87101587: jnz 0x7f6c87101623 > + 0x7f6c8710158d: jmp 0x7f6c87101615 > + 0x7f6c87101592: test $0x1, 0x6(%rax) > + 0x7f6c87101596: jz 0x7f6c87101623 > + 0x7f6c8710159c: mov (%rax), %esi > + 0x7f6c8710159e: mov $0x7f6c86f000e0, %rdx > + 0x7f6c871015a8: mov (%rdx), %rdx > + 0x7f6c871015ab: mov (%rdx,%rsi,8), %rsi > + 0x7f6c871015af: mov $0x7f6c867e0000, %rdx > + 0x7f6c871015b9: cmp %rdx, 0x18(%rsi) > + 0x7f6c871015bd: jnz 0x7f6c87101623 > + 0x7f6c871015c3: jmp 0x7f6c87101615 > + 0x7f6c871015c8: cmp %r14, %rax > + 0x7f6c871015cb: jb 0x7f6c871015de > + 0x7f6c871015d1: test %eax, %eax > + 0x7f6c871015d3: jnz 0x7f6c87101623 > + 0x7f6c871015d9: jmp 0x7f6c87101615 > + 0x7f6c871015de: test %rax, %r14 > + 0x7f6c871015e1: jz 0x7f6c87101602 > + 0x7f6c871015e7: lea (%r14,%rax), %rsi > + 0x7f6c871015eb: movq %rsi, %xmm0 > + 0x7f6c871015f0: xorps %xmm1, %xmm1 > + 0x7f6c871015f3: ucomisd %xmm1, %xmm0 > + 0x7f6c871015f7: jz 0x7f6c87101615 > + 0x7f6c871015fd: jmp 0x7f6c87101623 > + 0x7f6c87101602: mov $0x7, %r11 > + 0x7f6c8710160c: cmp %r11, %rax > + 0x7f6c8710160f: jz 0x7f6c87101623 We can reduce this further by, 1. Extracting this as a stub routine and call it from baseline, 2. Split it into fast path / slow path 3. IC But I think this is a good first patch towards reducing this size. Committed r232444: <https://trac.webkit.org/changeset/232444> |