1. 12 Nov, 2020 1 commit
  2. 11 Nov, 2020 1 commit
  3. 06 Nov, 2020 1 commit
  4. 03 Nov, 2020 1 commit
  5. 28 Oct, 2020 1 commit
  6. 06 Oct, 2020 1 commit
    • Dominik Inführ's avatar
      Reland "[heap] String::MakeThin can get away without NotifyObjectLayoutChange" · 255db1d2
      Dominik Inführ authored
      This is a reland of 6e621f84
      
      Original change's description:
      > [heap] String::MakeThin can get away without NotifyObjectLayoutChange
      >
      > String::MakeThin doesn't need to invoke NotifyObjectLayoutChange because
      > ThinString will only introduce tagged values and hence will not
      > overwrite recorded slots with untagged values.
      >
      > Bug: v8:10315
      > Change-Id: Iaff9c06cef763462eb57bf3debc5183ae8db6fa0
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2448792
      > Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
      > Commit-Queue: Dominik Inführ <dinfuehr@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#70321}
      
      The reland fixes the failures by first updating actual and only then
      updating the map with a release store. This ensures that concurrent
      markers will observe the pointer when visiting a ThinString and not some
      stale data from before String::MakeThin.
      
      Bug: v8:10315
      Change-Id: I42db7ba9f44a48c920c997bf1258c561f3dd9bcc
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2450066
      Commit-Queue: Dominik Inführ <dinfuehr@chromium.org>
      Reviewed-by: 's avatarUlan Degenbaev <ulan@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#70346}
      255db1d2
  7. 05 Oct, 2020 2 commits
  8. 29 Sep, 2020 1 commit
  9. 22 Sep, 2020 1 commit
  10. 17 Aug, 2020 1 commit
  11. 14 Aug, 2020 1 commit
    • Leszek Swirski's avatar
      [offthread] Change OffThreadIsolate to LocalIsolate · f1589bbe
      Leszek Swirski authored
      This patch introduces a new LocalIsolate and LocalFactory, which use
      LocalHeap and replace OffThreadIsolate and OffThreadFactory. This allows
      us to remove those classes, as well as the related OffThreadSpace,
      OffThreadLargeObjectSpace, OffThreadHeap, and OffThreadTransferHandle.
      OffThreadLogger becomes LocalLogger.
      
      LocalHeap behaves more like Heap than OffThreadHeap did, so this allows
      us to additionally remove the concept of "Finish" and "Publish" that the
      OffThreadIsolate had, and allows us to internalize strings directly with
      the newly-concurrent string table (where the implementation can now move
      to FactoryBase).
      
      This patch also removes the off-thread support from the deserializer
      entirely, as well as removing the LocalIsolateWrapper which allowed
      run-time distinction between Isolate and OffThreadIsolate. LocalHeap
      doesn't support the reservation model used by the deserializer, and we
      will likely move the deserializer to use LocalIsolate unconditionally
      once we figure out the details of how to do this.
      
      Bug: chromium:1011762
      
      Change-Id: I1a1a0a72952b19a8a4c167c11a863c153a1252fc
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2315990
      Commit-Queue: Andreas Haas <ahaas@chromium.org>
      Auto-Submit: Leszek Swirski <leszeks@chromium.org>
      Reviewed-by: 's avatarAndreas Haas <ahaas@chromium.org>
      Reviewed-by: 's avatarUlan Degenbaev <ulan@chromium.org>
      Reviewed-by: 's avatarJakob Gruber <jgruber@chromium.org>
      Reviewed-by: 's avatarDominik Inführ <dinfuehr@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#69397}
      f1589bbe
  12. 23 Jul, 2020 1 commit
    • Leszek Swirski's avatar
      [string] Fix casting around external internalized string thinning · 185389fa
      Leszek Swirski authored
      When an external string matches and internalized external string, we
      want to deduplicate them. As part of that de-duplication, we check if
      either a) the internalized string's resource is null (it's freshly
      created because the original string was in new space) or b) they point
      to the same data (in which case we don't want to dispose of the data).
      
      However, when doing these checks we cast both the initial and the
      internalized external string to the same type (one or two byte). So,
      if a two-byte string finds a one-byte internalized string with
      equivalent data, this cast will fail.
      
      Since we only care about the external string resource being null or
      equal to another during the above deduplication, the solution is
      casting first to the more general ExternalString type, comparing
      resources by address, and only casting to the more specific type
      when needed (and we know that the types have to match by other
      construction).
      
      Change-Id: Id34a02eb1900d8aa492c030488afaffd0d035454
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2315987
      Commit-Queue: Leszek Swirski <leszeks@chromium.org>
      Commit-Queue: Igor Sheludko <ishell@chromium.org>
      Auto-Submit: Leszek Swirski <leszeks@chromium.org>
      Reviewed-by: 's avatarIgor Sheludko <ishell@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#69024}
      185389fa
  13. 17 Jun, 2020 1 commit
    • Dan Elphick's avatar
      [heap] Use BasicMemoryChunk::FromHeapObject more · 6f267e8a
      Dan Elphick authored
      Since ReadOnlySpace pages will soon not be MemoryChunks, change most
      uses of MemoryChunk::FromHeapObject and FromAddress to use the
      BasicMemoryChunk variants and which use the new MemoryChunk::cast
      function that takes a BasicMemoryChunk and DCHECKs !InReadOnlySpace().
      
      To enable this, it also moves into BasicMemoryChunk several MemoryChunk
      functions that just require a BasicMemoryChunk.
      
      Bug: v8:10454
      Change-Id: I80875b2c2446937ac2c2bc9287d36e71cc050c38
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2243216
      Commit-Queue: Dan Elphick <delphick@chromium.org>
      Reviewed-by: 's avatarUlan Degenbaev <ulan@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#68390}
      6f267e8a
  14. 02 Jun, 2020 1 commit
    • Jakob Gruber's avatar
      Unify string debug printing · a70348d0
      Jakob Gruber authored
      This unifies functionality between release-mode ShortPrint and
      debug-mode Print:
      
      - Prefixes and suffixes are now consistent. 'u' for two-byte, '#' for
        internalized, 'c' for cons, '>' for thin.
      - Logic was simplified and is now based on 3 functions:
        PrefixForDebugPrint, PrintUC16, SuffixForDebugPrint.
      - %DebugPrint no longer interprets strings as 'code markers'.
      - The ancient and unused use_verbose_printer flag was removed.
      
      Bug: v8:10581
      Change-Id: Iebc6a746a2683f9f5a8ef60579836e7f66a188fa
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2224868Reviewed-by: 's avatarJakob Kummerow <jkummerow@chromium.org>
      Commit-Queue: Jakob Gruber <jgruber@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#68103}
      a70348d0
  15. 12 May, 2020 1 commit
  16. 05 May, 2020 1 commit
  17. 17 Mar, 2020 1 commit
    • Iain Ireland's avatar
      [regexp] Refactor to simplify embedding irregexp · 40d1b660
      Iain Ireland authored
      Some code at the interface between irregexp and the rest of V8 uses
      V8-specific APIs that are not used elsewhere in irregexp. For example,
      only a handful of functions in irregexp call or are called from
      generated code. When embedding irregexp into SpiderMonkey, these
      functions are an obstacle, because they are dead code, but still have
      to compile.
      
      To simplify the process of embedding, this patch does two things:
      
      1. It moves StringCharacterPosition out of irregexp and into
      objects/string, renaming it "AddressOfCharacterAt".
      
      2. It guards the following set of functions with
      '#ifndef COMPILING_IRREGEXP_FOR_EXTERNAL_EMBEDDER':
      - IrregexpInterpreter::MatchForCallFromJs
      - NativeRegExpMacroAssembler::CheckStackGuardState
      - NativeRegExpMacroAssembler::Match
      - NativeRegExpMacroAssembler::Execute
      
      This will have no effect in a V8 build, but can be defined by
      SpiderMonkey or another embedder to omit the problematic functions.
      
      In the future, if we attempt to make a cleaner separation between V8
      and irregexp, these functions will be a good place to start defining
      the API boundary.
      
      R=jgruber@chromium.org
      
      Bug: v8:10303
      Change-Id: I9f531a36e4f13440cafb0d0ade921f4c09f39c05
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2097220Reviewed-by: 's avatarJakob Gruber <jgruber@chromium.org>
      Commit-Queue: Jakob Gruber <jgruber@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#66750}
      40d1b660
  18. 02 Mar, 2020 1 commit
  19. 17 Feb, 2020 1 commit
  20. 11 Feb, 2020 1 commit
  21. 25 Nov, 2019 3 commits
  22. 20 Nov, 2019 1 commit
  23. 15 Nov, 2019 1 commit
  24. 11 Nov, 2019 1 commit
  25. 06 Nov, 2019 1 commit
  26. 05 Nov, 2019 1 commit
  27. 08 Oct, 2019 1 commit
  28. 25 Sep, 2019 1 commit
  29. 18 Sep, 2019 1 commit
  30. 17 Sep, 2019 2 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
  31. 10 Sep, 2019 1 commit
  32. 09 Sep, 2019 1 commit
  33. 03 Sep, 2019 1 commit
    • Dominik Inführ's avatar
      Revert "[heap] Remove size from invalidated slots" · d4e168a3
      Dominik Inführ authored
      This reverts commit 93063ade.
      
      Reason for revert: Clusterfuzz found issue.
      
      Original change's description:
      > [heap] Remove size from invalidated slots
      > 
      > Slots are always valid inside an invalidated area when outside the
      > respective object's current size. This allows us to remove the size
      > from the InvalidatedSlots data structure.
      > 
      > This change was enabled by https://crrev.com/c/1771793.
      > 
      > Bug: v8:9454
      > Change-Id: I2b5a7234d47227cb6ad8d67de20e9b5a2028ae83
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1773242
      > Reviewed-by: Sigurd Schneider <sigurds@chromium.org>
      > Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
      > Commit-Queue: Dominik Inführ <dinfuehr@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#63510}
      
      TBR=ulan@chromium.org,sigurds@chromium.org,tebbi@chromium.org,dinfuehr@chromium.org
      
      # Not skipping CQ checks because original CL landed > 1 day ago.
      
      Bug: v8:9454
      Change-Id: I7daf96cf50aaedd4dbdab48fd550182df94e54bf
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1783106Reviewed-by: 's avatarDominik Inführ <dinfuehr@chromium.org>
      Commit-Queue: Dominik Inführ <dinfuehr@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#63535}
      d4e168a3
  34. 02 Sep, 2019 1 commit
  35. 30 Aug, 2019 1 commit
  36. 22 Aug, 2019 1 commit
    • Sathya Gunasekaran's avatar
      Revert "[ic] Fix KeyedLoadIC for ArrayIndex access" · 3bd0dc18
      Sathya Gunasekaran authored
      This reverts commit 5c59ba4f.
      
      Reason for revert: requires more thinking 
      
      Original change's description:
      > [ic] Fix KeyedLoadIC for ArrayIndex access
      > 
      > Previously, without support for converting strings to numbers we'd
      > switch to megamorphic state and go to the runtime always to do the
      > conversion causing a performance cliff.
      > 
      > This patch improves the following js-perf-test scores:
      > Object-Lookup-String-Constant-BytecodeHandler: 4.25%
      > Object-Lookup-Index-String-BytecodeHandler: 5.41%
      > 
      > Bug: v8:9449
      > Change-Id: I63787fa84373fc946f1304b0141e48a52a1b4bcb
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1690953
      > Reviewed-by: Igor Sheludko <ishell@chromium.org>
      > Commit-Queue: Sathya Gunasekaran  <gsathya@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#63293}
      
      TBR=mythria@chromium.org,jyan@ca.ibm.com,gsathya@chromium.org,leszeks@chromium.org,ishell@chromium.org,verwaest@chromium.org
      
      # Not skipping CQ checks because original CL landed > 1 day ago.
      
      Bug: v8:9449
      Change-Id: I6b6ad5901175c2e6bbd7516b13e91471adb5776d
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1765532Reviewed-by: 's avatarSathya Gunasekaran  <gsathya@chromium.org>
      Commit-Queue: Sathya Gunasekaran  <gsathya@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#63347}
      3bd0dc18