1. 05 Mar, 2021 1 commit
    • Frank Emrich's avatar
      [dict-proto] SwissNameDictionary rollout in runtime code, pt. 1 · fc7ca518
      Frank Emrich authored
      This CL is part of a series that makes SwissNameDictionary available
      as a new property backing store. Currently, 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
      a) moves two operations from ordered-hash-table.cc to
      swiss-name-dictionary.cc (which were itself just copies of existing
      functions, see the existing TODOs about cleaning this up).
      
      b) adds a new getter for the SwissNameDictionary backing store,
      called JSReceiver::property_dictionary_swiss.
      
      c) contains a first wave of replacing usages of
      OrderedNameDictionary with SwissNameDictionary.
      
      Bug: v8:11388
      Change-Id: Ie6b45571aee3646c0c0d3937b3c25f0f033810dd
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2732676Reviewed-by: 's avatarUlan Degenbaev <ulan@chromium.org>
      Reviewed-by: 's avatarMarja Hölttä <marja@chromium.org>
      Reviewed-by: 's avatarIgor Sheludko <ishell@chromium.org>
      Commit-Queue: Frank Emrich <emrich@google.com>
      Cr-Commit-Position: refs/heads/master@{#73213}
      fc7ca518
  2. 20 Nov, 2020 1 commit
  3. 19 Nov, 2020 1 commit
  4. 16 Nov, 2020 1 commit
  5. 13 Nov, 2020 1 commit
  6. 09 Nov, 2020 1 commit
  7. 03 Nov, 2020 1 commit
  8. 02 Nov, 2020 1 commit
  9. 05 Oct, 2020 1 commit
  10. 15 Jul, 2020 1 commit
  11. 08 Jul, 2020 1 commit
  12. 22 Jun, 2020 1 commit
  13. 04 Mar, 2020 1 commit
  14. 20 Feb, 2020 2 commits
  15. 17 Feb, 2020 1 commit
  16. 22 Jan, 2020 1 commit
    • Shiyu Zhang's avatar
      Reland "Reland "[runtime] Cache prototype chain enumerable keys in PrototypeInfo"" · 6f3cf7aa
      Shiyu Zhang authored
      This is a reland of 3b753563
      
      Original change's description:
      > Reland "[runtime] Cache prototype chain enumerable keys in PrototypeInfo"
      > 
      > This is a reland of 5253d7bf
      > 
      > Original change's description:
      > > [runtime] Cache prototype chain enumerable keys in PrototypeInfo
      > > 
      > > This CL adds a prototype_chain_enum_cache to cache the enumeration of a
      > > prototype and its entire chain on the PrototypeInfo. It can improve for-in
      > > performance via simply merging the receiver enumeration with this cache.
      > > 
      > > It improves the score of JetStream2-tagcloud-SP case by ~9% on IA Chromebook.
      > > 
      > > Contributed by tao.pan@intel.com
      > > 
      > > Change-Id: Ib40bfe41e772672337155584672f06fa1ba1e70d
      > > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1870844
      > > Commit-Queue: Shiyu Zhang <shiyu.zhang@intel.com>
      > > Reviewed-by: Toon Verwaest <verwaest@chromium.org>
      > > Cr-Commit-Position: refs/heads/master@{#65224}
      > 
      > Change-Id: I93b74727c46abbaab163324c50fbd977fcc9bb36
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1955232
      > Reviewed-by: Toon Verwaest <verwaest@chromium.org>
      > Commit-Queue: Shiyu Zhang <shiyu.zhang@intel.com>
      > Cr-Commit-Position: refs/heads/master@{#65377}
      
      Change-Id: If4b4631e1b8a3d2df748b6be8500f838836a3291
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2008253
      Commit-Queue: Toon Verwaest <verwaest@chromium.org>
      Reviewed-by: 's avatarToon Verwaest <verwaest@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#65919}
      6f3cf7aa
  17. 11 Dec, 2019 1 commit
  18. 09 Dec, 2019 1 commit
  19. 29 Nov, 2019 1 commit
    • Toon Verwaest's avatar
      Revert "[runtime] Cache prototype chain enumerable keys in PrototypeInfo" · 21ad38ef
      Toon Verwaest authored
      This reverts commit 5253d7bf.
      
      Reason for revert: Elements don't properly invalidate the cache.
      
      Original change's description:
      > [runtime] Cache prototype chain enumerable keys in PrototypeInfo
      > 
      > This CL adds a prototype_chain_enum_cache to cache the enumeration of a
      > prototype and its entire chain on the PrototypeInfo. It can improve for-in
      > performance via simply merging the receiver enumeration with this cache.
      > 
      > It improves the score of JetStream2-tagcloud-SP case by ~9% on IA Chromebook.
      > 
      > Contributed by tao.pan@intel.com
      > 
      > Change-Id: Ib40bfe41e772672337155584672f06fa1ba1e70d
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1870844
      > Commit-Queue: Shiyu Zhang <shiyu.zhang@intel.com>
      > Reviewed-by: Toon Verwaest <verwaest@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#65224}
      
      TBR=verwaest@chromium.org,shiyu.zhang@intel.com
      
      # Not skipping CQ checks because original CL landed > 1 day ago.
      
      Change-Id: Ic5d476bc8b334241b2accb8344749fcf7dcf5e09
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1943153Reviewed-by: 's avatarToon Verwaest <verwaest@chromium.org>
      Reviewed-by: 's avatarIgor Sheludko <ishell@chromium.org>
      Commit-Queue: Toon Verwaest <verwaest@chromium.org>
      Auto-Submit: Toon Verwaest <verwaest@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#65259}
      21ad38ef
  20. 28 Nov, 2019 1 commit
  21. 26 Nov, 2019 1 commit
  22. 15 Nov, 2019 1 commit
  23. 12 Oct, 2019 1 commit
  24. 11 Oct, 2019 2 commits
  25. 06 Sep, 2019 1 commit
    • Zhang, Shiyu's avatar
      [runtime] Do not add shadowing key for end prototype · a2e86bf6
      Zhang, Shiyu authored
      Shadowing key is used to exclude non-enumerable keys when iterating
      over the prototype chain. This CL skips adding shadowing key for
      end prototype to improve for-in performance. It can improve the
      performance of below microbench by ~50%.
      
      Object.prototype.foo = function() {};
      let obj = {
      	a:0,
      	b:1
      };
      let start = Date.now();
      for (let i = 0; i<1e6; i++) {
      	for (var j in obj) {}
      }
      console.log(Date.now() - start);
      
      This CL also improves the score of JetStream2-tagcloud-SP case
      by 8% on IA Chromebook.
      
      Contributed by tao.pan@intel.com
      
      Change-Id: I456082c08bf70f1f450ff54f657cdab26eb7bc2b
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1781113Reviewed-by: 's avatarToon Verwaest <verwaest@chromium.org>
      Commit-Queue: Shiyu Zhang <shiyu.zhang@intel.com>
      Cr-Commit-Position: refs/heads/master@{#63587}
      a2e86bf6
  26. 28 Aug, 2019 1 commit
  27. 11 Jul, 2019 1 commit
    • Mythri A's avatar
      [runtime] Remove try_fast path from GetOwnPropertyNames builtin · b048429e
      Mythri A authored
      GetOwnPropertyNameTryFast uses ENUMERABLE_STRINGS filter to trigger fast
      path in KeyAccumulator::GetKeys conditionally when all properties on the
      receiver are enumerable. It is not easy to verify if all properties are
      enumerable and the current check is incorrect in some cases.
      For ex: when we have non-enumerable properties when we have elements on
      the receiver. This cl removes this try_fast path from the builtin. This
      could impact performance. The long term fix for this would be to fix
      KeyAccumulator::GetKeys to use fast path for more cases.
      
      
      Bug: chromium:977870
      Change-Id: Iecde730739c2c452ffa0d893d0d1b3612a45d1b2
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1679499Reviewed-by: 's avatarJakob Gruber <jgruber@chromium.org>
      Reviewed-by: 's avatarIgor Sheludko <ishell@chromium.org>
      Commit-Queue: Mythri Alle <mythria@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#62649}
      b048429e
  28. 23 May, 2019 4 commits
  29. 22 May, 2019 1 commit
  30. 20 May, 2019 1 commit
  31. 17 May, 2019 1 commit
  32. 16 May, 2019 2 commits
  33. 07 May, 2019 1 commit
    • Peter Marshall's avatar
      Reland "[typedarray] Make JSTypedArray::length authoritative." · 330e5ba2
      Peter Marshall authored
      This is a reland of ad44c258
      
      Patchset 2 is the original CL
      Patchset 3 fixes some misuses of FixedArrayBase::length() and adds some
      DCHECKS to flush out any more misuses.
      Patchset 4 adds the PPC/S390 port by miladfar@ca.ibm.com.
      
      Original change's description:
      > [typedarray] Make JSTypedArray::length authoritative.
      >
      > This is the first step towards full huge typed array support in V8.
      > Before this change, the JSTypedArray::length and the elements backing
      > store length (FixedTypedArrayBase::length) were used more or less
      > interchangeably to determine the number of elements in a JSTypedArray.
      >
      > With this change we disentangle these two lengths, and instead make
      > JSTypedArray::length authoritative. For on-heap typed arrays, the
      > FixedTypedArrayBase::length will remain the number of elements in the
      > backing store, but for the off-heap typed arrays, this length will be
      > set to 0 (matching the fact that the FixedTypedArrayBase instance does
      > not contain any elements itself).
      >
      > This also unifies the JSTypedArray::set_/length() and length_value()
      > methods to only have JSTypedArray::set_/length() which returns/takes
      > size_t values. Currently this still requires the values to be in Smi
      > range, but later we will extend this to allow arbitrary size_t values
      > (in the safe integer range).
      >
      > Bug: v8:4153, v8:7881
      > Change-Id: Iff9089130bb31fa9e08e0cf913e7ab52c3dbf107
      > Cq-Include-Trybots: luci.chromium.try:linux-blink-rel
      > Doc: http://doc/1Z-wM2qwvAuxH46e9ivtkYvKzzwYZg8ymm0x0wJaomow
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1543729
      > Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
      > Reviewed-by: Peter Marshall <petermarshall@chromium.org>
      > Reviewed-by: Jaroslav Sevcik <jarin@chromium.org>
      > Reviewed-by: Ben Titzer <titzer@chromium.org>
      > Reviewed-by: Hannes Payer <hpayer@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#60648}
      
      Bug: v8:4153, v8:7881, v8:9105
      Change-Id: Ic38f833071a723642ebc6f82a4012dbc0878ef98
      Cq-Include-Trybots: luci.chromium.try:linux-blink-rel
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1594435Reviewed-by: 's avatarBenedikt Meurer <bmeurer@chromium.org>
      Reviewed-by: 's avatarHannes Payer <hpayer@chromium.org>
      Commit-Queue: Peter Marshall <petermarshall@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#61275}
      330e5ba2
  34. 02 May, 2019 1 commit
    • Peter Marshall's avatar
      Revert "[typedarray] Make JSTypedArray::length authoritative." · 18100666
      Peter Marshall authored
      This reverts commit ad44c258.
      
      Reason for revert: Missed some users: crbug.com/v8/9105
      
      Original change's description:
      > [typedarray] Make JSTypedArray::length authoritative.
      >
      > This is the first step towards full huge typed array support in V8.
      > Before this change, the JSTypedArray::length and the elements backing
      > store length (FixedTypedArrayBase::length) were used more or less
      > interchangeably to determine the number of elements in a JSTypedArray.
      >
      > With this change we disentangle these two lengths, and instead make
      > JSTypedArray::length authoritative. For on-heap typed arrays, the
      > FixedTypedArrayBase::length will remain the number of elements in the
      > backing store, but for the off-heap typed arrays, this length will be
      > set to 0 (matching the fact that the FixedTypedArrayBase instance does
      > not contain any elements itself).
      >
      > This also unifies the JSTypedArray::set_/length() and length_value()
      > methods to only have JSTypedArray::set_/length() which returns/takes
      > size_t values. Currently this still requires the values to be in Smi
      > range, but later we will extend this to allow arbitrary size_t values
      > (in the safe integer range).
      >
      > Bug: v8:4153, v8:7881
      > Change-Id: Iff9089130bb31fa9e08e0cf913e7ab52c3dbf107
      > Cq-Include-Trybots: luci.chromium.try:linux-blink-rel
      > Doc: http://doc/1Z-wM2qwvAuxH46e9ivtkYvKzzwYZg8ymm0x0wJaomow
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1543729
      > Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
      > Reviewed-by: Peter Marshall <petermarshall@chromium.org>
      > Reviewed-by: Jaroslav Sevcik <jarin@chromium.org>
      > Reviewed-by: Ben Titzer <titzer@chromium.org>
      > Reviewed-by: Hannes Payer <hpayer@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#60648}
      
      TBR=jarin@chromium.org,titzer@chromium.org,hpayer@chromium.org,petermarshall@chromium.org,bmeurer@chromium.org
      
      # Not skipping CQ checks because original CL landed > 1 day ago.
      
      TBR=jarin@chromium.org, szuend@chromium.org
      
      Bug: v8:4153, v8:7881
      Change-Id: I96992bff15b4a2765ae4a557d2c37e78269c927d
      Cq-Include-Trybots: luci.chromium.try:linux-blink-rel
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1593294
      Commit-Queue: Peter Marshall <petermarshall@chromium.org>
      Reviewed-by: 's avatarJaroslav Sevcik <jarin@chromium.org>
      Reviewed-by: 's avatarPeter Marshall <petermarshall@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#61172}
      18100666