1. 08 Jan, 2019 1 commit
  2. 07 Jan, 2019 1 commit
    • peterwmwong's avatar
      [js] Remove CORE JS Natives (prologue.js), port extra utils to C++/Torque · 263dce9b
      peterwmwong authored
      - Removes the last `CORE` JS native script: `prologue.js`.
      - Removes build step and bootstrapping associated with building/loading `CORE` JS natives.
      - Removes `natives_utils_object` from context.
      - Deprecates `--expose-natives-as` flag.
      - Ports extra utils functions to C++ (`uncurryThis`) or Torque
        (`createPrivateSymbol`, `markPromiseAsHandled`, and `promiseState`).
      - Move extra utils constants initialization into bootstrapper
        (`kPROMISE_PENDING`, `kPROMISE_FULFILLED`, `kPROMISE_REJECTED`).
      - Removes unused extra utils functions `log` and `logStackTrace`.
      
      Drive-by: Added test coverage for Array#includes being an unscopeable.
      
      Bug: v8:7624
      Change-Id: I5d983f8d11b76cb4dd3c2c67592ce1dc88364cd9
      Reviewed-on: https://chromium-review.googlesource.com/c/1381672Reviewed-by: 's avatarYang Guo <yangguo@chromium.org>
      Reviewed-by: 's avatarJakob Gruber <jgruber@chromium.org>
      Commit-Queue: Peter Wong <peter.wm.wong@gmail.com>
      Cr-Commit-Position: refs/heads/master@{#58577}
      263dce9b
  3. 18 Dec, 2018 1 commit
  4. 17 Dec, 2018 1 commit
  5. 13 Dec, 2018 1 commit
    • Jakob Gruber's avatar
      [builtins] Associate ASM builtins with descriptors · e61d3564
      Jakob Gruber authored
      Post-stub-to-builtin migration, all explicit connection between
      descriptors and their associated ASM code has been lost. This restores
      the connection where possible. Builtins without an associated
      descriptor are marked with the DummyDescriptor.
      
      Drive-by: alpha-sort the descriptor list.
      Drive-by: use Builtins::CallableFor in code factory.
      
      Bug: v8:8562, v8:8553
      Change-Id: If1f13bbaf7e42453b3235cc97c58ada91b5fa7b8
      Reviewed-on: https://chromium-review.googlesource.com/c/1373552Reviewed-by: 's avatarIgor Sheludko <ishell@chromium.org>
      Commit-Queue: Jakob Gruber <jgruber@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#58212}
      e61d3564
  6. 12 Dec, 2018 2 commits
  7. 11 Dec, 2018 1 commit
  8. 07 Dec, 2018 1 commit
    • Jakob Gruber's avatar
      [nojit] Migrate JSEntry variants to builtins · b89d4249
      Jakob Gruber authored
      This migrates the JSEntryStub to three dedicated builtins:
      
      JSEntry
      JSConstructEntry
      JSRunMicrotasksEntry
      
      Drive-by: Tweaks to make the code isolate-independent (e.g. using the
      correct macro assembler method to load and store external references
      through the kRootRegister).
      Drive-by: The context slot on x64/ia32 must be set up after
      kRootRegister is initialized, so we first reserve the slot and later
      load its value.
      Drive-by: Update all remaining comments referencing JSEntryStub.
      
      Bug: v8:7777
      Change-Id: Ie3ba17ffb3bde6f18ec1d26d778b258719b2d4ef
      Reviewed-on: https://chromium-review.googlesource.com/c/1365275Reviewed-by: 's avatarUlan Degenbaev <ulan@chromium.org>
      Reviewed-by: 's avatarJakob Kummerow <jkummerow@chromium.org>
      Commit-Queue: Jakob Gruber <jgruber@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#58088}
      b89d4249
  9. 05 Dec, 2018 2 commits
  10. 30 Nov, 2018 1 commit
  11. 29 Nov, 2018 1 commit
    • Aseem Garg's avatar
      Revert "[wasm] Add I64AtomicWait implementation" · f4775f1c
      Aseem Garg authored
      This reverts commit 9436e8a8.
      
      Reason for revert: Breaks TSAN.
      
      Original change's description:
      > [wasm] Add I64AtomicWait implementation
      > 
      > Bug=v8:8075
      > R=​adamk@chromium.org,binji@chromium.org
      > 
      > Change-Id: I11ef5daccd043123b23e60c93ee0df79cabe9ccd
      > Reviewed-on: https://chromium-review.googlesource.com/c/1342948
      > Reviewed-by: Adam Klein <adamk@chromium.org>
      > Reviewed-by: Ben Smith <binji@chromium.org>
      > Commit-Queue: Aseem Garg <aseemgarg@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#57917}
      
      TBR=binji@chromium.org,adamk@chromium.org,aseemgarg@chromium.org
      
      Change-Id: Ic82ce8794410a0d4d19de07abd9bb8a7aaff1c1c
      No-Presubmit: true
      No-Tree-Checks: true
      No-Try: true
      Reviewed-on: https://chromium-review.googlesource.com/c/1351303Reviewed-by: 's avatarAseem Garg <aseemgarg@chromium.org>
      Commit-Queue: Aseem Garg <aseemgarg@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#57919}
      f4775f1c
  12. 28 Nov, 2018 1 commit
  13. 26 Nov, 2018 1 commit
  14. 22 Nov, 2018 1 commit
  15. 20 Nov, 2018 1 commit
  16. 19 Nov, 2018 2 commits
  17. 13 Nov, 2018 1 commit
  18. 05 Nov, 2018 1 commit
  19. 29 Oct, 2018 3 commits
  20. 26 Oct, 2018 1 commit
    • Benedikt Meurer's avatar
      [async] Add Promise.all() support to --async-stack-traces. · 6f39ab89
      Benedikt Meurer authored
      This adds support for Promise.all() to --async-stack-traces (also at
      zero cost, since we can derive the relevant information from the resolve
      element closure and context). In case of `Promise.all(a)` the stack
      trace even tells you which element of `a` is responsible, for example
      
      ```js
      async function fine() {}
      async function thrower() { await fine(); throw new Error(); }
      async function test() { await Promise.all([fine(), thrower()]); }
      ```
      
      will generate the following stack trace
      
      ```
      Error
          at thrower (something.js:1:9)
          at async Promise.all (index 1)
          at async test (something.js:3:3)
      ```
      
      so it not only shows the async Promise.all() frames, but even tells the
      user exactly that the second element of `[fine(), thrower()]` is the
      relevant one.
      
      Bug: v8:7522
      Change-Id: I279a845888e06053cf0e3c9338ab71caabaabf45
      Reviewed-on: https://chromium-review.googlesource.com/c/1299248Reviewed-by: 's avatarYang Guo <yangguo@chromium.org>
      Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#57023}
      6f39ab89
  21. 25 Oct, 2018 1 commit
  22. 24 Oct, 2018 2 commits
    • 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
    • Mathias Bynens's avatar
      Port Array.of to Torque · dffba1ee
      Mathias Bynens authored
      Spec: https://tc39.github.io/ecma262/#sec-array.of
      
      Note that the `IsConstructor` abstract operation [1] is implemented
      as a `typeswitch`.
      
      [1] https://tc39.github.io/ecma262/#sec-isconstructor
      
      Bug: v8:8321
      Change-Id: I17af918c1d928faf8a630b35432876baa96da217
      Reviewed-on: https://chromium-review.googlesource.com/c/1296464Reviewed-by: 's avatarTobias Tebbi <tebbi@chromium.org>
      Commit-Queue: Mathias Bynens <mathias@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#56935}
      dffba1ee
  23. 23 Oct, 2018 2 commits
  24. 22 Oct, 2018 2 commits
  25. 18 Oct, 2018 2 commits
  26. 17 Oct, 2018 3 commits
  27. 16 Oct, 2018 2 commits
  28. 11 Oct, 2018 1 commit
    • Benedikt Meurer's avatar
      [async] Introduce dedicated JSAsyncFunctionObject. · a63987a4
      Benedikt Meurer authored
      This JSAsyncFunctionObject represents the implicit generator object
      inside of async functions, and also holds the outer promise for the
      async functions. This in turn allows us to get rid of the .promise
      in the Parser / BytecodeGenerator completely, and will make it
      possible to build zero-cost async stack traces independent of the
      concrete synchronous part of the stack frame (which currently breaks
      in Node.js).
      
      In the bytecode all the async function operations now take this new
      JSAsyncFunctionObject instead of passing both the .generator_object
      and the .promise, which further simplifies and shrinks the bytecode.
      It also reduces the size of async function frames, potentially making
      the suspend/resume cheaper.
      
      This also changes `await` to use intrinsics instead of calling to
      special JSFunctions on the native context, and thus reduces the size of
      the native contexts.
      
      Drive-by-fix: Introduce a dedicated JSCreateAsyncFunctionObject operator
      to TurboFan.
      
      Bug: v8:7253, v8:7522
      Change-Id: I2305302285156aa1f71328ecac70377abdd92c80
      Ref: nodejs/node#11865
      Design-Document: http://bit.ly/v8-zero-cost-async-stack-traces
      Reviewed-on: https://chromium-review.googlesource.com/c/1273049
      Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
      Reviewed-by: 's avatarSathya Gunasekaran <gsathya@chromium.org>
      Reviewed-by: 's avatarJaroslav Sevcik <jarin@chromium.org>
      Reviewed-by: 's avatarMaya Lekova <mslekova@chromium.org>
      Reviewed-by: 's avatarRoss McIlroy <rmcilroy@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#56554}
      a63987a4