1. 12 Sep, 2019 1 commit
  2. 05 Aug, 2019 1 commit
    • Mythri A's avatar
      Reland "[ic] Don't transition to premonomorphic state" · 2999cea5
      Mythri A authored
      This is a reland of 159df248
      
      Original change's description:
      > [ic] Don't transition to premonomorphic state
      > 
      > We used to use premonomorphic state to delay initializing the ICs.
      > This optimization was to avoid the cost of setting up handlers if the
      > code executed only once. With lazy feedback allocation we no longer
      > need this.
      > 
      > This cl also renames LoadIC_Uninitialized to LoadIC_Nofeedback and
      > StoreIC_Uninitialized to StoreIC_Nofeedback since we now miss to
      > runtime in the uninitialized state and use the builtin when there
      > is no feedback.
      > 
      > 
      > Change-Id: I1633e61ea74664da51348e362c34c47a017a264a
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1683525
      > Commit-Queue: Mythri Alle <mythria@chromium.org>
      > Reviewed-by: Toon Verwaest <verwaest@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#63020}
      
      Change-Id: Ica7eb65649615c2f8410d5b815a98b55cb1cfc4d
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1731000
      Commit-Queue: Mythri Alle <mythria@chromium.org>
      Reviewed-by: 's avatarToon Verwaest <verwaest@chromium.org>
      Reviewed-by: 's avatarRoss McIlroy <rmcilroy@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#63082}
      2999cea5
  3. 01 Aug, 2019 2 commits
  4. 24 May, 2019 1 commit
  5. 24 Oct, 2018 1 commit
    • Caitlin Potter's avatar
      [builtins] put SetPropertyInLiteral in a code-stub · ac3f98d5
      Caitlin Potter authored
      There are several core changes in this stub:
      
      1) add a version of KeyedStoreGenericGenerator::SetPropertyInLiteral()
      which supports indexed properties directly, witthout KeyedStore
      
      2) add a code stub for SetPropertyInLiteral which uses the version
      supporting indexed properties
      
      3) Use the code stub in CloneObjectIC, rather than using the smaller
      special-cased version which does not handle Names.
      
      Item 1) involves a refactoring which adds a nice way to reuse code in
      KeyedStoreGenericAssembler, which allows deleting a bunch of copy/pasted
      code. This makes it easy to reuse the index handling in
      KeyedStoreGeneric() without adding adding a bunch more duplicated
      handling. Because of this, I consider this to be somewhat of a cleanup,
      though if the copied code is preferred, I'm happy to revert to that.
      
      Item 2) is needed for Object.fromEntries(), as it's better to not
      require falling back to the slow path if a key happens to be an Smi ---
      but this is also optional.
      
      Item 3) benefits the codebase by allowing Object.fromEntries() to use
      this fast path without calling into the runtime, and without duplicating
      code which is also used by CloneObjectIC.
      
      I am skeptical that this should affect performance significantly. I've
      run ObjectLiteralSpread tests, and the mean of scores over 100 runs is
      somewhat surprising: CloneObjectIC --- the only user of this code,
      has an increased average score, while the polyfill cases score slightly
      worse --- However, the overall changes are small and likely flukes.
      The complete processed test output is below:
      
      ```
      // Mean of 100 runs of each benchmark
      
      Babel-ObjectLiteralSpread:
      -----+---------------------------+---------------------------+-------
           | With patch                | Without patch             | diff
      Mean | 11530.87                  | 12142.92                  | -5.04%
      -----+---------------------------+---------------------------+-------
      
      BabelAndOverwrite-ObjectLiteralSpread:
      -----+---------------------------+---------------------------+-------
           | With patch                | Without patch             | diff
      Mean | 10881.41                  | 11260.81                  | -3.37%
      -----+---------------------------+---------------------------+-------
      
      ObjectAssign-ObjectLiteralSpread:
      -----+---------------------------+---------------------------+-------
           | With patch                | Without patch             | diff
      Mean | 6188.92                   | 6358.55                   | -2.67%
      -----+---------------------------+---------------------------+-------
      
      ObjectAssignAndOverwrite-ObjectLiteralSpread:
      -----+---------------------------+---------------------------+-------
           | With patch                | Without patch             | diff
      Mean | 6112.80                   | 6275.54                   | -1.61%
      -----+---------------------------+---------------------------+-------
      
      ObjectSpread-ObjectLiteralSpread:
      -----+---------------------------+---------------------------+-------
           | With patch                | Without patch             | diff
      Mean | 51942.93                  | 50713.17                  | +3.46%
      -----+---------------------------+---------------------------+-------
      
      ObjectSpreadAndOverwrite-ObjectLiteralSpread:
      -----+---------------------------+---------------------------+-------
           | With patch                | Without patch             | diff
      Mean | 51375.23                  | 50833.29                  | +2.09%
      -----+---------------------------+---------------------------+-------
      ```
      
      BUG=v8:8238, v8:8021
      R=ishell@chromium.org, jkummerow@chromium.org
      
      Change-Id: I43e102fc461ffd389b5d6810a73f86e5012d7dee
      Reviewed-on: https://chromium-review.googlesource.com/c/1277751
      Commit-Queue: Caitlin Potter <caitp@igalia.com>
      Reviewed-by: 's avatarJakob Kummerow <jkummerow@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#56957}
      ac3f98d5
  6. 11 Sep, 2018 1 commit
    • Caitlin Potter's avatar
      [CloneObjectIC] add CSA implementation of slow case · fbcf0221
      Caitlin Potter authored
      The CSA implementation is a separate handler so that TF has the
      opportunity to reduce to a direct call, skipping some of the dispatching
      in the CloneObjectIC stub.
      
      This patch moves the looping over a source object's keys and values into the
      base CodeStubAssembler, so that it can be shared between ObjectAssignFast
      and CloneObjectIC_Slow.
      
      During each step of the loop, storing is delegated to a new SetPropertyInLiteral
      helper in KeyedStoreGenericGenerator, which performs a store without consulting
      the prototype chain, and automatically reconfigures accessors into data
      properties regardless of their attributes.
      
      BUG=v8:8067, v8:7611
      R=ishell@chromium.org, jkummerow@chromium.org
      
      Change-Id: I06ae89f37e9b4265aab67389cf68a96529f90578
      Reviewed-on: https://chromium-review.googlesource.com/1182122
      Commit-Queue: Caitlin Potter <caitp@igalia.com>
      Reviewed-by: 's avatarIgor Sheludko <ishell@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#55806}
      fbcf0221
  7. 09 Aug, 2018 1 commit
  8. 09 May, 2018 1 commit
  9. 16 Apr, 2018 1 commit
  10. 02 Feb, 2018 1 commit
  11. 05 Sep, 2017 1 commit
  12. 14 Mar, 2017 1 commit
  13. 16 Nov, 2016 2 commits
  14. 15 Nov, 2016 1 commit
  15. 10 Nov, 2016 1 commit