1. 13 Aug, 2020 7 commits
  2. 12 Aug, 2020 17 commits
  3. 11 Aug, 2020 16 commits
    • Sathya Gunasekaran's avatar
      [ic] Add elements kind to handlers · 15ec32b4
      Sathya Gunasekaran authored
      Bug: v8:10582, v8:9684
      Change-Id: I4b53b161f9154212568856206ff011e61975e431
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2247652
      Commit-Queue: Sathya Gunasekaran  <gsathya@chromium.org>
      Reviewed-by: 's avatarMythri Alle <mythria@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#69348}
      15ec32b4
    • Bill Budge's avatar
      Revert "[regalloc] Place spill instructions optimally" · e9245e46
      Bill Budge authored
      This reverts commit f4548e75.
      
      Reason for revert: Breaks some gap resolver tests:
      https://ci.chromium.org/p/v8/builders/ci/V8%20Linux%20-%20arm64%20-%20sim/24204
      
      Original change's description:
      > [regalloc] Place spill instructions optimally
      > 
      > Design doc:
      > https://docs.google.com/document/d/1n9ADWnDI-sw0OvdSmrthf61prmDqbDmQq-NSrQw2MVI/edit?usp=sharing
      > 
      > Most of this change follows directly what is discussed in the design
      > document. A few other things are also changed:
      > 
      > - PopulateReferenceMapsPhase is moved after ResolveControlFlowPhase so
      >   that it can make use of the decision regarding whether a value is
      >   spilled at its definition or later.
      > - SpillSlotLocator is removed. It was already somewhat confusing,
      >   because the responsibility for marking blocks as needing frames was
      >   split: in some cases they were marked by SpillSlotLocator, and in
      >   other cases they were marked by CommitSpillsInDeferredBlocks. With
      >   this change, that split responsibility would become yet more
      >   confusing if we kept SpillSlotLocator for the values that are spilled
      >   at their definition, so I propose a simpler rule that whatever code
      >   adds the spill move also marks the block.
      > - A few class definitions (LiveRangeBound, FindResult,
      >   LiveRangeBoundArray, and LiveRangeFinder) are moved without
      >   modification from register-allocator.cc to register-allocator.h so
      >   that we can refer to them from another cc file.
      > 
      > Bug: v8:10606
      > Change-Id: I374a3219a5de477a53bc48117e230287eae89e72
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2285390
      > Commit-Queue: Seth Brenith <seth.brenith@microsoft.com>
      > Reviewed-by: Ross McIlroy <rmcilroy@chromium.org>
      > Reviewed-by: Thibaud Michaud <thibaudm@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#69345}
      
      TBR=rmcilroy@chromium.org,seth.brenith@microsoft.com,thibaudm@chromium.org
      
      Change-Id: Ie57109a009ee7ee541a6ff6f89901d1ac99027d2
      No-Presubmit: true
      No-Tree-Checks: true
      No-Try: true
      Bug: v8:10606
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2350440Reviewed-by: 's avatarBill Budge <bbudge@chromium.org>
      Commit-Queue: Bill Budge <bbudge@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#69347}
      e9245e46
    • Ng Zhi An's avatar
      Reland "[wasm-simd][arm] Use vmov to move all ones to register" · 9b9c6b0e
      Ng Zhi An authored
      This is a reland of 57242a05
      
      no-sse4.1 builds were failing due to missing simd-scalar-lowering
      for s128.const, this reland adds that implementation.
      
      Original change's description:
      > [wasm-simd][arm] Use vmov to move all ones to register
      >
      > vceq(dst, dst, dst) does not seem to always set the register to all
      > ones. The right way should be be to use vmov (immediate) anyway. This
      > was not supported in the assembler yet, so we need changes to the
      > assembler, diassembler, and simulator.
      >
      > There is an unfortunate fork in logic in the simulator, due to the way
      > the switches are set up, vmov (imm) logic is duplicated across two
      > different cases, because the switch looks at the top bit of the
      > immediate. Refactoring this will be a bigger change that is irrelevant
      > for this bug, so I'm putting that off for now. Instead we extract the
      > core of vmov (imm) into helpers and call it in the two cases.
      >
      > Bug: chromium:1112124
      > Change-Id: I283dbcd86cb0572e5ee720835f897b51fae96701
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2337503
      > Commit-Queue: Zhi An Ng <zhin@chromium.org>
      > Reviewed-by: Jakob Kummerow <jkummerow@chromium.org>
      > Reviewed-by: Bill Budge <bbudge@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#69315}
      
      Bug: chromium:1112124
      Change-Id: Id450e5cea41f7a569e49be8386a7788ca8f00658
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2346937Reviewed-by: 's avatarBill Budge <bbudge@chromium.org>
      Reviewed-by: 's avatarJakob Kummerow <jkummerow@chromium.org>
      Commit-Queue: Zhi An Ng <zhin@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#69346}
      9b9c6b0e
    • Seth Brenith's avatar
      [regalloc] Place spill instructions optimally · f4548e75
      Seth Brenith authored
      Design doc:
      https://docs.google.com/document/d/1n9ADWnDI-sw0OvdSmrthf61prmDqbDmQq-NSrQw2MVI/edit?usp=sharing
      
      Most of this change follows directly what is discussed in the design
      document. A few other things are also changed:
      
      - PopulateReferenceMapsPhase is moved after ResolveControlFlowPhase so
        that it can make use of the decision regarding whether a value is
        spilled at its definition or later.
      - SpillSlotLocator is removed. It was already somewhat confusing,
        because the responsibility for marking blocks as needing frames was
        split: in some cases they were marked by SpillSlotLocator, and in
        other cases they were marked by CommitSpillsInDeferredBlocks. With
        this change, that split responsibility would become yet more
        confusing if we kept SpillSlotLocator for the values that are spilled
        at their definition, so I propose a simpler rule that whatever code
        adds the spill move also marks the block.
      - A few class definitions (LiveRangeBound, FindResult,
        LiveRangeBoundArray, and LiveRangeFinder) are moved without
        modification from register-allocator.cc to register-allocator.h so
        that we can refer to them from another cc file.
      
      Bug: v8:10606
      Change-Id: I374a3219a5de477a53bc48117e230287eae89e72
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2285390
      Commit-Queue: Seth Brenith <seth.brenith@microsoft.com>
      Reviewed-by: 's avatarRoss McIlroy <rmcilroy@chromium.org>
      Reviewed-by: 's avatarThibaud Michaud <thibaudm@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#69345}
      f4548e75
    • Seth Brenith's avatar
      [turbofan][cleanup] Add helper function for effect level · 80ef93c8
      Seth Brenith authored
      I noticed a pattern that has been copied around to various places and
      thought a helper function might be appropriate.
      
      Change-Id: I8944ac5166c649f15c09f587308406cab317b8d4
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2346766Reviewed-by: 's avatarJakob Gruber <jgruber@chromium.org>
      Commit-Queue: Seth Brenith <seth.brenith@microsoft.com>
      Cr-Commit-Position: refs/heads/master@{#69344}
      80ef93c8
    • Milad Farazmand's avatar
      PPC: Optimize clearing higher bits of mulhw/mulhwu · 3f071e3e
      Milad Farazmand authored
      Change-Id: Ie3e14a6ef4531349e81a8ae741bc7470c7e547ca
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2349468Reviewed-by: 's avatarJunliang Yan <jyan@ca.ibm.com>
      Commit-Queue: Milad Farazmand <miladfar@ca.ibm.com>
      Cr-Commit-Position: refs/heads/master@{#69343}
      3f071e3e
    • Santiago Aboy Solanes's avatar
      [csa][cleanup] TNodify LoadAndUntagToWord32(Fixed)ArrayElement · f6af044d
      Santiago Aboy Solanes authored
      Also remove ParameterMode
      
      Bug: v8:9708, v8:6949
      Change-Id: Iaf51004472a4aef0acf29d01497b1047247dc83d
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2349301Reviewed-by: 's avatarDan Elphick <delphick@chromium.org>
      Commit-Queue: Santiago Aboy Solanes <solanes@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#69342}
      f6af044d
    • Bill Budge's avatar
      Revert "Reland^2 "[flags] warn about contradictory flags"" · 7e932233
      Bill Budge authored
      This reverts commit 0ba115e6.
      
      Reason for revert: Breaks test on TSAN - block-conflicts
      https://ci.chromium.org/p/v8/builders/ci/V8%20Linux64%20TSAN%20-%20concurrent%20marking/14230
      
      Original change's description:
      > Reland^2 "[flags] warn about contradictory flags"
      > 
      > This is a reland of d8f8a7e2
      > Change compared to last reland:
      > - Do not check for d8 flag contradictions in the presence of --fuzzing
      > - Allow identical re-declaration of --cache=*
      > 
      > Original change's description:
      > > Reland "[flags] warn about contradictory flags"
      > >
      > > This is a reland of b8f91666
      > > Difference to previous CL: Additional functionality to specify
      > > incompatible flags based on GN variables and extra-flags, used
      > > to fix the issues that came up on the waterfall.
      > >
      > > This also changes the rules regarding repeated flags: While
      > > explicitly repeated flags are allowed for boolean values as long
      > > as they are identical, repeated flags or explicit flags in the
      > > presence of an active implication are disallowed for non-boolean
      > > flags. The latter simplifies specifying conflict rules in
      > > variants.py. Otherwise a rule like
      > >
      > > INCOMPATIBLE_FLAGS_PER_EXTRA_FLAG = {
      > >   "--gc-interval=*": ["--gc-interval=*"],
      > > }
      > >
      > > wouldn't work because specifying the same GC interval twice
      > > wouldn't actually count as a conflict. This was an issue with
      > > test/mjsunit/wasm/gc-buffer.js, which specifies
      > > --gc-interval=500 exactly like the extra flag by the stress bot.
      > >
      > > Also, this now expands contradictory flags checking to d8 flags
      > > for consistency.
      > >
      > > Original change's description:
      > > > [flags] warn about contradictory flags
      > > >
      > > > Design Doc: https://docs.google.com/document/d/1lkvu8crkK7Ei39qjkPCFijpNyxWXsOktG9GB-7K34jM/
      > > >
      > > > Bug: v8:10577
      > > > Change-Id: Ib9cfdffa401c48c895bf31caed5ee03545beddab
      > > > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2154792
      > > > Reviewed-by: Clemens Backes <clemensb@chromium.org>
      > > > Reviewed-by: Michael Achenbach <machenbach@chromium.org>
      > > > Reviewed-by: Georg Neis <neis@chromium.org>
      > > > Reviewed-by: Tamer Tas <tmrts@chromium.org>
      > > > Commit-Queue: Tobias Tebbi <tebbi@chromium.org>
      > > > Cr-Commit-Position: refs/heads/master@{#68168}
      > >
      > > Bug: v8:10577
      > > Change-Id: I268e590ee18a535b13dee14eeb15ddd0a9ee8341
      > > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2235115
      > > Commit-Queue: Tobias Tebbi <tebbi@chromium.org>
      > > Reviewed-by: Tamer Tas <tmrts@chromium.org>
      > > Reviewed-by: Clemens Backes <clemensb@chromium.org>
      > > Reviewed-by: Georg Neis <neis@chromium.org>
      > > Cr-Commit-Position: refs/heads/master@{#68989}
      > 
      > Bug: v8:10577
      > Change-Id: I31d2794d4f9ff630f3444210100c64d67d881276
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2339464
      > Commit-Queue: Tobias Tebbi <tebbi@chromium.org>
      > Reviewed-by: Clemens Backes <clemensb@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#69339}
      
      TBR=machenbach@chromium.org,neis@chromium.org,clemensb@chromium.org,tebbi@chromium.org,tmrts@chromium.org
      
      Change-Id: I1454a05e357ddd704db7fb79e51be65d45a9a16e
      No-Presubmit: true
      No-Tree-Checks: true
      No-Try: true
      Bug: v8:10577
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2348365Reviewed-by: 's avatarBill Budge <bbudge@chromium.org>
      Commit-Queue: Bill Budge <bbudge@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#69341}
      7e932233
    • Andreas Haas's avatar
      [compiler][cleanup] Remove dead code · 69dd71b7
      Andreas Haas authored
      R=neis@chromium.org
      
      Bug: v8:10506
      Change-Id: I4cffa301fd306acc4da4375bc6f0729d363cc659
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2349307Reviewed-by: 's avatarGeorg Neis <neis@chromium.org>
      Commit-Queue: Andreas Haas <ahaas@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#69340}
      69dd71b7
    • Tobias Tebbi's avatar
      Reland^2 "[flags] warn about contradictory flags" · 0ba115e6
      Tobias Tebbi authored
      This is a reland of d8f8a7e2
      Change compared to last reland:
      - Do not check for d8 flag contradictions in the presence of --fuzzing
      - Allow identical re-declaration of --cache=*
      
      Original change's description:
      > Reland "[flags] warn about contradictory flags"
      >
      > This is a reland of b8f91666
      > Difference to previous CL: Additional functionality to specify
      > incompatible flags based on GN variables and extra-flags, used
      > to fix the issues that came up on the waterfall.
      >
      > This also changes the rules regarding repeated flags: While
      > explicitly repeated flags are allowed for boolean values as long
      > as they are identical, repeated flags or explicit flags in the
      > presence of an active implication are disallowed for non-boolean
      > flags. The latter simplifies specifying conflict rules in
      > variants.py. Otherwise a rule like
      >
      > INCOMPATIBLE_FLAGS_PER_EXTRA_FLAG = {
      >   "--gc-interval=*": ["--gc-interval=*"],
      > }
      >
      > wouldn't work because specifying the same GC interval twice
      > wouldn't actually count as a conflict. This was an issue with
      > test/mjsunit/wasm/gc-buffer.js, which specifies
      > --gc-interval=500 exactly like the extra flag by the stress bot.
      >
      > Also, this now expands contradictory flags checking to d8 flags
      > for consistency.
      >
      > Original change's description:
      > > [flags] warn about contradictory flags
      > >
      > > Design Doc: https://docs.google.com/document/d/1lkvu8crkK7Ei39qjkPCFijpNyxWXsOktG9GB-7K34jM/
      > >
      > > Bug: v8:10577
      > > Change-Id: Ib9cfdffa401c48c895bf31caed5ee03545beddab
      > > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2154792
      > > Reviewed-by: Clemens Backes <clemensb@chromium.org>
      > > Reviewed-by: Michael Achenbach <machenbach@chromium.org>
      > > Reviewed-by: Georg Neis <neis@chromium.org>
      > > Reviewed-by: Tamer Tas <tmrts@chromium.org>
      > > Commit-Queue: Tobias Tebbi <tebbi@chromium.org>
      > > Cr-Commit-Position: refs/heads/master@{#68168}
      >
      > Bug: v8:10577
      > Change-Id: I268e590ee18a535b13dee14eeb15ddd0a9ee8341
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2235115
      > Commit-Queue: Tobias Tebbi <tebbi@chromium.org>
      > Reviewed-by: Tamer Tas <tmrts@chromium.org>
      > Reviewed-by: Clemens Backes <clemensb@chromium.org>
      > Reviewed-by: Georg Neis <neis@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#68989}
      
      Bug: v8:10577
      Change-Id: I31d2794d4f9ff630f3444210100c64d67d881276
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2339464
      Commit-Queue: Tobias Tebbi <tebbi@chromium.org>
      Reviewed-by: 's avatarClemens Backes <clemensb@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#69339}
      0ba115e6
    • Mythri A's avatar
      [turboprop] Don't use weak pointers across TryMigrateInstance calls · d88df03a
      Mythri A authored
      We shouldn't spill weak pointers onto the stack when calling functions
      that can trigger GC. DynamicMapChecks operator was using feedback loaded
      from the feedback vector across the TryMigrateInstance function call.
      The feedback can be a weak pointer to receiver map for monomorphic cases
      and TryMigrateInstance can trigger a GC. This cl fixes it by holding
      a holding a strong reference to the feedback.
      
      Bug: v8:10774,v8:10582,v8:9684
      Change-Id: Ia36f4d8ad46421ae570f41439bc1f0875081deee
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2336804Reviewed-by: 's avatarGeorg Neis <neis@chromium.org>
      Reviewed-by: 's avatarSathya Gunasekaran  <gsathya@chromium.org>
      Commit-Queue: Mythri Alle <mythria@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#69338}
      d88df03a
    • Dominik Inführ's avatar
      [heap] Make PagedSpace::Available lock mutex · d84f900b
      Dominik Inführ authored
      Isolate::GetHeapStatistics uses PagedSpace::Available, which races
      with allocating background threads.
      
      Bug: v8:10315
      Change-Id: I6e0dc37d90e0c7a3e3dd2b8bdb77f2ea82372c13
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2349294Reviewed-by: 's avatarUlan Degenbaev <ulan@chromium.org>
      Commit-Queue: Dominik Inführ <dinfuehr@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#69337}
      d84f900b
    • Dominik Inführ's avatar
      [heap] EnsureSweepingCompleted needs to be run in safepoint · 44c6e9f6
      Dominik Inführ authored
      SimulateIncrementalMarking needs to invoke EnsureSweepingCompleted in
      a safepoint. Otherwise RefillFreeList in this method races with
      concurrent allocation.
      
      Bug: v8:10315
      Change-Id: I9aa11d225a1c1844648788f956fd72988fe269fe
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2349299Reviewed-by: 's avatarUlan Degenbaev <ulan@chromium.org>
      Commit-Queue: Dominik Inführ <dinfuehr@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#69336}
      44c6e9f6
    • Clemens Backes's avatar
      Reland "[wasm] Ensure that only TurboFan code is serialized" · cdd984ef
      Clemens Backes authored
      This is a reland of 60ee70bb.
      The wasm c-api flakes were fixed in https://crrev.com/c/2349293.
      
      Original change's description:
      > [wasm] Ensure that only TurboFan code is serialized
      >
      > We have the implicit assumption that Liftoff code will never be
      > serialized, and we start relying on that when implementing new features
      > (debugging, dynamic tiering).
      >
      > This CL makes the serializer fail if the module contains any Liftoff
      > code. Existing tests are changed to ensure that we fully tiered up
      > before serializing a module (similar to the logic in Chromium).
      > The "wasm-clone-module" test needs to serialize the module before
      > enabling the debugger.
      >
      > Note that chrome currently only serializes a module after it fully
      > tiered up, so that should be fine. If other embedders need the ability
      > to serialize a module in an arbitrary state, we will have to fix this
      > later. With this CL we will be on the safe side though and (gracefully)
      > fail serialization instead of accidentally serializing Liftoff code.
      >
      > R=ahaas@chromium.org
      >
      > Bug: v8:10777
      > Change-Id: I1245e5f7fda3447a544c1e3525e1239cde759174
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2336799
      > Commit-Queue: Clemens Backes <clemensb@chromium.org>
      > Reviewed-by: Andreas Haas <ahaas@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#69276}
      
      Bug: v8:10777
      Change-Id: I2a7c1429812ca46d88a2902b8e0a7b7e3d638b56
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2349290Reviewed-by: 's avatarAndreas Haas <ahaas@chromium.org>
      Commit-Queue: Clemens Backes <clemensb@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#69335}
      cdd984ef
    • Dominik Inführ's avatar
      [heap] Remove Heap::NotifyRefinedOldGenerationSize · b2faa84f
      Dominik Inführ authored
      Now that background threads participate in sweeping, this method
      races because multiple threads now want to update that counter. We could
      either make this counter atomic or remove it entirely. This CL removes
      this counter since it isn't strictly necessary, it is only used when
      sweeper finds more garbage than markers. This happens e.g. with
      right-trimming but should be rare and is eventually fixed in the next
      GC.
      
      Bug: v8:10315
      Change-Id: Iebae8937860160a3b49bedd03c2e21e41f7dfe76
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2349296Reviewed-by: 's avatarUlan Degenbaev <ulan@chromium.org>
      Commit-Queue: Dominik Inführ <dinfuehr@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#69334}
      b2faa84f
    • Zeynep Cankara's avatar
      [tools][system-analyzer] Check file version · f8f7c8b1
      Zeynep Cankara authored
      This CL checks the version of the log file
      by checking the format of Map Objects processed
      by the IC processor. The version check requirement
      came from the modified IC event logging pipeline
      of the V8.
      
      Bug: v8:10644
      
      Change-Id: Ic661a34cfaf15edfde5fa24588275ac055a5bb5e
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2343067
      Commit-Queue: Zeynep Cankara <zcankara@google.com>
      Reviewed-by: 's avatarCamillo Bruni <cbruni@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#69333}
      f8f7c8b1