1. 07 Jun, 2021 1 commit
  2. 04 Jun, 2021 1 commit
  3. 02 Jun, 2021 1 commit
  4. 27 May, 2021 1 commit
  5. 25 May, 2021 1 commit
  6. 24 May, 2021 1 commit
  7. 21 May, 2021 1 commit
  8. 20 May, 2021 1 commit
  9. 10 May, 2021 1 commit
  10. 06 May, 2021 1 commit
    • Fanchen Kong's avatar
      Collect receiver to feedback for prototype.apply · 519c82ce
      Fanchen Kong authored
      When a function is invoked by prototype.apply, it may undergo following transformation in the JSCallReducer:
      	receiver.apply(this, args) ->
      	this.receiver(...args) Since the new target (also the receiver of apply()) is not collected to the feedback slot, further speculative optimization on the new target is not available if the new target
      is not a heapconstant.
      
      With this CL, the receiver will be collected to the feedback instead of the target if the target is a prototype.apply. It may improve the performance of the following usecase by ~80%.
      
      function reduceArray(func, arr, r) {
          for (var i = 0, len = arr.length; i < len; i++) {
                  r = func.apply(null, r, arr[i]);
          }
          return r;
      }
      
      var a = 0; for (var i = 0; i < 10000000; i++) {
          a += reduceArray(Math.imul, [5,6,2,3,7,6,8,3,7,9,2,5,], 1);
      }
      console.log(a);
      
      This CL also improves the runTime score of JetStream2/richards-wasm by ~45% in default, ~60% with --turbo-inline-js-wasm-calls.
      
      Change-Id: I542eb8d3fcb592f4e0993af93ba1af70e89c3982
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2639813
      Commit-Queue: Fanchen Kong <fanchen.kong@intel.com>
      Reviewed-by: 's avatarRoss McIlroy <rmcilroy@chromium.org>
      Reviewed-by: 's avatarGeorg Neis <neis@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#74413}
      519c82ce
  11. 29 Apr, 2021 1 commit
  12. 28 Apr, 2021 1 commit
  13. 27 Apr, 2021 2 commits
  14. 23 Apr, 2021 2 commits
    • Nico Hartmann's avatar
      [TurboFan] Streamline BigInt.asUintN lowering · 98300313
      Nico Hartmann authored
      This CL applies the following changes:
      - JSCallReducer no longer generates a CheckBigInt in front of the
        generated BigIntAsUintN.
      - This results in a slight change of the semantics of the latter, which
        now includes the necessary type check. Typer and Verifier are changed
        accordingly.
      - The BigIntAsUintN operator is now effectful, since it can now deopt.
      - IrOpcode::kBigIntAsUintN is now lowered in SimplifedLowering instead
        of EffectControlLinearizer, the necessary type check is introduced
        by the RepresentationChanger.
      - Adds a small mjsunit test to check the correct deoptimization behavior
        of optimized BigInt.asUintN.
      ==> Remove UseInfo::TruncatingWord64()!
      
      Drive-by: Fix an issue in ChangeUnaryToPureBinaryOp when the new_input
      is at index 1.
      Drive-by: Introduce an %Is64Bit() intrinsic to allow tests to
      distinguish 32 and 64 bit architectures.
      
      Bug: v8:11682
      Change-Id: I448f892d3bd2280d731ae5b248c833de8faf1bd5
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2843816
      Commit-Queue: Nico Hartmann <nicohartmann@chromium.org>
      Reviewed-by: 's avatarGeorg Neis <neis@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#74147}
      98300313
    • Georg Neis's avatar
      [compiler] Aggressively lower pure dead operations to DeadValue · 01a93417
      Georg Neis authored
      Bug: chromium:1195650
      Change-Id: Ia18c053d54aa62ecafc387688dfb57ee63d2a09c
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2831490Reviewed-by: 's avatarNico Hartmann <nicohartmann@chromium.org>
      Commit-Queue: Georg Neis <neis@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#74145}
      01a93417
  15. 22 Apr, 2021 1 commit
    • Jakob Gruber's avatar
      [compiler] Support GetPropertyAccessInfo in a concurrent setting · 1277bb5c
      Jakob Gruber authored
      Until this CL, the JSHeapBroker::GetPropertyAccessInfo (GPAI) process
      was as follows:
      
       1. GPAI is called on the main thread (MT) during the serialization
          phase to create and cache PAIs.
       2. GPAI is called again from the background thread (BT); only cached
          PAIs from step 1 are usable.
      
      As part of concurrent inlining, the goal is to move GPAI fully to the
      background thread. This CL takes a major step in that direction by
      making GPAI itself callable from the BT without resorting solely to PAIs
      that were previously cached on the MT.
      
      There are two main reasons why GPAI previously had to run on the MT:
      
       a) Concurrent access to Maps and other heap objects.
       b) Serialization and creation of ObjectRefs for objects discovered
          during GPAI.
      
      This CL addresses only reason a) and leaves b) for future work. This
      is done by keeping the two-pass approach, s.t. the initial call of
      GPAI on the MT discovers and serializes objects. We then clear all
      cached PAIs. The second call of GPAI on the BT thus runs full logic in a
      concurrent setting.
      
      Once all relevant objects (= maps and prototypes) no longer require
      MT-serialization, reason b) is also addressed and the first pass can be
      removed.
      
      The new logic is implemented behind the runtime flag
      --turbo-concurrent-get-property-access-info (default true), intended
      to be removed in the future.
      
      Bug: v8:7790
      Change-Id: Idbdbfe091d7316529246a686bb6d71c2a0f06f8b
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2817793
      Commit-Queue: Jakob Gruber <jgruber@chromium.org>
      Auto-Submit: Jakob Gruber <jgruber@chromium.org>
      Reviewed-by: 's avatarIgor Sheludko <ishell@chromium.org>
      Reviewed-by: 's avatarGeorg Neis <neis@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#74120}
      1277bb5c
  16. 21 Apr, 2021 2 commits
  17. 20 Apr, 2021 2 commits
    • Maya Lekova's avatar
      Reland "[fastcall] Add support for leaf interface type checks" · 5540fbfc
      Maya Lekova authored
      This is a reland of 6124a534
      
      It fixes a UAF issue in the d8 test by moving the test API object
      constructor to PerIsolateData. It also fixes a crash in Chromium
      caused by current usage of v8::ApiObject, which should be migrated
      to v8::Value*.
      
      Original change's description:
      > [fastcall] Add support for leaf interface type checks
      >
      > This CL adds an IsTemplateForApiObject method to FunctionTemplate
      > allowing the embedder to check whether a given API object was
      > instantiated by this template without including parent templates
      > in the search. It also replaces the v8::ApiObject in the fast API
      > with a raw v8::Value pointer to allow use of standard C++ casts.
      >
      > Bug: chromium:1052746
      > Change-Id: I0812ec8b4daaa5f5005aabf10b63e1e84e0b8f03
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2595310
      > Commit-Queue: Maya Lekova <mslekova@chromium.org>
      > Reviewed-by: Georg Neis <neis@chromium.org>
      > Reviewed-by: Camillo Bruni <cbruni@chromium.org>
      > Reviewed-by: Sathya Gunasekaran  <gsathya@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#73999}
      
      Bug: chromium:1052746, chromium:1199900
      Change-Id: I4b7f0c9e9152919dde4a1d0c48fbf5ac8c5b13d8
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2835711Reviewed-by: 's avatarGeorg Neis <neis@chromium.org>
      Reviewed-by: 's avatarSathya Gunasekaran  <gsathya@chromium.org>
      Reviewed-by: 's avatarCamillo Bruni <cbruni@chromium.org>
      Commit-Queue: Maya Lekova <mslekova@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#74064}
      5540fbfc
    • Patrick Thier's avatar
      Reland "[test] Rework Allocation Site Pretenuring Tests" · bb070c66
      Patrick Thier authored
      This is a reland of df52b65d
      
      Skip test with variant stress-concurrent-allocation.
      The test manually triggers pretenuring for allocation sites, but with
      --stress-concurrent-allocation these pretenuring decisions are reset
      due to low survival rate in old generation.
      
      Original change's description:
      > [test] Rework Allocation Site Pretenruing Tests
      >
      > - Add %PretenureAllocationSite to manually force pretenuring for an
      > allocation site during the next GC.
      > - Replace cctest test-compiler/DecideToPretenureDuringCompilation, which
      > was not triggering the tested behaviour anymore with mjsunit test
      > - Add tests for deoptimizations due to pretenuring decision changes
      > during OSR.
      >
      > Bug: chromium:1193094
      > Change-Id: I5d6c35e2914b705bf96f27051a4a286413b6fe26
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2825593
      > Commit-Queue: Patrick Thier <pthier@chromium.org>
      > Reviewed-by: Maya Lekova <mslekova@chromium.org>
      > Reviewed-by: Dominik Inführ <dinfuehr@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#74032}
      
      Bug: chromium:1193094
      Change-Id: I366a4a074435ebffcf2b3af84152067731cd2a5e
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2839550Reviewed-by: 's avatarDominik Inführ <dinfuehr@chromium.org>
      Reviewed-by: 's avatarMaya Lekova <mslekova@chromium.org>
      Commit-Queue: Patrick Thier <pthier@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#74062}
      bb070c66
  18. 19 Apr, 2021 3 commits
  19. 16 Apr, 2021 3 commits
  20. 13 Apr, 2021 1 commit
    • Maya Lekova's avatar
      [turbofan] Move large array allocation bailout earlier · 930f2654
      Maya Lekova authored
      The CanAllocateArray used to be executed during JSCreateLowering,
      leading to bailouts when large arrays are passed as arguments to
      an async function or a bound function. This meant that
      JSCreateAsyncFunctionObject or JSCreateBoundFunction will reach
      JSGenericLowering, where they are not lowered. This CL moves
      the checks earlier in the pipeline during JSNativeContextSpecialization
      and JSCallReducer respectively, so that those operators are not
      created at all in such cases and we bail out to the runtime instead.
      
      Bug: v8:11564
      Change-Id: I232ce7d9378730ae0cc8690e52fde840a484e069
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2807609
      Commit-Queue: Maya Lekova <mslekova@chromium.org>
      Reviewed-by: 's avatarGeorg Neis <neis@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#73928}
      930f2654
  21. 12 Apr, 2021 5 commits
  22. 08 Apr, 2021 2 commits
  23. 07 Apr, 2021 1 commit
  24. 06 Apr, 2021 1 commit
  25. 31 Mar, 2021 1 commit
    • Frank Emrich's avatar
      [dict-proto] TF support for constants in dictionary mode protos, pt. 4 · c9b4f3c4
      Frank Emrich authored
      This CL is part of a  series that implements Turbofan support for
      property accesses satisfying the following conditions:
      1. The holder is a dictionary mode object.
      2. The holder is a prototype.
      3. The access is a load.
      
      This feature will only be enabled if the build flag
      v8_dict_property_const_tracking is set.
      
      This particular CL modifies existing mjsunit tests whose assumptions
      don't hold if v8_dict_property_const_tracking is enabled. This is
      done by adding special handling for the case that
      %IsDictPropertyConstTrackingEnabled() holds.
      
      Bug: v8:11248
      Change-Id: Ia36be73e4659a988b2471f0c8151b0442f3a98f5
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2780292
      Commit-Queue: Igor Sheludko <ishell@chromium.org>
      Reviewed-by: 's avatarGeorg Neis <neis@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#73745}
      c9b4f3c4
  26. 25 Mar, 2021 2 commits