1. 23 Oct, 2019 1 commit
    • Clemens Backes's avatar
      Speed up {MemCopy} and {MemMove} for small sizes · 50784597
      Clemens Backes authored
      The same change on the {CopyChars} function gave an unexpected 10-20%
      speedup on microbenchmarks across platforms (ia32, x64, Atom_x64).
      This CL explores whether a similar change generally speeds up {MemCopy}
      and {MemMove} (only on x64 for now). If this is the case, we might be
      able to carefully extend the same pattern to other platforms and remove
      custom assembly implementations without too much regression.
      
      R=leszeks@chromium.org
      
      Bug: v8:9810
      Change-Id: Ib9674807b67cd2a463680b97a91ae1b41c3be65b
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1871607Reviewed-by: 's avatarLeszek Swirski <leszeks@chromium.org>
      Commit-Queue: Clemens Backes <clemensb@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#64498}
      50784597
  2. 19 Oct, 2019 1 commit
  3. 07 Oct, 2019 1 commit
  4. 18 Sep, 2019 2 commits
    • Clemens Hammacher's avatar
      Reland "Disallow nullptr arguments for {CopyChars}" · 8da3ed08
      Clemens Hammacher authored
      This is an unmodified reland of
      60624b56. Nosnap bots do not block
      LKGR any more: https://crbug.com/v8/9737#c10.
      
      Original change's description:
      > Disallow nullptr arguments for {CopyChars}
      >
      > This allows to remove special casing for the {count == 0} case, which
      > was needed because {memmove} does not accept {nullptr} arguments even
      > if the {count} is zero.
      >
      > R=leszeks@chromium.org
      >
      > Bug: v8:9396
      > Change-Id: Iaef3cdbbffa74c2ba1c4e4501dafd943282cbcd9
      > Cq-Include-Trybots: luci.v8.try:v8_linux64_ubsan_rel_ng
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1807366
      > Reviewed-by: Leszek Swirski <leszeks@chromium.org>
      > Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
      > Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#63838}
      
      TBR=leszeks@chromium.org
      
      Bug: v8:9396
      Change-Id: I6ab13575f13df060b450ff105e4b9db516671dcf
      Cq-Include-Trybots: luci.v8.try:v8_linux64_ubsan_rel_ng
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1809365Reviewed-by: 's avatarClemens Hammacher <clemensh@chromium.org>
      Reviewed-by: 's avatarUlan Degenbaev <ulan@chromium.org>
      Reviewed-by: 's avatarLeszek Swirski <leszeks@chromium.org>
      Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#63863}
      8da3ed08
    • Clemens Hammacher's avatar
      Reland^2 "Remove all custom CopyCharsUnsigned implementations" · 3b808dee
      Clemens Hammacher authored
      This is an unmodified reland of
      9febc505. Nosnap bots do not block
      LKGR any more: https://crbug.com/v8/9737#c10.
      
      Original change's description:
      > Reland "Remove all custom CopyCharsUnsigned implementations"
      >
      > This is a reland of 5d8c4890
      >
      > Original change's description:
      > > Remove all custom CopyCharsUnsigned implementations
      > >
      > > It's unclear whether the custom implementation have any advantage over
      > > the standard library one's.
      > > Since we update our toolchain and standard library regularly, it might
      > > well be the case that the custom implementations are slower by now.
      > >
      > > Thus this CL removes all {CopyCharsUnsigned} implementations and
      > > implements {CopyChars} generically using {std::copy_n}.
      > >
      > > Note that this does not touch the {MemMove} and {MemCopy} functions
      > > yet, as we have seen regressions when trying to remove them before
      > > (https://crbug.com/v8/8675#c5).
      > >
      > > R=leszeks@chromium.org
      > >
      > > Bug: v8:9396
      > > Change-Id: I97a183afebcccd2fbb567bdba02e827331475608
      > > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1800577
      > > Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
      > > Reviewed-by: Leszek Swirski <leszeks@chromium.org>
      > > Cr-Commit-Position: refs/heads/master@{#63808}
      >
      > Bug: v8:9396
      > Cq-Include-Trybots: luci.v8.try:v8_linux64_ubsan_rel_ng
      > Change-Id: I9cd754ebe6b802bb4aabd6d2a448de41da040874
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1807357
      > Reviewed-by: Leszek Swirski <leszeks@chromium.org>
      > Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#63823}
      
      TBR=leszeks@chromium.org
      
      Bug: v8:9396
      Change-Id: I793524d76b8b9c93d2a98c73e8d72967880fe1cf
      Cq-Include-Trybots: luci.v8.try:v8_linux64_ubsan_rel_ng
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1809362
      Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
      Reviewed-by: 's avatarClemens Hammacher <clemensh@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#63857}
      3b808dee
  5. 17 Sep, 2019 3 commits
    • Adam Klein's avatar
      Revert "Reland "Remove all custom CopyCharsUnsigned implementations"" · 24c35b92
      Adam Klein authored
      This reverts commits 9febc505
      (along with followup commit 60624b56).
      
      Reason for revert: Breaks win32 nosnap shared, blocking lkgr & roll:
      https://ci.chromium.org/p/v8/builders/ci/V8%20Win32%20-%20nosnap%20-%20shared/35145
      
      nosnap bots may be deprecated, but as long as they're in LKGR
      we need to mind them.
      
      Original change's description:
      > Reland "Remove all custom CopyCharsUnsigned implementations"
      >
      > This is a reland of 5d8c4890
      >
      > Original change's description:
      > > Remove all custom CopyCharsUnsigned implementations
      > >
      > > It's unclear whether the custom implementation have any advantage over
      > > the standard library one's.
      > > Since we update our toolchain and standard library regularly, it might
      > > well be the case that the custom implementations are slower by now.
      > >
      > > Thus this CL removes all {CopyCharsUnsigned} implementations and
      > > implements {CopyChars} generically using {std::copy_n}.
      > >
      > > Note that this does not touch the {MemMove} and {MemCopy} functions
      > > yet, as we have seen regressions when trying to remove them before
      > > (https://crbug.com/v8/8675#c5).
      > >
      > > R=leszeks@chromium.org
      > >
      > > Bug: v8:9396
      > > Change-Id: I97a183afebcccd2fbb567bdba02e827331475608
      > > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1800577
      > > Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
      > > Reviewed-by: Leszek Swirski <leszeks@chromium.org>
      > > Cr-Commit-Position: refs/heads/master@{#63808}
      >
      > Bug: v8:9396
      > Cq-Include-Trybots: luci.v8.try:v8_linux64_ubsan_rel_ng
      > Change-Id: I9cd754ebe6b802bb4aabd6d2a448de41da040874
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1807357
      > Reviewed-by: Leszek Swirski <leszeks@chromium.org>
      > Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#63823}
      
      TBR=leszeks@chromium.org,clemensh@chromium.org
      
      Change-Id: Ic53ab2293d5dc7722a1121d1aa1159328a6ed8f5
      No-Presubmit: true
      No-Tree-Checks: true
      No-Try: true
      Bug: v8:9396
      Cq-Include-Trybots: luci.v8.try:v8_linux64_ubsan_rel_ng
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1808035Reviewed-by: 's avatarAdam Klein <adamk@chromium.org>
      Commit-Queue: Adam Klein <adamk@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#63854}
      24c35b92
    • Clemens Hammacher's avatar
      Disallow nullptr arguments for {CopyChars} · 60624b56
      Clemens Hammacher authored
      This allows to remove special casing for the {count == 0} case, which
      was needed because {memmove} does not accept {nullptr} arguments even
      if the {count} is zero.
      
      R=leszeks@chromium.org
      
      Bug: v8:9396
      Change-Id: Iaef3cdbbffa74c2ba1c4e4501dafd943282cbcd9
      Cq-Include-Trybots: luci.v8.try:v8_linux64_ubsan_rel_ng
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1807366Reviewed-by: 's avatarLeszek Swirski <leszeks@chromium.org>
      Reviewed-by: 's avatarUlan Degenbaev <ulan@chromium.org>
      Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#63838}
      60624b56
    • Clemens Hammacher's avatar
      Reland "Remove all custom CopyCharsUnsigned implementations" · 9febc505
      Clemens Hammacher authored
      This is a reland of 5d8c4890
      
      Original change's description:
      > Remove all custom CopyCharsUnsigned implementations
      >
      > It's unclear whether the custom implementation have any advantage over
      > the standard library one's.
      > Since we update our toolchain and standard library regularly, it might
      > well be the case that the custom implementations are slower by now.
      >
      > Thus this CL removes all {CopyCharsUnsigned} implementations and
      > implements {CopyChars} generically using {std::copy_n}.
      >
      > Note that this does not touch the {MemMove} and {MemCopy} functions
      > yet, as we have seen regressions when trying to remove them before
      > (https://crbug.com/v8/8675#c5).
      >
      > R=leszeks@chromium.org
      >
      > Bug: v8:9396
      > Change-Id: I97a183afebcccd2fbb567bdba02e827331475608
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1800577
      > Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
      > Reviewed-by: Leszek Swirski <leszeks@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#63808}
      
      Bug: v8:9396
      Cq-Include-Trybots: luci.v8.try:v8_linux64_ubsan_rel_ng
      Change-Id: I9cd754ebe6b802bb4aabd6d2a448de41da040874
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1807357Reviewed-by: 's avatarLeszek Swirski <leszeks@chromium.org>
      Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#63823}
      9febc505
  6. 16 Sep, 2019 3 commits
  7. 28 May, 2019 1 commit
  8. 27 May, 2019 1 commit
    • Clemens Hammacher's avatar
      [cleanup] Replace simple typedefs by using · a335f2ae
      Clemens Hammacher authored
      This replaces all typedefs that define types and not functions by the
      equivalent "using" declaration.
      
      This was done mostly automatically using this command:
      ag -l '\btypedef\b' src test | xargs -L1 \
           perl -i -p0e 's/typedef ([^*;{}]+) (\w+);/using \2 = \1;/sg'
      
      Patchset 2 then adds some manual changes for typedefs for pointer types,
      where the regular expression did not match.
      
      R=mstarzinger@chromium.org
      TBR=yangguo@chromium.org, jarin@chromium.org
      
      Bug: v8:9183
      Change-Id: I6f6ee28d1793b7ac34a58f980b94babc21874b78
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1631409
      Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
      Reviewed-by: 's avatarMichael Starzinger <mstarzinger@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#61849}
      a335f2ae
  9. 23 May, 2019 1 commit
  10. 06 Mar, 2019 1 commit
  11. 27 Feb, 2019 1 commit
  12. 18 Jan, 2019 1 commit
  13. 16 Jan, 2019 1 commit
    • Jakob Gruber's avatar
      [nojit] Convert generated memcpy functions into builtins · 61cb1133
      Jakob Gruber authored
      On ia32, arm and mips we generate miscellaneous memcpy-related functions
      at runtime:
      
      arm: memcpy for uint8-uint8 and uint16-uint8 {dest-source} pairs.
      ia32: memmove
      mips: memcpy uint8-uint8
      
      In jitless mode, runtime codegen is disallowed, so these must be
      converted into builtins.
      
      As far as I can tell, the mips64 files were dead code (#ifdef'd to
      V8_HOST_ARCH_MIPS instead of MIPS64).
      
      Note also the slightly changed implementation of ia32's MemMove's
      jump tables.
      
      Bug: v8:8675
      Change-Id: I5dc2a50fcbad332ce9f78228425b987b0d9acdf3
      Reviewed-on: https://chromium-review.googlesource.com/c/1407067Reviewed-by: 's avatarJakob Kummerow <jkummerow@chromium.org>
      Commit-Queue: Jakob Gruber <jgruber@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#58839}
      61cb1133
  14. 14 Jan, 2019 1 commit
    • Jakob Gruber's avatar
      Revert "[ia32] Remove custom MemMove function" · 9eb278b8
      Jakob Gruber authored
      This reverts commit 4a9f186b.
      
      Reason for revert: Regresses microbenchmarks. https://crbug.com/v8/8675#c5
      
      Original change's description:
      > [ia32] Remove custom MemMove function
      > 
      > It isn't clear whether our custom generated MemMove function provides
      > any benefits over std::memmove. This is an attempt to remove it. If
      > bots seem unhappy we can revert.
      > 
      > Bug: v8:7777,v8:8675
      > Change-Id: I7f1a6e3050b6e635618593c04f7d51e448426ee2
      > Reviewed-on: https://chromium-review.googlesource.com/c/1405854
      > Commit-Queue: Jakob Gruber <jgruber@chromium.org>
      > Reviewed-by: Jakob Kummerow <jkummerow@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#58748}
      
      TBR=jkummerow@chromium.org,jgruber@chromium.org
      
      # Not skipping CQ checks because original CL landed > 1 day ago.
      
      Bug: v8:7777, v8:8675
      Change-Id: Ia4ad37070f433f76b1158e90835162aefe38abdd
      Reviewed-on: https://chromium-review.googlesource.com/c/1407063Reviewed-by: 's avatarJakob Gruber <jgruber@chromium.org>
      Commit-Queue: Jakob Gruber <jgruber@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#58766}
      9eb278b8
  15. 11 Jan, 2019 1 commit
  16. 29 Nov, 2018 1 commit