1. 20 Oct, 2020 12 commits
    • gengjiawen's avatar
      [arm64][msvc] fix arm64 build on msvc · 45e49775
      gengjiawen authored
      See: https://github.com/nodejs/node/pull/35415#issuecomment-707828213Co-authored-by: 's avatarRichard Townsend <richard.townsend@arm.com>
      Change-Id: I440644f55dc8c8ec3108e5015ebbce2829dd8207
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2479602Reviewed-by: 's avatarJakob Gruber <jgruber@chromium.org>
      Commit-Queue: Jakob Gruber <jgruber@chromium.org>
      Auto-Submit: Jiawen Geng <technicalcute@gmail.com>
      Cr-Commit-Position: refs/heads/master@{#70648}
      45e49775
    • Marja Hölttä's avatar
      [super ic] Fix receiver type · 3773e46e
      Marja Hölttä authored
      With non-super loads (receiver == lookup_start_object), we don't hit
      the code in AccessorAssembler::GenericPropertyLoad calling
      CSA::TryGetOwnProperty if the receiver (the lookup_start_object) is a
      SMI.
      
      But with super property loads, if we set up lookup_start_object the
      right way, we will hit this code.
      
      The code was assuming receiver is a HeapObject, which is too
      restrictive. The receiver is only used for the accessor call, so
      it's ok to make the type more generic.
      
      Bug: v8:9237, chromium:1139786
      Change-Id: I3167ccfb54a49ac1c401040a6f02fc1f3b98d9d1
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2484366Reviewed-by: 's avatarIgor Sheludko <ishell@chromium.org>
      Commit-Queue: Marja Hölttä <marja@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#70647}
      3773e46e
    • Clemens Backes's avatar
      [wasm] Fix regular publishing of compilation results · 7103dc61
      Clemens Backes authored
      The logic for ensuring regular publishing in worker threads was broken
      by growing the number of queues dynamically
      (https://crrev.com/c/2467844). The first task(s) would assume a too
      small number of worker threads, thus would publish to late (or never
      before running out of units). This creates a large backlog of
      to-be-published results when all threads eventually finish execution.
      
      This CL fixes this by updating the per-task limit of results to process
      before publishing. The updated value is read atomically using relaxed
      memory ordering to ensure minimal impact on performance.
      
      R=thibaudm@chromium.org
      
      Bug: chromium:1138784, v8:11005
      Change-Id: I2d00e50148e64db67a6b1a9f219ba60a1f4432ac
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2484365Reviewed-by: 's avatarThibaud Michaud <thibaudm@chromium.org>
      Commit-Queue: Clemens Backes <clemensb@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#70646}
      7103dc61
    • Jakob Gruber's avatar
      Reland "[code] Move the unwinding info into metadata area" · 82f6863a
      Jakob Gruber authored
      This is a reland of c5379162
      
      The reland fixes Code::clear_padding to correctly clear trailing
      padding.
      
      Original change's description:
      > [code] Move the unwinding info into metadata area
      >
      > Semantically, the unwinding info is a variable-size metadata table
      > with untagged (i.e. no relocation needed) contents, packed inside Code
      > objects. This is just like other metadata tables (safepoint table,
      > handler table, constant pool, code comments); but for historical
      > reasons it's been treated differently so far. Unlike these other
      > tables, the unwinding info was located *after* InstructionEnd, and its
      > size was written to the first 8 bytes after InstructionEnd.
      >
      > This CL makes unwinding info handling more consistent with other
      > metadata tables by writing its offset into a dedicated
      > kUnwindingInfoOffsetOffset header slot, and by moving the actual data
      > inside the [InstructionStart,InstructionEnd[ area. In follow-up CLs,
      > this area will be split into dedicated instruction- and metadata
      > areas.
      >
      > A picture is worth 1000 words, before:
      >
      >  +--------------------------+  <-- raw_instruction_start()
      >  |       instructions       |
      >  |           ...            |
      >  +--------------------------+
      >  |     embedded metadata    |  <-- safepoint_table_offset()
      >  |           ...            |  <-- handler_table_offset()
      >  |                          |  <-- constant_pool_offset()
      >  |                          |  <-- code_comments_offset()
      >  |    padding to the next   |
      >  |  8-byte aligned address  |
      >  +--------------------------+  <-- raw_instruction_end()
      >  |   [unwinding_info_size]  |
      >  |        as uint64_t       |
      >  +--------------------------+  <-- unwinding_info_start()
      >  |       unwinding info     |
      >  |            ...           |
      >  +--------------------------+  <-- unwinding_info_end()
      >
      > After:
      >
      >  +--------------------------+  <-- raw_instruction_start()
      >  |       instructions       |
      >  |           ...            |
      >  +--------------------------+
      >  |     embedded metadata    |  <-- safepoint_table_offset()
      >  |           ...            |  <-- handler_table_offset()
      >  |                          |  <-- constant_pool_offset()
      >  |                          |  <-- code_comments_offset()
      >  |                          |  <-- unwinding_info_offset()
      >  |                          |
      >  +--------------------------+  <-- raw_instruction_end()
      >
      > Bug: v8:11036
      > Change-Id: I649708821acc5365186ca2c9cff2669fc3e91fd3
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2484795
      > Reviewed-by: Dominik Inführ <dinfuehr@chromium.org>
      > Reviewed-by: Leszek Swirski <leszeks@chromium.org>
      > Commit-Queue: Jakob Gruber <jgruber@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#70640}
      
      Cq-Include-Trybots: luci.v8.try:v8_linux64_msan_rel_ng
      Tbr: leszeks@chromium.org
      Bug: v8:11036
      Change-Id: I2ea056fe2a53217e0b5ae25661b92f5ddec6fca5
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2485501
      Commit-Queue: Jakob Gruber <jgruber@chromium.org>
      Reviewed-by: 's avatarJakob Gruber <jgruber@chromium.org>
      Reviewed-by: 's avatarDominik Inführ <dinfuehr@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#70645}
      82f6863a
    • Martin Bidlingmaier's avatar
      Reland "[regexp] Enable fallback to experimental engine by default" · d30be8d2
      Martin Bidlingmaier authored
      This reverts commit 9417dae4.
      
      Bug: v8:10765,v8:11021
      Change-Id: I138d794cc3339ed58a343f8150730af5a1f3e511
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2485791Reviewed-by: 's avatarJakob Gruber <jgruber@chromium.org>
      Commit-Queue: Martin Bidlingmaier <mbid@google.com>
      Cr-Commit-Position: refs/heads/master@{#70644}
      d30be8d2
    • Santiago Aboy Solanes's avatar
      Reland "[debugger] Try to trigger pause-on-oom flakes with an extra printf" · a4a152ec
      Santiago Aboy Solanes authored
      This is a reland of 8f7e9158
      
      Original change's description:
      > [debugger] Try to trigger pause-on-oom flakes with an extra printf
      >
      > We have an issue that we can't repro locally. Enable back the
      > pause-on-oom tests with an extra printf with DEBUG. We will be able to
      > better assess the failures when they appear on the bot.
      >
      > Bug: v8:10876
      > Change-Id: I066539c4b5865ecb6f2e589e9543e8c9ebd4830b
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2474782
      > Reviewed-by: Peter Marshall <petermarshall@chromium.org>
      > Reviewed-by: Ross McIlroy <rmcilroy@chromium.org>
      > Commit-Queue: Santiago Aboy Solanes <solanes@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#70558}
      
      Bug: v8:10876
      Change-Id: Ice31c9455830da320ab057293c341f69e1f0c510
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2484799Reviewed-by: 's avatarRoss McIlroy <rmcilroy@chromium.org>
      Reviewed-by: 's avatarPeter Marshall <petermarshall@chromium.org>
      Commit-Queue: Santiago Aboy Solanes <solanes@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#70643}
      a4a152ec
    • Maya Lekova's avatar
      [fastcall] Generalize fallback option for fast API calls · 4d5e6fb3
      Maya Lekova authored
      Switch the current bool* parameter to a structure that contains
      the boolean fallback flag and is forward compatible, if we decide
      to add more options to the fallback call.
      
      Fly-by refactoring: moved V8_ENABLE_FP_PARAMS_IN_C_LINKAGE out of
      a public V8 header file.
      
      Bug: chromium:1052746
      Change-Id: I844db24cc687c58b3c3bbd84b4d61bb4759bcfc7
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2474775
      Commit-Queue: Maya Lekova <mslekova@chromium.org>
      Reviewed-by: 's avatarToon Verwaest <verwaest@chromium.org>
      Reviewed-by: 's avatarGeorg Neis <neis@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#70642}
      4d5e6fb3
    • Maya Lekova's avatar
      Revert "[code] Move the unwinding info into metadata area" · adf5c707
      Maya Lekova authored
      This reverts commit c5379162.
      
      Reason for revert: Seems to cause MSAN failure - https://ci.chromium.org/p/v8/builders/ci/V8%20Linux%20-%20arm64%20-%20sim%20-%20MSAN/34931
      
      Original change's description:
      > [code] Move the unwinding info into metadata area
      >
      > Semantically, the unwinding info is a variable-size metadata table
      > with untagged (i.e. no relocation needed) contents, packed inside Code
      > objects. This is just like other metadata tables (safepoint table,
      > handler table, constant pool, code comments); but for historical
      > reasons it's been treated differently so far. Unlike these other
      > tables, the unwinding info was located *after* InstructionEnd, and its
      > size was written to the first 8 bytes after InstructionEnd.
      >
      > This CL makes unwinding info handling more consistent with other
      > metadata tables by writing its offset into a dedicated
      > kUnwindingInfoOffsetOffset header slot, and by moving the actual data
      > inside the [InstructionStart,InstructionEnd[ area. In follow-up CLs,
      > this area will be split into dedicated instruction- and metadata
      > areas.
      >
      > A picture is worth 1000 words, before:
      >
      >  +--------------------------+  <-- raw_instruction_start()
      >  |       instructions       |
      >  |           ...            |
      >  +--------------------------+
      >  |     embedded metadata    |  <-- safepoint_table_offset()
      >  |           ...            |  <-- handler_table_offset()
      >  |                          |  <-- constant_pool_offset()
      >  |                          |  <-- code_comments_offset()
      >  |    padding to the next   |
      >  |  8-byte aligned address  |
      >  +--------------------------+  <-- raw_instruction_end()
      >  |   [unwinding_info_size]  |
      >  |        as uint64_t       |
      >  +--------------------------+  <-- unwinding_info_start()
      >  |       unwinding info     |
      >  |            ...           |
      >  +--------------------------+  <-- unwinding_info_end()
      >
      > After:
      >
      >  +--------------------------+  <-- raw_instruction_start()
      >  |       instructions       |
      >  |           ...            |
      >  +--------------------------+
      >  |     embedded metadata    |  <-- safepoint_table_offset()
      >  |           ...            |  <-- handler_table_offset()
      >  |                          |  <-- constant_pool_offset()
      >  |                          |  <-- code_comments_offset()
      >  |                          |  <-- unwinding_info_offset()
      >  |                          |
      >  +--------------------------+  <-- raw_instruction_end()
      >
      > Bug: v8:11036
      > Change-Id: I649708821acc5365186ca2c9cff2669fc3e91fd3
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2484795
      > Reviewed-by: Dominik Inführ <dinfuehr@chromium.org>
      > Reviewed-by: Leszek Swirski <leszeks@chromium.org>
      > Commit-Queue: Jakob Gruber <jgruber@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#70640}
      
      TBR=jgruber@chromium.org,leszeks@chromium.org,dinfuehr@chromium.org
      
      Change-Id: If8417f88f4c55771e455ec85f5efdc6343671ad3
      No-Presubmit: true
      No-Tree-Checks: true
      No-Try: true
      Bug: v8:11036
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2485500Reviewed-by: 's avatarMaya Lekova <mslekova@chromium.org>
      Commit-Queue: Maya Lekova <mslekova@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#70641}
      adf5c707
    • Jakob Gruber's avatar
      [code] Move the unwinding info into metadata area · c5379162
      Jakob Gruber authored
      Semantically, the unwinding info is a variable-size metadata table
      with untagged (i.e. no relocation needed) contents, packed inside Code
      objects. This is just like other metadata tables (safepoint table,
      handler table, constant pool, code comments); but for historical
      reasons it's been treated differently so far. Unlike these other
      tables, the unwinding info was located *after* InstructionEnd, and its
      size was written to the first 8 bytes after InstructionEnd.
      
      This CL makes unwinding info handling more consistent with other
      metadata tables by writing its offset into a dedicated
      kUnwindingInfoOffsetOffset header slot, and by moving the actual data
      inside the [InstructionStart,InstructionEnd[ area. In follow-up CLs,
      this area will be split into dedicated instruction- and metadata
      areas.
      
      A picture is worth 1000 words, before:
      
       +--------------------------+  <-- raw_instruction_start()
       |       instructions       |
       |           ...            |
       +--------------------------+
       |     embedded metadata    |  <-- safepoint_table_offset()
       |           ...            |  <-- handler_table_offset()
       |                          |  <-- constant_pool_offset()
       |                          |  <-- code_comments_offset()
       |    padding to the next   |
       |  8-byte aligned address  |
       +--------------------------+  <-- raw_instruction_end()
       |   [unwinding_info_size]  |
       |        as uint64_t       |
       +--------------------------+  <-- unwinding_info_start()
       |       unwinding info     |
       |            ...           |
       +--------------------------+  <-- unwinding_info_end()
      
      After:
      
       +--------------------------+  <-- raw_instruction_start()
       |       instructions       |
       |           ...            |
       +--------------------------+
       |     embedded metadata    |  <-- safepoint_table_offset()
       |           ...            |  <-- handler_table_offset()
       |                          |  <-- constant_pool_offset()
       |                          |  <-- code_comments_offset()
       |                          |  <-- unwinding_info_offset()
       |                          |
       +--------------------------+  <-- raw_instruction_end()
      
      Bug: v8:11036
      Change-Id: I649708821acc5365186ca2c9cff2669fc3e91fd3
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2484795Reviewed-by: 's avatarDominik Inführ <dinfuehr@chromium.org>
      Reviewed-by: 's avatarLeszek Swirski <leszeks@chromium.org>
      Commit-Queue: Jakob Gruber <jgruber@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#70640}
      c5379162
    • v8-ci-autoroll-builder's avatar
      Update V8 DEPS. · fe1c9190
      v8-ci-autoroll-builder authored
      Rolling v8/build: https://chromium.googlesource.com/chromium/src/build/+log/198585c..d68ca6a
      
      Rolling v8/third_party/aemu-linux-x64: kj9nh6CkrdEq-ctobPV7CtPMwpdU4VrQx_JgZCmejxQC..Dg0s5PKnfzzCVjDNe8EuKAnOGVVpKvB-dKqia-IpGkgC
      
      Rolling v8/third_party/catapult: https://chromium.googlesource.com/catapult/+log/89eeef5..d384f36
      
      Rolling v8/third_party/depot_tools: https://chromium.googlesource.com/chromium/tools/depot_tools/+log/958dc62..792630c
      
      Rolling v8/tools/clang: https://chromium.googlesource.com/chromium/src/tools/clang/+log/3a982ad..4135c06
      
      TBR=machenbach@chromium.org,tmrts@chromium.org,v8-waterfall-sheriff@grotations.appspotmail.com
      
      Change-Id: I2ce24ab2ca6189cc614a978255f83812c263960c
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2485720Reviewed-by: 's avatarv8-ci-autoroll-builder <v8-ci-autoroll-builder@chops-service-accounts.iam.gserviceaccount.com>
      Commit-Queue: v8-ci-autoroll-builder <v8-ci-autoroll-builder@chops-service-accounts.iam.gserviceaccount.com>
      Cr-Commit-Position: refs/heads/master@{#70639}
      fe1c9190
    • Frank Tang's avatar
      [Intl] call new ListFormatter::createInstance · 035c305c
      Frank Tang authored
      The one we currently using is now marked as internal and to be removed
      for 68. Migrating to the style which already avaiable in ICU 67-1.
      
      Bug: v8:11031
      Change-Id: I668382a2e1b8602ddca02bf231c5008a6c92bf2d
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2477751Reviewed-by: 's avatarJakob Kummerow <jkummerow@chromium.org>
      Commit-Queue: Frank Tang <ftang@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#70638}
      035c305c
    • Junliang Yan's avatar
      PPC/s390: [deoptimizer] Change deopt entries into builtins · 5d5ed19f
      Junliang Yan authored
      Port 7f58ced7
      
      Original Commit Message:
      
          While the overall goal of this commit is to change deoptimization
          entries into builtins, there are multiple related things happening:
      
          - Deoptimization entries, formerly stubs (i.e. Code objects generated
            at runtime, guaranteed to be immovable), have been converted into
            builtins. The major restriction is that we now need to preserve the
            kRootRegister, which was formerly used on most architectures to pass
            the deoptimization id. The solution differs based on platform.
          - Renamed DEOPT_ENTRIES_OR_FOR_TESTING code kind to FOR_TESTING.
          - Removed heap/ support for immovable Code generation.
          - Removed the DeserializerData class (no longer needed).
          - arm64: to preserve 4-byte deopt exits, introduced a new optimization
            in which the final jump to the deoptimization entry is generated
            once per Code object, and deopt exits can continue to emit a
            near-call.
          - arm,ia32,x64: change to fixed-size deopt exits. This reduces exit
            sizes by 4/8, 5, and 5 bytes, respectively.
      
          On arm the deopt exit size is reduced from 12 (or 16) bytes to 8 bytes
          by using the same strategy as on arm64 (recalc deopt id from return
          address). Before:
      
           e300a002       movw r10, <id>
           e59fc024       ldr ip, [pc, <entry offset>]
           e12fff3c       blx ip
      
          After:
      
           e59acb35       ldr ip, [r10, <entry offset>]
           e12fff3c       blx ip
      
          On arm64 the deopt exit size remains 4 bytes (or 8 bytes in same cases
          with CFI). Additionally, up to 4 builtin jumps are emitted per Code
          object (max 32 bytes added overhead per Code object). Before:
      
           9401cdae       bl <entry offset>
      
          After:
      
           # eager deoptimization entry jump.
           f95b1f50       ldr x16, [x26, <eager entry offset>]
           d61f0200       br x16
           # lazy deoptimization entry jump.
           f95b2b50       ldr x16, [x26, <lazy entry offset>]
           d61f0200       br x16
           # the deopt exit.
           97fffffc       bl <eager deoptimization entry jump offset>
      
          On ia32 the deopt exit size is reduced from 10 to 5 bytes. Before:
      
           bb00000000     mov ebx,<id>
           e825f5372b     call <entry>
      
          After:
      
           e8ea2256ba     call <entry>
      
          On x64 the deopt exit size is reduced from 12 to 7 bytes. Before:
      
           49c7c511000000 REX.W movq r13,<id>
           e8ea2f0700     call <entry>
      
          After:
      
           41ff9560360000 call [r13+<entry offset>]
      
      R=jgruber@chromium.org, joransiu@ca.ibm.com, jyan@ca.ibm.com, michael_dawson@ca.ibm.com, miladfar@ca.ibm.com
      BUG=
      LOG=N
      
      Change-Id: I49e4c92759043e46beb3c76c97823285b16feeef
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2486225Reviewed-by: 's avatarMilad Fa <mfarazma@redhat.com>
      Commit-Queue: Junliang Yan <junyan@redhat.com>
      Cr-Commit-Position: refs/heads/master@{#70637}
      5d5ed19f
  2. 19 Oct, 2020 28 commits