1. 30 Apr, 2020 16 commits
    • Toon Verwaest's avatar
      Revert "Reland^3 "[runtime] Amortize descriptor array growing for fast-mode prototypes"" · 4911ab95
      Toon Verwaest authored
      This reverts commit 65630850.
      
      Reason for revert: due to failures
      
      Original change's description:
      > Reland^3 "[runtime] Amortize descriptor array growing for fast-mode prototypes"
      > 
      > This CL:
      >  - stops tracking transitions for fast maps that are known to be detached
      >  - reuses descriptor arrays when transitioning detached maps to avoid O(n^2) performance and garbage creation
      > 
      > Fix in reland: check whether the map of the back pointer is the metamap rather than reading the map of the constructor-or-backpointer slot. If the slot contains a constructor, it's possible that the object transitions while the concurrent marker is reading the map (from which it's reading the instance type); and it's possible that the transitioned map isn't set up yet fully when we read the instance type. An acquire load for the constructor-or-backpointer map would also fix it by serializing stores, but is more expensive. Checking the metamap is faster.
      > 
      > Original commit message:
      > > This avoids an O(n^2) algorithm that creates an equal amount of garbage.
      > > Even though the actual final descriptor array might be a little bigger,
      > > it reduces peak memory usage by allocating less.
      > 
      > TBR=ulan@chromium.org,ishell@chromium.org
      > 
      > Change-Id: I57000949debdee2b69dd41e0c5975b3e8a34c6f4
      > No-Presubmit: true
      > No-Tree-Checks: true
      > No-Try: true
      > Bug: b:148346655, v8:10339
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2173363
      > Commit-Queue: Toon Verwaest <verwaest@chromium.org>
      > Reviewed-by: Toon Verwaest <verwaest@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#67499}
      
      TBR=ulan@chromium.org,clemensb@chromium.org,ishell@chromium.org,verwaest@chromium.org
      
      Change-Id: Ie7018912f591d397c8acede9b31fbf269d225fe4
      No-Presubmit: true
      No-Tree-Checks: true
      No-Try: true
      Bug: b:148346655, v8:10339
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2174299Reviewed-by: 's avatarToon Verwaest <verwaest@chromium.org>
      Commit-Queue: Toon Verwaest <verwaest@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#67500}
      4911ab95
    • Toon Verwaest's avatar
      Reland^3 "[runtime] Amortize descriptor array growing for fast-mode prototypes" · 65630850
      Toon Verwaest authored
      This CL:
       - stops tracking transitions for fast maps that are known to be detached
       - reuses descriptor arrays when transitioning detached maps to avoid O(n^2) performance and garbage creation
      
      Fix in reland: check whether the map of the back pointer is the metamap rather than reading the map of the constructor-or-backpointer slot. If the slot contains a constructor, it's possible that the object transitions while the concurrent marker is reading the map (from which it's reading the instance type); and it's possible that the transitioned map isn't set up yet fully when we read the instance type. An acquire load for the constructor-or-backpointer map would also fix it by serializing stores, but is more expensive. Checking the metamap is faster.
      
      Original commit message:
      > This avoids an O(n^2) algorithm that creates an equal amount of garbage.
      > Even though the actual final descriptor array might be a little bigger,
      > it reduces peak memory usage by allocating less.
      
      TBR=ulan@chromium.org,ishell@chromium.org
      
      Change-Id: I57000949debdee2b69dd41e0c5975b3e8a34c6f4
      No-Presubmit: true
      No-Tree-Checks: true
      No-Try: true
      Bug: b:148346655, v8:10339
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2173363
      Commit-Queue: Toon Verwaest <verwaest@chromium.org>
      Reviewed-by: 's avatarToon Verwaest <verwaest@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#67499}
      65630850
    • Michael Lippautz's avatar
      heap: Rework forced GCs · fe0c91cb
      Michael Lippautz authored
      Forced GCs can either be invoked internally or communicate the fact that
      they are forced externally via API. Before this CL, all uses were
      passing kGCCallbackFlagForced to indicate that the GC was forced.
      
      This flag is used by embedders though to trigger followup actions. E.g.,
      it can be used to trigger a follow up call to
      GarbageCollectionForTesting() call which requires --expose-gc.
      
      This patch changes the semantics as follows:
      - Internal forced GCs use a Heap GC flag (kForcedGC)
      - External forced GCs and GC extension use kGCCallbackFlagForced
      
      Bug: chromium:1074061
      Change-Id: Ide7ea0ccdf88b8c8cac002289aef5b7eb0f9748c
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2172747Reviewed-by: 's avatarMaya Lekova <mslekova@chromium.org>
      Reviewed-by: 's avatarAndreas Haas <ahaas@chromium.org>
      Reviewed-by: 's avatarUlan Degenbaev <ulan@chromium.org>
      Commit-Queue: Michael Lippautz <mlippautz@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#67498}
      fe0c91cb
    • Toon Verwaest's avatar
      Revert "Reland^2 "[runtime] Amortize descriptor array growing for fast-mode prototypes"" · 3afa7cf0
      Toon Verwaest authored
      This reverts commit d29b2f81.
      
      Reason for revert: accidental reland without fix
      
      Original change's description:
      > Reland^2 "[runtime] Amortize descriptor array growing for fast-mode prototypes"
      > 
      > Fix: check whether the map of the back pointer is the metamap rather than reading the map of the constructor-or-backpointer slot. If the slot contains a constructor, it's possible that the object transitions while the concurrent marker is reading the map (from which it's reading the instance type); and it's possible that the transitioned map isn't set up yet fully when we read the instance type. An acquire load for the constructor-or-backpointer map would also fix it by serializing stores, but is more expensive. Checking the metamap is faster.
      > 
      > In case of false negatives (it is a map but we read the field before it was properly initialized) we'll simply mark too many descriptors in the worst case.
      > 
      > Original change's description:
      > > Revert "Reland "[runtime] Amortize descriptor array growing for fast-mode prototypes""
      > > 
      > > This reverts commit 71f9c117.
      > > 
      > > Reason for revert: Seems to cause several TSan flakes, e.g. https://ci.chromium.org/p/v8/builders/ci/V8%20Linux64%20TSAN%20-%20concurrent%20marking/12926
      > > 
      > > Original change's description:
      > > > Reland "[runtime] Amortize descriptor array growing for fast-mode prototypes"
      > > > 
      > > > This is a reland of 2de2d3dc
      > > > 
      > > > Original change's description:
      > > > > [runtime] Amortize descriptor array growing for fast-mode prototypes
      > > > >
      > > > > This avoids an O(n^2) algorithm that creates an equal amount of garbage.
      > > > > Even though the actual final descriptor array might be a little bigger,
      > > > > it reduces peak memory usage by allocating less.
      > > > >
      > > > > Bug: b:148346655
      > > > > Change-Id: I984159d36e9e0b37c19bc81afc90c94c9a9d168a
      > > > > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2135728
      > > > > Commit-Queue: Toon Verwaest <verwaest@chromium.org>
      > > > > Reviewed-by: Igor Sheludko <ishell@chromium.org>
      > > > > Cr-Commit-Position: refs/heads/master@{#67031}
      > > > 
      > > > Bug: b:148346655, v8:10339
      > > > Change-Id: I24436d8f49dc1fe527c4f6558db1abcba323b6f8
      > > > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2139215
      > > > Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
      > > > Reviewed-by: Igor Sheludko <ishell@chromium.org>
      > > > Auto-Submit: Toon Verwaest <verwaest@chromium.org>
      > > > Commit-Queue: Igor Sheludko <ishell@chromium.org>
      > > > Cr-Commit-Position: refs/heads/master@{#67475}
      > > 
      > > TBR=ulan@chromium.org,ishell@chromium.org,verwaest@chromium.org
      > > 
      > > Change-Id: I6fa02d0c89557eae33b792c1fe62c9c15eb0f7c7
      > > No-Presubmit: true
      > > No-Tree-Checks: true
      > > No-Try: true
      > > Bug: b:148346655, v8:10339
      > > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2172749
      > > Reviewed-by: Clemens Backes <clemensb@chromium.org>
      > > Commit-Queue: Clemens Backes <clemensb@chromium.org>
      > > Cr-Commit-Position: refs/heads/master@{#67478}
      > 
      > TBR=ulan@chromium.org,clemensb@chromium.org,ishell@chromium.org,verwaest@chromium.org
      > 
      > Change-Id: Ib86e039374e721919cd5b02495c252ee7af283bd
      > No-Presubmit: true
      > No-Tree-Checks: true
      > No-Try: true
      > Bug: b:148346655, v8:10339
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2173359
      > Reviewed-by: Toon Verwaest <verwaest@chromium.org>
      > Commit-Queue: Toon Verwaest <verwaest@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#67495}
      
      TBR=ulan@chromium.org,clemensb@chromium.org,ishell@chromium.org,verwaest@chromium.org
      
      Change-Id: Ia624ac774c021146b9b3b7e60372113c50a1ec61
      No-Presubmit: true
      No-Tree-Checks: true
      No-Try: true
      Bug: b:148346655, v8:10339
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2173361Reviewed-by: 's avatarToon Verwaest <verwaest@chromium.org>
      Commit-Queue: Toon Verwaest <verwaest@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#67497}
      3afa7cf0
    • Dominik Inführ's avatar
      [heap] Allow background threads to request GC · 5bbca548
      Dominik Inführ authored
      When a background thread fails to allocate, it requests a GC and
      retries the allocation afterwards. Make second allocation more likely
      to succeed by allowing those allocations to expand the old space.
      
      TLABs of LocalHeaps also need to be invalidated before the GC.
      
      Bug: v8:10315
      Change-Id: Idaea2c4ee25642d508c72ae274b06d60c6e225e0
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2154193
      Commit-Queue: Dominik Inführ <dinfuehr@chromium.org>
      Reviewed-by: 's avatarUlan Degenbaev <ulan@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#67496}
      5bbca548
    • Toon Verwaest's avatar
      Reland^2 "[runtime] Amortize descriptor array growing for fast-mode prototypes" · d29b2f81
      Toon Verwaest authored
      Fix: check whether the map of the back pointer is the metamap rather than reading the map of the constructor-or-backpointer slot. If the slot contains a constructor, it's possible that the object transitions while the concurrent marker is reading the map (from which it's reading the instance type); and it's possible that the transitioned map isn't set up yet fully when we read the instance type. An acquire load for the constructor-or-backpointer map would also fix it by serializing stores, but is more expensive. Checking the metamap is faster.
      
      In case of false negatives (it is a map but we read the field before it was properly initialized) we'll simply mark too many descriptors in the worst case.
      
      Original change's description:
      > Revert "Reland "[runtime] Amortize descriptor array growing for fast-mode prototypes""
      > 
      > This reverts commit 71f9c117.
      > 
      > Reason for revert: Seems to cause several TSan flakes, e.g. https://ci.chromium.org/p/v8/builders/ci/V8%20Linux64%20TSAN%20-%20concurrent%20marking/12926
      > 
      > Original change's description:
      > > Reland "[runtime] Amortize descriptor array growing for fast-mode prototypes"
      > > 
      > > This is a reland of 2de2d3dc
      > > 
      > > Original change's description:
      > > > [runtime] Amortize descriptor array growing for fast-mode prototypes
      > > >
      > > > This avoids an O(n^2) algorithm that creates an equal amount of garbage.
      > > > Even though the actual final descriptor array might be a little bigger,
      > > > it reduces peak memory usage by allocating less.
      > > >
      > > > Bug: b:148346655
      > > > Change-Id: I984159d36e9e0b37c19bc81afc90c94c9a9d168a
      > > > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2135728
      > > > Commit-Queue: Toon Verwaest <verwaest@chromium.org>
      > > > Reviewed-by: Igor Sheludko <ishell@chromium.org>
      > > > Cr-Commit-Position: refs/heads/master@{#67031}
      > > 
      > > Bug: b:148346655, v8:10339
      > > Change-Id: I24436d8f49dc1fe527c4f6558db1abcba323b6f8
      > > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2139215
      > > Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
      > > Reviewed-by: Igor Sheludko <ishell@chromium.org>
      > > Auto-Submit: Toon Verwaest <verwaest@chromium.org>
      > > Commit-Queue: Igor Sheludko <ishell@chromium.org>
      > > Cr-Commit-Position: refs/heads/master@{#67475}
      > 
      > TBR=ulan@chromium.org,ishell@chromium.org,verwaest@chromium.org
      > 
      > Change-Id: I6fa02d0c89557eae33b792c1fe62c9c15eb0f7c7
      > No-Presubmit: true
      > No-Tree-Checks: true
      > No-Try: true
      > Bug: b:148346655, v8:10339
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2172749
      > Reviewed-by: Clemens Backes <clemensb@chromium.org>
      > Commit-Queue: Clemens Backes <clemensb@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#67478}
      
      TBR=ulan@chromium.org,clemensb@chromium.org,ishell@chromium.org,verwaest@chromium.org
      
      Change-Id: Ib86e039374e721919cd5b02495c252ee7af283bd
      No-Presubmit: true
      No-Tree-Checks: true
      No-Try: true
      Bug: b:148346655, v8:10339
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2173359Reviewed-by: 's avatarToon Verwaest <verwaest@chromium.org>
      Commit-Queue: Toon Verwaest <verwaest@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#67495}
      d29b2f81
    • Andreas Haas's avatar
      [wasm][liftoff][arm] Guarantee scratch register for spilling · 0e1ac4e7
      Andreas Haas authored
      Spilling a register in Liftoff require a scratch register when the
      offset of the stack slot from fp is greater than 2^12. This CL adds
      a check to LiftoffAssembler::Spill on arm to check that a scratch
      register is available. It also fixes one case where the scratch register
      was not available.
      
      R=clemensb@chromium.org
      CC=zhin@chromium.org
      
      Bug: chromium:1075953
      Change-Id: Idb2bc7e26e3d4fbd6bb0eb6c9a9b8cfd8b3c569e
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2172424
      Commit-Queue: Andreas Haas <ahaas@chromium.org>
      Reviewed-by: 's avatarClemens Backes <clemensb@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#67494}
      0e1ac4e7
    • Frank Tang's avatar
      Roll ICU from 65.1 to 67.1 (f2223961) & correct tests · e270b6d6
      Frank Tang authored
      Rolling to chrome/src is in
      https://chromium-review.googlesource.com/c/chromium/src/+/2155530
      
      Since auto rolling stop after 3/24/2020 and the rolling will cause
      change of test status, I get this cl ready (but not running trybot due
      to 1074260) and plan to hand roll after the submission of 2155530.
      
      Bug: chromium:1064326, v8:9515, v8:10379, v8:10380, v8:10437
      Change-Id: I19554f68cfdc5b717dfc7fc4b1222e9dc25b8d69
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2158486
      Auto-Submit: Frank Tang <ftang@chromium.org>
      Commit-Queue: Michael Achenbach <machenbach@chromium.org>
      Reviewed-by: 's avatarJakob Kummerow <jkummerow@chromium.org>
      Reviewed-by: 's avatarMichael Achenbach <machenbach@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#67493}
      e270b6d6
    • Shu-yu Guo's avatar
      [weakrefs] Remove deprecated FinalizationGroup V8 API · de4c0042
      Shu-yu Guo authored
      Bug: v8:8179
      Change-Id: I16170a197028beb35309b15613004b29a956896c
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2171696Reviewed-by: 's avatarUlan Degenbaev <ulan@chromium.org>
      Reviewed-by: 's avatarRoss McIlroy <rmcilroy@chromium.org>
      Commit-Queue: Ross McIlroy <rmcilroy@chromium.org>
      Auto-Submit: Shu-yu Guo <syg@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#67492}
      de4c0042
    • Clemens Backes's avatar
      [wasm] Remove interpreter compilation hint · 0e2e00f4
      Clemens Backes authored
      The interpreter will be un-shipped soon, hence we cannot have a
      compilation hint for interpreted execution.
      This CL removes the respective enum value, removes a test which
      specifically tested this one option, and adapts other code to use one of
      the remaining hints.
      
      R=ahaas@chromium.org
      
      Bug: v8:10389
      Change-Id: Ia754f7de95be271000a9e4e10ef2a3ee171da627
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2172748Reviewed-by: 's avatarAndreas Haas <ahaas@chromium.org>
      Commit-Queue: Clemens Backes <clemensb@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#67491}
      0e2e00f4
    • Philip Pfaffe's avatar
      Implement protocol::Binary to/from base64 conversion · 4a98a3cc
      Philip Pfaffe authored
      Supporting WebAssembly evaluator modules requires support for passing
      binary data as a parameter to CDP methods. Currently, the required base64
      conversions are not implemented.
      
      Bug: chromium:1020120
      Change-Id: Ie74f93ee5accfa369aac428e5c5b5f882c921c52
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2152645
      Commit-Queue: Philip Pfaffe <pfaffe@chromium.org>
      Reviewed-by: 's avatarSimon Zünd <szuend@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#67490}
      4a98a3cc
    • Zhao Jiazhong's avatar
      [regexp] Loosen limit in UnicodePropertyEscapeCodeSize test · fc03e548
      Zhao Jiazhong authored
      The UnicodePropertyEscapeCodeSize test set the max code size as 150KB,
      which is too strict for mips64. This CL loosen the limit to 200KB.
      
      Bug: v8:10441
      Change-Id: I8532d4d51eedd7713075d86e84c52a58d2412861
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2172927Reviewed-by: 's avatarJakob Gruber <jgruber@chromium.org>
      Commit-Queue: Zhao Jiazhong <zhaojiazhong-hf@loongson.cn>
      Cr-Commit-Position: refs/heads/master@{#67489}
      fc03e548
    • Igor Sheludko's avatar
      [sandbox][x64] Access external pointer in Foreign via bottlenecks · 679945ff
      Igor Sheludko authored
      Bug: v8:10391
      Change-Id: Ie019eb6253fdd29bfbae6a9f77c8b3396dacb599
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2134141
      Commit-Queue: Igor Sheludko <ishell@chromium.org>
      Reviewed-by: 's avatarJakob Gruber <jgruber@chromium.org>
      Reviewed-by: 's avatarLeszek Swirski <leszeks@chromium.org>
      Reviewed-by: 's avatarUlan Degenbaev <ulan@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#67488}
      679945ff
    • Peter Marshall's avatar
      [cpu-profiler][cleanup] Use std::atomic_bool for running flag · 4d2da932
      Peter Marshall authored
      Mechanical change to use std:: atomics instead.
      
      Change-Id: If64cc972eb247c93e7080e9eb764cbc6b2cf35ce
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2172966Reviewed-by: 's avatarUlan Degenbaev <ulan@chromium.org>
      Commit-Queue: Peter Marshall <petermarshall@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#67487}
      4d2da932
    • jing.bao's avatar
      [wasm-simd][liftoff] Implement lt opcodes · 542e85ad
      jing.bao authored
      Bug: v8:9909
      Change-Id: I881e5393e6eea16ed10624d4a81292c1241ee9dd
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2172639Reviewed-by: 's avatarZhi An Ng <zhin@chromium.org>
      Commit-Queue: Jing Bao <jing.bao@intel.com>
      Cr-Commit-Position: refs/heads/master@{#67486}
      542e85ad
    • Frank Tang's avatar
      Roll ICU to tz2020a on top of 65.1 · 2a0505ed
      Frank Tang authored
      Somehow the auto rolling of ICU does not happen after 2020/3/24
      (see https://bugs.chromium.org/p/v8/issues/detail?id=10481) so I hand roll
      ICU now.
      
      For example, the following icu hash into chrome/src/DEPS was not yet
      auto rolled after ~4 weeks:
      2020/4/1 https://chromium-review.googlesource.com/c/chromium/src/+/2109133
      2020/4/28 https://chromium-review.googlesource.com/c/chromium/src/+/2162266
      
      Bug: chromium:1074578
      Change-Id: I7ba0d240351f7458997e66a1e580564684a8b5a2
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2173670Reviewed-by: 's avatarShu-yu Guo <syg@chromium.org>
      Commit-Queue: Frank Tang <ftang@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#67485}
      2a0505ed
  2. 29 Apr, 2020 24 commits