1. 14 Aug, 2018 3 commits
    • Georgia Kouveli's avatar
      [arm64] Clean up of move operations. · de3f3cf0
      Georgia Kouveli authored
      * Perform the lookups into the builtins constant table and external reference
        table in the generic version of Mov that accepts an Operand source. This
        makes sure we do not miss looking up constants and external references when
        the generic Mov is called.
      * Remove Mov(ExternalReference) as ExternalReference can be implicitly converted
        to an Operand.
      * Remove two Move functions that are unused in architecture-independent code.
        Replace their uses in arm64-specific code with the generic Mov, which does all
        the necessary work now.
      
      Change-Id: Ibbcee6ba22f661984cd830717e14c9b35a1fba0a
      Reviewed-on: https://chromium-review.googlesource.com/1172351
      Commit-Queue: Georgia Kouveli <georgia.kouveli@arm.com>
      Reviewed-by: 's avatarJakob Gruber <jgruber@chromium.org>
      Reviewed-by: 's avatarSigurd Schneider <sigurds@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#55121}
      de3f3cf0
    • Benedikt Meurer's avatar
      [turbofan] Further optimize DataView accesses. · 5fecd146
      Benedikt Meurer authored
      This adds support for unaligned load/store access to the DataView
      backing store and uses byteswap operations to fix up the endianess
      when necessary. This changes the Word32ReverseBytes operator to be
      a required operator and adds the missing support on the Intel and
      ARM platforms (on 64-bit platforms the Word64ReverseBytes operator
      is also mandatory now).
      
      This further improves the performance on the dataviewperf.js test
      mentioned in the tracking bug by up to 40%, and at the same time
      reduces the code complexity in the EffectControlLinearizer.
      
      Bug: chromium:225811
      Change-Id: I7c1ec826faf46a144a5a9068f8f815a5fd040997
      Reviewed-on: https://chromium-review.googlesource.com/1174252Reviewed-by: 's avatarSigurd Schneider <sigurds@chromium.org>
      Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#55111}
      5fecd146
    • Leszek Swirski's avatar
      Revert "[turbofan] Further optimize DataView accesses." · 6a62d88e
      Leszek Swirski authored
      This reverts commit c46915b9.
      
      Reason for revert: Disasm failures https://ci.chromium.org/p/v8/builders/luci.v8.ci/V8%20Linux%20-%20debug/21727 
      
      Original change's description:
      > [turbofan] Further optimize DataView accesses.
      > 
      > This adds support for unaligned load/store access to the DataView
      > backing store and uses byteswap operations to fix up the endianess
      > when necessary. This changes the Word32ReverseBytes operator to be
      > a required operator and adds the missing support on the Intel and
      > ARM platforms (on 64-bit platforms the Word64ReverseBytes operator
      > is also mandatory now).
      > 
      > This further improves the performance on the dataviewperf.js test
      > mentioned in the tracking bug by up to 40%, and at the same time
      > reduces the code complexity in the EffectControlLinearizer.
      > 
      > Bug: chromium:225811
      > Change-Id: I296170b828c2ccc1c317ed37840b564aa14cdec2
      > Reviewed-on: https://chromium-review.googlesource.com/1172777
      > Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
      > Reviewed-by: Sigurd Schneider <sigurds@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#55099}
      
      TBR=sigurds@chromium.org,bmeurer@chromium.org
      
      Change-Id: If7a62e3a1a4ad26823fcbd2ab6eb4c053ad11c49
      No-Presubmit: true
      No-Tree-Checks: true
      No-Try: true
      Bug: chromium:225811
      Reviewed-on: https://chromium-review.googlesource.com/1174171Reviewed-by: 's avatarLeszek Swirski <leszeks@chromium.org>
      Commit-Queue: Leszek Swirski <leszeks@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#55107}
      6a62d88e
  2. 13 Aug, 2018 1 commit
    • Benedikt Meurer's avatar
      [turbofan] Further optimize DataView accesses. · c46915b9
      Benedikt Meurer authored
      This adds support for unaligned load/store access to the DataView
      backing store and uses byteswap operations to fix up the endianess
      when necessary. This changes the Word32ReverseBytes operator to be
      a required operator and adds the missing support on the Intel and
      ARM platforms (on 64-bit platforms the Word64ReverseBytes operator
      is also mandatory now).
      
      This further improves the performance on the dataviewperf.js test
      mentioned in the tracking bug by up to 40%, and at the same time
      reduces the code complexity in the EffectControlLinearizer.
      
      Bug: chromium:225811
      Change-Id: I296170b828c2ccc1c317ed37840b564aa14cdec2
      Reviewed-on: https://chromium-review.googlesource.com/1172777
      Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
      Reviewed-by: 's avatarSigurd Schneider <sigurds@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#55099}
      c46915b9
  3. 26 Jun, 2018 1 commit
    • Sigurd Schneider's avatar
      [turbofan] Support kRootRegisterBias on all platforms · ba39d635
      Sigurd Schneider authored
      We had a kRootRegisterBias on x64 before. This CL ports the feature to
      all other platforms as well. The root register bias is helpful to adjust
      the value of the root register, which allows to better utilize signed
      immediate offset constants in load instructions.
      
      We currently use a separate add instruction to add kRootRegisterBias
      in the code that initializes the root register. This could be improved
      by adding a custom relocation mode ensuring that instead of the root
      address, the root address plus the bias is inserted (and in this way
      the add instruction can be omitted).
      
      Bug: v8:6666
      Change-Id: I55cf02ab85d11e3c6d0d83a8f7905dbf924890f1
      Reviewed-on: https://chromium-review.googlesource.com/1113539
      Commit-Queue: Sigurd Schneider <sigurds@chromium.org>
      Reviewed-by: 's avatarJakob Gruber <jgruber@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#54023}
      ba39d635
  4. 21 Jun, 2018 1 commit
  5. 19 Jun, 2018 1 commit
  6. 05 Jun, 2018 1 commit
  7. 04 Jun, 2018 1 commit
  8. 28 May, 2018 1 commit
  9. 26 Apr, 2018 3 commits
  10. 27 Feb, 2018 1 commit
    • Mike Stanton's avatar
      Reland "[turbofan] Masking/poisoning in codegen (optimized code, arm64)" · 7c51c944
      Mike Stanton authored
      This is a reland of 800daded.
      
      Original change's description:
      > [turbofan] Masking/poisoning in codegen (optimized code, arm64)
      > 
      > This introduces masking of loads with speculation bit during code generation.
      > At the moment, this is done only under the
      > --branch-load-poisoning flag, and this CL enlarges the set of supported
      > platforms from {x64, arm} to {x64, arm, arm64}.
      > 
      > Overview of changes:
      > - new register configuration configuration with one register reserved for
      >   the speculation poison/mask (kSpeculationPoisonRegister).
      > - in codegen, we introduce an update to the poison register at the starts
      >   of all successors of branches (and deopts) that are marked as safety
      >   branches (deopts).
      > - in memory optimizer, we lower all field and element loads to PoisonedLoads.
      > - poisoned loads are then masked in codegen with the poison register.
      >   * only integer loads are masked at the moment.
      > 
      > Bug: chromium:798964
      > Change-Id: Ie6bc9c3bdac9998b0ef81f050a9c844399ca3ae4
      > Reviewed-on: https://chromium-review.googlesource.com/928724
      > Commit-Queue: Michael Stanton <mvstanton@chromium.org>
      > Reviewed-by: Martyn Capewell <martyn.capewell@arm.com>
      > Reviewed-by: Ross McIlroy <rmcilroy@chromium.org>
      > Reviewed-by: Jaroslav Sevcik <jarin@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#51576}
      
      Bug: chromium:798964
      Change-Id: I6c87d34c4e05fca0bd7f5447555133ecb0fb7a2e
      Reviewed-on: https://chromium-review.googlesource.com/939402Reviewed-by: 's avatarMartyn Capewell <martyn.capewell@arm.com>
      Reviewed-by: 's avatarJaroslav Sevcik <jarin@chromium.org>
      Commit-Queue: Michael Stanton <mvstanton@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#51602}
      7c51c944
  11. 26 Feb, 2018 2 commits
    • Adam Klein's avatar
      Revert "[turbofan] Masking/poisoning in codegen (optimized code, arm64)" · 797d3df0
      Adam Klein authored
      This reverts commit 800daded.
      
      Reason for revert: breaks arm64 build
      
      Original change's description:
      > [turbofan] Masking/poisoning in codegen (optimized code, arm64)
      > 
      > This introduces masking of loads with speculation bit during code generation.
      > At the moment, this is done only under the
      > --branch-load-poisoning flag, and this CL enlarges the set of supported
      > platforms from {x64, arm} to {x64, arm, arm64}.
      > 
      > Overview of changes:
      > - new register configuration configuration with one register reserved for
      >   the speculation poison/mask (kSpeculationPoisonRegister).
      > - in codegen, we introduce an update to the poison register at the starts
      >   of all successors of branches (and deopts) that are marked as safety
      >   branches (deopts).
      > - in memory optimizer, we lower all field and element loads to PoisonedLoads.
      > - poisoned loads are then masked in codegen with the poison register.
      >   * only integer loads are masked at the moment.
      > 
      > Bug: chromium:798964
      > Change-Id: Ie6bc9c3bdac9998b0ef81f050a9c844399ca3ae4
      > Reviewed-on: https://chromium-review.googlesource.com/928724
      > Commit-Queue: Michael Stanton <mvstanton@chromium.org>
      > Reviewed-by: Martyn Capewell <martyn.capewell@arm.com>
      > Reviewed-by: Ross McIlroy <rmcilroy@chromium.org>
      > Reviewed-by: Jaroslav Sevcik <jarin@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#51576}
      
      TBR=rmcilroy@chromium.org,mvstanton@chromium.org,mstarzinger@chromium.org,jarin@chromium.org,rodolph.perfetta@arm.com,martyn.capewell@arm.com,pierre.langlois@arm.com
      
      Change-Id: I1b5dad27f9620c7da3277602081f392de6221caf
      No-Presubmit: true
      No-Tree-Checks: true
      No-Try: true
      Bug: chromium:798964
      Reviewed-on: https://chromium-review.googlesource.com/937861Reviewed-by: 's avatarAdam Klein <adamk@chromium.org>
      Commit-Queue: Adam Klein <adamk@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#51578}
      797d3df0
    • Mike Stanton's avatar
      [turbofan] Masking/poisoning in codegen (optimized code, arm64) · 800daded
      Mike Stanton authored
      This introduces masking of loads with speculation bit during code generation.
      At the moment, this is done only under the
      --branch-load-poisoning flag, and this CL enlarges the set of supported
      platforms from {x64, arm} to {x64, arm, arm64}.
      
      Overview of changes:
      - new register configuration configuration with one register reserved for
        the speculation poison/mask (kSpeculationPoisonRegister).
      - in codegen, we introduce an update to the poison register at the starts
        of all successors of branches (and deopts) that are marked as safety
        branches (deopts).
      - in memory optimizer, we lower all field and element loads to PoisonedLoads.
      - poisoned loads are then masked in codegen with the poison register.
        * only integer loads are masked at the moment.
      
      Bug: chromium:798964
      Change-Id: Ie6bc9c3bdac9998b0ef81f050a9c844399ca3ae4
      Reviewed-on: https://chromium-review.googlesource.com/928724
      Commit-Queue: Michael Stanton <mvstanton@chromium.org>
      Reviewed-by: 's avatarMartyn Capewell <martyn.capewell@arm.com>
      Reviewed-by: 's avatarRoss McIlroy <rmcilroy@chromium.org>
      Reviewed-by: 's avatarJaroslav Sevcik <jarin@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#51576}
      800daded
  12. 21 Feb, 2018 2 commits
  13. 29 Jan, 2018 1 commit
  14. 26 Jan, 2018 1 commit
  15. 18 Jan, 2018 1 commit
  16. 15 Jan, 2018 1 commit
  17. 11 Jan, 2018 1 commit
    • Martyn Capewell's avatar
      Reland "[arm64] Switch jssp to csp" · c6ea0328
      Martyn Capewell authored
      This is a reland of 50baf934
      
      This fixes the number of expected instructions in MaybeCallEntryHookDelayed,
      only exposed by nosnap tests.
      
      Original change's description:
      > [arm64] Switch jssp to csp
      >
      > Switch stack pointer to using csp directly, making jssp redundant.
      >
      > Bug: v8:6644
      > Change-Id: I8e38eda50d56a25161b187c0a033608dd9f90239
      > Reviewed-on: https://chromium-review.googlesource.com/860097
      > Reviewed-by: Benedikt Meurer <bmeurer@chromium.org>
      > Commit-Queue: Martyn Capewell <martyn.capewell@arm.com>
      > Cr-Commit-Position: refs/heads/master@{#50487}
      
      Bug: v8:6644
      Change-Id: Ie9a969ccbf00fd7a7cff8f45b73cdb6bc4f17df9
      Reviewed-on: https://chromium-review.googlesource.com/860639Reviewed-by: 's avatarBenedikt Meurer <bmeurer@chromium.org>
      Commit-Queue: Martyn Capewell <martyn.capewell@arm.com>
      Cr-Commit-Position: refs/heads/master@{#50513}
      c6ea0328
  18. 10 Jan, 2018 2 commits
  19. 04 Jan, 2018 1 commit
  20. 21 Dec, 2017 1 commit
    • Georgia Kouveli's avatar
      [arm64] Pad function arguments. · 5d10735e
      Georgia Kouveli authored
      This patch updates the instruction selector and code generator to pad arguments
      for arm64 and drop an even number of slots when dropping the arguments. It also
      updates the builtins that handle arguments. These changes need to be made at
      the same time.
      
      It also adds some tests for forwarding varargs, as this was affected by the
      builtin changes and the existing tests did not catch all issues.
      
      Bug: v8:6644
      Change-Id: I81318d1d1c9ab2568f84f2bb868d2a2d4cb56053
      Reviewed-on: https://chromium-review.googlesource.com/829933
      Commit-Queue: Georgia Kouveli <georgia.kouveli@arm.com>
      Reviewed-by: 's avatarBenedikt Meurer <bmeurer@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#50259}
      5d10735e
  21. 05 Dec, 2017 1 commit
  22. 18 Oct, 2017 2 commits
  23. 13 Oct, 2017 1 commit
  24. 28 Sep, 2017 1 commit
  25. 27 Sep, 2017 1 commit
  26. 12 Sep, 2017 1 commit
  27. 14 Aug, 2017 1 commit
  28. 25 Jul, 2017 1 commit
  29. 13 Jul, 2017 1 commit
  30. 07 Jul, 2017 1 commit
  31. 06 Jul, 2017 1 commit
  32. 31 May, 2017 1 commit
    • neis's avatar
      [compiler] Delay allocation of code-embedded heap numbers. · 659e8f7b
      neis authored
      Instead of allocating and embedding certain heap numbers into the code
      during code assembly, emit dummies but record the allocation requests.
      Later then, in Assembler::GetCode, allocate the heap numbers and patch
      the code by replacing the dummies with the actual objects. The
      RelocInfos for the embedded objects are already recorded correctly when
      emitting the dummies.
      
      R=jarin@chromium.org
      BUG=v8:6048
      
      Review-Url: https://codereview.chromium.org/2900683002
      Cr-Commit-Position: refs/heads/master@{#45635}
      659e8f7b