1. 04 Sep, 2019 1 commit
  2. 29 Aug, 2019 2 commits
  3. 13 Aug, 2019 1 commit
  4. 25 Jul, 2019 1 commit
    • Seth Brenith's avatar
      [regexp] Use stricter bounds check to avoid additional iteration · f42b1a5d
      Seth Brenith authored
      The motivating example is JetStream 2's UniPoker test, which tests
      whether a sorted string of Unicode playing cards contains a five-card
      straight using a regular expression. In the top-level generated loop for
      this RegExp, we see this loop exit condition:
      
      00000350000C2067    27  83fffe         cmpl rdi,0xfe
      00000350000C206A    2a  0f8da8e40000   jge 00000350000D0518  <+0xe4d8>
      
      Meaning if the current position is pointing at the very last (16-bit)
      character, then we exit the loop. Otherwise we go on and try to find
      various matches starting at the current position. However, we can see
      in the original expression that any possible match is at least 10
      characters (5 astral-plane Unicode values), so we're wasting a lot of
      time attempting to find matches in cases where we're too close to the
      end of the string for any match to succeed.
      
      This example might be a bit contrived, but I expect that an improvement
      in this bounds check would help a larger family of regular expressions,
      where the minimum match length is large relative to the string being
      matched and we don't meet the other necessary criteria for fast Boyer-
      Moore lookahead.
      
      To get the desired bounds check in this case, this patch does the
      following:
      1. Compute accurate EatsAtLeast values for every node during the
         analysis phase. This could end up doing more work than the current
         implementation, but analysis already has to touch every node, so it
         seems like a cache-friendly time to compute these values. In some
         cases, this might be less total work than the current implementation,
         because the current implementation might recompute the same node
         multiple times.
      2. When emitting a quick check, use the EatsAtLeast value from the
         predecessor ChoiceNode for the bounds check.
      
      This improves the UniPoker score on my machine by about 4%, because it
      cuts the time spent checking for straights roughly in half, and checking
      for straights originally accounted for about 8% of the total time.
      
      Bug: v8:9305
      Change-Id: I110b190c2578f73b2263259d5aa5750e921b01be
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1702125
      Commit-Queue: Seth Brenith <seth.brenith@microsoft.com>
      Reviewed-by: 's avatarJakob Gruber <jgruber@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#62919}
      f42b1a5d
  5. 24 Jul, 2019 1 commit
  6. 19 Jul, 2019 1 commit
    • Sathya Gunasekaran's avatar
      Revert "Reland "[regexp] Call the regexp interpreter without CEntry overhead"" · aa478cac
      Sathya Gunasekaran authored
      This reverts commit c2ee4a79.
      
      Reason for revert: webgl_conformance_tests deqp/data/gles2/shaders/conversions.html crashes on Android FYI Release (Nexus 9)
      See https://bugs.chromium.org/p/chromium/issues/detail?id=985624
      
      Original change's description:
      > Reland "[regexp] Call the regexp interpreter without CEntry overhead"
      >
      > This is a reland of d4d28b73
      >
      > Original change's description:
      > > [regexp] Call the regexp interpreter without CEntry overhead
      > >
      > > Previously all RegExp calls went through Runtime_RegExpExec when --regexp-interpret-all was set.
      > >
      > > This CL avoids the runtime overhead by calling into the interpreter directly from the RegExpExec Builtin when the regular expression subject was already compiled to ByteCode (i.e. after the first call).
      > >
      > > Bug: v8:8954
      > > Change-Id: Iae9dfcef3370b772a05b2942305335d592f6f15a
      > > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1698391
      > > Commit-Queue: Patrick Thier <pthier@google.com>
      > > Reviewed-by: Jakob Gruber <jgruber@chromium.org>
      > > Reviewed-by: Peter Marshall <petermarshall@chromium.org>
      > > Cr-Commit-Position: refs/heads/master@{#62753}
      >
      > Bug: v8:8954
      > Change-Id: I1f0b6de9c6da65bcb582ddb41a37419116a5c510
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1706053
      > Reviewed-by: Jakob Gruber <jgruber@chromium.org>
      > Commit-Queue: Patrick Thier <pthier@google.com>
      > Cr-Commit-Position: refs/heads/master@{#62794}
      
      TBR=jgruber@chromium.org,petermarshall@chromium.org,pthier@google.com
      
      # Not skipping CQ checks because original CL landed > 1 day ago.
      
      Bug: v8:8954, chromium:985624
      Change-Id: I5bc2c397a09979f42f28670f80a5366f2a33d80f
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1709411
      Commit-Queue: Sathya Gunasekaran <gsathya@chromium.org>
      Reviewed-by: 's avatarSathya Gunasekaran <gsathya@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#62824}
      aa478cac
  7. 18 Jul, 2019 1 commit
    • Patrick Thier's avatar
      Reland "[regexp] Call the regexp interpreter without CEntry overhead" · c2ee4a79
      Patrick Thier authored
      This is a reland of d4d28b73
      
      Original change's description:
      > [regexp] Call the regexp interpreter without CEntry overhead
      > 
      > Previously all RegExp calls went through Runtime_RegExpExec when --regexp-interpret-all was set.
      > 
      > This CL avoids the runtime overhead by calling into the interpreter directly from the RegExpExec Builtin when the regular expression subject was already compiled to ByteCode (i.e. after the first call).
      > 
      > Bug: v8:8954
      > Change-Id: Iae9dfcef3370b772a05b2942305335d592f6f15a
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1698391
      > Commit-Queue: Patrick Thier <pthier@google.com>
      > Reviewed-by: Jakob Gruber <jgruber@chromium.org>
      > Reviewed-by: Peter Marshall <petermarshall@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#62753}
      
      Bug: v8:8954
      Change-Id: I1f0b6de9c6da65bcb582ddb41a37419116a5c510
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1706053Reviewed-by: 's avatarJakob Gruber <jgruber@chromium.org>
      Commit-Queue: Patrick Thier <pthier@google.com>
      Cr-Commit-Position: refs/heads/master@{#62794}
      c2ee4a79
  8. 17 Jul, 2019 2 commits
  9. 28 May, 2019 1 commit
  10. 27 May, 2019 1 commit
  11. 23 May, 2019 1 commit
  12. 21 May, 2019 2 commits
  13. 20 May, 2019 1 commit
  14. 17 May, 2019 2 commits
  15. 10 May, 2019 1 commit
  16. 29 Apr, 2019 1 commit
  17. 02 Apr, 2019 1 commit
  18. 25 Feb, 2019 1 commit
  19. 19 Feb, 2019 1 commit
  20. 23 Jan, 2019 1 commit
  21. 17 Jan, 2019 2 commits
  22. 08 Jan, 2019 1 commit
  23. 07 Dec, 2018 3 commits
  24. 05 Dec, 2018 1 commit
  25. 27 Nov, 2018 1 commit
  26. 12 Nov, 2018 1 commit
  27. 23 Aug, 2018 1 commit
  28. 09 Mar, 2018 1 commit
  29. 18 Jan, 2018 1 commit
  30. 15 Jan, 2018 1 commit
  31. 09 Jan, 2018 1 commit
  32. 04 Jan, 2018 1 commit
  33. 02 Dec, 2017 1 commit
    • Mathias Bynens's avatar
      Normalize casing of hexadecimal digits · 822be9b2
      Mathias Bynens authored
      This patch normalizes the casing of hexadecimal digits in escape
      sequences of the form `\xNN` and integer literals of the form
      `0xNNNN`.
      
      Previously, the V8 code base used an inconsistent mixture of uppercase
      and lowercase.
      
      Google’s C++ style guide uses uppercase in its examples:
      https://google.github.io/styleguide/cppguide.html#Non-ASCII_Characters
      
      Moreover, uppercase letters more clearly stand out from the lowercase
      `x` (or `u`) characters at the start, as well as lowercase letters
      elsewhere in strings.
      
      BUG=v8:7109
      TBR=marja@chromium.org,titzer@chromium.org,mtrofin@chromium.org,mstarzinger@chromium.org,rossberg@chromium.org,yangguo@chromium.org,mlippautz@chromium.org
      NOPRESUBMIT=true
      
      Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.linux:linux_chromium_rel_ng
      Change-Id: I790e21c25d96ad5d95c8229724eb45d2aa9e22d6
      Reviewed-on: https://chromium-review.googlesource.com/804294
      Commit-Queue: Mathias Bynens <mathias@chromium.org>
      Reviewed-by: 's avatarJakob Kummerow <jkummerow@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#49810}
      822be9b2