1. 09 Aug, 2018 1 commit
  2. 08 Aug, 2018 2 commits
  3. 07 Aug, 2018 1 commit
  4. 06 Aug, 2018 1 commit
    • Sathya Gunasekaran's avatar
      [Intl] Optimize Intl.PluralRules · cdb4d913
      Sathya Gunasekaran authored
      Previously, Intl.PluralRules was mostly implemented in JavaScript. This
      patch moves most of the constructor and parts of other methods to C++.
      
      The size of the Intl.PluralRules object is reduced by not storing
      MinimumIntegerDigits, MinimumFractionDigits, MaximumFractionDigits,
      MinimumSignificantDigits, MaximumSignificantDigits. Instead these are
      looked up from icu::DecimalFormat as required.
      
      Another optimziation is that we don't create the result of
      resolvedOptions when the Intl.PluralRules object is constructed, but
      instead defer until this method is called. In the future, we may want
      to cache the result.
      
      This patch also cleans up several error handling paths that shouldn't
      happen with ICU and instead just crashes should it ever happen.
      
      Bug: v8:5751
      Cq-Include-Trybots: luci.v8.try:v8_linux_noi18n_rel_ng
      Change-Id: I84c5aa6c25c35fe2d336693dee1b36bf3dcd4a79
      Reviewed-on: https://chromium-review.googlesource.com/1158701
      Commit-Queue: Sathya Gunasekaran <gsathya@chromium.org>
      Reviewed-by: 's avatarMichael Starzinger <mstarzinger@chromium.org>
      Reviewed-by: 's avatarJungshik Shin <jshin@chromium.org>
      Reviewed-by: 's avatarCamillo Bruni <cbruni@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#54917}
      cdb4d913
  5. 01 Aug, 2018 1 commit
  6. 28 Jul, 2018 1 commit
    • Frank Tang's avatar
      Reland "[Intl] move localeCompare to C++" · 22c7dd2e
      Frank Tang authored
      This is a reland of 51ad234f
      
      With a manual layout rebaseline of js/fast/string-prototype-properties
      [1], this CL can be relanded without breaking the layout test.
      
      [1] https://chromium-review.googlesource.com/c/chromium/src/+/1154289
      also marks the test for skipping until this fix is rolled to Chromium.
      
      
      Original change's description:
      > [Intl] move localeCompare to C++
      >
      >
      > Bug: v8:7958
      > Cq-Include-Trybots: luci.v8.try:v8_linux_noi18n_rel_ng
      > Change-Id: I84a27dda5205c8581a7ffe37213d685cc49974fa
      > Reviewed-on: https://chromium-review.googlesource.com/1144644
      > Commit-Queue: Frank Tang <ftang@chromium.org>
      > Reviewed-by: Sathya Gunasekaran <gsathya@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#54740}
      
      TBR=ftang@chromium.org, gsathya@chromium.org
      
      Bug: v8:7958
      Test: layout test: js/fast/string-prototype-properties
      Change-Id: Ic546349fcbc935917ded018801f7d942e50565d5
      Cq-Include-Trybots: luci.v8.try:v8_linux_noi18n_rel_ng
      Cq-Include-Trybots: luci.chromium.try:linux_chromium_rel_ng
      Reviewed-on: https://chromium-review.googlesource.com/1154247
      Commit-Queue: Jungshik Shin <jshin@chromium.org>
      Reviewed-by: 's avatarJungshik Shin <jshin@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#54772}
      22c7dd2e
  7. 27 Jul, 2018 2 commits
  8. 26 Jul, 2018 1 commit
  9. 19 Jul, 2018 1 commit
  10. 17 Jul, 2018 1 commit
  11. 10 Jul, 2018 1 commit
  12. 06 Jul, 2018 2 commits
  13. 05 Jul, 2018 2 commits
  14. 19 Jun, 2018 1 commit
  15. 15 Jun, 2018 1 commit
  16. 15 May, 2018 1 commit
  17. 14 May, 2018 1 commit
  18. 08 May, 2018 1 commit
  19. 04 May, 2018 2 commits
  20. 03 May, 2018 1 commit
  21. 25 Apr, 2018 1 commit
  22. 23 Apr, 2018 1 commit
  23. 09 Apr, 2018 1 commit
  24. 05 Apr, 2018 1 commit
  25. 03 Apr, 2018 1 commit
  26. 28 Mar, 2018 1 commit
  27. 12 Mar, 2018 1 commit
  28. 05 Mar, 2018 1 commit
    • Benedikt Meurer's avatar
      [es2015] Refactor the JSArrayIterator. · 06ee127b
      Benedikt Meurer authored
      This changes the JSArrayIterator to always have only a single instance
      type, instead of the zoo of instance types that we had before, and
      which became less useful with the specification update to when "next"
      is loaded from the iterator now. This greatly simplifies the baseline
      implementation of the array iterator, which now only looks at the
      iterated object during %ArrayIteratorPrototype%.next invocations.
      
      In TurboFan we introduce a new JSCreateArrayIterator operator, that
      holds the IterationKind and get's the iterated object as input. When
      optimizing %ArrayIteratorPrototype%.next in the JSCallReducer, we
      check whether the receiver is a JSCreateArrayIterator, and if so,
      we try to infer maps for the iterated object from there. If we find
      any, we speculatively assume that these won't have changed during
      iteration (as we did before with the previous approach), and generate
      fast code for both JSArray and JSTypedArray iteration.
      
      Drive-by-fix: Drop the fast_array_iteration protector, it's not
      necessary anymore since we have the deoptimization guard bit in
      the JSCallReducer now.
      
      This addresses the performance cliff noticed in webpack 4. The minimal
      repro on the tracking bug goes from
      
        console.timeEnd: mono, 124.773000
        console.timeEnd: poly, 670.353000
      
      to
      
        console.timeEnd: mono, 118.709000
        console.timeEnd: poly, 141.393000
      
      so that's a 4.7x improvement.
      
      Also make presubmit happy by adding the missing #undef's.
      
      Bug: v8:7510, v7:7514
      Change-Id: I79a46bfa2cd0f0710e09365ef72519b1bbb667b5
      Reviewed-on: https://chromium-review.googlesource.com/946098Reviewed-by: 's avatarSigurd Schneider <sigurds@chromium.org>
      Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#51725}
      06ee127b
  29. 02 Mar, 2018 5 commits
    • Camillo Bruni's avatar
      [factory] Use NewFixedArrayWithMap where possible · edff7520
      Camillo Bruni authored
      This prevents us from accidentally overwriting the default map of the
      empty_fixed_array since NewFixedArray might just return that.
      
      Change-Id: Id2fd20db1c07ec0289905ce5b0e12b5530a60229
      Reviewed-on: https://chromium-review.googlesource.com/942923Reviewed-by: 's avatarUlan Degenbaev <ulan@chromium.org>
      Commit-Queue: Camillo Bruni <cbruni@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#51692}
      edff7520
    • Georg Neis's avatar
      Reland "[parsing] inline ArrayLiteral creation for spread calls" · 82345e9f
      Georg Neis authored
      This reverts commit f48e7349.
      
      Reason for revert: innocent!!
      
      Original change's description:
      > Revert "[parsing] inline ArrayLiteral creation for spread calls"
      > 
      > This reverts commit 93fc3841.
      > 
      > Reason for revert: may break node.js integration
      > 
      > Original change's description:
      > > [parsing] inline ArrayLiteral creation for spread calls
      > > 
      > > Instead of using runtime calls to generate the Array Literal passed to
      > > %reflect_call / %reflect_construct, we create an ArrayLiteral from the
      > > list of arguments, and perform spreads using the interpreter mechanism for
      > > spreading in ArrayLiterals (thus, the spreading becomes inline). This
      > > array literal is still passed to %reflect_call / %reflect_construct as
      > > before.
      > > 
      > > This cuts the runtime for bench-spread-call.js -> testSpread roughly in
      > > half, and will likely improve further once
      > > https://chromium-review.googlesource.com/c/v8/v8/+/915364 has landed.
      > > 
      > > BUG=v8:7446
      > > R=​neis@chromium.org, adamk@chromium.org
      > > 
      > > Change-Id: I74a6acd3a60aad422e4ac575275c7b567659d8ad
      > > Reviewed-on: https://chromium-review.googlesource.com/939587
      > > Commit-Queue: Georg Neis <neis@chromium.org>
      > > Reviewed-by: Georg Neis <neis@chromium.org>
      > > Reviewed-by: Benedikt Meurer <bmeurer@chromium.org>
      > > Cr-Commit-Position: refs/heads/master@{#51678}
      > 
      > TBR=adamk@chromium.org,neis@chromium.org,caitp@igalia.com,bmeurer@chromium.org
      > 
      > Change-Id: I4730077591bce0e5e7b2ce7d59678e8b7135cc08
      > No-Presubmit: true
      > No-Tree-Checks: true
      > No-Try: true
      > Bug: v8:7446
      > Reviewed-on: https://chromium-review.googlesource.com/945769
      > Reviewed-by: Sigurd Schneider <sigurds@chromium.org>
      > Commit-Queue: Sigurd Schneider <sigurds@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#51682}
      
      TBR=adamk@chromium.org,neis@chromium.org,sigurds@chromium.org,caitp@igalia.com,bmeurer@chromium.org
      
      Change-Id: I977513bea06a4f3fba03fa4a89270298475422e2
      No-Presubmit: true
      No-Tree-Checks: true
      No-Try: true
      Bug: v8:7446
      Reviewed-on: https://chromium-review.googlesource.com/945808Reviewed-by: 's avatarGeorg Neis <neis@chromium.org>
      Commit-Queue: Georg Neis <neis@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#51686}
      82345e9f
    • Benedikt Meurer's avatar
      [es2015] Extend the array iterator protector. · 1525374f
      Benedikt Meurer authored
      Previously the array iterator protector only guarded the lookup of the
      @@iterator symbol on the initial Array.prototype, and we had to use an
      additional map check on the %ArrayIteratorPrototype% to ensure that no
      one messed with the next() method.  This CL extends the array iterator
      protector to also guard the lookup of %ArrayIteratorPrototype%.next.
      
      This simplifies the code quite a bit and makes it more robust for cases
      where someone has to install additional methods on the iterator
      prototype, i.e. a custom async iterator.
      
      Bug: v8:7510, v8:7514
      Change-Id: Ie6080bb837a91a2b60b224597121470614210660
      Reviewed-on: https://chromium-review.googlesource.com/945728Reviewed-by: 's avatarPeter Marshall <petermarshall@chromium.org>
      Reviewed-by: 's avatarBenedikt Meurer <bmeurer@chromium.org>
      Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#51684}
      1525374f
    • Sigurd Schneider's avatar
      Revert "[parsing] inline ArrayLiteral creation for spread calls" · f48e7349
      Sigurd Schneider authored
      This reverts commit 93fc3841.
      
      Reason for revert: may break node.js integration
      
      Original change's description:
      > [parsing] inline ArrayLiteral creation for spread calls
      > 
      > Instead of using runtime calls to generate the Array Literal passed to
      > %reflect_call / %reflect_construct, we create an ArrayLiteral from the
      > list of arguments, and perform spreads using the interpreter mechanism for
      > spreading in ArrayLiterals (thus, the spreading becomes inline). This
      > array literal is still passed to %reflect_call / %reflect_construct as
      > before.
      > 
      > This cuts the runtime for bench-spread-call.js -> testSpread roughly in
      > half, and will likely improve further once
      > https://chromium-review.googlesource.com/c/v8/v8/+/915364 has landed.
      > 
      > BUG=v8:7446
      > R=​neis@chromium.org, adamk@chromium.org
      > 
      > Change-Id: I74a6acd3a60aad422e4ac575275c7b567659d8ad
      > Reviewed-on: https://chromium-review.googlesource.com/939587
      > Commit-Queue: Georg Neis <neis@chromium.org>
      > Reviewed-by: Georg Neis <neis@chromium.org>
      > Reviewed-by: Benedikt Meurer <bmeurer@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#51678}
      
      TBR=adamk@chromium.org,neis@chromium.org,caitp@igalia.com,bmeurer@chromium.org
      
      Change-Id: I4730077591bce0e5e7b2ce7d59678e8b7135cc08
      No-Presubmit: true
      No-Tree-Checks: true
      No-Try: true
      Bug: v8:7446
      Reviewed-on: https://chromium-review.googlesource.com/945769Reviewed-by: 's avatarSigurd Schneider <sigurds@chromium.org>
      Commit-Queue: Sigurd Schneider <sigurds@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#51682}
      f48e7349
    • Caitlin Potter's avatar
      [parsing] inline ArrayLiteral creation for spread calls · 93fc3841
      Caitlin Potter authored
      Instead of using runtime calls to generate the Array Literal passed to
      %reflect_call / %reflect_construct, we create an ArrayLiteral from the
      list of arguments, and perform spreads using the interpreter mechanism for
      spreading in ArrayLiterals (thus, the spreading becomes inline). This
      array literal is still passed to %reflect_call / %reflect_construct as
      before.
      
      This cuts the runtime for bench-spread-call.js -> testSpread roughly in
      half, and will likely improve further once
      https://chromium-review.googlesource.com/c/v8/v8/+/915364 has landed.
      
      BUG=v8:7446
      R=neis@chromium.org, adamk@chromium.org
      
      Change-Id: I74a6acd3a60aad422e4ac575275c7b567659d8ad
      Reviewed-on: https://chromium-review.googlesource.com/939587
      Commit-Queue: Georg Neis <neis@chromium.org>
      Reviewed-by: 's avatarGeorg Neis <neis@chromium.org>
      Reviewed-by: 's avatarBenedikt Meurer <bmeurer@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#51678}
      93fc3841
  30. 26 Feb, 2018 1 commit
  31. 20 Feb, 2018 1 commit
    • Benedikt Meurer's avatar
      [async-await] Turn await closures into intrinsics. · d97bb317
      Benedikt Meurer authored
      There's no need to have the AsyncFunctionAwait/AsyncGeneratorAwait
      operations as separate closures that are called via JavaScript calling
      convention, but instead we can just have them as intrinsics (with the
      goal to eventually turn them into IC stubs).
      
      Drive-by-fix: Tail call to the ResumeGenerator builtin when resuming
      an async function. The earlier restrictions no only apply with the new
      machinery.
      
      Bug: v8:7253
      Change-Id: I0c4d04dae15b4211158fc07151adafda69d4faec
      Reviewed-on: https://chromium-review.googlesource.com/924703Reviewed-by: 's avatarYang Guo <yangguo@chromium.org>
      Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#51382}
      d97bb317