1. 19 Apr, 2018 1 commit
  2. 18 Apr, 2018 1 commit
  3. 17 Apr, 2018 1 commit
  4. 16 Apr, 2018 1 commit
  5. 09 Apr, 2018 1 commit
  6. 06 Apr, 2018 3 commits
    • Leszek Swirski's avatar
      [objects] Merge SFI outer_scope_info and feedback_metadata · 6bd1d3c2
      Leszek Swirski authored
      Merge the outer_scope_info and feedback_metadata fields on
      SharedFunctionInfo. outer_scope_info is only used during parsing,
      and feedback_metadata is only available after compilation, so the
      two never exist at the same time. Thus, they can share a field slot.
      
      The exception is un-compiling and re-compiling a function, where we
      need the outer_scope_info again. Fortunately, the outer_scope_info
      can be re-calculated from the SFI's scope_info.
      
      Bug: v8:7606
      Cq-Include-Trybots: luci.chromium.try:linux_chromium_rel_ng
      Change-Id: I6b97fefe859e89df75ad870da4a0bfa4b869772a
      Reviewed-on: https://chromium-review.googlesource.com/992432Reviewed-by: 's avatarIgor Sheludko <ishell@chromium.org>
      Reviewed-by: 's avatarYang Guo <yangguo@chromium.org>
      Reviewed-by: 's avatarMichael Starzinger <mstarzinger@chromium.org>
      Reviewed-by: 's avatarCamillo Bruni <cbruni@chromium.org>
      Reviewed-by: 's avatarGeorg Neis <neis@chromium.org>
      Commit-Queue: Leszek Swirski <leszeks@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#52454}
      6bd1d3c2
    • Michael Achenbach's avatar
      Revert "[cleanup] Refactor the Factory" · 503e07c3
      Michael Achenbach authored
      This reverts commit f9a2e24b.
      
      Reason for revert: gc stress failures not all fixed by follow up.
      
      Original change's description:
      > [cleanup] Refactor the Factory
      > 
      > There is no good reason to have the meat of most objects' initialization
      > logic in heap.cc, all wrapped by the CALL_HEAP_FUNCTION macro. Instead,
      > this CL changes the protocol between Heap and Factory to be AllocateRaw,
      > and all object initialization work after (possibly retried) successful
      > raw allocation happens in the Factory.
      > 
      > This saves about 20KB of binary size on x64.
      > 
      > Cq-Include-Trybots: luci.v8.try:v8_linux_noi18n_rel_ng
      > Change-Id: Icbfdc4266d7be8b48d2fe085f03411743dc6a0ca
      > Reviewed-on: https://chromium-review.googlesource.com/959533
      > Commit-Queue: Jakob Kummerow <jkummerow@chromium.org>
      > Reviewed-by: Hannes Payer <hpayer@chromium.org>
      > Reviewed-by: Yang Guo <yangguo@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#52416}
      
      TBR=jkummerow@chromium.org,yangguo@chromium.org,mstarzinger@chromium.org,hpayer@chromium.org
      
      Change-Id: Idbbc53478742f3e9525eee83342afc6aedae122f
      No-Presubmit: true
      No-Tree-Checks: true
      No-Try: true
      Cq-Include-Trybots: luci.v8.try:v8_linux_noi18n_rel_ng
      Reviewed-on: https://chromium-review.googlesource.com/999414Reviewed-by: 's avatarMichael Achenbach <machenbach@chromium.org>
      Commit-Queue: Michael Achenbach <machenbach@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#52420}
      503e07c3
    • Jakob Kummerow's avatar
      [cleanup] Refactor the Factory · f9a2e24b
      Jakob Kummerow authored
      There is no good reason to have the meat of most objects' initialization
      logic in heap.cc, all wrapped by the CALL_HEAP_FUNCTION macro. Instead,
      this CL changes the protocol between Heap and Factory to be AllocateRaw,
      and all object initialization work after (possibly retried) successful
      raw allocation happens in the Factory.
      
      This saves about 20KB of binary size on x64.
      
      Cq-Include-Trybots: luci.v8.try:v8_linux_noi18n_rel_ng
      Change-Id: Icbfdc4266d7be8b48d2fe085f03411743dc6a0ca
      Reviewed-on: https://chromium-review.googlesource.com/959533
      Commit-Queue: Jakob Kummerow <jkummerow@chromium.org>
      Reviewed-by: 's avatarHannes Payer <hpayer@chromium.org>
      Reviewed-by: 's avatarYang Guo <yangguo@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#52416}
      f9a2e24b
  7. 27 Mar, 2018 1 commit
    • Tobias Tebbi's avatar
      [turbofan] unify interpreter and JIT speculation poisoning · 1ef6c437
      Tobias Tebbi authored
      This CL changes the poisoning in the interpreter to use the
      infrastructure used in the JIT.
      
      This does not change the original flag semantics:
      
      --branch-load-poisoning enables JIT mitigations as before.
      
      --untrusted-code-mitigation enables the interpreter mitigations
        (now realized using the compiler back-end), but does not enable
        the back-end based mitigations for the Javascript JIT. So in effect
        --untrusted-code-mitigation makes the CSA pipeline for bytecode handlers
        use the same mechanics (including changed register allocation) that
        --branch-load-poisoning enables for the JIT.
      
      Bug: chromium:798964
      Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel
      Change-Id: If7f6852ae44e32e6e0ad508e9237f24dec7e5b27
      Reviewed-on: https://chromium-review.googlesource.com/928881Reviewed-by: 's avatarRoss McIlroy <rmcilroy@chromium.org>
      Reviewed-by: 's avatarJaroslav Sevcik <jarin@chromium.org>
      Commit-Queue: Tobias Tebbi <tebbi@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#52243}
      1ef6c437
  8. 26 Mar, 2018 1 commit
  9. 23 Mar, 2018 1 commit
  10. 22 Mar, 2018 4 commits
  11. 21 Mar, 2018 2 commits
  12. 20 Mar, 2018 2 commits
  13. 16 Mar, 2018 3 commits
  14. 08 Mar, 2018 2 commits
    • Tobias Tebbi's avatar
      [turbofan] [cleanup] remove UnalignedLoadRepresentation · 501f250c
      Tobias Tebbi authored
      UnalignedLoad is the only kind of load operation that defines its own
      UnalignedLoadRepresentation type alias and LoadRepresentationOf function.
      This is a problem because it means we cannot use the LOAD_MATCHER
      infrastructure without defining all of this boilerplate for all the other
      kinds of load operations. Since these aliases serve no real purpose,
      it is best to unify UnalignedLoad to how its peers are handled.
      
      Change-Id: I51a591eb82fb85edee66512136b23276e851f767
      Reviewed-on: https://chromium-review.googlesource.com/951683
      Commit-Queue: Tobias Tebbi <tebbi@chromium.org>
      Reviewed-by: 's avatarBenedikt Meurer <bmeurer@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#51802}
      501f250c
    • Jaroslav Sevcik's avatar
      [turbofan] IA32 port of branch load poisoning. · 383ec7b5
      Jaroslav Sevcik authored
      The tricky part here is to take away one register from register
      allocation for the mask. The only problem is with calls that need
      an input operand to be passed in the poison register. For such calls,
      we change the register constraint in the instruction selector
      to pass the value in whatever place the register allocator sees fit.
      During code generation, we then copy the value from that place
      to the poison register. By that time, the mask is not necessary
      (once we bake the mask into the target, it should be done before
      this move).
      
      For the branches, the mask update does not use cmov (unlike x64)
      because cmov does not take an immediate and we do not have
      a scratch register. Instead we use bit-twiddling tricks
      (suggested by @tebbi). For example, here is the code for masking
      register update after a bailout on non-zero:
      
        jnz deopt_bailout    ;; Bailout branch
        setnz bl             ;; These three instructions update the mask
        add  ebx, 255
        sar  ebx, 31
      
      (On x64, the sequence is:
      
        jnz deopt_bailout
        mov r10, 0      ;; We have a scratch register for zero
        cmovnz r9, r10  ;; Set to zero if we execute this branch
                        ;; in branch mis-speculation
      )
      
      
      This CL also fixes a bug in register configuration, where we used
      to wrongly restrict the array of register name.
      
      Change-Id: I5fceff2faf8bdc527d9934afc284b749574ab69e
      Bug: chromium:798964
      Reviewed-on: https://chromium-review.googlesource.com/946251
      Commit-Queue: Jaroslav Sevcik <jarin@chromium.org>
      Reviewed-by: 's avatarBenedikt Meurer <bmeurer@chromium.org>
      Reviewed-by: 's avatarMichael Starzinger <mstarzinger@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#51798}
      383ec7b5
  15. 05 Mar, 2018 1 commit
  16. 02 Mar, 2018 1 commit
  17. 23 Feb, 2018 5 commits
  18. 22 Feb, 2018 3 commits
  19. 21 Feb, 2018 1 commit
  20. 20 Feb, 2018 1 commit
  21. 15 Feb, 2018 2 commits
  22. 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
  23. 09 Feb, 2018 1 commit