1. 04 Sep, 2019 1 commit
  2. 06 Aug, 2019 1 commit
  3. 05 Aug, 2019 2 commits
  4. 30 Jul, 2019 1 commit
  5. 29 Jul, 2019 1 commit
    • Jakob Gruber's avatar
      [regexp] Restructure fast path check logic · c6b1ef0e
      Jakob Gruber authored
      Prior to this CL, the regexp fast path check is stricter than it
      needs to be. For example, adding any arbitrary property on the regexp
      prototype would move the execution of all regexp builtins in the same
      context onto the slow path. This actually happens in the real world:
      popular web frameworks commonly monkey-patch builtin prototypes to add
      functionality.
      
      The intent of this CL is to widen the fast path for regexp builtins s.t.
      modifications of the prototype that do not conflict with our
      requirements stay on the fast path.
      
      This is done by extending the current fast path check with an
      additional step. If checking the prototype map identity or
      relevant prototype property constness fails, we now compare the actual
      value of all relevant properties against the expected value. If these
      match, the prototype can be considered fast.
      
      The new step as described in the previous paragraph is part of the
      permissive fast path check (BranchIfFastRegExp_Permissive). The strict
      variant (BranchIfFastRegExp_Strict) is also still required by a few
      spots. We should refactor these to also allow the permissive check in
      follow-up work.
      
      Bug: v8:5577,chromium:977382
      Change-Id: I69b2244e68ccfbd00edf17fc326aa4b5f5d089fa
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1706056
      Commit-Queue: Jakob Gruber <jgruber@chromium.org>
      Reviewed-by: 's avatarClemens Hammacher <clemensh@chromium.org>
      Reviewed-by: 's avatarBenedikt Meurer <bmeurer@chromium.org>
      Reviewed-by: 's avatarPeter Marshall <petermarshall@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#62948}
      c6b1ef0e
  6. 26 Jul, 2019 3 commits
  7. 16 Jul, 2019 2 commits
  8. 08 Jul, 2019 2 commits
  9. 01 Jul, 2019 1 commit
    • Clemens Hammacher's avatar
      [base] Outline SmallVector::Grow function · 09943b04
      Clemens Hammacher authored
      Avoid inlining the {SmallVector::Grow} function, as it is rarely used.
      This reduces binary size, since {emplace_back} is called a lot, and
      often {emplace_back} itself is inlined.
      As another minor tweak the {Grow} function now returns the new end of
      the used storage, to reduce binary size in {emplace_back} even more.
      Also, there is a separate version without argument.
      
      R=mlippautz@chromium.org
      
      Change-Id: If25f976649fee3f585b9a2cf6bdfe00fdb77af0b
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1683995Reviewed-by: 's avatarMichael Lippautz <mlippautz@chromium.org>
      Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#62467}
      09943b04
  10. 25 Jun, 2019 1 commit
  11. 21 Jun, 2019 1 commit
  12. 18 Jun, 2019 1 commit
    • Jakob Gruber's avatar
      [regexp] Simplify UnicodeRangeSplitter · 83da1c2d
      Jakob Gruber authored
      This class used to be based on DispatchTable, which itself uses an
      interval tree to both categorize and canonicalize ranges
      (i.e. such that no overlap and all immediately adjacent ranges are
      merged). The produced ranges were then entered into lists for
      {bmp,lead_surrogate,trail_surrogate,non_bmp} splits.
      
      With this CL, we simplify to a plain loop over all character range
      kinds instead. The dispatch table (and ZoneSplayList, perhaps
      SplayList) can be removed in follow-ups.
      
      Bug: v8:9359
      Change-Id: I9c6b72f3bc44d1557af7c74419709ae5662611f1
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1664053
      Auto-Submit: Jakob Gruber <jgruber@chromium.org>
      Reviewed-by: 's avatarMichael Lippautz <mlippautz@chromium.org>
      Reviewed-by: 's avatarPeter Marshall <petermarshall@chromium.org>
      Commit-Queue: Jakob Gruber <jgruber@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#62260}
      83da1c2d
  13. 13 Jun, 2019 1 commit
  14. 06 Jun, 2019 1 commit
  15. 03 Jun, 2019 1 commit
  16. 31 May, 2019 1 commit
  17. 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
  18. 23 May, 2019 2 commits
  19. 21 May, 2019 3 commits
  20. 17 May, 2019 2 commits
  21. 15 May, 2019 4 commits
  22. 13 May, 2019 1 commit
  23. 10 May, 2019 1 commit
  24. 06 May, 2019 1 commit
  25. 30 Apr, 2019 1 commit
  26. 09 Apr, 2019 1 commit
  27. 04 Apr, 2019 1 commit
  28. 03 Apr, 2019 1 commit
    • Paolo Severini's avatar
      Reland "V8 x64 backend doesn't emit ABI compliant stack frames" · 969cb0c7
      Paolo Severini authored
      This is a reland of 3cda21de
      
      Original change's description:
      > V8 x64 backend doesn't emit ABI compliant stack frames
      > 
      > On 64 bit Windows, the OS stack walking does not work because the V8 x64
      > backend doesn't emit unwinding info and also because it doesn't emit ABI
      > compliant stack frames. See
      > https://docs.google.com/document/d/1-wf50jFlii0c_Pr52lm2ZU-49m220nhYMrHDi3vXnh0/edit
      > for more details.
      > 
      > This problem can be fixed by observing that V8 frames usually all have the same
      > prolog and epilog:
      > 
      > push rbp,
      > mov rbp, rsp
      > ...
      > pop rbp
      > ret N
      > 
      > and that it is possible to define XDATA (UNWIND_CODEs) that specify how Windows
      > should walk through V8 frames. Furthermore, since V8 Code objects are all
      > allocated in the same code-range for an Isolate, it is possible to register a
      > single PDATA/XDATA entry to cover stack walking for all the code generated
      > inside that code-range.
      > 
      > This PR contains changes required to enable stack walking on Win64:
      > 
      > EmbeddedFileWriter now adds assembler directives to the builtins
      > snapshot source file (embedded.cc) to emit additional entries in the .pdata and
      > in the .xdata section of the V8 executable. This takes care of stack walking
      > for embedded builtins. (The case of non-embedded builtins is not supported).
      > The x64 Assembler has been modified to collect the information required to emit
      > this unwind info for builtins.
      > 
      > Stack walking for jitted code is handled is Isolate.cpp, by registering
      > dynamically PDATA/XDATA for the whole code-range address space every time a new
      > Isolate is initialized, and by unregistering them when the Isolate is
      > destroyed.
      > 
      > Stack walking for WASM jitted code is handled is the same way in
      > wasm::NativeModule (wasm/wasm-code-manager.cpp).
      > 
      > It is important to note that Crashpad and Breakpad are already registering
      > PDATA/XDATA to manage and report unhandled exceptions (but not for embedded
      > builtins). Since it is not possible to register multiple PDATA entries for the
      > same address range, a new function is added to the V8 API:
      > SetUnhandledExceptionCallback() can be used by an embedder to register its own
      > unhandled exception handler for exceptions that arise in v8-generated code.
      > V8 embedders should be modified accordingly (code for this is in a separate PR
      > in the Chromium repository:
      > https://chromium-review.googlesource.com/c/chromium/src/+/1474703).
      > 
      > All these changes are experimental, behind:
      > 
      > the 'v8_win64_unwinding_info' build flag, and
      > the '--win64-unwinding-info' runtime flag.
      > 
      > Bug: v8:3598
      > Change-Id: Iea455ab6d0e2bf1c556aa1cf870841d44ab6e4b1
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1469329
      > Reviewed-by: Michael Starzinger <mstarzinger@chromium.org>
      > Reviewed-by: Jakob Gruber <jgruber@chromium.org>
      > Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
      > Commit-Queue: Paolo Severini <paolosev@microsoft.com>
      > Cr-Commit-Position: refs/heads/master@{#60330}
      
      Bug: v8:3598
      Change-Id: If988baf7d3e4af165b919d6e54c1ad985f8e25e3
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1534618Reviewed-by: 's avatarJakob Gruber <jgruber@chromium.org>
      Reviewed-by: 's avatarUlan Degenbaev <ulan@chromium.org>
      Reviewed-by: 's avatarMichael Starzinger <mstarzinger@chromium.org>
      Commit-Queue: Paolo Severini <paolosev@microsoft.com>
      Cr-Commit-Position: refs/heads/master@{#60581}
      969cb0c7