1. 21 May, 2019 1 commit
  2. 23 Apr, 2019 1 commit
  3. 18 Dec, 2018 1 commit
  4. 26 Nov, 2018 1 commit
  5. 20 Sep, 2018 1 commit
  6. 31 Aug, 2018 1 commit
    • Benedikt Meurer's avatar
      [ic] Teach KeyedLoadICGeneric about ToName. · 923127f8
      Benedikt Meurer authored
      In the KeyedLoadICGeneric case the engine previously immediately fell
      back to the %KeyedGetProperty runtime function if the key was not a
      Name or a valid array index. This turns out to be really slow if a
      program passes for example objects as keys. Since we already have all
      the logic in place to convert an arbitrary JavaScript value to a Name,
      we can just call into ToName first and then operate on the result of
      that, which is significantly faster since C++ usually doesn't need to
      call back into JavaScript then to convert a JSReceiver into a Name.
      
      This also changes the ToName builtin to use the existing builtin for
      NonPrimitiveToPrimitive, which stays in JavaScript land completely.
      Since there's not really a point in inlining ToName into the call
      sites, the other uses were also changed to call the builtin instead,
      which saves some space and might also help with instruction cache
      utilization (especially when the ToName logic is more involved now).
      
      This improves the performance on the microbenchmark
      
      ```js
      const n = 1e7;
      const obj = {};
      const key = [1,2];
      
      const start = Date.now();
      for (let i = 0; i < n; ++i) {
        if (obj[key] === undefined) obj[key] = key;
      }
      print(`time: ${Date.now() - start} ms.`);
      ```
      
      by up to 36%. On the ARES-6 ML benchmark the steady state improves by up
      to ~7% and the overall mean for ARES-6 ML improves by up to ~6%. Further
      improvements might be possible here if the GetProperty builtin could be
      made faster for common prototype lookups like Symbol.toPrimitive and the
      "valueOf" and "toString" functions.
      
      Bug: v8:6344, v8:6670
      Change-Id: Ic3ac2bc4d4277836ef03039de4eda5c5f66a85da
      Reviewed-on: https://chromium-review.googlesource.com/1199022
      Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
      Reviewed-by: 's avatarJakob Kummerow <jkummerow@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#55540}
      923127f8
  7. 07 Aug, 2018 1 commit
  8. 23 Jul, 2018 1 commit
  9. 19 Jul, 2018 1 commit
    • Sigurd Schneider's avatar
      Revert "[turbofan] Inline Number constructor in certain cases" · c7a9af61
      Sigurd Schneider authored
      This reverts commit 9eca23e9.
      
      Reason for revert: Clusterfuzz correctness issue
      
      Original change's description:
      > [turbofan] Inline Number constructor in certain cases
      > 
      > This CL adds inlining for the Number constructor if new.target is not
      > present. The lowering is BigInt compatible, i.e. it converts BigInts to
      > numbers.
      > 
      > Bug: v8:7904
      > Change-Id: If03b9f872d82e50b6ded7709069181c33dc44e82
      > Reviewed-on: https://chromium-review.googlesource.com/1118557
      > Commit-Queue: Sigurd Schneider <sigurds@chromium.org>
      > Reviewed-by: Benedikt Meurer <bmeurer@chromium.org>
      > Reviewed-by: Georg Neis <neis@chromium.org>
      > Reviewed-by: Jaroslav Sevcik <jarin@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#54454}
      
      TBR=jarin@chromium.org,neis@chromium.org,sigurds@chromium.org,bmeurer@chromium.org
      
      # Not skipping CQ checks because original CL landed > 1 day ago.
      
      Bug: v8:7904
      Change-Id: Ie5fa6c1262b8acc33edb672a0124f4458fcded86
      Reviewed-on: https://chromium-review.googlesource.com/1142777Reviewed-by: 's avatarSigurd Schneider <sigurds@chromium.org>
      Commit-Queue: Sigurd Schneider <sigurds@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#54544}
      c7a9af61
  10. 16 Jul, 2018 1 commit
  11. 18 Jun, 2018 1 commit
  12. 27 Mar, 2018 1 commit
  13. 19 Feb, 2018 1 commit
  14. 16 Feb, 2018 1 commit
  15. 15 Feb, 2018 1 commit
  16. 07 Feb, 2018 1 commit
  17. 17 Jan, 2018 1 commit
  18. 20 Dec, 2017 1 commit
  19. 20 Nov, 2017 1 commit
  20. 25 Oct, 2017 1 commit
  21. 24 Oct, 2017 2 commits
  22. 11 Oct, 2017 1 commit
  23. 08 Sep, 2017 1 commit
  24. 19 Jul, 2017 1 commit
  25. 13 Jul, 2017 1 commit
  26. 11 Jul, 2017 1 commit
  27. 10 Jul, 2017 1 commit
  28. 22 Jun, 2017 1 commit
  29. 16 Jun, 2017 1 commit
  30. 14 Jun, 2017 1 commit
  31. 12 Jun, 2017 1 commit
  32. 08 Jun, 2017 1 commit
    • Ross McIlroy's avatar
      [TurboFan] Add typing for the EmptyString and use this for JSToPrimitiveToString · 2c296b7e
      Ross McIlroy authored
      Add the ability for the typer to track whether a string could be the empty
      string. This is needed for typed lowering of JSStringConcat since we can't
      create cons string chain with the empty string in arbitrary positions.
      
      The ToPrimitiveToString bytecode handler is modified to collect feedback on
      whether it has ever seen the empty string, which is used by
      SpeculativeToPrimitiveToString to ensure that the output is non-empty (or
      depot) which will subsiquently be used to enable inline cons-string creation
      for the JSStringConcat operator in typed lowering in a subsiquent CL.
      
      BUG=v8:6243
      
      Change-Id: I41b99b59798993f756aada8cff90fb137d65ea52
      Reviewed-on: https://chromium-review.googlesource.com/522122
      Commit-Queue: Ross McIlroy <rmcilroy@chromium.org>
      Reviewed-by: 's avatarJaroslav Sevcik <jarin@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#45786}
      2c296b7e
  33. 07 Jun, 2017 2 commits
  34. 15 May, 2017 1 commit
    • jgruber's avatar
      [csa] Add ToLength and ToString variants with inlined fast checks · 646fdaca
      jgruber authored
      Smis can easily be handled outside the stub call without adding much to code
      size.
      
      The ToString inlining adds overhead of repeated instance type loads and checks,
      but under the assumption that it is called with mostly string values it should
      speed things up (a local RegExp.p[@@replace] microbenchmark shows consistent
      1.6% improvements).
      
      Drive-by-fix: Remove duplication in ToString implementations.
      
      BUG=
      
      Review-Url: https://codereview.chromium.org/2874423003
      Cr-Commit-Position: refs/heads/master@{#45287}
      646fdaca
  35. 07 Apr, 2017 1 commit
  36. 06 Apr, 2017 1 commit
  37. 22 Mar, 2017 2 commits