1. 06 Sep, 2022 1 commit
  2. 29 Aug, 2022 1 commit
  3. 23 Aug, 2022 1 commit
    • Jakob Linke's avatar
      Revert "Fix CSA_CHECK failure on BE" · 85f32019
      Jakob Linke authored
      This reverts commit c060af4d.
      
      Reason for revert: Fails with `v8_enable_verify_csa = true`:
      
      ```
      # Fatal error in ../../src/compiler/machine-graph-verifier.cc, line 821
      # TypeError: node #1503:Word32Equal uses node #1501:Load[kRepWord64] which doesn't have a compressed, tagged, or int32 representation.
      #     Current block: id:187 <= id:154 <= id:183 <= id:93 <= id:144
      #
      #     Specify option --csa-trap-on-node=RegExpExecInternal,1503 for debugging.
      ```
      
      Original change's description:
      > Fix CSA_CHECK failure on BE
      >
      > The load for external reference should be a full pointer load
      > instead of tagged size.
      >
      > Change-Id: I3460a26abea5053ba6daa5c6ed908cb93431654a
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3842348
      > Reviewed-by: Camillo Bruni <cbruni@chromium.org>
      > Commit-Queue: Junliang Yan <junyan@redhat.com>
      > Cr-Commit-Position: refs/heads/main@{#82625}
      
      Change-Id: Iaf9d0432157cba8c585377d33083a798c62e516c
      No-Presubmit: true
      No-Tree-Checks: true
      No-Try: true
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3848171
      Auto-Submit: Jakob Linke <jgruber@chromium.org>
      Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
      Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
      Cr-Commit-Position: refs/heads/main@{#82649}
      85f32019
  4. 22 Aug, 2022 1 commit
  5. 13 May, 2022 1 commit
  6. 03 Nov, 2021 1 commit
  7. 01 Oct, 2021 1 commit
  8. 30 Sep, 2021 1 commit
  9. 24 Sep, 2021 1 commit
  10. 23 Sep, 2021 1 commit
  11. 19 Aug, 2021 1 commit
  12. 22 Jul, 2021 1 commit
  13. 01 Jul, 2021 1 commit
  14. 18 Jun, 2021 1 commit
  15. 17 Jun, 2021 1 commit
  16. 14 Jun, 2021 1 commit
  17. 07 Jun, 2021 1 commit
  18. 14 May, 2021 1 commit
    • Vicky Kontoura's avatar
      [web snapshot] Support RegExp · add69092
      Vicky Kontoura authored
      This CL adds support for regular expressions. To serialize a regular
      expression, the pattern and flags are extracted and serialized as
      strings.
      
      Also, JSRegExp::StringFromFlags() is introduced to allow for
      transforming back from JSRegExp::Flags to the corresponding flag string.
      To verify that this implementation is on par with
      RegExp.prototype.flags, unittests are introduced under
      regexp/regexp-unittest.cc and RegExpBuiltinsAssembler::FlagsGetter()
      is updated to include a slow path that calls JSRegExp::StringFromFlags()
      through a runtime function.
      
      Bug: v8:11525, v8:11706
      Change-Id: I9cad4c464129ba1cbf64672130d8410730d7d679
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2878751
      Commit-Queue: Vicky Kontoura <vkont@google.com>
      Reviewed-by: 's avatarCamillo Bruni <cbruni@chromium.org>
      Reviewed-by: 's avatarMarja Hölttä <marja@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#74566}
      add69092
  19. 29 Mar, 2021 1 commit
  20. 25 Mar, 2021 1 commit
  21. 08 Mar, 2021 1 commit
    • Frank Emrich's avatar
      [dict-proto] SwissNameDictionary rollout in runtime code, pt. 3 · 416fae86
      Frank Emrich authored
      This CL is part of a series that makes SwissNameDictionary available
      as a new property backing store. Previously, the flag
      v8_dict_mode_prototypes allows selecting between NameDictionary and
      OrderedNameDictionary as the backing store used for all dictionary
      mode objects. This series of CLs changes this such that enabling the
      flag causes SwissNameDictionary being used instead of
      OrderedNameDictionary. The behavior for when the flag is not set
      remains unchanged (= use NameDictionary).
      
      This particular CL just collects many small changes, including some
      CSA changes where runtime calls are necessary.
      
      Bug: v8:11388
      Change-Id: I38fd18098fc641a5d92a986da251a6b3ac09411a
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2739642
      Commit-Queue: Frank Emrich <emrich@google.com>
      Reviewed-by: 's avatarMarja Hölttä <marja@chromium.org>
      Reviewed-by: 's avatarIgor Sheludko <ishell@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#73257}
      416fae86
  22. 03 Mar, 2021 1 commit
  23. 22 Feb, 2021 1 commit
  24. 11 Feb, 2021 1 commit
    • Jakob Gruber's avatar
      [regexp] Don't update last match info in @@split special case · 51fcfd58
      Jakob Gruber authored
      V8 implements a fast-path for RegExp.prototype.split which diverges
      from the spec: instead of creating a new sticky regexp instance
      `splitter` and running it in a loop, we reuse the existing non-sticky
      regexp without looping through each character.
      
      This works fine in most cases, but we run into issues when matching at
      the very end of the string. According to the spec, matches at the end
      of the string are impossible in @@split, but in our fast-path
      implementation they can happen.
      
      The obvious fix would be to remove our fast-path but this comes with
      high performance costs. The fix implemented in this CL adds a special
      flag to `exec` s.t. matches at the end of the string can be treated as
      failures. This is only relevant for @@split.
      
      Bug: chromium:1075514
      Change-Id: Ifb790ed116793998d7aeb37e307f3f3f764023d3
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2681950
      Commit-Queue: Jakob Gruber <jgruber@chromium.org>
      Auto-Submit: Jakob Gruber <jgruber@chromium.org>
      Reviewed-by: 's avatarShu-yu Guo <syg@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#72644}
      51fcfd58
  25. 09 Feb, 2021 1 commit
  26. 26 Jan, 2021 1 commit
  27. 21 Jan, 2021 1 commit
  28. 20 Nov, 2020 3 commits
  29. 09 Nov, 2020 1 commit
  30. 04 Nov, 2020 1 commit
  31. 30 Oct, 2020 1 commit
    • Martin Bidlingmaier's avatar
      [regexp] Add 'l' flag to force experimental engine · 5720d205
      Martin Bidlingmaier authored
      This commit adds the 'l' (linear) RegExp flag (as in e.g. /asdf|123/l)
      that forces execution in linear time.  These regexps are handled by the
      experimental engine.  If the experimental engine cannot handle the
      pattern, an exception is thrown on creation of the regexp.
      
      The commit also adds a new global V8 flag and changes an existing one:
      * --enable-experimental-engine, which turns on recognition of the RegExp
        'l' flag.  Previously this flag also caused all supported regexps to
        be executed by the experimental engine; this is not the case anymore.
      * --default-to-experimental-regexp-engine takes over the previous
        semantics of --enable-experimental-regexp-engine:  We execute all
        supported regexps with the experimental engine.
      
      Cq-Include-Trybots: luci.v8.try:v8_linux64_fyi_rel_ng
      Bug: v8:10765
      Change-Id: I5622a89b19404105e8be280d454e9fdd63c003b3
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2461244Reviewed-by: 's avatarUlan Degenbaev <ulan@chromium.org>
      Reviewed-by: 's avatarGeorg Neis <neis@chromium.org>
      Reviewed-by: 's avatarSimon Zünd <szuend@chromium.org>
      Reviewed-by: 's avatarJakob Gruber <jgruber@chromium.org>
      Commit-Queue: Martin Bidlingmaier <mbid@google.com>
      Cr-Commit-Position: refs/heads/master@{#70892}
      5720d205
  32. 14 Oct, 2020 1 commit
    • Martin Bidlingmaier's avatar
      [regexp] Use experimental engine if backtrack limit exceeded · d4febb6b
      Martin Bidlingmaier authored
      We fall back from irregexp to the experimental engine if a backtrack
      limit is exceeded and the experimental engine can handle the regexp.
      The feature can be turned on with a boolean flag, and an uint-valued
      flag controls the default backtrack limit.  For regexps that are
      constructed with an explicit backtrack limit (API,
      %NewRegExpWithBacktrackLimit), we choose the lower of the explicit and
      default backtrack limits.
      The default backtrack limit does not apply to regexps that can't be
      handled by the experimental engine, and for such regexps an explicitly
      specified backtrack limit is handled as before by returning null if we
      exceed it.
      
      Cq-Include-Trybots: luci.v8.try:v8_linux64_fyi_rel_ng
      Bug: v8:10765
      Change-Id: I580df79bd847520985b6c2c2159bc427315c89d1
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2436341
      Commit-Queue: Martin Bidlingmaier <mbid@google.com>
      Reviewed-by: 's avatarJakob Gruber <jgruber@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#70500}
      d4febb6b
  33. 01 Oct, 2020 1 commit
    • Dan Elphick's avatar
      [CSA] Tnodify CodeAssembler::Parameter · 74a9b9c4
      Dan Elphick authored
      CodeAssembler::Parameter now takes a Type template parameter and
      performs a checked cast to it. There is also UncheckedParameter which
      returns a TNode but doesn't check the cast. The original Parameter
      method is still there as UntypedParameter.
      
      Parameter<T>(x) in many cases replaces CAST(Parameter(x)), where the
      cast is performed inside Parameter. Since Parameter is not a macro,
      this means it cannot see the original expression or its file name and
      line number. So the error messages are vaguely useful, Parameter<T>()
      takes a SourceLocation parameter which with a default value of
      SourceLocation::Current(), which at least gives us the file name and
      line number for the error message.
      
      Bug: v8:6949, v8:10933
      Change-Id: I27157bec7dc7462210c1eb9c430c0180217d25c1
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2435106Reviewed-by: 's avatarBill Budge <bbudge@chromium.org>
      Reviewed-by: 's avatarRoss McIlroy <rmcilroy@chromium.org>
      Reviewed-by: 's avatarSantiago Aboy Solanes <solanes@chromium.org>
      Commit-Queue: Dan Elphick <delphick@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#70264}
      74a9b9c4
  34. 16 Sep, 2020 1 commit
    • Martin Bidlingmaier's avatar
      [regexp] Support capture groups in experimental engine · 98b8ca89
      Martin Bidlingmaier authored
      This commit adds support for capture groups (as in e.g. /x(123|abc)y/)
      in the experimental regexp engine.  Now every InterpreterThread owns a
      register array containing (sub)match boundaries. There is a new
      instruction to record the current input index in some register.
      
      Submatches in quantifier bodies should be reported only if they occur
      during the last repetition.  Thus we reset those registers before
      attempting to match the body of a quantifier.  This is implemented with
      another new instruction.
      
      Because of concerns for the growing sizeof the NfaInterpreter object
      (which is allocated on the stack), this commit replaces the
      `SmallVector` members of the NfaInterpreter with zone-allocated arrays.
      Register arrays, which for a fixed regexp are all the same size, are
      allocated with a RecyclingZoneAllocator for cheap memory reclamation via
      a linked list of equally-sized free blocks.
      
      Possible optimizations for management of register array memory:
      1. If there are few register per thread, then it is likely faster to
         store them inline in the InterpreterThread struct.
      2. re2 implements copy-on-write:  InterpreterThreads can share the same
         register array. If a thread attempts to write to shared register
         array, the register array is cloned first.
      3. The register at index 1 contains the end of the match; this is only
         written to right before an ACCEPT statement.  We could make ACCEPT
         equivalent to what's currently CAPTURE 1 followed by ACCEPT.  We
         could then save the memory for register 1 for threads that haven't
         finished yet.  This is particularly interesting if now optimization 1
         kicks in.
      
      Cq-Include-Trybots: luci.v8.try:v8_linux64_fyi_rel_ng
      Bug: v8:10765
      Change-Id: I2c0503206ce331e13ac9912945bb66736d740197
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2390770
      Commit-Queue: Martin Bidlingmaier <mbid@google.com>
      Reviewed-by: 's avatarJakob Gruber <jgruber@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#69929}
      98b8ca89
  35. 14 Sep, 2020 1 commit
  36. 10 Sep, 2020 1 commit
  37. 19 Aug, 2020 1 commit
  38. 18 Aug, 2020 1 commit