1. 20 Oct, 2020 6 commits
    • 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 34 commits