1. 30 Jul, 2019 1 commit
    • Georgia Kouveli's avatar
      [arm64] Reduce code size of deoptimization exits · 207d6b35
      Georgia Kouveli authored
      Do not pass the deoptimization index in a register, instead infer it
      from the address we made the deoptimization call from. This makes the
      deoptimization exit sequence one instruction long instead of two.
      
      This requires emitting all deoptimization exits at the end of the
      function in a contiguous block, making sure no constant or veneer
      pools are emitted in between. This means that soft deoptimizations
      require an additional branch to the end of the function, which
      counteracts the removal of the move instruction, however soft
      deoptimizations are rare compared to eager and lazy ones.
      
      This reduces the code size of optimised functions for benchmarks like
      Octane and ARES-6 by about 4%.
      
      Change-Id: I771f9104a07de7931a4bb9c5836e25fb55b1a2a4
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1714876
      Commit-Queue: Georgia Kouveli <georgia.kouveli@arm.com>
      Reviewed-by: 's avatarMichael Starzinger <mstarzinger@chromium.org>
      Reviewed-by: 's avatarGeorg Neis <neis@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#62991}
      207d6b35
  2. 21 Jun, 2019 1 commit
  3. 24 May, 2019 2 commits
  4. 23 May, 2019 1 commit
  5. 21 May, 2019 1 commit
  6. 04 Apr, 2019 1 commit
  7. 26 Feb, 2019 1 commit
  8. 13 Feb, 2019 1 commit
  9. 21 Jan, 2019 1 commit
    • Michael Starzinger's avatar
      [wasm] Simplify safepoint-table encoding. · 6091e270
      Michael Starzinger authored
      This removes the unused "argument count" field from the safepoint table
      as the field was unused by now and always contained the value zero.
      
      Also note that associating a callee's argument count with the call-site
      is not compatible with tail-call support. When tail-calling a function
      with a different number of arguments, the information associated with
      the call-site becomes stale. The number of arguments is a property of
      the callee, not of the call-site in the caller. For this reason the
      field in question is not usable to support reference types in function
      arguments (at least when tail-calls are also supported).
      
      R=ahaas@chromium.org
      
      Change-Id: If667d729267f2dd2642b755c54235cc08ca9b141
      Reviewed-on: https://chromium-review.googlesource.com/c/1402548Reviewed-by: 's avatarAndreas Haas <ahaas@chromium.org>
      Commit-Queue: Michael Starzinger <mstarzinger@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#58969}
      6091e270
  10. 13 Dec, 2018 1 commit
    • Michael Starzinger's avatar
      [wasm] Allow storing of arguments count in a safepoint. · 366cddfa
      Michael Starzinger authored
      This overlays the "arguments count" and the "deoptimization index"
      fields within a safepoint entry. It allows for a larger value of
      arguments count to be stored in entries that do not contain a
      deoptimization index. Currently the arguments count is unused in
      TurboFan, but it will be used to handle reference type arguments in
      WebAssembly code.
      
      R=ahaas@chromium.org
      BUG=v8:7581
      
      Change-Id: I1e1d5af7e69288f046dc327de5d6e0466fc9ceaf
      Reviewed-on: https://chromium-review.googlesource.com/c/1371829
      Commit-Queue: Michael Starzinger <mstarzinger@chromium.org>
      Reviewed-by: 's avatarAndreas Haas <ahaas@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#58224}
      366cddfa
  11. 29 Nov, 2018 1 commit
  12. 12 Nov, 2018 1 commit
  13. 16 Oct, 2018 1 commit
  14. 11 Sep, 2018 1 commit
  15. 23 Aug, 2018 1 commit
  16. 22 Aug, 2018 1 commit
  17. 23 Jul, 2018 1 commit
  18. 11 Dec, 2017 1 commit
  19. 10 Nov, 2017 1 commit
  20. 13 Oct, 2017 1 commit
  21. 06 Sep, 2017 1 commit
    • Clemens Hammacher's avatar
      [assembler] Make Register et al. real classes · 9e995e12
      Clemens Hammacher authored
      Up to now, each architecture defined all Register types as structs,
      with lots of redundancy. An often found comment noted that they cannot
      be classes due to initialization order problems. As these problems are
      gone with C++11 constexpr constants, I now tried making Registers
      classes again.
      All register types now inherit from RegisterBase, which provides a
      default set of methods and named constructors (like ::from_code,
      code(), bit(), is_valid(), ...).
      This design allows to guarantee an interesting property: Each register
      is either valid, or it's the no_reg register. There are no other
      invalid registers. This is guaranteed statically by the constexpr
      constructor, and dynamically by ::from_code.
      
      I decided to disallow the default constructor completely, so instead of
      "Register reg;" you now need "Register reg = no_reg;". This makes
      explicit how the Register is initialized.
      
      I did this change to the x64, ia32, arm, arm64, mips and mips64 ports.
      Overall, code got much more compact and more safe. In theory, it should
      also increase performance (since the is_valid() check is simpler), but
      this is probably not measurable.
      
      R=mstarzinger@chromium.org
      
      Change-Id: I5ccfa4050daf4e146a557970e9d37fd3d2788d4a
      Reviewed-on: https://chromium-review.googlesource.com/650927Reviewed-by: 's avatarJakob Gruber <jgruber@chromium.org>
      Reviewed-by: 's avatarMichael Starzinger <mstarzinger@chromium.org>
      Reviewed-by: 's avatarIgor Sheludko <ishell@chromium.org>
      Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#47847}
      9e995e12
  22. 22 Aug, 2017 1 commit
  23. 02 Aug, 2017 1 commit
  24. 01 Aug, 2017 2 commits
  25. 23 May, 2017 1 commit
    • Clemens Hammacher's avatar
      Avoid emitting redundant safepoint info · df1cb4e8
      Clemens Hammacher authored
      Before emitting the safepoint table, remove consecutive identical
      entries (idential except for the pc of course). The lookup then
      searches for the last entry whose pc is <= the wanted pc.
      The lookup procedure can still be optimized to use binary search
      laster.
      
      This change decreases code size for wasm by 27.6% (on the unity
      benchmark).
      
      BUG=v8:6434
      
      Change-Id: I03481721fe666cd2c50a383380c74b06edf39106
      Reviewed-on: https://chromium-review.googlesource.com/512542
      Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
      Reviewed-by: 's avatarJaroslav Sevcik <jarin@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#45491}
      df1cb4e8
  26. 12 Apr, 2017 1 commit
  27. 20 Sep, 2016 1 commit
  28. 30 Sep, 2015 1 commit
  29. 30 Sep, 2014 1 commit
  30. 15 Sep, 2014 1 commit
  31. 25 Aug, 2014 1 commit
  32. 05 Aug, 2014 1 commit
  33. 04 Aug, 2014 1 commit
  34. 07 Jul, 2014 1 commit
  35. 03 Jun, 2014 1 commit
  36. 29 Apr, 2014 1 commit
  37. 12 Mar, 2014 1 commit
  38. 07 Nov, 2013 1 commit