1. 03 Dec, 2020 26 commits
  2. 02 Dec, 2020 14 commits
    • Junliang Yan's avatar
      s390x: Unify VectorReg access on simulator · 736e7144
      Junliang Yan authored
      Cleanup Memcpy and use get/set_simd_register_by_lane
      
      Change-Id: Icbdd838e075d93d75064bd8e47eb95c02f1da9d4
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2568589
      Commit-Queue: Junliang Yan <junyan@redhat.com>
      Reviewed-by: 's avatarMilad Fa <mfarazma@redhat.com>
      Cr-Commit-Position: refs/heads/master@{#71577}
      736e7144
    • Junliang Yan's avatar
      s390x: unify FP register access on simulator · 6cbc7198
      Junliang Yan authored
      Change-Id: Ia92e1e85aa19abb8cc0f756e5334a539cf604287
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2570135Reviewed-by: 's avatarMilad Fa <mfarazma@redhat.com>
      Commit-Queue: Junliang Yan <junyan@redhat.com>
      Cr-Commit-Position: refs/heads/master@{#71576}
      6cbc7198
    • Milad Fa's avatar
      PPC: [was-simd] Fix Vector pack behaviour. · 4aeb4a34
      Milad Fa authored
      Due to the lane numbering difference between Intel and IBM machines,
      we need to switch the input registers when doing a vector pack.
      
      Change-Id: Id01d6292cb2a65b78dccdf3bab1d5ff010e1d018
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2569996Reviewed-by: 's avatarJunliang Yan <junyan@redhat.com>
      Reviewed-by: 's avatarMilad Fa <mfarazma@redhat.com>
      Commit-Queue: Milad Fa <mfarazma@redhat.com>
      Cr-Commit-Position: refs/heads/master@{#71575}
      4aeb4a34
    • Milad Fa's avatar
      PPC/s390: [cleanup][TurboProp] Unify DynamicMapChecks names. · 073d0690
      Milad Fa authored
      Port 7730fd94
      
      Original Commit Message:
      
          Unifies various operators for dynamic map checks with the naming
          scheme of DynamicCheckMaps (to be similar to CheckMaps.
      
      R=rmcilroy@chromium.org, joransiu@ca.ibm.com, junyan@redhat.com, midawson@redhat.com
      BUG=v8:10582
      LOG=N
      
      Change-Id: I0c7665eb5ec3cd0b0b8217af3ec8e9e18a3d3055
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2569593Reviewed-by: 's avatarJunliang Yan <junyan@redhat.com>
      Commit-Queue: Milad Fa <mfarazma@redhat.com>
      Cr-Commit-Position: refs/heads/master@{#71574}
      073d0690
    • Santiago Aboy Solanes's avatar
      [objects] Remove MakeExternal case for uncached internal strings · 3a6f75ac
      Santiago Aboy Solanes authored
      Concurrently accessing internal external uncached strings is not
      thread-safe. We are removing a case where we can make such a string
      through MakeExternal.
      
      Bug: v8:7790
      Change-Id: I958062c15cf40ccc330600bb572de98620866e54
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2565511
      Commit-Queue: Santiago Aboy Solanes <solanes@chromium.org>
      Reviewed-by: 's avatarLeszek Swirski <leszeks@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#71573}
      3a6f75ac
    • Manos Koukoutos's avatar
      [wasm-gc] read_heap_type should check if index is in module bounds · 0396b732
      Manos Koukoutos authored
      read_heap_type did not have knowledge of the module for which the heap
      type was being decoded. As a result, callers of read_heap_type (or
      read_value_type, which in turn calls read_heap_type) had to check after
      the fact that a decoded indexed type (ref, ref null, or rtt) references
      a type index within the module's bounds. This was not done consistently,
      and was missing (at least) in DecodeLocals.
      To avoid such problems in the future, this CL refactors read_heap_type
      to accept a module and check the decoded index against it.
      
      Changes:
      - Add WasmModule argument to read_heap_type. Do so accordingly to all
        its transitive callers (read_value_type, immediate arguments,
        DecodeLocalDecls, DecodeValue/HeapType in unittests).
      - Add index check to read_heap_type and emit an error for an
        out-of-bounds index.
      - Remove all other now-redundant index validations. Replace them with
        decoder->ok() if needed (since read_heap_type will now emit an error).
      - Fix error message in Validate for BlockTypeImmediate.
      - In DecodeLocalDecls in unittests, pass an empty module to
        DecodeLocalDecls in the main code.
      - Add a unit test with an invalid index in local type declarations.
      
      Bug: v8:9495
      Change-Id: I4ed1204847db80f78b6ae85fa40d300cd2456295
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2569757Reviewed-by: 's avatarJakob Kummerow <jkummerow@chromium.org>
      Commit-Queue: Manos Koukoutos <manoskouk@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#71572}
      0396b732
    • Milad Fa's avatar
      PPC/s390: [Turboprop] Move deoptimizations for dynamic map checks into builtin. · 2bc979aa
      Milad Fa authored
      Port b6643320
      
      Original Commit Message:
      
          In order to reduce the codegen size of dynamic map checks, add the
          ability to have an eager with resume deopt point, which can call
          a given builitin to perform a more detailed check than can be done
          in codegen, and then either deoptimizes itself (as if the calling
          code had performed an eager deopt) or resumes execution in the
          calling code after the check.
      
          In addition, support for adding extra arguments to a
          deoptimization continuation is added to enable us to pass the
          necessary arguments to the DynamicMapChecks builtin.
      
          Finally, a trampoline is added to the DynamicMapChecks which saves
          the registers that might be clobbered by that builtin, to avoid
          having to save them in the generated code. This trampoline also
          performs the deoptimization based on the result of the
          DynamicMapChecks builtin.
      
          In order to ensure both the trampoline and DynamicMapChecks
          builtin have the same call interface, and to limit the number
          of registers that need saving in the trampoline, the
          DynamicMapChecks builtin is moved to be a CSA builtin with a
          custom CallInterfaceDescriptor, that calls an exported Torque
          macro that implements the actual functionality.
      
          All told, this changes the codegen for a monomorphic dynamic
          map check from:
              movl rbx,<expected_map>
              cmpl [<object>-0x1],rbx
              jnz <deferred_call>
             resume_point:
              ...
             deferred_call:
              <spill registers>
              movl rax,<slot>
              movq rbx,<object>
              movq rcx,<handler>
              movq r10,<DynamicMapChecks>
              call r10
              cmpq rax,0x0
              jz <restore_regs>
              cmpq rax,0x1
              jz <deopt_point_1>
              cmpq rax,0x2
              jz <deopt_point_2>
              int3l
             restore_regs:
              <restore_regs>
              jmp <resume_point>
              ...
             deopt_point_1:
              call Deoptimization_Eager
             deopt_point_2:
              call Deoptimization_Bailout
      
              movl rcx,<expected_map>
              movq rdx,<handler>
              cmpl [<object>-0x1],rcx
              jnz <deopt_point>
             resume_point:
              ...
             deopt_point:
              call DynamicMapChecksTrampoline
              jmp <resume_point>
      
      R=rmcilroy@chromium.org, joransiu@ca.ibm.com, junyan@redhat.com, midawson@redhat.com
      BUG=v8:10582
      LOG=N
      
      Change-Id: I0739c1b40ed06bb22b73ebe1833ea648b540882a
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2569359Reviewed-by: 's avatarJunliang Yan <junyan@redhat.com>
      Commit-Queue: Milad Fa <mfarazma@redhat.com>
      Cr-Commit-Position: refs/heads/master@{#71571}
      2bc979aa
    • Dominik Inführ's avatar
      Revert "[heap] Remove SWEEPING phase in incremental marking" · 0f8fe4e5
      Dominik Inführ authored
      This reverts commit 2afb00c0.
      
      Reason for revert: Some tests started to timeout.
      
      Original change's description:
      > [heap] Remove SWEEPING phase in incremental marking
      >
      > The SWEEPING phase in incremental marking was used to finish sweeping
      > of the last GC cycle concurrently before starting incremental marking.
      > This avoids potentially long pauses when starting incremental marking.
      > However this shouldn't be necessary in most cases where sweeping is
      > already finished when starting the next cycle. The implementation also
      > didn't cleanly separate the GC cycles.
      >
      > In case the sweeping phase is necessary for pause times, we can
      > introduce a "CompleteSweep" phase which runs right before starting
      > incremental marking.
      >
      > Change-Id: Iaff8c06d5691e584894f57941f181d0424051eec
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2567707
      > Commit-Queue: Dominik Inführ <dinfuehr@chromium.org>
      > Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#71555}
      
      TBR=ulan@chromium.org,dinfuehr@chromium.org
      
      Change-Id: I9adea60c21ff7cdfa7bbac3e6a4a240640fa5ea9
      No-Presubmit: true
      No-Tree-Checks: true
      No-Try: true
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2569766Reviewed-by: 's avatarDominik Inführ <dinfuehr@chromium.org>
      Commit-Queue: Dominik Inführ <dinfuehr@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#71570}
      0f8fe4e5
    • Maya Lekova's avatar
      Revert "Reland "[heap] Add epoch to GC tracing events"" · 78e9a3a7
      Maya Lekova authored
      This reverts commit 3238162d.
      
      Reason for revert: Speculative revert for https://ci.chromium.org/ui/p/v8/builders/ci/V8%20Linux64/40411/overview, causing SEGV_ACCERR on test/mjsunit/harmony/promise-any-overflow-2.js and other failures in minor_mc variant
      
      Original change's description:
      > Reland "[heap] Add epoch to GC tracing events"
      >
      > This is a reland of be52501d
      >
      > Fix data race by not emitting the epoch for sweeper background jobs
      > at them moment.
      >
      > Original change's description:
      > > [heap] Add epoch to GC tracing events
      > >
      > > This CL adds the TRACE_GC_EPOCH macro, which adds the epoch as attribute
      > > to the trace event. Use TRACE_GC_EPOCH for top-level events, nested
      > > events can get the information from its parent.
      > >
      > > V8's GC needs an epoch for young and full collections, since scavenges
      > > also occur during incremental marking. The epoch is also process-wide,
      > > so different isolates do not reuse the same id.
      > >
      > > Change-Id: I8889bccce51e008374b4796445a50062bd87a45d
      > > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2565247
      > > Commit-Queue: Dominik Inführ <dinfuehr@chromium.org>
      > > Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
      > > Cr-Commit-Position: refs/heads/master@{#71521}
      >
      > Change-Id: Ib8f4bfdc01c459955eb6db63bb6e24a8aa068f09
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2567702
      > Commit-Queue: Dominik Inführ <dinfuehr@chromium.org>
      > Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#71567}
      
      TBR=ulan@chromium.org,dinfuehr@chromium.org
      
      Change-Id: I29a131f798c3536d16e4b4c44c0fcb8b35dd0051
      No-Presubmit: true
      No-Tree-Checks: true
      No-Try: true
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2569764Reviewed-by: 's avatarMaya Lekova <mslekova@chromium.org>
      Commit-Queue: Maya Lekova <mslekova@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#71569}
      78e9a3a7
    • Zhi An Ng's avatar
      [cleanup][codegen] Remove uses of DISALLOW_COPY_AND_ASSIGN · 8a91429e
      Zhi An Ng authored
      Bug: v8:11074
      Change-Id: Ifdd52d501a1d55a2fe176f0995f8c0e7f71ca1fd
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2569131
      Commit-Queue: Zhi An Ng <zhin@chromium.org>
      Reviewed-by: 's avatarClemens Backes <clemensb@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#71568}
      8a91429e
    • Dominik Inführ's avatar
      Reland "[heap] Add epoch to GC tracing events" · 3238162d
      Dominik Inführ authored
      This is a reland of be52501d
      
      Fix data race by not emitting the epoch for sweeper background jobs
      at them moment.
      
      Original change's description:
      > [heap] Add epoch to GC tracing events
      >
      > This CL adds the TRACE_GC_EPOCH macro, which adds the epoch as attribute
      > to the trace event. Use TRACE_GC_EPOCH for top-level events, nested
      > events can get the information from its parent.
      >
      > V8's GC needs an epoch for young and full collections, since scavenges
      > also occur during incremental marking. The epoch is also process-wide,
      > so different isolates do not reuse the same id.
      >
      > Change-Id: I8889bccce51e008374b4796445a50062bd87a45d
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2565247
      > Commit-Queue: Dominik Inführ <dinfuehr@chromium.org>
      > Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#71521}
      
      Change-Id: Ib8f4bfdc01c459955eb6db63bb6e24a8aa068f09
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2567702
      Commit-Queue: Dominik Inführ <dinfuehr@chromium.org>
      Reviewed-by: 's avatarUlan Degenbaev <ulan@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#71567}
      3238162d
    • Manos Koukoutos's avatar
      [wasm][bug] Update num_locals_ earlier in DecodeLocals · 56362efc
      Manos Koukoutos authored
      If DecodeLocals exits early, num_locals_ is left in an inconsistent
      state. This CL fixes this issue by updating num_locals_ as the
      local_types_ are updated.
      
      Bug: chromium:1154439
      Change-Id: I02328a050df8b2827a42f59443e994f535d3c826
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2567954Reviewed-by: 's avatarClemens Backes <clemensb@chromium.org>
      Commit-Queue: Manos Koukoutos <manoskouk@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#71566}
      56362efc
    • Camillo Bruni's avatar
      [tools][runtime] Fix --trace-maps · 02ab03b9
      Camillo Bruni authored
      - Don't print normalize transition for cached maps
      - Avoid printing two transitions in Map::CopyReplaceDescriptor
      - Harden processor.mjs existing existing broken logs by skipping double
        entries and avoiding mutliple edges to the same target map
      
      Bug: v8:10644
      Change-Id: I561a0f888c8835a40a289baa50d65ff69e368bad
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2565123Reviewed-by: 's avatarMarja Hölttä <marja@chromium.org>
      Commit-Queue: Camillo Bruni <cbruni@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#71565}
      02ab03b9
    • Clemens Backes's avatar
      [liftoff][arm] Release temp registers after use · 63166010
      Clemens Backes authored
      The {ParallelRegisterMove} at the end of {AtomicLoad} might need a
      temporary scratch register for spilling values to the stack. Make sure
      that one is available by giving up the scratch register used for the
      address of the atomic access.
      
      R=ahaas@chromium.org
      
      Bug: chromium:1153442
      Change-Id: I267c43e2193662c420f96f6683ebd4bbb0e1bca3
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2566759Reviewed-by: 's avatarAndreas Haas <ahaas@chromium.org>
      Commit-Queue: Clemens Backes <clemensb@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#71564}
      63166010