1. 07 Mar, 2018 1 commit
  2. 05 Mar, 2018 3 commits
  3. 23 Feb, 2018 1 commit
    • Adam Klein's avatar
      Simplify FunctionKind, saving 4 bits in SharedFunctionInfo · 9f9550ef
      Adam Klein authored
      Since we only need to store 18 different function kinds,
      the bitfield approach was wasting space (requiring 11 bits).
      
      This patch replaces the bitfield with a regular enum, and
      updates all the FunctionKind predicates to use comparisons
      instead of bitwise ops.
      
      For the small amount of builtin code that depended upon being
      able to do masking to determine whether something is a class
      constructor, we still store two extra bits on FunctionKind,
      which are computed when the SFI is initialized.
      
      If this approach causes performance regressions (i.e., if it
      turns out that other code was implicitly depending on masking
      for fast checks), we can revert this or address it in
      other ways (e.g., by doing similar caching of repeated checks
      in the caller).
      
      This is a reland of 42667bab.
      
      Bug: v8:7310
      Change-Id: I2ec54289ea687399c61d75b7aff2d849861a64f2
      Reviewed-on: https://chromium-review.googlesource.com/934864Reviewed-by: 's avatarSathya Gunasekaran <gsathya@chromium.org>
      Commit-Queue: Adam Klein <adamk@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#51534}
      9f9550ef
  4. 22 Feb, 2018 1 commit
    • Benedikt Meurer's avatar
      [cleanup] Introduce a dedicated FeedbackCell. · aff1f378
      Benedikt Meurer authored
      This is preparatory cleanup work for eventually tracking the functions
      (rather than concrete closures) in the CALL_IC, also for builtins like
      the default PromiseCapability [[Resolve]] and [[Reject]] functions. It
      adds a new FeedbackCell type, which is used by JSFunctions consistently
      now to reference the feedback vector (or undefined if not the function
      is not compiled yet or is a native/asm.js function).
      
      This also changes the calling convention for FastNewClosure builtin and
      the JSCreateClosure operator in TurboFan to carry the FeedbackCell here
      instead of the parent FeedbackVector and the slot index. In addition we
      eliminate the now unused %InterpreterNewClosure runtime function.
      
      Bug: v8:2206, v8:7253, v8:7310
      Change-Id: Ib4ce456e276e0273e57c163dcdd0b33abf863656
      Reviewed-on: https://chromium-review.googlesource.com/928403
      Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
      Reviewed-by: 's avatarMichael Stanton <mvstanton@chromium.org>
      Reviewed-by: 's avatarMichael Starzinger <mstarzinger@chromium.org>
      Reviewed-by: 's avatarRoss McIlroy <rmcilroy@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#51474}
      aff1f378
  5. 12 Feb, 2018 1 commit
    • Ross McIlroy's avatar
      [Ignition] [TurboFan] Generate speculation poison in code generator. · a021b6c4
      Ross McIlroy authored
      Moves generation of speculation poison to be based on the PC target vs the
      actual PC being executed. The speculation poison is generated in the prologue
      of the generated code if CompilationInfo::kGenerateSpeculationPoison is set.
      The result is stored in a known register, which can then be read using the
      SpeculationPoison machine node.
      
      Currently we need to ensure the SpeculationPoison node is scheduled right after
      the code prologue so that the poison register doesn't get clobbered. This is
      currently not verified, however it's only use is in RawMachineAssembler where
      it is manually scheduled early.
      
      The Ignition bytecode handlers are updated to use this speculation poison
      rather than one generated by comparing the target bytecode.
      
      BUG=chromium:798964
      
      Change-Id: I2a3d0cfc694e88d7a8fe893282bd5082f693d5e2
      Reviewed-on: https://chromium-review.googlesource.com/893160
      Commit-Queue: Ross McIlroy <rmcilroy@chromium.org>
      Reviewed-by: 's avatarJaroslav Sevcik <jarin@chromium.org>
      Reviewed-by: 's avatarMichael Starzinger <mstarzinger@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#51229}
      a021b6c4
  6. 02 Feb, 2018 1 commit
  7. 29 Jan, 2018 2 commits
  8. 22 Jan, 2018 1 commit
  9. 18 Jan, 2018 1 commit
  10. 16 Jan, 2018 1 commit
  11. 13 Jan, 2018 1 commit
    • Michael Achenbach's avatar
      Revert "Simplify FunctionKind, saving 4 bits in SharedFunctionInfo" · bb7138f6
      Michael Achenbach authored
      This reverts commit 42667bab.
      
      Reason for revert: Breaks msvc compile:
      https://build.chromium.org/p/client.v8/builders/V8%20Win64%20-%20msvc/builds/908
      
      Original change's description:
      > Simplify FunctionKind, saving 4 bits in SharedFunctionInfo
      > 
      > Since we only need to store 18 different function kinds,
      > the bitfield approach was wasting space (requiring 11 bits).
      > 
      > This patch replaces the bitfield with a regular enum, and
      > updates all the FunctionKind predicates to use comparisons
      > instead of bitwise ops.
      > 
      > For the small amount of builtin code that depended upon being
      > able to do masking to determine whether something is a class
      > constructor, we still store two extra bits on FunctionKind,
      > which are computed when the SFI is initialized.
      > 
      > If this approach causes performance regressions (i.e., if it
      > turns out that other code was implicitly depending on masking
      > for fast checks), we can revert this or address it in
      > other ways (e.g., by doing similar caching of repeated checks
      > in the caller).
      > 
      > Change-Id: Iebb3214f564ea8bd7b21e78fda33517d63247124
      > Reviewed-on: https://chromium-review.googlesource.com/860896
      > Commit-Queue: Adam Klein <adamk@chromium.org>
      > Reviewed-by: Sathya Gunasekaran <gsathya@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#50559}
      
      TBR=adamk@chromium.org,gsathya@chromium.org
      
      Change-Id: I8e1faa0ca6213d1e70a00fcb417b1bfa35ebd643
      No-Presubmit: true
      No-Tree-Checks: true
      No-Try: true
      Reviewed-on: https://chromium-review.googlesource.com/866310Reviewed-by: 's avatarMichael Achenbach <machenbach@chromium.org>
      Commit-Queue: Michael Achenbach <machenbach@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#50561}
      bb7138f6
  12. 12 Jan, 2018 1 commit
    • Adam Klein's avatar
      Simplify FunctionKind, saving 4 bits in SharedFunctionInfo · 42667bab
      Adam Klein authored
      Since we only need to store 18 different function kinds,
      the bitfield approach was wasting space (requiring 11 bits).
      
      This patch replaces the bitfield with a regular enum, and
      updates all the FunctionKind predicates to use comparisons
      instead of bitwise ops.
      
      For the small amount of builtin code that depended upon being
      able to do masking to determine whether something is a class
      constructor, we still store two extra bits on FunctionKind,
      which are computed when the SFI is initialized.
      
      If this approach causes performance regressions (i.e., if it
      turns out that other code was implicitly depending on masking
      for fast checks), we can revert this or address it in
      other ways (e.g., by doing similar caching of repeated checks
      in the caller).
      
      Change-Id: Iebb3214f564ea8bd7b21e78fda33517d63247124
      Reviewed-on: https://chromium-review.googlesource.com/860896
      Commit-Queue: Adam Klein <adamk@chromium.org>
      Reviewed-by: 's avatarSathya Gunasekaran <gsathya@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#50559}
      42667bab
  13. 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
  14. 10 Jan, 2018 2 commits
  15. 09 Jan, 2018 1 commit
  16. 04 Jan, 2018 1 commit
  17. 21 Dec, 2017 2 commits
  18. 08 Dec, 2017 2 commits
  19. 07 Dec, 2017 1 commit
  20. 30 Nov, 2017 2 commits
  21. 16 Nov, 2017 1 commit
  22. 15 Nov, 2017 2 commits
  23. 13 Nov, 2017 1 commit
  24. 09 Nov, 2017 1 commit
  25. 01 Nov, 2017 1 commit
  26. 27 Oct, 2017 1 commit
    • Georgia Kouveli's avatar
      [arm64] Rewrite Generate_InterpreterPushArgs and its callers. · 01bd06f4
      Georgia Kouveli authored
      This moves the handling of the receiver and the final spread argument
      into Generate_InterpreterPushArgs and merges the stack allocation to a
      single claim operation for the whole argument setup. When we start
      padding arguments in TF, we will simply need to claim one extra slot
      and store padreg to it in Generate_InterpreterPushArgs (hence the
      remaining TODO).
      
      This also replaces the single use of Generate_CheckStackOverflow with
      Generate_StackOverflowCheck and removes the former. This change is also
      done for arm, ia32 and x64.
      
      Bug: v8:6644
      Change-Id: I8d06dda96dbc4a6f219b73c711f894320c2f6cdf
      Reviewed-on: https://chromium-review.googlesource.com/738031
      Commit-Queue: Georgia Kouveli <georgia.kouveli@arm.com>
      Reviewed-by: 's avatarRoss McIlroy <rmcilroy@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#49005}
      01bd06f4
  27. 25 Oct, 2017 4 commits
  28. 24 Oct, 2017 1 commit
    • Clemens Hammacher's avatar
      Allow constexpr RegList construction from Registers · fd306a06
      Clemens Hammacher authored
      Before, the standard way to create a RegList was either:
      RegList list = (1 << 0) | (1 << 1) | ...
      or
      RegList list = rax.bit() | rdx.bit() | ...
      
      The first way allows to make the RegList constexpr, but needs comments
      to document which registers you are referring to, and it has no checks
      that all bits you set on the RegList actually belong to valid registers.
      The second one uses the symbolic names, hence is much more readable and
      makes it harder to construct invalid RegLists. It's not constexpr
      though, since the {bit()} method on the register types is not constexpr.
      
      This CL adds a constexpr accessor to get the code and bit of a
      constexpr Register, and adds a helper method to create a constexpr
      RegList like this:
      constexpr RegList list = Register::ListOf<rax, rdx, rdi>();
      
      This new method is used in a number of places to test its
      applicability. Other uses of the old pattern remain and can be cleaned
      up later.
      
      R=tebbi@chromium.org
      
      Change-Id: Ie7b1d6342dc5f316dcfedd0363b3540ad5e7f413
      Reviewed-on: https://chromium-review.googlesource.com/728026
      Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
      Reviewed-by: 's avatarTobias Tebbi <tebbi@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#48887}
      fd306a06
  29. 20 Oct, 2017 1 commit