1. 27 May, 2019 3 commits
  2. 24 May, 2019 1 commit
  3. 23 May, 2019 5 commits
  4. 22 May, 2019 1 commit
  5. 21 May, 2019 1 commit
  6. 20 May, 2019 4 commits
  7. 17 May, 2019 3 commits
  8. 16 May, 2019 3 commits
  9. 15 May, 2019 1 commit
  10. 14 May, 2019 2 commits
  11. 10 May, 2019 1 commit
  12. 08 May, 2019 2 commits
  13. 06 May, 2019 1 commit
  14. 02 May, 2019 2 commits
    • Seth Brenith's avatar
      Touch guard pages when allocating stack frames · df8548cd
      Seth Brenith authored
      On Windows, expanding the stack by more than 4 KB at a time can cause
      access violations. This change fixes a few known cases (and includes
      unit tests for those), and attempts to make stack expansion more
      consistent overall by using the AllocateStackSpace helper method
      everywhere we can, even when the offset is a small constant.
      
      On arm64, there was already a consistent method for stack pointer
      manipulation using the Claim and Drop methods, so Claim is updated to
      touch every page.
      
      Bug: v8:9017
      Change-Id: I2dbbceeebbdefaf45803e9b621fe83f52234a395
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1570666
      Commit-Queue: Seth Brenith <seth.brenith@microsoft.com>
      Reviewed-by: 's avatarMichael Starzinger <mstarzinger@chromium.org>
      Reviewed-by: 's avatarClemens Hammacher <clemensh@chromium.org>
      Reviewed-by: 's avatarJakob Gruber <jgruber@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#61186}
      df8548cd
    • Pierre Langlois's avatar
      [arm][arm64] Do not allocate temp registers for the write barrier. · 3f1a59f4
      Pierre Langlois authored
      Improve code generation for stores with write barriers slightly by using the
      assembler's dedicated scratch registers (x16 and x17 on Arm64, ip on Arm)
      instead of allocating temporaries.
      
      To do this, we've done two things:
      
        - Use ip as a scratch register when loading page flags.
      
        - TurboAssembler::CallRecordWriteStub() now takes the offset of the slot
          that's written to rather than its address, removing the need to allocate a
          temporary register for it.
      
      In essence, we've gone from:
      
      ```
      ;; Do the store.
      stur x19, [x9, #15]
      ;; Check *destination* object page flags and jump out-of-line.
      and x4, x9, #0xfffffffffff80000
      ldr x4, [x4, #8]
      tbnz x4, #2, #+0x1e7c
      |     ;; Check *source* object page flags.
      | `-> and x4, x19, #0xfffffffffff80000
      |     ldr x4, [xM, #8]
      |,--- tbz x4, #1, #-0x1e80
      |     ;; Compute address of slot.
      |     add x5, x9, #0xf (15)
      |     ;; Setup arguments to RecordWrite
      |     stp x2, x3, [sp, #-32]!
      |     stp x4, lr, [sp, #16]
      |     stp x0, x1, [sp, #-16]!
      |     mov x0, x9 ;; Object address in x9
      |     mov x1, x5 ;; Slot address in x5
      |     movz x2, #0x0
      |     movz x3, #0x100000000
      |     ;; Call RecordWrite
      |     ldr x16, pc+2056
      |     blr x16
      ```
      
      Which allocates x4 and x5 as temporaries.
      
      To:
      
      ```
      stur x19, [x9, #15]
      and x16, x9, #0xfffffffffff80000 ;; Using x16 instead of allocating x4.
      ldr x16, [x16, #8]
      tbnz x16, #2, #+0x1e7c
      | `-> and x16, x19, #0xfffffffffff80000
      |     ldr x16, [xM, #8]
      |,--- tbz x16, #1, #-0x1e80
      |     stp x2, x3, [sp, #-32]!
      |     stp x4, lr, [sp, #16]
      |     stp x0, x1, [sp, #-16]!
      |     mov x0, x9            ;; Object address still in x9.
      |     add x1, x9, #0xf (15) ;; Compute the slot address directly.
      |     movz x2, #0x0
      |     movz x3, #0x100000000
      |     ldr x16, pc+2056
      |     blr x16
      ```
      
      Finally, `RecordWriteField()` does not need an extra scratch register anymore.
      
      Change-Id: Icb71310e7b8ab1ca83ced250851456166b337d00
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1505793
      Commit-Queue: Pierre Langlois <pierre.langlois@arm.com>
      Reviewed-by: 's avatarSigurd Schneider <sigurds@chromium.org>
      Reviewed-by: 's avatarUlan Degenbaev <ulan@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#61153}
      3f1a59f4
  15. 30 Apr, 2019 1 commit
    • Mike Stanton's avatar
      Reland "[ptr-compr] New RelocInfo for compressed pointers." · ed319e84
      Mike Stanton authored
      Failure addressed by not exposing the new test to the jitless environment.
      (jgruber@ on TBR).
      
      New enum RelocInfo::COMPRESSED_EMBEDDED_OBJECT created to support
      compressed pointers in generated code. Enum name EMBEDDED_OBJECT
      changed to FULL_EMBEDDED_OBJECT.
      
      RelocInfo::[set_]target_object() abstract away the difference between
      FULL_EMBEDDED_OBJECT and COMPRESSED_EMBEDDED_OBJECT.
      
      Compressed embedded objects can only be created at this time on
      x64 with pointer compression turned on. Arm64 constant pools don't
      support compressed objects at this time.
      
      NOPRESUBMIT=true
      
      Bug: v8:7703
      TBR: jgruber@chromium.org
      Change-Id: Ifff53b041bab09b4b8c3e16085e5df4aa2b99f4f
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1588461Reviewed-by: 's avatarMichael Stanton <mvstanton@chromium.org>
      Reviewed-by: 's avatarJakob Gruber <jgruber@chromium.org>
      Commit-Queue: Michael Stanton <mvstanton@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#61104}
      ed319e84
  16. 29 Apr, 2019 4 commits
    • Ross McIlroy's avatar
      Revert "[ptr-compr] New RelocInfo for compressed pointers." · 7e677b2e
      Ross McIlroy authored
      This reverts commit b5da9fcb.
      
      Reason for revert: Breaks pointer compression bot:
      https://ci.chromium.org/p/v8/builders/ci/V8%20Linux64%20-%20pointer%20compression/3098
      
      Original change's description:
      > [ptr-compr] New RelocInfo for compressed pointers.
      > 
      > New enum RelocInfo::COMPRESSED_EMBEDDED_OBJECT created to support
      > compressed pointers in generated code. Enum name EMBEDDED_OBJECT
      > changed to FULL_EMBEDDED_OBJECT.
      > 
      > RelocInfo::[set_]target_object() abstract away the difference between
      > FULL_EMBEDDED_OBJECT and COMPRESSED_EMBEDDED_OBJECT.
      > 
      > Compressed embedded objects can only be created at this time on
      > x64 with pointer compression turned on. Arm64 constant pools don't
      > support compressed objects at this time.
      > 
      > Bug: v8:7703
      > Change-Id: I03bfd84effa33c65cf9bcefa5df680ab7eace9dd
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1547661
      > Commit-Queue: Michael Stanton <mvstanton@chromium.org>
      > Reviewed-by: Michael Starzinger <mstarzinger@chromium.org>
      > Reviewed-by: Jakob Gruber <jgruber@chromium.org>
      > Reviewed-by: Igor Sheludko <ishell@chromium.org>
      > Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#61076}
      
      TBR=ulan@chromium.org,mvstanton@chromium.org,mstarzinger@chromium.org,jgruber@chromium.org,ishell@chromium.org
      
      Change-Id: I262b2b98315fa987c5a66b1050dc726563ccdb2d
      No-Presubmit: true
      No-Tree-Checks: true
      No-Try: true
      Bug: v8:7703
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1588135Reviewed-by: 's avatarRoss McIlroy <rmcilroy@chromium.org>
      Commit-Queue: Ross McIlroy <rmcilroy@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#61087}
      7e677b2e
    • Clemens Hammacher's avatar
      [cleanup] Use Vector::begin instead of Vector::start · 4b0f9c85
      Clemens Hammacher authored
      Our {Vector} template provides both {start} and {begin} methods. They
      return exactly the same value. Since the {begin} method is needed for
      iteration, and is also what standard containers provide, this CL
      switches all uses of the {start} method to use {begin} instead.
      
      Patchset 1 was auto-generated by using this clang AST matcher:
          callExpr(
              callee(
                cxxMethodDecl(
                  hasName("start"),
                  ofClass(hasName("v8::internal::Vector")))
              ),
              argumentCountIs(0))
      
      Patchset 2 was created by running clang-format. Patchset 3 then
      removes the now unused {Vector::start} method.
      
      R=jkummerow@chromium.org
      TBR=mstarzinger@chromium.org,yangguo@chromium.org,verwaest@chromium.org
      
      Bug: v8:9183
      Change-Id: Id9f01c92870872556e2bb3f6d5667463b0e3e5c6
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1587381Reviewed-by: 's avatarJakob Kummerow <jkummerow@chromium.org>
      Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#61081}
      4b0f9c85
    • Joey Gouly's avatar
      Reland "[arm64] Cleanup TODO around handling of x18" · 4f65233f
      Joey Gouly authored
      This is a reland of 7a2651cb
      
      x18 is not allocatable nor callee-saved in v8, so stop comparing
      the before/after value in tests.
      
      Presumably the Nexus failure was due to printf on that platform
      clobbering x18.
      This can be reproduced locally by modifying `CorruptAllCallerSavedCPURegister`
      to also corrupt x18.
      
      CQ_INCLUDE_TRYBOTS=luci.v8.try:v8_android_arm64_n5x_rel_ng
      
      Original change's description:
      > [arm64] Cleanup TODO around handling of x18
      >
      > Use `padreg` instead of x18 to maintain alignment in the CPURegList.
      >
      > Also clean up some comments and tidy up RequiredStackSizeForCallerSaved
      > and PushCallerSaved.
      >
      > Change-Id: I80a780e5649e69a1746c43f37c2d1d875120c7a0
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1581609
      > Reviewed-by: Jakob Gruber <jgruber@chromium.org>
      > Commit-Queue: Martyn Capewell <martyn.capewell@arm.com>
      > Cr-Commit-Position: refs/heads/master@{#60987}
      
      Change-Id: I7c023a4706a98bcb9aa5acd37016a6d01e3979a6
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1583762Reviewed-by: 's avatarJakob Gruber <jgruber@chromium.org>
      Commit-Queue: Martyn Capewell <martyn.capewell@arm.com>
      Cr-Commit-Position: refs/heads/master@{#61078}
      4f65233f
    • Mike Stanton's avatar
      [ptr-compr] New RelocInfo for compressed pointers. · b5da9fcb
      Mike Stanton authored
      New enum RelocInfo::COMPRESSED_EMBEDDED_OBJECT created to support
      compressed pointers in generated code. Enum name EMBEDDED_OBJECT
      changed to FULL_EMBEDDED_OBJECT.
      
      RelocInfo::[set_]target_object() abstract away the difference between
      FULL_EMBEDDED_OBJECT and COMPRESSED_EMBEDDED_OBJECT.
      
      Compressed embedded objects can only be created at this time on
      x64 with pointer compression turned on. Arm64 constant pools don't
      support compressed objects at this time.
      
      Bug: v8:7703
      Change-Id: I03bfd84effa33c65cf9bcefa5df680ab7eace9dd
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1547661
      Commit-Queue: Michael Stanton <mvstanton@chromium.org>
      Reviewed-by: 's avatarMichael Starzinger <mstarzinger@chromium.org>
      Reviewed-by: 's avatarJakob Gruber <jgruber@chromium.org>
      Reviewed-by: 's avatarIgor Sheludko <ishell@chromium.org>
      Reviewed-by: 's avatarUlan Degenbaev <ulan@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#61076}
      b5da9fcb
  17. 26 Apr, 2019 1 commit
  18. 25 Apr, 2019 1 commit
  19. 24 Apr, 2019 1 commit
  20. 18 Apr, 2019 1 commit
  21. 16 Apr, 2019 1 commit